定制OpenEuler 22.03文件系统

由于openeuler22.03公共镜像源的最小文件系统initrd没有自带dnf下载命令,无法通过挂载本地源方式进行文件系统配置,需要制作带dnf下载命令的小文件系统,定制Sample-root-filesystem-soc_openEuler-22.03-LTS-aarch64.img或Sample-root-filesystem-soc_openEuler-22.03-LTS-SP1-aarch64.img。

前提条件

操作步骤

  1. 登录Linux服务器。
  2. 执行如下命令,切换至root用户。

    su - root

  3. 挂载iso镜像。

    1. 执行如下命令,创建临时目录。例如创建目录为“/opt/tmp/iso_mount”

      mkdir -p /opt/tmp/iso_mount

    2. 执行如下命令,挂载iso镜像。

      mount -o loop iso文件路径 /opt/tmp/iso_mount

    3. 执行如下命令,修改镜像源配置。

      mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak

      vim /etc/yum.repos.d/openEuler.repo

    4. 写入本地镜像源配置。
      [openEuler-local]
      name=openEuler
      baseurl=file:///opt/tmp/iso_mount
      enable=1
      gpgcheck=0
    5. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

      :wq!

  4. 拷贝initrd.img。

    执行如下命令,将initrd.img从挂载路径拷贝至任意目录下,例如“/opt/tmp”

    cp /opt/tmp/iso_mount/images/pxeboot/initrd.img /opt/tmp/

  5. 执行如下命令,进入“tmp”目录。

    cd /opt/tmp

  6. 解压initrd.img。

    1. 执行如下命令,重命名initrd.img。

      mv initrd.img initrd.img.xz

      initrd.img是xz压缩格式,可通过执行file initrd.img命令查看,所以解压前需要先重命名为.xz结尾的文件。

    2. 执行如下命令,解压initrd.img.xz。解压后initrd.img名称不变。

      xz -d initrd.img.xz

    3. 执行如下命令,新创建“initrd”目录,例如“/opt/tmp/initrd”

      mkdir -p /opt/tmp/initrd

    4. 执行如下命令,进入创建的“initrd”目录。

      cd /opt/tmp/initrd

    5. 执行如下命令,解压initrd.img。

      cpio -idmv < /opt/tmp/initrd.img

    6. 删除当前目录下ppc文件夹。

      rm -rf usr/lib/kbd/keymaps/legacy/ppc

  7. 安装dnf。

    执行如下命令,将dnf安装至initrd.img的解压目录下,例如“/opt/tmp/initrd”

    dnf install --installroot=/opt/tmp/initrd dnf -y

    打印信息中显示如下:表示dnf安装成功。

    Complete!

  8. 重新制作initrd.img。

    1. 执行如下命令,创建新镜像的存放目录,例如“/opt/tmp/new_initrd”

      mkdir -p /opt/tmp/new_initrd

    2. 执行如下命令,压缩生成新的initrd.img,并将其命名为Sample-root-filesystem-soc_openEuler-22.03-LTS-aarch64.img(若有软实时OS需求,则命名为Sample-root-filesystem-soc_openEuler-22.03-LTS-SP1-aarch64.img)。

      cd /opt/tmp/initrd

      find . | cpio -o | gzip > /opt/tmp/new_initrd/Sample-root-filesystem-soc_openEuler-22.03-LTS-aarch64.img

      若有软实时OS需求,该命令为find . | cpio -o | gzip > /opt/tmp/new_initrd/Sample-root-filesystem-soc_openEuler-22.03-LTS-SP1-aarch64.img