侧边栏壁纸
博主头像
知与夜 博主等级

行动起来,活在当下

  • 累计撰写 24 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

定制银河麒麟ISO

夜莺
2025-09-08 / 0 评论 / 0 点赞 / 11 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2025-09-08,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

定制银河麒麟ISO

0. 应用场景

目前很多整机厂商都会进行操作系统出厂预装,并根据项目或环境需求在操作系统中定制安装一些补丁以及软件或配置,且在规模较大的环境中需要进行 PXE 安装,故以下介绍下如何定制化制作出厂 ISO。

此文档使用基础操作系统版本:Kylin-Desktop-V10-Release-Build1-20200710-arm64.iso,下文中简称为基础版本。

注:U 系(Ubuntu 系列)操作系统同样适用此方法。


1. 创建目录

 
cd /root
mkdir mnt live tool iso deb

创建目录用途:

  • ​mnt:作为镜像挂载目录
  • ​live:作为工作目录
  • ​tool:作为工具目录
  • iso : 作为导出镜像目录
  • deb :作为软件安装包存放位置

2. 上传定制系统基础镜像至 /root/tool 中,并挂载至 mnt​

将基础镜像拷贝到/root/tool文件夹中

cp /home/user/桌面/Kylin-Desktop-V10-Release-Build1-20200710-arm64.iso /root/tool

将需要的安装包复制到/root/deb文件夹中

