mkisofs构建livecd

# 配置isolinux目录的isolinux.cfg引导文件
# 定义第一个菜单项
label rescue_mode
menu label ^DeepinRec
kernel /deepin/vmlinuz-4.13.4
append initrd=/deepin/initrd.img-4.13.4 ro boot=live components quiet splash toram=filesystem.squashfs locales=zh_CN.UTF-8 live-media-path=root


# 生成iso,isolinux放到目录里面
sudo su

mkisofs -r -J -T -v -V "DeepinRec" \
  -b isolinux/isolinux.bin  \
  -no-emul-boot -boot-load-size 4 \
  -boot-info-table -o live.iso .


# 模拟启动
qemu-system-x86_64 -enable-kvm \
  -boot order=d \
  -cdrom live.iso \
  -m 8G \
  -smp 8 \
  -machine usb=on -device usb-tablet

# 鼠标跟随, 设置玩为触摸板-device usb-tablet

# 修改initrd,可以放置fsarchiver文件
gunzip -c initrd* | cpio -idv
find . | cpio --create --format='newc' | gzip -9 > ../new-initrd.img-4.13.4


xz -dc initrd.img| cpio -idmv
find . | cpio --create --format='newc' | xz -9 > ../new-initrd.img-4.13.4.img
# 把nixos_root.fsa以及fsarchiver放到iso文件
mkisofs -o nixos.iso -V "NIXOS_ISO" nixos_root.fsa fsarchiver

# 创建硬盘
qemu-img create -f qcow2 linux.img 80G

# 导入2个cdrom
qemu-system-x86_64 -enable-kvm \
  -boot order=d \
  -hda linux.img \
  -drive media=cdrom,readonly=on,format=raw,file=alpine-virt-3.18.0-x86_64.iso \
  -drive media=cdrom,readonly=on,format=raw,file=nixos.iso \
  -m 8G \
  -smp 8

# 启动之后进行挂载两个cdrom
mount /dev/sr0 /cd0
mount /dev/sr1 /cd1

# 恢复
parted /dev/sda -- mklabel gpt
parted /dev/sda -- mkpart primary 1MiB 512MiB
parted /dev/sda -- mkpart primary 512MiB -1MiB

???

# 重新启动已经恢复的系统
qemu-system-x86_64 -enable-kvm \
  -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -boot order=d \
  -hda linux.img \
  -m 8G \
  -smp 8