|
本帖最后由 2011niumao 于 2020-5-29 11:43 编辑
在SQUASHFS只读系统中制作可写img系统.
当启动到一个只读squashfs系统后,如果想安装一些自己喜欢的软件并且保留到系统中,可以预先制作一个固定大小的vhd再把整个系统同步rsync到vhd的分区上.也可以在squashfs系统中制作一个img,把系统恢复到img上,以UBUNTU2004.squashfs为例, 在squashfs系统中依次输入命令如下.- sudo dd if=/dev/zero of=/media/ubuntu/UBT/ubuntu/ubt.vhd bs=1G count=16
- sudo kpartx -av /media/ubuntu/UBT/ubuntu/ubt.vhd
- sudo mkfs.ext4 /media/ubuntu/UBT/ubuntu/ubt.vhd
- sudo mkdir /tmp/mm /tmp/tt
- sudo mount --bind / /tmp/mm
- sudo mount /media/ubuntu/UBT/ubuntu/ubt.vhd /tmp/tt
- sudo rsync -SHav /tmp/mm/* /tmp/tt/
复制代码 制作完毕.这里kpartx命令可能不需要,存疑.另外输出文件在标签为UBT的硬盘分区的子目录ubuntu内,文件名字为ubt.vhd(正常的名字后缀应该为img).再设置引导即可直接启动到这个可写img系统,grub2菜单如下
- enuentry "ubt-VHD" --class ubuntu {
- insmod gzio
- insmod part_msdos
- insmod part_gpt
- insmod ext2
- insmod ntfs
- insmod probe
- set vhdfile="/ubuntu/ubt.vhd"
- set root=(hd0,1)
- search --no-floppy -f --set=aabbcc $vhdfile
- set root=${aabbcc}
- probe -u --set=ddeeff ${aabbcc}
- loopback lo $vhdfile
- linux (lo)/boot/vmlinuz root=UUID=${ddeeff} kloop=$vhdfile rw kroot=/dev/loop0 audit=0 apparmor=0
- initrd (lo)/boot/initrd.img
- }
复制代码 GRUB4DOS需要把两个引导文件拷贝到外面,菜单例子如下:
- title 启动ubt.img
- find --set-root --ignore-floppies --ignore-cd /ubuntu/ubt.img
- uuid ()
- kernel /ubuntu/vmlinuz root=UUID=%?% kloop=/ubuntu/ubt.img kroot=/dev/loop0
- initrd /ubuntu/initrd.img
复制代码 附注1: 这个就是传统的wubi安装模式, 只是kloop引导模式包含wubi模式作为一个特例.
附注2: 最好在squashfs系统中运行"sudo blkid"查看img文件系统的uuid, 并把img文件系统中"/etc/fstab"文件修改好再重启. |
|