cp /home/user/桌面/deb/*.deb /root/deb

将镜像挂载至/root/mnt

mount /root/tool/Kylin-Desktop-V10-Release-Build1-20200710-arm64.iso /root/mnt

3. 复制镜像中所有文件至 live 下

cp -rp /root/mnt/. /root/live

4. 取消挂载

umount /root/mnt

5. 解压 filesystem.squashfs

cd /root/live/casper
unsquashfs filesystem.squashfs

解压后目录为:squashfs-root。


6. 切换至新系统中(chroot)

chroot squashfs-root

mount -t proc   none /proc      # 把 proc 这个虚拟文件系统挂载到 /proc 目录
mount -t sysfs  none /sys
mount -t devpts none /dev/pts

7. 定制化操作系统

可根据自身需求进行定制,如:升级更新软件包、安装第三方软件、修改配置等。

7.1 软件源更新

先退出 ​​squashfs-root​​ ** 系统:**

exit

复制宿主机的源与 DNS 到 chroot 系统:

cd /root/live/casper
cp /etc/apt/sources.list /root/live/casper/squashfs-root/etc/apt/sources.list
cp /etc/resolv.conf       /root/live/casper/squashfs-root/etc/resolv.conf
cp /root/deb/*.deb ./squashfs-root/tmp

再次进入 ​​squashfs-root​​ :

chroot squashfs-root
cd /tmp
dpkg -i *.deb
apt update

可使用源更新系统或安装第三方软件等。

7.2 设置开机启动shell脚本(可选)

 sudo vim /lib/systemd/system/rc-local.service

在文件最下面添加以下代码

[Install]
 WantedBy=multi-user.target
 Alias=rc-local.service

保存之后输入

sudo vim /etc/rc.local

在rc.local中添加需要的代码格式如下:

#!/bin/sh
 # 这里添加要开机执行的脚本和命令等等
exit 0

保存之后,添加可执行权限

:sudo chmod +x /etc/rc.local

创建软链接及生效

sudo ln-s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

‍

7.3 完成配置,清除系统

apt-get clean
apt-get autoremove
rm -rf /tmp/*

umount /proc
umount /sys
umount /dev/pts

history -c
history -w
exit


8. 重新配置并压缩根文件系统

cd /root/live/casper

删除原来的操作系统压缩文件:

rm -rf filesystem.squashfs

重新压缩操作系统:

mksquashfs squashfs-root filesystem.squashfs -comp xz

更新大小(​​filesystem.size​​ ):

printf $(du -sx --block-size 1 squashfs-root | cut -f1) > filesystem.size

删除解压目录:

rm -rf squashfs-root

更新 md5 值:

cd /root/live
rm md5sum.txt
find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee md5sum.txt

9. 制作定制 ISO 镜像

mkisofs -r -T -J -joliet-long \
-allow-limited-size \
-quiet \
-c boot.catalog \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-V 'Kylin-Desktop-V10-SP1' \
-sysid 'LINUX' \
-o '/root/iso/Kylin-Desktop-V10-SP1-2303-ARM64_v1.iso' \
/root/live
  • -V:为 ISO 挂载后显示名称
  • -o:第一个参数为定制镜像生成位置及名称,第二个参数为工作目录

通过上面的命令生成的 ISO 即可以采用 UEFI 的方式进行安装,也可以采用 Legacy 的方式进行安装。


附:mkisofs 参数及用法简表

  • -a / --all:通常不处理备份文件,使用此参数可将备份文件加入映像。
  • -A <应用程序ID> / -appid <应用程序ID>:指定光盘的应用程序 ID。
  • -abstract <摘要文件>:指定摘要文件名。
  • -b <开机映像文件> / -eltorito-boot <开机映像文件>:制作可启动光盘时指定启动映像。
  • -biblio <ISBN文件>:指定记录光盘 ISBN 的文件名(位于根目录)。
  • -c <开机文件名称> / -eltorito-catalog <开机文件名称>:制作可启动光盘时建立启动目录文件。
  • -C <盘区编号,盘区编号>:将多个节区合成一个映像文件时使用。
  • -copyright <版权信息文件>:指定版权信息文件名。
  • -d / -omit-period:省略文件名末尾的句号。
  • -D / -disable-deep-relocation:关闭超过 8 层目录时的自动兼容处理。
  • -f / -follow-links:忽略符号链接。
  • -h:显示帮助。
  • -hide <目录或文件名>:在 ISO9660/RRIP 系统中隐藏指定路径。
  • -hide-joliet <目录或文件名>:在 Joliet 中隐藏指定路径。
  • -J / -joliet:使用 Joliet 格式的目录与文件名称。
  • -l / -full-iso9660-filenames:使用 ISO9660 的 32 字符长度文件名。
  • -L / -allow-leading-dots:允许文件名首字符为句号。
  • -log-file <记录文件>:将错误信息写入指定文件。
  • -m <目录或文件名> / -exclude <目录或文件名>:排除指定路径。
  • -M <映像文件> / -prev-session <映像文件>:与指定映像文件合并。
  • -N / -omit-version-number:省略 ISO9660 文件的版本信息。
  • -o <映像文件> / -output <映像文件>:指定输出映像文件名。
  • -p <数据处理人> / -preparer <数据处理人>:记录数据处理人。
  • -print-size:显示预估的文件系统大小。
  • -quiet:静默执行。
  • -r / -rational-rock:启用 Rock Ridge 扩展并开放全部文件读取权限。
  • -R / -rock:使用 Rock Ridge 扩展。
  • -sysid <系统ID>:指定光盘的系统 ID。
  • -T / -translation-table:建立文件名转换表。
  • -v / -verbose:显示详细信息。
  • -V <光盘ID> / -volid <光盘ID>:指定卷册集 ID。
  • -volset-size <光盘总数>:指定卷册集光盘张数。
  • -volset-seqno <卷册序号>:指定卷册集中本片编号。
  • -x <目录>:排除指定目录。
  • -z:建立通透性压缩文件的 SUSP 记录(限特定平台)。

V10 不同架构示例命令

V10 x86 结构

mkisofs -J -r -V 'Kylin-Desktop-V10-Lenovo' -cache-inodes -l -b \
  isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
  boot-info-table -eltorito-alt-boot -e boot/grub/efifi.img -no-emul-boot \
  -o /opt/Test.iso .

V10 arm 结构

mkisofs -r -T -J -joliet-long \
-allow-limited-size \
-quiet \
-c boot.catalog \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-V 'Kylin-Desktop-V10-SP1' \
-sysid 'LINUX' \
-o '/root/iso/Kylin-Desktop-V10-SP1-2303-ARM64_v1.iso' \
/root/live

V10 mips 结构

mkisofs -b casper/initrd.img -no-emul-boot \
  -T -J -R -c boot.catalog -hide boot.catalog -V "V10-desktop-mips64el" \
  -o /opt/V10-desktop-mips64el.iso .
0

评论区