一、基于Live文件系统定制
基于OEM文件夹的定制方式已经可以满足大部分的常用需求场景,而基于Live文件系统的定制方式除了可以实现以上功能外,还可以进行对标准版系统本身进行精简,删除不必要的软件。
二、解压Live文件系统,开始定制步骤
UOS桌面操作系统
1 、首先需要把live/filesystem.squashfs解压出来
uos@uos-PC:/media/uos/14107ABD08FFB686/ISO/oem/live$ 7z x uniontechos-desktop-20-professional-1050-update2-amd64.iso -ooem
2、这⾥操作需要 squashfs 和 unsquashfs 两个命令,如果提⽰找不到命令,可以通过安装 squashfs-tools 来解决:
sudo apt install squashfs-tools
3、在镜像数据⽬录中,先进⼊ live ⾥
cd live
4、对 squashfs 格式的镜像数据操作需要在root权限下操作,需要先提权:
sudo su
5、解压磁盘镜像数据
unsquashfs filesystem.squashfs
6、解压数据会释放到 squashfs-root ⽬录中。 将需要安装的包拷⻉到 squashfs-root/tmp/ 下,因为这个⽬录不需要其他特别操作就有写⼊权限。进⼊ squashfs-root ⽬录中:
cd squashfs-root
mount --bind /dev dev
mount --bind /dev/pts dev/pts
mount --bind /sys sys
mount --bind /proc proc
7、使⽤如下命令切换到解压出来的系统环境中
chroot .
此时 squashfs-root 变成了我们的根⽬录,也就是 / ,⾄此我们就可以开始对⽬录中的系统进⾏修改。
8、这⾥使⽤如下命令装上需要安装的包
dpkg -i /tmp/*.deb
9、先卸载系统关键挂载点,然后输入exit 退出chroot状态
umount proc
exit
10、执⾏如下命令卸载系统关键挂载点,注意卸载顺序和挂载顺序相反,先进后出原则
umount sys
umount dev/pts
umount dev
11、安装完成后,进⾏清场
rm -f tmp/*.deb
echo -n > root/.bash_history
12、退出 squashfs-root ⽬录
cd ..
13、如果安装的是内核包或者驱动包,这⾥需要将内核启动⽂件 vmlinuz 和 initrd.img 替换掉光盘镜像⾃带的内核启动⽂ 件。
注意:如果安装的内核⾮主线版本内核,版本号可能不会与下⾯写到的 4.19.0-6 不⼀样,需要对照修改
AMD64平台:
cp -fv squashfs-root/boot/vmlinuz-4.19.0-6-amd64 vmlinuz
cp -fv squashfs-root/boot/vmlinuz-4.19.0-6-amd64 vmlinuz.efi
cp -fv squashfs-root/boot/initrd.img-4.19.0-6-amd64 initrd.lz
MIPS64EL平台:
cp -fv squashfs-root/boot/vmlinuz-4.19.0-6-mips64 ../boot/vmlinuz
cp -fv squashfs-root/boot/initrd.img-4.19.0-6-mips64 ../boot/initrd.img
ARM64平台:
cp -fv squashfs-root/boot/vmlinuz-4.19.0-6-arm64 vmlinuz
cp -fv squashfs-root/boot/initrd.img-4.19.0-6-arm64 initrd.img
14、重新制作压缩系统模板磁盘镜像⽂件,由于压缩过程需要较多计算能⼒,所以此步骤耗时较⻓
mksquashfs squashfs-root filesystem1.squashfs -comp xz
15、修改⽂件权限
chown ${SUDO_USER}: filesystem1.squashfs
16、删除解压出来的⽂件
sudo rm -rf squashfs-root
17、使⽤我们新⽣成的 filesystem1.squashfs 替换原来的 filesystem.squashfs,然后exit 退出su 状态
mv filesystem1.squashfs filesystem.squashfs
18、退出live⽬录
cd ..
三、生成新的ISO
执行完之前的步骤,使⽤新⽣成的 filesystem.squashfs 替换掉镜像中原始的 live/filesystem.squashfs ,然后生成新的iso就完成定制镜像的步骤。
x86架构:
xorriso -as mkisofs -no-pad -joliet-long -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot -append_partition 2 0x01 boot/efi.img -isohybrid-gpt-basdat -isohybrid-apm-hfsplus -appid "UOS 20" -publisher "UOS <http://www.uniontech.com>" -V "UOS 20" -o ../uos-new.iso .
ARM64架构:
xorriso -as mkisofs -r -J -R -joliet-long -c boot.cat -boot-load-size 4 -boot-info-table -eltorito-alt-boot --efi-boot boot/grub/efi.img -no-emul-boot -file_name_limit 250 -appid "UOS 20" -publisher "UOS <http://www.uniontech.com>" -V "UOS 20" -o ../uos-new.iso .
MIPS64架构:
xorriso -as mkisofs -V "UOS 20" -R -r -J -joliet-long -l -cache-inodes -appid "UOS 20" -publisher "UOS <http://www.uniontech.com>" -V "UOS 20" -o ../uos-new.iso .