From 42826e989c94f98f47e39a6155bc97824289063b Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:06:29 +0000 Subject: [PATCH 1/8] wording tweaks to overview --- tmpl/wiki/overview-of-mirage.md | 136 ++++++++++++-------------------- 1 file changed, 50 insertions(+), 86 deletions(-) diff --git a/tmpl/wiki/overview-of-mirage.md b/tmpl/wiki/overview-of-mirage.md index dd5c1a2cd..e7a96a3d1 100644 --- a/tmpl/wiki/overview-of-mirage.md +++ b/tmpl/wiki/overview-of-mirage.md @@ -1,58 +1,22 @@ -If you're familiar with the using the -command line, The best way to learn about Mirage is to try out the -[installation instructions](http://openmirage.org/wiki/install) for yourself! +If you're familiar with the using the command line, the best way to learn about Mirage is to try out the [installation instructions](http://openmirage.org/wiki/install) for yourself! -!! What is Mirage and why is it important? +!! What is Mirage and why is it important? -Most applications that run in the cloud aren't optimised to do so. They -inherently carry assumptions about the underlying operating system with -them, including vulnerabilities and bloat. -Compartmentalisation of large servers into smaller -[virtual machines](http://en.wikipedia.org/wiki/Virtual_machine) has -enabled many new businesses to get started and achieve scale. This has been -great for new services but many of those virtual machines are single-purpose -and yet they contain largely complete operating systems which themselves run -applications like web-servers. This means a large part of the footprint is -unused and unnecessary, which is both costly and a security risk (due to the -larger attack surface). - -Mirage represents a new approach where only the necessary components of the -OS are included and compiled along with the application into a -[unikernel](http://nymote.org/docs/2013-asplos-mirage.pdf). -This results in highly efficient and extremely lean -[appliances](http://en.wikipedia.org/wiki/Virtual_appliance), with a -much smaller attack surface. These appliances can be deployed directly to -the cloud and embedded devices, with the benefits of reduced costs and -increased security and scalability. +Most applications that run in the cloud aren't optimised to do so. They make assumptions about the underlying operating system, and as a result are affected by underlying vulnerabilities and bloat. Compartmentalisation of large servers into smaller [virtual machines](http://en.wikipedia.org/wiki/Virtual_machine) has significantly reduced the costs involved in starting and scaling many online applications and businesses. This has been great but even though many of those virtual machines are single-purpose, they contain complete operating systems running large, complex applications like web-servers. This means a large part of the footprint is unused and unnecessary, which is both costly and a security risk due to the larger attack surface. + +Mirage represents a new approach where only the necessary components of the OS are included and compiled along with the application into a [unikernel](http://nymote.org/docs/2013-asplos-mirage.pdf). This results in highly efficient and extremely lean [appliances](http://en.wikipedia.org/wiki/Virtual_appliance), with much smaller attack surfaces. These appliances can be deployed directly to the cloud and embedded devices, with the benefits of reduced costs and increased security and scalability. !! How does Mirage work? -Mirage is a unikernel for constructing secure, high-performance network -applications across a variety of cloud computing and mobile platforms. It -works by treating the -[Xen hypervisor](http://www.xenproject.org/developers/teams/hypervisor.html) -as a stable hardware platform, allowing us to focus on high-performance -protocol implementations without worrying about having to support the -thousands of device drivers found in a traditional OS. - -Code can be developed in a high-level functional programming language (OCaml) -on a desktop OS such as Linux or Mac OSX, and is then compiled into a -fully-standalone, specialised unikernel. These unikernels run directly -on Xen hypervisor APIs. Since the Xen powers most public -clouds such as [Amazon EC2](http://aws.amazon.com/ec2), -[Rackspace Cloud](http://www.rackspace.com/cloud/), and many others, Mirage -lets your servers run more cheaply, securely and faster in any Xen -based cloud or hosting service. - -Mirage is based around the OCaml language, with syntax extensions and -[35+ libraries](https://github.com/mirage) which map directly to operating system constructs when being -compiled for production deployment. As such, Mirage includes clean-slate -functional implementations of protocols ranging from TCP/IP, DNS, SSH, -Openflow (switch/controller), HTTP, XMPP and Xen inter-VM transports. +Mirage is a unikernel OS for constructing secure, high-performance network applications across a variety of cloud computing and mobile platforms. It works by treating the [Xen hypervisor](http://www.xenproject.org/developers/teams/hypervisor.html) as a stable hardware platform, allowing us to focus on high-performance protocol implementations without worrying about having to support the thousands of device drivers found in a traditional OS. + +Code is developed in a high-level functional programming language (OCaml) on a desktop OS such as Linux or Mac OSX, and then compiled into a fully-standalone, specialised appliance unikernel. These unikernels run directly on Xen hypervisor APIs. Since the Xen powers most public clouds such as [Amazon EC2](http://aws.amazon.com/ec2), [Rackspace Cloud](http://www.rackspace.com/cloud/), and many others, Mirage lets your servers run more cheaply, securely and faster in any Xen based cloud or hosting service. + +Mirage is built in the OCaml language with syntax extensions and [35+ libraries](https://github.com/mirage) which map directly to operating system constructs when being compiled for production deployment. As such, Mirage includes clean-slate functional implementations of protocols ranging from TCP/IP, DNS, SSH, Openflow (switch/controller), HTTP, XMPP and Xen inter-VM transports. !! Where will Mirage be useful? @@ -60,28 +24,28 @@ Openflow (switch/controller), HTTP, XMPP and Xen inter-VM transports. An example of a current Mirage appliance is this website -which is a completely self-hosted site, deployed on the public cloud and -running directly on the Xen hypervisor (in this case, on -Amazon EC2). Such appliances could be auto-configured and deployed directly -to the public cloud (e.g. Rackspace or Amazon EC2) or pushed to embedded -devices. There is also -[http://decks.openmirage.org](http://decks.openmirage.org), where separate -Mirage unikernels are being used to present slides for conferences. These -are both example of how Mirage is working right now and below are examples +which is a completely self-hosted site, deployed on the public cloud and +running directly on the Xen hypervisor (in this case, on +Amazon EC2). Such appliances could be auto-configured and deployed directly +to the public cloud (e.g. Rackspace or Amazon EC2) or pushed to embedded +devices. There is also +[http://decks.openmirage.org](http://decks.openmirage.org), where separate +Mirage unikernels are being used to present slides for conferences. These +are both example of how Mirage is working right now and below are examples of what we can do in the future. !!! Self-scaling architecture -We can create auto-scaling web-servers with very small footprints. These -would be cheaper to run than current solutions due to the small size but -they would also be highly elastic. If a sudden spike in traffic occurs, the -web-servers can be configured to create and deploy copies of themselves to -service the demand. This auto-scaling happens so quickly that an incoming -connection can trigger the creation of new server and the *new server* can -then handle that request before it times out (which is on the order of -milliseconds). When the demand dies down again, these web-servers can -automatically shut themselves down. Since these machines boot fast we can be -more elastic, raising and lowering capacity to precisely meet demand and +We can create auto-scaling web-servers with very small footprints. These +would be cheaper to run than current solutions due to the small size but +they would also be highly elastic. If a sudden spike in traffic occurs, the +web-servers can be configured to create and deploy copies of themselves to +service the demand. This auto-scaling happens so quickly that an incoming +connection can trigger the creation of new server and the *new server* can +then handle that request before it times out (which is on the order of +milliseconds). When the demand dies down again, these web-servers can +automatically shut themselves down. Since these machines boot fast we can be +more elastic, raising and lowering capacity to precisely meet demand and therefore only spending what we actually need when we really need it. !!! Deployment to embedded devices @@ -89,27 +53,27 @@ therefore only spending what we actually need when we really need it. Using Mirage, we can also create appliances that can run on embedded devices. -Such appliances can be deployed into small devices that are scattered -around your home, for example in plant pots to measure moisture levels to -chemical sensors -in your fridge, which tell you exactly what has gone off. You could access -the data from these sensors via a web-sever appliance, which is also -deployed locally in your home on a device like a -[Raspberry Pi](http://www.raspberrypi.org). -Installing additional applications into your Raspberry Pi appliance can be a -a simple 1-click operation, allowing you to share your data or compare with -others. Creating a home-based network like this ensures you're not affected -by any upstream connectivity issues and that your data remains within your -control. - -This same scenario can be deployed into a enterprise environment where -sensors around a building can monitor environmental conditions, adjust -lighting and many other things. When additional computation is required, -more appliances can automatically be created on a cloud provider for the +Such appliances can be deployed into small devices that are scattered +around your home, for example in plant pots to measure moisture levels to +chemical sensors +in your fridge, which tell you exactly what has gone off. You could access +the data from these sensors via a web-sever appliance, which is also +deployed locally in your home on a device like a +[Raspberry Pi](http://www.raspberrypi.org). +Installing additional applications into your Raspberry Pi appliance can be a +a simple 1-click operation, allowing you to share your data or compare with +others. Creating a home-based network like this ensures you're not affected +by any upstream connectivity issues and that your data remains within your +control. + +This same scenario can be deployed into a enterprise environment where +sensors around a building can monitor environmental conditions, adjust +lighting and many other things. When additional computation is required, +more appliances can automatically be created on a cloud provider for the short duration that they're needed. -Overall, Mirage provides substantial benefits in terms of increased -efficiency and safety and is ideal for deploying to both the public could -and embedded devices. Together with [Signpost](http://nymote.org/software/signpost) and [Irminsule](http://nymote.org/software/irminsule), Mirage -forms a core piece of the Nymote toolstack to power the coming wave of -[Internet of Things devices](http://en.wikipedia.org/wiki/Internet_of_Things). +Overall, Mirage provides substantial benefits in terms of increased +efficiency and safety and is ideal for deploying to both the public could +and embedded devices. Together with [Signpost](http://nymote.org/software/signpost) and [Irminsule](http://nymote.org/software/irminsule), Mirage +forms a core piece of the Nymote toolstack to power the coming wave of +[Internet of Things devices](http://en.wikipedia.org/wiki/Internet_of_Things). From c94637b4377eba64d1c4af79fd45bb3df5dc499e Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:46:43 +0000 Subject: [PATCH 2/8] [wiki] update dates on install and hello-world posts --- src/wiki.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wiki.ml b/src/wiki.ml index 2b2184059..35b0fd778 100644 --- a/src/wiki.ml +++ b/src/wiki.ml @@ -434,7 +434,7 @@ let entries = [ categories = ["concurrency","threads"]; }; - { updated = date (2013, 08, 10, 15, 00); + { updated = date (2013, 12, 09, 12, 00); author = mort; (* ++ vb -- need multiple author support *) subject = "Installation"; body = File "install.md"; @@ -458,7 +458,7 @@ let entries = [ categories = ["overview","usage"]; }; - { updated = date (2013, 08, 11, 15, 00); + { updated = date (2013, 12, 09, 12, 00); author = mort; subject = "Hello Mirage World"; body = File "hello-world.md"; From da8b6c9d6f5ce8f3845977568e31031f36dcceea Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:48:56 +0000 Subject: [PATCH 3/8] revert bad overview tweaks --- tmpl/wiki/overview-of-mirage.md | 142 ++++++++++++++++++-------------- 1 file changed, 78 insertions(+), 64 deletions(-) diff --git a/tmpl/wiki/overview-of-mirage.md b/tmpl/wiki/overview-of-mirage.md index bde363828..dd5c1a2cd 100644 --- a/tmpl/wiki/overview-of-mirage.md +++ b/tmpl/wiki/overview-of-mirage.md @@ -1,22 +1,58 @@ -If you're familiar with the using the command line, the best way to learn about Mirage is to try out the [installation instructions](http://openmirage.org/wiki/install) for yourself! +If you're familiar with the using the +command line, The best way to learn about Mirage is to try out the +[installation instructions](http://openmirage.org/wiki/install) for yourself! -!! What is Mirage and why is it important? +!! What is Mirage and why is it important? -Most applications that run in the cloud aren't optimised to do so. They make assumptions about the underlying operating system, and as a result are affected by underlying vulnerabilities and bloat. Compartmentalisation of large servers into smaller [virtual machines](http://en.wikipedia.org/wiki/Virtual_machine) has significantly reduced the costs involved in starting and scaling many online applications and businesses. This has been great but even though many of those virtual machines are single-purpose, they contain complete operating systems running large, complex applications like web-servers. This means a large part of the footprint is unused and unnecessary, which is both costly and a security risk due to the larger attack surface. - -Mirage represents a new approach where only the necessary components of the OS are included and compiled along with the application into a [unikernel](http://nymote.org/docs/2013-asplos-mirage.pdf). This results in highly efficient and extremely lean [appliances](http://en.wikipedia.org/wiki/Virtual_appliance), with much smaller attack surfaces. These appliances can be deployed directly to the cloud and embedded devices, with the benefits of reduced costs and increased security and scalability. +Most applications that run in the cloud aren't optimised to do so. They +inherently carry assumptions about the underlying operating system with +them, including vulnerabilities and bloat. +Compartmentalisation of large servers into smaller +[virtual machines](http://en.wikipedia.org/wiki/Virtual_machine) has +enabled many new businesses to get started and achieve scale. This has been +great for new services but many of those virtual machines are single-purpose +and yet they contain largely complete operating systems which themselves run +applications like web-servers. This means a large part of the footprint is +unused and unnecessary, which is both costly and a security risk (due to the +larger attack surface). + +Mirage represents a new approach where only the necessary components of the +OS are included and compiled along with the application into a +[unikernel](http://nymote.org/docs/2013-asplos-mirage.pdf). +This results in highly efficient and extremely lean +[appliances](http://en.wikipedia.org/wiki/Virtual_appliance), with a +much smaller attack surface. These appliances can be deployed directly to +the cloud and embedded devices, with the benefits of reduced costs and +increased security and scalability. !! How does Mirage work? -Mirage is a unikernel OS for constructing secure, high-performance network applications across a variety of cloud computing and mobile platforms. It works by treating the [Xen hypervisor](http://www.xenproject.org/developers/teams/hypervisor.html) as a stable hardware platform, allowing us to focus on high-performance protocol implementations without worrying about having to support the thousands of device drivers found in a traditional OS. - -Code is developed in a high-level functional programming language (OCaml) on a desktop OS such as Linux or Mac OSX, and then compiled into a fully-standalone, specialised appliance unikernel. These unikernels run directly on Xen hypervisor APIs. Since the Xen powers most public clouds such as [Amazon EC2](http://aws.amazon.com/ec2), [Rackspace Cloud](http://www.rackspace.com/cloud/), and many others, Mirage lets your servers run more cheaply, securely and faster in any Xen based cloud or hosting service. - -Mirage is built in the OCaml language with syntax extensions and [35+ libraries](https://github.com/mirage) which map directly to operating system constructs when being compiled for production deployment. As such, Mirage includes clean-slate functional implementations of protocols ranging from TCP/IP, DNS, SSH, Openflow (switch/controller), HTTP, XMPP and Xen inter-VM transports. +Mirage is a unikernel for constructing secure, high-performance network +applications across a variety of cloud computing and mobile platforms. It +works by treating the +[Xen hypervisor](http://www.xenproject.org/developers/teams/hypervisor.html) +as a stable hardware platform, allowing us to focus on high-performance +protocol implementations without worrying about having to support the +thousands of device drivers found in a traditional OS. + +Code can be developed in a high-level functional programming language (OCaml) +on a desktop OS such as Linux or Mac OSX, and is then compiled into a +fully-standalone, specialised unikernel. These unikernels run directly +on Xen hypervisor APIs. Since the Xen powers most public +clouds such as [Amazon EC2](http://aws.amazon.com/ec2), +[Rackspace Cloud](http://www.rackspace.com/cloud/), and many others, Mirage +lets your servers run more cheaply, securely and faster in any Xen +based cloud or hosting service. + +Mirage is based around the OCaml language, with syntax extensions and +[35+ libraries](https://github.com/mirage) which map directly to operating system constructs when being +compiled for production deployment. As such, Mirage includes clean-slate +functional implementations of protocols ranging from TCP/IP, DNS, SSH, +Openflow (switch/controller), HTTP, XMPP and Xen inter-VM transports. !! Where will Mirage be useful? @@ -24,17 +60,6 @@ Mirage is built in the OCaml language with syntax extensions and [35+ libraries] An example of a current Mirage appliance is this website -<<<<<<< HEAD -which is a completely self-hosted site, deployed on the public cloud and -running directly on the Xen hypervisor (in this case, on -Amazon EC2). Such appliances could be auto-configured and deployed directly -to the public cloud (e.g. Rackspace or Amazon EC2) or pushed to embedded -devices. There is also -[http://decks.openmirage.org](http://decks.openmirage.org), where separate -Mirage unikernels are being used to present slides for conferences. These -are both example of how Mirage is working right now and below are examples -of what we can do in the future. -||||||| merged common ancestors which is a completely self-hosted site, deployed on the public cloud and running directly on the Xen hypervisor (in this case, on Amazon EC2). Such appliances could be auto-configured and deployed directly @@ -44,30 +69,19 @@ devices. There is also Mirage unikernels are being used to present slides for conferences. These are both example of how Mirage is working right now and below are examples of what we can do in the future. -======= -which is a completely self-hosted site, deployed on the public cloud and -running directly on the Xen hypervisor (in this case, on -Amazon EC2). Such appliances could be auto-configured and deployed directly -to the public cloud (e.g. Rackspace or Amazon EC2) or pushed to embedded -devices. There is also -[http://decks.openmirage.org](http://decks.openmirage.org), where separate -Mirage appliances are being used to present slides for conferences. These -are both cases of how Mirage is being used right now and below are examples -of things we can do in the future. ->>>>>>> 249106754b7a82400e6b5c6a4d80a06d0c0ada3b !!! Self-scaling architecture -We can create auto-scaling web-servers with very small footprints. These -would be cheaper to run than current solutions due to the small size but -they would also be highly elastic. If a sudden spike in traffic occurs, the -web-servers can be configured to create and deploy copies of themselves to -service the demand. This auto-scaling happens so quickly that an incoming -connection can trigger the creation of new server and the *new server* can -then handle that request before it times out (which is on the order of -milliseconds). When the demand dies down again, these web-servers can -automatically shut themselves down. Since these machines boot fast we can be -more elastic, raising and lowering capacity to precisely meet demand and +We can create auto-scaling web-servers with very small footprints. These +would be cheaper to run than current solutions due to the small size but +they would also be highly elastic. If a sudden spike in traffic occurs, the +web-servers can be configured to create and deploy copies of themselves to +service the demand. This auto-scaling happens so quickly that an incoming +connection can trigger the creation of new server and the *new server* can +then handle that request before it times out (which is on the order of +milliseconds). When the demand dies down again, these web-servers can +automatically shut themselves down. Since these machines boot fast we can be +more elastic, raising and lowering capacity to precisely meet demand and therefore only spending what we actually need when we really need it. !!! Deployment to embedded devices @@ -75,27 +89,27 @@ therefore only spending what we actually need when we really need it. Using Mirage, we can also create appliances that can run on embedded devices. -Such appliances can be deployed into small devices that are scattered -around your home, for example in plant pots to measure moisture levels to -chemical sensors -in your fridge, which tell you exactly what has gone off. You could access -the data from these sensors via a web-sever appliance, which is also -deployed locally in your home on a device like a -[Raspberry Pi](http://www.raspberrypi.org). -Installing additional applications into your Raspberry Pi appliance can be a -a simple 1-click operation, allowing you to share your data or compare with -others. Creating a home-based network like this ensures you're not affected -by any upstream connectivity issues and that your data remains within your -control. - -This same scenario can be deployed into a enterprise environment where -sensors around a building can monitor environmental conditions, adjust -lighting and many other things. When additional computation is required, -more appliances can automatically be created on a cloud provider for the +Such appliances can be deployed into small devices that are scattered +around your home, for example in plant pots to measure moisture levels to +chemical sensors +in your fridge, which tell you exactly what has gone off. You could access +the data from these sensors via a web-sever appliance, which is also +deployed locally in your home on a device like a +[Raspberry Pi](http://www.raspberrypi.org). +Installing additional applications into your Raspberry Pi appliance can be a +a simple 1-click operation, allowing you to share your data or compare with +others. Creating a home-based network like this ensures you're not affected +by any upstream connectivity issues and that your data remains within your +control. + +This same scenario can be deployed into a enterprise environment where +sensors around a building can monitor environmental conditions, adjust +lighting and many other things. When additional computation is required, +more appliances can automatically be created on a cloud provider for the short duration that they're needed. -Overall, Mirage provides substantial benefits in terms of increased -efficiency and safety and is ideal for deploying to both the public could -and embedded devices. Together with [Signpost](http://nymote.org/software/signpost) and [Irminsule](http://nymote.org/software/irminsule), Mirage -forms a core piece of the Nymote toolstack to power the coming wave of -[Internet of Things devices](http://en.wikipedia.org/wiki/Internet_of_Things). +Overall, Mirage provides substantial benefits in terms of increased +efficiency and safety and is ideal for deploying to both the public could +and embedded devices. Together with [Signpost](http://nymote.org/software/signpost) and [Irminsule](http://nymote.org/software/irminsule), Mirage +forms a core piece of the Nymote toolstack to power the coming wave of +[Internet of Things devices](http://en.wikipedia.org/wiki/Internet_of_Things). From 712b237d1a6e16574356e670011702f30344af01 Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:49:43 +0000 Subject: [PATCH 4/8] merge amir's latest commit to overview --- tmpl/wiki/overview-of-mirage.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tmpl/wiki/overview-of-mirage.md b/tmpl/wiki/overview-of-mirage.md index dd5c1a2cd..2b7159cdb 100644 --- a/tmpl/wiki/overview-of-mirage.md +++ b/tmpl/wiki/overview-of-mirage.md @@ -48,8 +48,8 @@ clouds such as [Amazon EC2](http://aws.amazon.com/ec2), lets your servers run more cheaply, securely and faster in any Xen based cloud or hosting service. -Mirage is based around the OCaml language, with syntax extensions and -[35+ libraries](https://github.com/mirage) which map directly to operating system constructs when being +Mirage is based around the [OCaml language](http://ocaml.org), with syntax extensions and +[40+ libraries](https://github.com/mirage) which map directly to operating system constructs when being compiled for production deployment. As such, Mirage includes clean-slate functional implementations of protocols ranging from TCP/IP, DNS, SSH, Openflow (switch/controller), HTTP, XMPP and Xen inter-VM transports. @@ -66,9 +66,9 @@ Amazon EC2). Such appliances could be auto-configured and deployed directly to the public cloud (e.g. Rackspace or Amazon EC2) or pushed to embedded devices. There is also [http://decks.openmirage.org](http://decks.openmirage.org), where separate -Mirage unikernels are being used to present slides for conferences. These -are both example of how Mirage is working right now and below are examples -of what we can do in the future. +Mirage appliances are being used to present slides for conferences. These +are both cases of how Mirage is being used right now and below are examples +of things we can do in the future. !!! Self-scaling architecture From 364467c3880e189c20400f29a9efe3c1fc68da80 Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:52:29 +0000 Subject: [PATCH 5/8] update links to opam.ocaml.org in install --- tmpl/wiki/install.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tmpl/wiki/install.md b/tmpl/wiki/install.md index d87e42487..5b2453ce4 100644 --- a/tmpl/wiki/install.md +++ b/tmpl/wiki/install.md @@ -1,4 +1,4 @@ -Mirage consists of a set of OCaml libraries that link with a runtime to form either a standalone Xen operating system or a normal UNIX binary. These libraries are managed via the [OPAM](http://opam.ocamlpro.com) tool. After describing Mirage's system requirements, we will introduce the basics of OPAM and setting up for Mirage. +Mirage consists of a set of OCaml libraries that link with a runtime to form either a standalone Xen operating system or a normal UNIX binary. These libraries are managed via the [OPAM](http://opam.ocaml.org) tool. After describing Mirage's system requirements, we will introduce the basics of OPAM and setting up for Mirage. !!Requirements @@ -20,7 +20,7 @@ Also note that the `mirage` configuration and deployment tool relies on the `xl` !! Using OPAM -We use OPAM to manage OCaml compiler and library installations. It tracks library versions across upgrades, and will recompile dependencies automatically if they get out of date. Please refer to OPAM [documentation](https://opam.ocamlpro.com) if you want to know more, but we will cover the basics to get you started here. Install OPAM 1.1+ for your operating system by following its [Quick Install Guide](http://opam.ocamlpro.com/doc/Quick_Install.html). +We use OPAM to manage OCaml compiler and library installations. It tracks library versions across upgrades, and will recompile dependencies automatically if they get out of date. Please refer to OPAM [documentation](https://opam.ocaml.org) if you want to know more, but we will cover the basics to get you started here. Install OPAM 1.1+ for your operating system by following its [Quick Install Guide](http://opam.ocaml.org/doc/Quick_Install.html). All the OPAM state is held in the `.opam` directory in your home directory, including compiler installations. You should never need to switch to a root user to install packages. Package listings are obtained through `remote` sources, which defaults to the contents of [github.com/OCamlPro/opam-repository](http://github.com/OCamlPro/opam-repository). After installation, `opam update -u` refreshes the package list and recompile packages to the latest versions. From 566ad26c583ff7545cdab538d96f8b3575153c05 Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:53:31 +0000 Subject: [PATCH 6/8] typo --- tmpl/wiki/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmpl/wiki/install.md b/tmpl/wiki/install.md index 5b2453ce4..9473bf220 100644 --- a/tmpl/wiki/install.md +++ b/tmpl/wiki/install.md @@ -49,4 +49,4 @@ opam install mirage will install [Mirage](https://github.com/mirage/mirage)! -That's it. You now have everything required to start developing Mirage unikernels that will run either as POSIX processes or as Xen VMs using the Mirage network stack. Next, why not try [building a Mirage `hello world`](/wiki/hello-world)? +That's it. You now have everything required to start developing Mirage unikernels that will run either as POSIX processes or as Xen VMs using the Mirage network stack. Next, why not try [building a Mirage *hello world*](/wiki/hello-world)? From 17d1f01d1f768503e85688013e9b1b3cafcb59b2 Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 16:57:39 +0000 Subject: [PATCH 7/8] helloworld tweaks --- tmpl/wiki/hello-world.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tmpl/wiki/hello-world.md b/tmpl/wiki/hello-world.md index 6696c82d5..b48e58472 100644 --- a/tmpl/wiki/hello-world.md +++ b/tmpl/wiki/hello-world.md @@ -9,7 +9,20 @@ The examples below are in the [`mirage-skeleton` repository](http://github.com/m !! First Steps: Hello World! -As a first step, let's build and run the Mirage "Hello World" unikernel -- this will print `Hello\\nWorld\\n` 5 times before terminating. +As a first step, let's build and run the Mirage "Hello World" unikernel -- this will print `hello\\nworld\\n` 5 times before terminating: + +{{ + hello + world + hello + world + hello + world + hello + world + hello + world +}} First, let's look at the code: @@ -68,6 +81,12 @@ Unpacking the `Makefile` this translates to: $ mirage run basic/config.ml ## run }} +Or, as `mirage` knows that it must first `configure` and then `build` before running, simply execute `make basic-run` which unpacks to: + +{{ + $ mirage run basic/config.ml +}} + If you are on a 64-bit Linux system able to build Xen images, simply change `--unix` for `--xen` to build a Xen VM: {{ From d9a9ef7d2558bebb3ac30fbde619152986731e6e Mon Sep 17 00:00:00 2001 From: Richard Mortier Date: Mon, 9 Dec 2013 17:01:25 +0000 Subject: [PATCH 8/8] remove broken wiki posts from index for now --- tmpl/wiki/index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/tmpl/wiki/index.md b/tmpl/wiki/index.md index c617c500d..1805887b2 100644 --- a/tmpl/wiki/index.md +++ b/tmpl/wiki/index.md @@ -8,8 +8,6 @@ Mirage is still in pre-alpha stage, but the infrastructure you see here is self- *Usage* * [Installation](/wiki/install) -* [Building the Mirage Web](/wiki/mirage-www) -* [Booting Mirage in the cloud](/wiki/xen-boot) * [Hello Mirage World](/wiki/hello-world) * [Maintaining OPAM](/wiki/opam)