见证IBM对虚拟根文件系统的了解

# 加载驱动 ,参见注释 1
   modprobe dm-mirror
  
   # 创建设备 ,参见注释 2
   mknod /dev/zero c 1 5
   mknod /dev/loop0 b 7 0
   mknod /dev/loop1 b 7 1
   mknod /dev/loop2 b 7 2
   mkdir /dev/cow
   mknod /dev/cow/ctl b 241 255
   mknod /dev/cow/0 b 241 0
  
   # 挂载 squash 根文件系统,挂载完后您可以在 /realroot/mnt/ 下找到 rootfs 文件 ,参见注释 3
   mount /realroot/mnt/squashRootfs /realroot/mnt/ -o loop
  
   # 设置 rootfs 为 loop 设备 ,参见注释 4
   losetup /dev/loop1 /realroot/mnt/rootfs
  
   # 创建 cowfile.out 并挂载为 loop 设备,我们将来的写操作都会写入 cowfile.out
   dd if=/dev/zero of=/realroot/mnt/cowfile.out bs=2K count=137500
   losetup /dev/loop2 /realroot/mnt/cowfile.out
  
   # 将 /realroot/mnt/rootfs 和 /realroot/mnt/cowfile.out 结合起来创建一个逻辑根文件设备,
   # 设备文件为 /dev/mapper/root_fs,,参见注释 5
   echo "0 $(blockdev --getsize /dev/loop1) snapshot /dev/loop1 /dev/loop2 p 64" |
   dmsetup create root_fs
  
   # 将上面创建的逻辑根文件设备 /dev/mapper/root_fs 挂载就可以看到一个可读写的根文件系统
   mount /dev/mapper/root_fs /realroot/mnt/Image
  
   # 切换到最终可读写的根文件系统
   cd /realroot/mnt/Image
   chroot ./sbin/init -i

 

使用 Squash 压缩文件系统构所使用的主要命令:

  • mknod:创建 Squash 压缩文件系统

  • losetup:设置并控制 Loop 设备

  • chroot:改变根目录

  • dmsetup:低水平逻辑卷管理

你可能感兴趣的:(文件系统)