| 
 | 
 本帖最后由 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"文件修改好再重启. |   
 
 
 
 |