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. ������������������ - + - ������������
������������������������������������������������
文档有点长,是不是说明自动化做得不够好? 能放进脚本里去自动跑的,就不用放在文档里麻烦用户手工一条条命令敲了。
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
- 获取对应 os 版本的 rootfs(以 openEuler 为例)
- 通过 docker 获取 rootfs
- 1) 下载 openEuler 官方提供的 docker 镜像压缩包
```
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/openEuler-20.03-LTS.aarch64.qcow2.xz ```
@@ -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 ```
- 定制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 环境变量文件
- 退出 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
- 打包rootfs
- cd $rootfs
- find . | coip -o -Hnewc |gzip -9 > $os_name.cgz
- 打包驱动软件/内核源码
- 如果想要使用 {compass-ci} 未提供的内核版本, 可以在 rootfs 中手动安装对应版本内核,并将驱动软件/内核源码进行打包。
- 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.399404] Memory Limit: none [ 0.399749] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- ```[ 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)
- 解决方法
- 1)启动内存不足,增加内存可解决。 2)内核文件权限不足,给予 644 权限。
- 系统运行缓慢
问题现象
打包镜像体积过大,会消耗很大内存
-- 2.23.0
On Mon, Dec 14, 2020 at 03:08:14PM +0800, Wu Fengguang wrote:
文档有点长,是不是说明自动化做得不够好? 能放进脚本里去自动跑的,就不用放在文档里麻烦用户手工一条条命令敲了。
我了解的文档要求是:用户可以通过文档按步骤手动制作出镜像包。 并且在步骤之后也注明了可以使用工具来完成。 5) {compass-ci} 为用户提供了可将 '.tar.xz' 格式的 docker 镜像包转换为 rootfs 的工具。 ```bash ./{compass-ci}/container/docker-rootfs/run openEuler-docker.aarch64.tar.xz /tmp/openeuler-rootfs-20.03 ``` 需要将详细过程去掉吗?
Thanks, Chenglong
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
- 获取对应 os 版本的 rootfs(以 openEuler 为例)
- 通过 docker 获取 rootfs
- 1) 下载 openEuler 官方提供的 docker 镜像压缩包
```
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/openEuler-20.03-LTS.aarch64.qcow2.xz ```
@@ -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 ```
- 定制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 环境变量文件
- 退出 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
- 打包rootfs
- cd $rootfs
- find . | coip -o -Hnewc |gzip -9 > $os_name.cgz
- 打包驱动软件/内核源码
- 如果想要使用 {compass-ci} 未提供的内核版本, 可以在 rootfs 中手动安装对应版本内核,并将驱动软件/内核源码进行打包。
- 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.399404] Memory Limit: none [ 0.399749] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- ```[ 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)
- 解决方法
- 1)启动内存不足,增加内存可解决。 2)内核文件权限不足,给予 644 权限。
- 系统运行缓慢
问题现象
打包镜像体积过大,会消耗很大内存
-- 2.23.0
On Mon, Dec 14, 2020 at 04:02:53PM +0800, Wang Chenglong wrote:
On Mon, Dec 14, 2020 at 03:08:14PM +0800, Wu Fengguang wrote:
文档有点长,是不是说明自动化做得不够好? 能放进脚本里去自动跑的,就不用放在文档里麻烦用户手工一条条命令敲了。
我了解的文档要求是:用户可以通过文档按步骤手动制作出镜像包。
有工具就用工具。 什么用户现成的自行车不用,非得自己步行? 如果真有--那他直接照着工具代码做不行吗?
Thanks, Fengguang
并且在步骤之后也注明了可以使用工具来完成。 5) {compass-ci} 为用户提供了可将 '.tar.xz' 格式的 docker 镜像包转换为 rootfs 的工具。 ```bash ./{compass-ci}/container/docker-rootfs/run openEuler-docker.aarch64.tar.xz /tmp/openeuler-rootfs-20.03 ``` 需要将详细过程去掉吗?
Thanks, Chenglong
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
- 获取对应 os 版本的 rootfs(以 openEuler 为例)
- 通过 docker 获取 rootfs
- 1) 下载 openEuler 官方提供的 docker 镜像压缩包
```
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/openEuler-20.03-LTS.aarch64.qcow2.xz ```
@@ -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 ```
- 定制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 环境变量文件
- 退出 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
- 打包rootfs
- cd $rootfs
- find . | coip -o -Hnewc |gzip -9 > $os_name.cgz
- 打包驱动软件/内核源码
- 如果想要使用 {compass-ci} 未提供的内核版本, 可以在 rootfs 中手动安装对应版本内核,并将驱动软件/内核源码进行打包。
- 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.399404] Memory Limit: none [ 0.399749] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- ```[ 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)
- 解决方法
- 1)启动内存不足,增加内存可解决。 2)内核文件权限不足,给予 644 权限。
- 系统运行缓慢
问题现象
打包镜像体积过大,会消耗很大内存
-- 2.23.0
On Tue, Dec 15, 2020 at 08:46:55AM +0800, Wu Fengguang wrote:
On Mon, Dec 14, 2020 at 04:02:53PM +0800, Wang Chenglong wrote:
On Mon, Dec 14, 2020 at 03:08:14PM +0800, Wu Fengguang wrote:
文档有点长,是不是说明自动化做得不够好? 能放进脚本里去自动跑的,就不用放在文档里麻烦用户手工一条条命令敲了。
我了解的文档要求是:用户可以通过文档按步骤手动制作出镜像包。
有工具就用工具。 什么用户现成的自行车不用,非得自己步行? 如果真有--那他直接照着工具代码做不行吗?
好的,我明白了。
Thanks, Chenglong
Thanks, Fengguang
并且在步骤之后也注明了可以使用工具来完成。 5) {compass-ci} 为用户提供了可将 '.tar.xz' 格式的 docker 镜像包转换为 rootfs 的工具。 ```bash ./{compass-ci}/container/docker-rootfs/run openEuler-docker.aarch64.tar.xz /tmp/openeuler-rootfs-20.03 ``` 需要将详细过程去掉吗?
Thanks, Chenglong
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
- 获取对应 os 版本的 rootfs(以 openEuler 为例)
- 通过 docker 获取 rootfs
- 1) 下载 openEuler 官方提供的 docker 镜像压缩包
```
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/openEuler-20.03-LTS.aarch64.qcow2.xz ```
@@ -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 ```
- 定制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 环境变量文件
- 退出 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
- 打包rootfs
- cd $rootfs
- find . | coip -o -Hnewc |gzip -9 > $os_name.cgz
- 打包驱动软件/内核源码
- 如果想要使用 {compass-ci} 未提供的内核版本, 可以在 rootfs 中手动安装对应版本内核,并将驱动软件/内核源码进行打包。
- 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.399404] Memory Limit: none [ 0.399749] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- ```[ 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)
- 解决方法
- 1)启动内存不足,增加内存可解决。 2)内核文件权限不足,给予 644 权限。
- 系统运行缓慢
问题现象
打包镜像体积过大,会消耗很大内存
-- 2.23.0