下载
中文
注册

定制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。

前提条件

  • 制作环境为Arm架构的openEuler 22.03操作系统的服务器。
  • 从官方网站获取openEuler 22.03 OS镜像“openEuler-22.03-LTS-aarch64-dvd.iso”(若有软实时OS需求,请获取“openEuler-22.03-LTS-SP1-aarch64-dvd.iso”)。
    • 若用户无Arm架构的openEuler 22.03操作系统的服务器,可访问Atlas 200I A2 加速模块软件包,下载并解压Ascend-hdk-310b-npu-sample-root-filesystem-soc_23.0.rc1_linux-aarch64.zip,直接获取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