Вопрос Установка раздела сохранения (casper-rw) только для чтения


Я пытаюсь создать новый ISO-образ для использования на USB-накопителе. Я разделил свой USB-накопитель на 2 раздела, один vfat и один ext4, vfat раздел имеет ISO и GRUB2 установленный на него, так что GRUB2 загружает ISO.

ext4 раздел имеет метку тома casper-rw и используется как постоянное хранилище данных для Live USB. Я изменил grub.cfg так что я получаю два варианта при загрузке, один для загрузки ISO в постоянном режиме и один для загрузки в обычном режиме.

Однако при загрузке в «нормальном» режиме casper-rw раздел монтируется как обычный диск, а изменения в постоянном режиме не остаются.

Я бы хотел, чтобы раздел casper-rw монтировался поверх / файловой системы, но когда я прошу Ubuntu нормально загрузиться (т. е. без persistent в GRUB2), Я хотел бы, чтобы этот раздел монтировался только для чтения, чтобы изменения в постоянном режиме сохранялись.

Каков наилучший способ достичь этого?


1
2018-01-19 21:48


происхождения




ответы:


Что я сделал, так это изменить скрипт casper внутри initrd.lz.

Сценарий будет монтировать casper-rw как только для чтения, а затем наложить его поверх /. Затем он будет монтировать tmpfs поверх наложения.

Я использую mint btw, не уверен в ubuntu, надеюсь, что это сработает для вас.

Вот более подробная информация:

  1. Извлечь initrd, используя инструкцию из Вот,
  2. Редактируйте скрипты / casper, измените setup_unionfs() функция. Вы найдете измененную функцию Вот,

    ...
    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.


2
2018-01-22 10:10



Не могли бы вы добавить дополнительные сведения о том, как вы это достигли? Даже копия скрипта будет в порядке. - Chinmay Kanchi
Я добавляю больше деталей - David Lim