将持久性分区(casper-rw)挂载为只读

我正在尝试创建一个新的ISO映像,以便在USB记忆棒上使用。 我已将USB记忆棒分为2个分区,一个vfat和一个ext4vfat分区安装了ISO和GRUB2 ,以便GRUB2引导ISO。

ext4分区具有卷标casper-rw ,用作Live USB的持久数据存储。 我已经修改了grub.cfg ,以便在启动时获得两个选项,一个用于在持久模式下启动ISO,另一个用于正常启动。

但是,在“正常”模式下启动时, casper-rw分区将作为普通驱动器安装,并且在持久模式下进行的更改不会保留。

我想要的是挂在/ filesystem上的casper-rw分区,但是当我要求Ubuntu正常启动时(即没有GRUB2persistent选项),我希望该分区以只读方式挂载这样在持久模式下所做的更改仍然存在。

实现这一目标的最佳方法是什么?

我所做的是修改initrd.lz中的casper脚本。

该脚本将以只读方式挂载casper-rw,然后将其覆盖在/上。 然后它会将tmpfs挂载到叠加层的顶部。

我使用mint btw,不确定ubuntu,希望它适合你。

这里有更多细节:

  1. 使用此处的指令提取initrd。
  2. 编辑脚本/ casper,修改setup_unionfs()函数。 你在这里找到修改过的function。

     ... p_ro_mount="" if [ -n "${PERSISTENT}" ]; then cowprobe=$(find_cow_device "${root_persistence}") if [ -b "${cowprobe}" ]; then p_ro_device=${cowprobe} p_ro_fstype=$(get_fstype "${cowprobe}") p_ro_mountopt="ro,noatime" p_ro_mount="/persistent" mkdir -p $p_ro_mount mount -t ${p_ro_fstype} -o ${p_ro_mountopt} \ ${p_ro_device} \ ${p_ro_mount} || panic "Can not mount" ... case ${UNIONFS} in ... overlayfs) mounts="" for mount in /cow $p_ro_mount $rofslist ... 
  3. 替换initrd.lz,或者在我的情况下,我刚刚创建了一个新的。

     find . | cpio --quiet -o -H newc | lzma -7 > ../ro-initrd.lz 
  4. syslinux.cfg添加更多引导选项

     append initrd=/casper/ro-initrd.lz file=/cdrom/preseed/linuxmint.seed boot=casper splash -- persistent 

注意:我使用Mint 16(x86)和unetbootin。