
文档有点长,是不是说明自动化做得不够好? 能放进脚本里去自动跑的,就不用放在文档里麻烦用户手工一条条命令敲了。 Thanks, Fengguang On Mon, Dec 14, 2020 at 03:02:02PM +0800, Wang Chenglong wrote:
Signed-off-by: Wang Chenglong <18509160991@163.com> --- doc/tutorial.md | 84 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 29 deletions(-)
diff --git a/doc/tutorial.md b/doc/tutorial.md index e6f8491..88544f4 100644 --- a/doc/tutorial.md +++ b/doc/tutorial.md @@ -152,29 +152,34 @@ job yaml 是测试描述和执行的基本单元,以[YAML](http://yaml.org/YAM
1. 获取对应 os 版本的 rootfs(以 openEuler 为例) - 通过 docker 获取 rootfs - + 1) 下载 openEuler 官方提供的 docker 镜像压缩包 - + ```bash wget https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/aarch64/openEuler-... - ``` - 2) 加载 docker 镜像 + ``` + 2) 加载 docker 镜像 ```bash docker load -i openEuler-docker.aarch64 ```
- 3) 启动 openEuler 容器 + 3) 启动 openEuler 容器 ```bash - docker run -id openeuler-20.03-lts + docker run -d --name initramfs-docker openeuler-20.03-lts ``` - 4) 拷贝 docker 的 rootfs + 4) 拷贝 docker 的 rootfs ```bash - docker cp -a docker run -d openeuler-20.03-lts:/ openEuler-rootfs + docker cp -a initramfs-docker:/ openEuler-rootfs/ ``` - - 通过 qemu.img(qcow2格式)获取 rootfs (openEuler为例)
+ {compass-ci} 为用户提供了可将 '.tar.xz' 格式的 docker 镜像包转换为 rootfs 的工具。 + ```bash + ./{compass-ci}/container/docker-rootfs/run openEuler-docker.aarch64.tar.xz /tmp/openeuler-rootfs-20.03 + ```
- 1) 下载 openEule r官方网站提供的 qcow2 格式镜像 + - 通过 qemu.img(qcow2格式)获取 rootfs (openEuler为例) + + 1) 下载 openEuler 官方网站提供的 qcow2 格式镜像 ```bash wget https://repo.openeuler.org/openEuler-20.03-LTS/virtual_machine_img/aarch64/o... ``` @@ -183,45 +188,66 @@ job yaml 是测试描述和执行的基本单元,以[YAML](http://yaml.org/YAM cd {compass-ci}/container/qcow2rootfs ./run openEuler-20.03-LTS.aarch64.qcow2.xz /tmp/openEuler-rootfs ``` + 2. 定制rootfs - 1. 使用chroot命令切换到 rootfs (此步骤需要 root 权限) + 1. 使用 chroot 命令切换到 rootfs (此步骤需要 root 权限) ```bash chroot openEuler-rootfs ``` 2. 根据个人需要安装并配置服务
a. 修改 root 密码 - b. 配置 ssh 服务 - c. 检查系统时间 - d. 如果使用 docker 制作 osimage 还需要以下操作: - > 1. 安装所需版本内核 - > 2. 从 centos 官方网站下载内核rpm包 - > 3. 使用 yum 进行安装 - > 4. 删除 docker 环境变量文件 - - 3. 退出 rootfs,并打包 - ```bash - cd $rootfs - find . | coip -o -Hnewc |gzip -9 > $os_name.cgz - ``` + b. 查看软链接 /sbin/init + > 确定系统以systemd方式启动 + ```bash + ls -l /sbin/init + /sbin/init -> ../lib/systemd/systemd + ``` + c. 如果使用 docker 制作 osimage 还需以下操作: + > 删除 docker 环境变量文件 /.dockerenv + d. 安装基础软件 + > openssh-server (ssh 远程连接服务) + > ntpdate (时间同步) + > cifs-utils (cifs文件系统工具包) + > nfs-utils (nfs文件系统工具包) + > curl (客户端url工具) + ```bash + yum -y install openssh-server ntpdate cifs-utils nfs-utils curl + ``` + e. 如果使用 docker 制作 osimage 还需要以下操作: + > 删除 docker 环境变量文件 /.dockerenv + + 3. 打包rootfs + ```bash + cd $rootfs + find . | coip -o -Hnewc |gzip -9 > $os_name.cgz + ``` + + 4. 打包驱动软件/内核源码 + 如果想要使用 {compass-ci} 未提供的内核版本, 可以在 rootfs 中手动安装对应版本内核,并将驱动软件/内核源码进行打包。 + ```bash + find /lib/modules/* | cpio -o -Hnewc | gzip -9 > /modules-$os_name.cgz + find /usr/src/kernels/* | cpio -o -Hnewc | gzip -9 > /headers-$os_name.cgz + ``` + #### FAQ -1. 日志报错 “Unable to mount root fs on unknown-block” +1. 日志报错 “Unable to mount root fs on unknown-block” - 问题现象 ```bash [ 0.390437] List of all partitions: - [ 0.390806] No filesystem could mount root, tried: + [ 0.390806] No filesystem could mount root, tried: [ 0.391489] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ... [ 0.399404] Memory Limit: none [ 0.399749] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- ``` - 解决方法 - + 1)启动内存不足,增加内存可解决。 2)内核文件权限不足,给予 644 权限。 - + 2. 系统运行缓慢 - + - 问题现象
打包镜像体积过大,会消耗很大内存 -- 2.23.0