在现有模板下修改自己的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

posted @ 2023-02-13 21:40  咿呀哒喏  阅读(135)  评论(0编辑  收藏  举报