|
| 1 | +--- |
| 2 | +sidebar_position: 2 |
| 3 | +--- |
| 4 | + |
| 5 | +# QuickStart |
| 6 | + |
| 7 | +在 [infisecos-images](https://github.com/qclic/infisecos-images) 这个仓库中,我们提供了预编译的适用于飞腾派和树莓派 4B 开发版的镜像文件,可以快速体验 InfisecOS 的运行效果。 |
| 8 | + |
| 9 | +## 文件介绍 |
| 10 | + |
| 11 | +目录文件介绍如下: |
| 12 | +```c |
| 13 | +infisecos-images |
| 14 | +├── README.md |
| 15 | +├── README_CN.md |
| 16 | +├── arceos # 不再需要,已经直接集成到了对应的开发板镜像中 |
| 17 | +│ ├── phytiumpi.bin |
| 18 | +│ └── raspberrypi.bin |
| 19 | +├── phytiumpi |
| 20 | +│ └── infisecos-image-phytiumpi.img # 飞腾派开发板镜像 |
| 21 | +└── raspberrypi4 |
| 22 | + └── infisecos-image-raspberrypi4-64.img # 树莓派 4B 开发板镜像 |
| 23 | +``` |
| 24 | + |
| 25 | +## 烧写 |
| 26 | + |
| 27 | +首先使用 `git clone [email protected]:qclic/infisecos-images.git` 命令下载镜像文件, [infisecos-images ](https://github.com/qclic/infisecos-images) 中提供的是 SD 卡镜像文件,因此,需要准备一张 SD 卡,将镜像烧写到 SD 卡来进行启动 |
| 28 | + |
| 29 | +### Linux |
| 30 | +在 Linux 系统中,可以直接使用命令 `sudo dd iflag=sync oflag=sync bs=4M if=infisecos-image-phytiumpi.img of=/dev/sdb status=progress` 来进行烧写 |
| 31 | + |
| 32 | +- `if=` 指定输入文件,即我们要烧写的镜像文件。飞腾派对应 infisecos-image-phytiumpi.img,树莓派对应 infisecos-image-raspberrypi4-64.img |
| 33 | + |
| 34 | +- `of=` 指定输出设备,即我们的 SD 卡盘符。 |
| 35 | + |
| 36 | +- `bs=4M` 设置块大小为 4MB,这对于大型文件来说可以提高写入效率。 |
| 37 | + |
| 38 | +- `status=progress` 显示写入过程中的进度信息。 |
| 39 | + |
| 40 | +- `oflag=sync` 确保写入操作同步进行,数据更改立即被写入设备。 |
| 41 | + |
| 42 | +### Windows |
| 43 | + |
| 44 | +在 Windows 系统中,有很多 GUI 程序可以用来烧写 SD 卡。对于飞腾派,可以使用 `Win32DiskImager2.0.1.8.exe`,对于树莓派,官方提供了一个名为 `Raspberry Pi Imager` 烧写工具 |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | +## 启动验证 |
| 49 | + |
| 50 | +将烧写好的 SD 卡插入到开发板中,然后上电启动。默认的用户为 root,没有密码。 |
| 51 | + |
| 52 | +### 处理终端输入太长后返回行头 |
| 53 | + |
| 54 | +  默认生成的 InfisecOS 系统中,如果在终端输入内容太长时就会返回行开头,非常影响使用!这通常是由于 Buildroot 构建的 Linux 系统终端的缓冲区大小不足以处理太长的输入导致的。 |
| 55 | +1. 解决方法一:直接 `nano /etc/profile` 或其他用户配置文件,然后在其中添加 `export COLUMNS=200` 和 `export LINES=200`,重启后生效! |
| 56 | +2. 解决方法二:每次登陆终端后,使用命令 `stty rows [number_of_rows] cols [number_of_columns]` 动态修改 |
| 57 | + |
| 58 | +### 找不到 jailhouse 命令 |
| 59 | + |
| 60 | +  此时如果直接运行 `jailhouse` 命令会提示找不到该命令,这是因为 `jailhouse` 编译后默认的安装路径并不在我们构建的 InfisecOS 环境变量里面。直接 `nano /etc/profile` 并在其中的 `export PATH=` 内容的最后面输入 `:/usr/local/sbin`,保存后 `source /etc/profile` 即可 |
| 61 | + |
| 62 | + |
| 63 | + |
| 64 | +### 加载 Jailhouse 驱动 |
| 65 | + |
| 66 | +  Jailhouse 的驱动 `jailhouse.ko` 位于 `/lib/modules/5.10.0-openeuler/jailhouse/driver/` 目录中,默认是没有被加载进内核的。我们需要手动执行 `insmod /lib/modules/$(uname -r)/jailhouse/driver/jailhouse.ko` 或者 `modprobe jailhouse` 来进行加载,否则会报错 `opening /dev/jailhouse: No such file or directory`。 |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | +  也可以配置一下开机自动加载,不过,虽然 Linux 在启动时加载 ko 的方式有很多,但是针对嵌入式的 Linux,很多方式都是不支持的。最简单有效的方法就通过修改启动过程的 rc 脚本。直接 `nano /etc/init.d/rcS`,然后在文件最后添加 `modprobe jailhouse` 即可 |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | +  修改后重启,就会在启动 LOG 中看到 `jailhouse: loading out-of-tree module taints kernel.` 这条记录。关于污染内核的这个描述,并不影响功能,Linux 官方文档 https://docs.kernel.org/admin-guide/tainted-kernels.html 有详细说明 。 |
| 75 | + |
| 76 | +### 飞腾派 |
| 77 | + |
| 78 | +#### 启动 Jailhouse |
| 79 | + |
| 80 | +  首先直接 `jailhouse enable /etc/jailhouse/phytiumpi.cell` 就可以启动 Jailhouse。启动后,当前 Linux 系统就会称为 Root Cell。 |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | +#### 启动 ArceOS |
| 85 | + |
| 86 | +1. 首先创建 ArceOS 对应的 Cell:`jailhouse cell create /etc/jailhouse/phytiumpi-arceos.cell`。执行后一个 Non-root Cell 就创建好了 |
| 87 | +  |
| 88 | + |
| 89 | +2. 然后加载 ArceOS 的 Loader 程序以及 ArceOS 镜像:`jailhouse cell load 1 /usr/local/libexec/jailhouse/arceos-loader-phytiumpi.bin /usr/local/libexec/jailhouse/demos/arceos.bin -a 0xb2000000`。这里的 1 是指的我们上面创建的 Non-root Cell 的 ID,也可以使用 Cell 的名字(注意是 Cell 中定义的 name,不是文件名)。 |
| 90 | +  |
| 91 | + |
| 92 | +3. 最后启动 ArceOS:`jailhouse cell start 1` |
| 93 | +  |
| 94 | + |
| 95 | +#### 关闭 Jailhouse |
| 96 | + |
| 97 | +  直接使用命令 `jailhouse disable` 就可以关闭 Jailhouse。 |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +### 树莓派 |
| 102 | + |
| 103 | +#### 启动 Jailhouse |
| 104 | + |
| 105 | +  首先直接 `jailhouse enable /etc/jailhouse/rpi4.cell` 就可以启动 Jailhouse。启动后,当前 Linux 系统就会称为 Root Cell。 |
| 106 | + |
| 107 | + |
| 108 | + |
| 109 | +#### 启动 ArceOS |
| 110 | + |
| 111 | +1. 首先创建 ArceOS 对应的 Cell:`jailhouse cell create /etc/jailhouse/rpi4-arceos.cell`。执行后一个 Non-root Cell 就创建好了 |
| 112 | +  |
| 113 | + |
| 114 | +2. 加载 ArceOS 的 Loader 程序以及 ArceOS 镜像:`jailhouse cell load 1 /usr/local/libexec/jailhouse/arceos-loader-rpi4.bin /usr/local/libexec/jailhouse/demos/arceos.bin -a 0x42000000`。这里的 1 是指的我们上面创建的 Non-root Cell 的 ID,也可以使用 Cell 的名字(注意是 Cell 中定义的 name,不是文件名)。 |
| 115 | +  |
| 116 | + |
| 117 | +3. 启动:`jailhouse cell start 1` |
| 118 | +  |
| 119 | + |
| 120 | +#### 关闭 Jailhouse |
| 121 | + |
| 122 | +  直接使用命令 `jailhouse disable` 就可以关闭 Jailhouse。 |
| 123 | + |
| 124 | + |
0 commit comments