在现有模板下修改自己的LiveCD
1. 拷贝现有livecd中的所有文件
2. 解压squashfs.img
#将livecd的img解压到当前目录,我是在centos8.5上进行操作,发现 -d[est] <dir>会导致解压异常,其他平台暂未试过。
unsquashfs -f /LiveOS/squashfs.img
3. 挂载rootfs
关键:--bind
#挂载rootfs.img后,直接chroot,无法与本机之外的环境互联,基本上无法直接进行额外操作,所以需要挂载本地操作系统的的临时目录到其子目录中,再chroot
(当然,如果先把包传到挂载目录,在chroot有时候也能省下不少事;如:mount rootfs.img /mnt;cp -r pkg/ /mnt/tmp;chroot /mnt;.............;exit;umount /mnt)
mount -o loop,rw rootfs.img /mnt/
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt
注:有些内容建议在/etc/rc.d/rc.local文件里修改,如:fedora livecd设置root远程后,开机界面会弹出几个桌面交互框,有点烦人。
注:rc.local不执行,待解决
ln -s /etc/rc.d/rc.local /etc/rc.d/rc3.d/S99local
ln -s /etc/rc.d/rc.local /etc/rc.d/rc5.d/S99local
然后自定义修改,完成后退出
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt
5. 重新打包squashfs.img
mksquashfs squashfs-root/ squashfs.img
打包iso
genisoimage -v -cache-inodes -joliet-long -R -J -T -V Fedora-WS-Live-37-1-7 -o /root/Fedora-WS-Live-37-1-7.iso .
打包时注意volume id需要与cdlabel一致,否则系统会起不来的;至于修改以下两文件还是改genisoimage -V选项全凭个人喜好
我的fedora livecd打包时不需要指明-b,-e等选项,其他的livecd未必,如有isolinux.bin的需要用-b指明一下
如果livecd的镜像太大,超过4G,使用mkisofs会报错,此时调整命令如下:
genisoimage -allow-limited-size -l -r -iso-level 3 -v -cache-inodes -joliet-long -R -J -T -V Fedora-WS-Live-37-1-7 -o /root/Fedora-WS-Live-37-1-7-big.iso /mkos/livecd/
使用物理服务器可以起来,但是虚拟机起cd读盘失败,于是尝试了如下操作,读盘成功,但是系统起不来,有几个systemd的服务启动失败,其中包括login的服务,待解决
# cat mkLiveCDiso.sh genisoimage -o /var/lib/libvirt/images/Fedora-WS-Live-37-1-7-x86_64.iso \ -b images/eltorito.img -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -eltorito-alt-boot -e images/eltorito.img -no-emul-boot \ -V 'Fedora-WS-Live-37-1-7' \ -p 'AutoStart' \ -A "made by Santiagod at $(timedatectl|awk '/Local time/{print $4,$5}')" \ -R -J -v -T /mkos/livecd
备注:livecd改动记录
1) 装包:ipmitool,storcli,sas3ircu,qaucli,lsscsi,smart-tools。。。
2) 测试脚本:Theserver-test.sh
3) /root/.bashrc:IP_SSH(){} 【注:写入/etc/rc.local,/etc/rc.d/rc.local,/etc/rc.d/rc.{3,5}/S99local 777权限,依旧无法执行】
cat >> /root/.bashrc <<IP_SSH IP_SSH(){ ### IP_ADDR nmcli -g UUID con | xargs -I{} nmcli con down {} &>/dev/null nmcli -g UUID con | xargs -I{} nmcli con del {} &>/dev/null IF2=$(nmcli -g DEVICE dev | grep -v lo | head -1) if [ -n "$IF2" ]; then nmcli con add type ethernet ifname $IF2 con-name $IF2 nmcli con mod $IF2 ipv4.method manual ipv4.addr 192.168.7.110/24 nmcli con mod $IF2 ipv4.gateway 192.168.7.1 nmcli con mod $IF2 ipv4.dns 8.8.8.8 autoconnect yes nmcli con reload nmcli con up $IF2 fi ### ROOT_SSH sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config systemctl restart sshd echo root:Admin123! |chpasswd } ip a|grep 192|awk '{print $2}'|grep 192&&echo "Welcome Login Santia-God's LiveCD \(^v^)/"||IP_SSH IP_SSH
4) 附:进入Fedora37 LivdVD后,默认是UID为1000的sudo用户,可sudo su -切换到root