From e86df139b77f0a517b15f7b75a8d0702fa7c0a3f Mon Sep 17 00:00:00 2001 From: liuym2022 <1461204592@qq.com> Date: Thu, 25 Sep 2025 01:40:36 +0000 Subject: [PATCH] =?UTF-8?q?update=20docs/zh/docs/TailorCustom/isocut?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=8C=87=E5=8D=97.md.=201.=20=E5=B0=86?= =?UTF-8?q?=E2=80=9C=E9=85=8D=E7=BD=AE=20grub2=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E2=80=9D=E6=AD=A5=E9=AA=A4=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=20grub2-set-password=20=E6=9B=BF=E6=8D=A2=E4=B8=BA=20grub2-mkp?= =?UTF-8?q?asswd-pbkdf2=E3=80=82=20=20=20=20=E5=8E=9F=E5=9B=A0=EF=BC=9A?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E4=B8=AD=20grub2-set-password=20?= =?UTF-8?q?=E5=8F=97=E8=A1=A5=E4=B8=81=E9=99=90=E5=88=B6=E4=BC=9A=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=BE=93=E5=85=A5=E5=BD=93=E5=89=8D=E5=AF=86=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E9=98=BB=E7=A2=8D=E5=90=8E=E7=BB=AD=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=EF=BC=9B=E4=BD=BF=E7=94=A8=20grub2-mkpasswd-pbkdf2=20=E5=8F=AF?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=94=9F=E6=88=90=E5=8A=A0=E5=AF=86=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E3=80=82=202.=20=E6=96=B0=E5=A2=9E=20riscv64=20?= =?UTF-8?q?=E9=80=82=E9=85=8D=E6=AD=A5=E9=AA=A4=EF=BC=9A=E5=9C=A8=20kickst?= =?UTF-8?q?art=20=E6=96=87=E4=BB=B6=E4=B8=AD=E5=B0=86=E6=89=80=E6=9C=89=20?= =?UTF-8?q?sda=20=E4=BF=AE=E6=94=B9=E4=B8=BA=20vda=EF=BC=88=E5=85=B1=203?= =?UTF-8?q?=20=E5=A4=84=EF=BC=89=EF=BC=8C=E4=BB=A5=E5=8C=B9=E9=85=8D=20QEM?= =?UTF-8?q?U=20VirtIO=20=E8=AE=BE=E5=A4=87=E5=91=BD=E5=90=8D=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E8=87=AA=E5=8A=A8=E5=8C=96=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E8=AF=86=E5=88=AB=E7=A3=81=E7=9B=98=E3=80=82?= =?UTF-8?q?=203.=20=E6=B7=BB=E5=8A=A0=20riscv64=20QEMU=20=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=91=BD=E4=BB=A4=E7=A4=BA=E4=BE=8B=EF=BC=8C=E4=BE=BF?= =?UTF-8?q?=E4=BA=8E=E7=94=A8=E6=88=B7=E5=9C=A8=20RISC-V=20=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E4=B8=8B=E5=AE=8C=E6=88=90=E9=95=9C=E5=83=8F=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E5=AE=89=E8=A3=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liuym2022 <1461204592@qq.com> --- ...77\347\224\250\346\214\207\345\215\227.md" | 112 +++++++++++++----- 1 file changed, 81 insertions(+), 31 deletions(-) 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 19790dae0..f119f8948 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 ``` - -- Gitee