diff --git "a/docs/zh/docs/TailorCustom/isocut\344\275\277\347\224\250\346\214\207\345\215\227.md" "b/docs/zh/docs/TailorCustom/isocut\344\275\277\347\224\250\346\214\207\345\215\227.md" index 19790dae0f02539e6a3dd2faf173f487e76c02ea..f119f8948b4d36e613d8cf3e8ead071098133829 100644 --- "a/docs/zh/docs/TailorCustom/isocut\344\275\277\347\224\250\346\214\207\345\215\227.md" +++ "b/docs/zh/docs/TailorCustom/isocut\344\275\277\347\224\250\346\214\207\345\215\227.md" @@ -7,11 +7,12 @@ - [命令介绍](#命令介绍) - [软件包来源](#软件包来源) - [操作指导](#操作指导) -- [FAQ](#FAQ) + - [新镜像的自动安装(在riscv64环境下)](#新镜像的自动安装在riscv64环境下) +- [FAQ](#faq) - [默认 rpm 包列表安装系统失败](#默认-rpm-包列表安装系统失败) - ## 简介 + openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 openEuler 光盘镜像安装操作系统时,会安装镜像所包含的全量 RPM 软件包,用户无法只安装部分所需的软件包。 在某些场景下,用户不需要安装镜像提供的全量软件包,或者需要一些额外的软件包。因此,openEuler 提供了镜像裁剪定制工具。通过该工具,用户可以基于 openEuler 光盘镜像裁剪定制仅包含所需 RPM 软件包的 ISO 镜像。这些软件包可以来自原有 ISO 镜像,也可以额外指定,从而满足用户定制需求。 @@ -22,7 +23,7 @@ openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 使用 openEuler 裁剪定制工具制作 ISO 所使用的机器需要满足如下软硬件要求: -- CPU 架构为 AArch64 或者 x86_64 +- CPU 架构为 AArch64 / x86_64 / riscv64 - 建议预留 30 GB 以上的磁盘空间(用于运行裁剪定制工具和存放 ISO 镜像) ## 安装工具 @@ -35,7 +36,16 @@ openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 2. 下载对应架构的 ISO 镜像(必须是 everything 版本),并存放在任一目录(建议该目录磁盘空间大于 20 GB),此处假设存放在 /home/isocut_iso 目录。 - AArch64 架构的镜像下载链接为:https://repo.openeuler.org/openEuler-{version}/ISO/aarch64/openEuler-{version}-everything-aarch64-dvd.iso +以下以 **24.03-LTS-SP2** 为示例,其他版本请替换链接中的版本号: + +- AArch64 架构: + + +- x86_64 架构: + + +- riscv64 架构: + 3. 创建文件 /etc/yum.repos.d/local.repo,配置对应 yum 源。配置内容参考如下,其中 baseurl 是用于挂载 ISO 镜像的目录。 @@ -86,11 +96,9 @@ openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 -k file_path kickstart file ``` - - ## 裁剪定制镜像 -此处介绍如何使用镜像裁剪定制工具基于 openEuler 光盘镜像裁剪或添加额外 RPM 软件包制作新镜像的方法。 +此处介绍如何使用镜像裁剪定制工具基于 openEuler 光盘镜像裁剪或添加额外 RPM 软件包制作新镜像的方法。 ### 命令介绍 @@ -111,8 +119,6 @@ openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 | *source_iso* | 是 | 用于裁剪的 ISO 源镜像所在路径和名称。不指定路径时,默认当前路径。 | | *dest_iso* | 是 | 裁剪定制生成的 ISO 新镜像存放路径和名称。不指定路径时,默认当前路径。 | - - ### 软件包来源 新镜像的 RPM 包来源有: @@ -121,14 +127,11 @@ openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 - 额外指定。执行 **isocut** 时使用 -r 参数指定软件包所在路径,并将添加的 RPM 包按上述格式添加到配置文件 /etc/isocut/rpmlist 中。 - - >![](./public_sys-resources/icon-note.gif) **说明:** > >- 裁剪定制镜像时,若无法找到配置文件中指定的 RPM 包,则镜像中不会添加该 RPM 包。 >- 若 RPM 包的依赖有问题,则裁剪定制镜像时可能会报错。 - ### kickstart 功能介绍 用户需要实现镜像自动化安装,可以通过 kickstart 的方式。在执行 **isocut** 时使用 -k 参数指定 kickstart 文件。 @@ -159,7 +162,7 @@ rootpw --iscrypted ${pwd} 1. 添加用于生成密码的用户,此处假设 testUser。 ``` shell script - $ sudo useradd testUser + sudo useradd testUser ``` 2. 设置 testUser 用户的密码。参考命令如下,根据提示设置密码。 @@ -180,6 +183,7 @@ rootpw --iscrypted ${pwd} ``` 4. 拷贝上述加密密码替换 /etc/isocut/anaconda-ks.cfg 中的 pwd 字段,如下所示(请用实际内容替换 *** )。 + ``` shell script rootpw --iscrypted *** ``` @@ -198,27 +202,18 @@ rootpw --iscrypted ${pwd} > - 配置 grub 初始密码需要使用 root 权限。 > - grub 密码对应的默认用户为 root 。 > -> - 系统中需有 grub2-set-password 命令,若不存在,请提前安装该命令。 +> - 系统中需有 grub2-mkpasswd-pbkdf2 命令,若不存在,请提前安装该命令。 1. 执行如下命令,根据提示设置 grub2 密码。 ```shell - $ sudo grub2-set-password -o ./ + $ sudo grub2-mkpasswd-pbkdf2 -o ./ Enter password: Confirm password: - grep: .//grub.cfg: No such file or directory - WARNING: The current configuration lacks password support! - Update your configuration with grub2-mkconfig to support this feature. + PBKDF2 hash of your password is grub.pbkdf2.sha512.*** ``` -2. 命令执行完成后,会在当前目录生成 user.cfg 文件,grub.pbkdf2.sha512 开头的内容即 grub2 加密密码。 - - ```shell - $ sudo cat user.cfg - GRUB2_PASSWORD=grub.pbkdf2.sha512.*** - ``` - -3. 复制上述密文,并在 /etc/isocut/anaconda-ks.cfg 文件中增加如下配置。 +2. 复制上述密文,并在 /etc/isocut/anaconda-ks.cfg 文件中增加如下配置。 ```shell %addon com_huawei_grub_safe --iscrypted --password='grub.pbkdf2.sha512.***' @@ -256,6 +251,9 @@ kernel.aarch64 %end ``` +##### (在使用 QEMU 启动的 riscv64 中需要)修改 kickstart 文件中的设备名 + +将 `/etc/isocut/anaconda-ks.cfg` 中所有 `sda` 改为 `vda`(共 3 处),使其与 QEMU 虚拟机使用的 VirtIO 设备名称一致,确保自动化安装识别磁盘。 ### 操作指导 @@ -266,8 +264,6 @@ kernel.aarch64 >- 待裁剪的源镜像可以为基础镜像,也可以是 everything 版镜像,例子中以基础版镜像 openEuler-24.03-LTS-aarch64-dvd.iso 为例。 >- 例子中假设新生成的镜像名称为 new.iso,且存放在 /home/result 路径;运行工具的临时目录为 /home/temp;额外的 RPM 软件包存放在 /home/rpms 目录。 - - 1. 修改配置文件 /etc/isocut/rpmlist,指定用户需要安装的 RPM 软件包(来自原有 ISO 镜像)。 ``` shell script @@ -287,7 +283,7 @@ kernel.aarch64 /dev/sda2 976M 114M 796M 13% /boot /dev/mapper/openeuler_openeuler-home 61G 21G 38G 35% /home ``` - + 3. 执行裁剪定制。 **场景一**:新镜像的所有 RPM 包来自原有 ISO 镜像 @@ -311,19 +307,73 @@ kernel.aarch64 ISO cutout succeeded, enjoy your new image "/home/result/new.iso" isocut.lock unlocked ... ``` + 回显如上,说明新镜像 new.iso 定制成功。 **场景二**:新镜像的 RPM 包除来自原有 ISO 镜像,还包含来自 /home/rpms 的额外软件包 - + ```shell sudo isocut -t /home/temp -r /home/rpms /home/isocut_iso/openEuler-24.03-LTS-aarch64-dvd.iso /home/result/new.iso ``` **场景三**:使用 kickstart 文件实现自动化安装,需要修改 /etc/isocut/anaconda-ks.cfg 文件 + ```shell sudo isocut -t /home/temp -k /etc/isocut/anaconda-ks.cfg /home/isocut_iso/openEuler-24.03-LTS-aarch64-dvd.iso /home/result/new.iso ``` +### 新镜像的自动安装(在riscv64环境下) + +1. 使用 UEFI 启动,下载 `RISCV_VIRT_CODE.fd` 和 `RISCV_VIRT_VARS.fd` + 可在 [openEuler 官方镜像站](https://dl-cdn.openeuler.openatom.cn/openEuler-24.03-LTS/virtual_machine_img/riscv64/) 获取。 + +2. 创建虚拟硬盘,例如: + + ```shell + qemu-img create -f qcow2 riscv\_disk.qcow2 10G + ``` + +3. 使用如下脚本完成自动安装: + + ```shell + \#!/usr/bin/env bash + + # Variables + + vcpu=8 + memory=8 + drive="\$(ls \*.qcow2)" + fw1="RISCV\_VIRT\_CODE.fd" + fw2="RISCV\_VIRT\_VARS.fd" + ssh\_port=12055 + cdrom="new\.iso" + + cmd="qemu-system-riscv64 + -nographic + -machine virt,pflash0=pflash0,pflash1=pflash1,acpi=off + -smp \$vcpu -m \${memory}G + -blockdev node-name=pflash0,driver=file,read-only=on,filename=\$fw1 + -blockdev node-name=pflash1,driver=file,filename=\$fw2 + -drive file=\$drive,format=qcow2,id=hd0 + -device virtio-blk-device,drive=hd0,bootindex=1 + -device virtio-scsi-device,id=scsi0 + -drive if=none,file=\$cdrom,id=cdrom,media=cdrom,readonly=on + -device scsi-cd,drive=cdrom,bootindex=2 + -object rng-random,filename=/dev/urandom,id=rng0 + -device virtio-rng-device,rng=rng0 + -device virtio-net-device,netdev=net0 + -netdev user,id=net0,hostfwd=tcp::\$ssh\_port-:22" + + echo ":: Starting RISC-V VM with kickstart ISO..." + echo "vCPU: \$vcpu" + echo "Memory: \${memory}G" + echo "Disk: \$drive" + echo "ISO: \$cdrom" + echo "SSH Port: \$ssh\_port" + sleep 1 + + eval \$cmd + ``` ## FAQ @@ -359,6 +409,7 @@ kernel.aarch64 3. 再次裁剪安装 iso 镜像。 以问题描述中的缺包情况为例,修改 rpmlist 配置文件如下: + ```shell $ cat /etc/isocut/rpmlist kernel.aarch64 @@ -370,4 +421,3 @@ kernel.aarch64 grub2-efi-aa64.aarch64 dosfstools.aarch64 ``` -