<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第一章 快速开始 on The book of eggos</title><link>https://eggos.icexin.com/docs/quick-start/</link><description>Recent content in 第一章 快速开始 on The book of eggos</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://eggos.icexin.com/docs/quick-start/index.xml" rel="self" type="application/rss+xml"/><item><title>1.1 从ISO镜像启动</title><link>https://eggos.icexin.com/docs/quick-start/boot-from-cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eggos.icexin.com/docs/quick-start/boot-from-cd/</guid><description>本节将帮助大家下载ISO镜像，并从虚拟机启动eggos。
下载镜像文件 # 直接使用ISO镜像来启动eggos，可以免去我们编译整个项目的麻烦，特别是我们刚开始的时候想快速体验eggos的功能的时候。
eggos在每个版本会生成一个ISO镜像文件，我们可以从github的release界面直接下载，从网址 https://github.com/icexin/eggos/releases 进入到eggos的release界面，点击eggos.iso下载。
虚拟机启动ISO文件 # 我们以linux系统为例，windows系统可以用wsl的方式来启动linux子系统，操作类似。
ubuntu的用户可以通过命令 sudo apt install qemu-system-x86 来安装qemu虚拟机。
使用如下命令来启动虚拟机:
$ qemu-system-x86_64 -m 256M -no-reboot -serial mon:stdio -netdev user,id=eth0,hostfwd=tcp::8080-:80 -device e1000,netdev=eth0 -cdrom eggos.iso 没有图形界面终端，如windows的wsl需要加上-nographic，从而以非图形化方式启动qemu 顺利启动后的画面如下：</description></item><item><title>1.2 体验eggos</title><link>https://eggos.icexin.com/docs/quick-start/play-eggos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eggos.icexin.com/docs/quick-start/play-eggos/</guid><description>体验eggos # 上一节我们通过ISO镜像启动了eggos系统。
启动eggos成功后，我们就可以体验一些内置功能了。默认情况下有个类似linux的终端界面，在这个终端界面下我们可以输入命令来操作eggos。
这一节我们来体验下eggos的一些功能。
Javascript解释器 # 输入如下命令来启动交互式Javascript解释器
$ js 之后我们就可以输入合法的Javascript语句来执行。
&amp;gt;&amp;gt;&amp;gt; console.log(&amp;#34;hello world&amp;#34;) hello world &amp;gt;&amp;gt;&amp;gt; reg = new RegExp(&amp;#34;hello&amp;#34;) &amp;gt;&amp;gt;&amp;gt; console.log(reg) /hello/ &amp;gt;&amp;gt;&amp;gt; resp = reg.test(&amp;#34;hello world&amp;#34;) &amp;gt;&amp;gt;&amp;gt; console.log(resp) true 这个Javascript解释器内置了一个简单的http.Get方法，用于从一个url里面获取内容。
&amp;gt;&amp;gt;&amp;gt; var url = &amp;#34;http://baidu.com&amp;#34; &amp;gt;&amp;gt;&amp;gt; resp = http.Get(url) &amp;gt;&amp;gt;&amp;gt; console.log(resp) &amp;lt;html&amp;gt; &amp;lt;meta http-equiv=&amp;#34;refresh&amp;#34; content=&amp;#34;0;url=http://www.baidu.com/&amp;#34;&amp;gt; &amp;lt;/html&amp;gt; 它甚至有自动补全功能，输入http.之后敲击&amp;lt;TAB&amp;gt;键，就可以补全出http.Get。重复按&amp;lt;TAB&amp;gt;可以在多个候选结果间切换。
按&amp;lt;Crtl+D&amp;gt;来退出Javascript解释器。
文件系统 # eggos现在没有实现完整的文件系统，而是使用了 afero作为文件系统的抽象接口。
我们通过mount命令挂载一个samba文件系统来体验eggos的文件系统功能。
root@eggos# mount smb://icexin:eggos@172.28.90.3:445/sambashare /share root@eggos# cd /share root@eggos# ls -rw-rw-rw- 111 fib.</description></item><item><title>1.3 搭建开发环境</title><link>https://eggos.icexin.com/docs/quick-start/prepare-env/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eggos.icexin.com/docs/quick-start/prepare-env/</guid><description>我们在上一节快速体验了eggos的基本功能，这一节我们搭建一下eggos的开发环境，为后面的深入分析eggos打下基础。
核心工具准备 # 基本工具如下：
go1.13.x mage构建工具 gcc和gdb，需要能生成elf32格式的。 qemu虚拟机 各平台的安装步骤如下所述。
Linux(ubuntu) # Go语言编译器 # $ curl -LO https://golang.google.cn/dl/go1.13.15.linux-amd64.tar.gz $ mkdir $HOME/local &amp;amp;&amp;amp; tar xf -C $HOME/local go1.13.15.linux-amd64.tar.gz # 将$HOME/local/go/bin加入PATH环境变量，这里以bash为例 $ echo &amp;#39;export PATH=$HOME/local/go/bin:$PATH&amp;#39; &amp;gt;&amp;gt; $HOME/.bashrc # 将$HOME/go/bin也加入环境变量，方便执行编译出来的go工具 $ echo &amp;#39;export PATH=$HOME/go/bin:$PATH&amp;#39; &amp;gt;&amp;gt; $HOME/.bashrc $ source $HOME/.bashrc # 设置GOPROXY环境变量，加速package下载 $ go env -w GO111MODULE=on $ go env -w GOPROXY=https://goproxy.cn 按照上面命令执行完毕之后，输入go version命令，如果能正常输入go版本号就证明安装成功了。
mage构建工具 # mage是一个类似make的构建工具，但它的makefile是用go语言编写的，可以跨平台，eggos最初是用的makefile，后面切换到mage上了。安装mage也非常简单。
$ go get github.</description></item><item><title>1.4 hello eggos</title><link>https://eggos.icexin.com/docs/quick-start/hello-eggos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eggos.icexin.com/docs/quick-start/hello-eggos/</guid><description>这一节我们编写第一个eggos的应用程序。
eggos是一个 unikernel，但不妨碍在里面加上功能子模块。
一些简单的命令放在app/cmd目录下，稍微复杂一点的命令需要单独放一个目录。
第一个子程序 # 打开编辑器，在app/cmd目录下新建hello.go，写入如下代码：
package cmd import ( &amp;#34;fmt&amp;#34; &amp;#34;github.com/icexin/eggos/app&amp;#34; ) func helloMain(ctx *app.Context) error { fmt.Fprintln(ctx.Stdout, &amp;#34;hello eggos&amp;#34;) return nil } func init() { app.Register(&amp;#34;hello&amp;#34;, helloMain) } 运行 mage -v qemu，等待终端出来之后，键入 hello，如果能顺利输出如下内容，则证明我们的程序已经被顺利编译并运行。
welcome to eggos root@eggos# hello hello eggos 代码解释 # 每个子程序都有一个入口，函数签名为func (ctx *app.Context) error，最终在init函数里面调用app.Register即可注册子程序， 之后就在命令行里面调用这个子程序了。
app/cmd目录下还有很多其他子程序可以参考。</description></item></channel></rss>