Монтирование постоянного раздела (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
задан 20 January 2014 в 01:48

1 ответ

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

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

Я использую mint, кстати, не уверен насчет ubuntu, надеюсь, он вам подойдет.

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

  1. Извлечь initrd, используя инструкцию из здесь .
  2. Редактировать скрипты / Каспер, изменить функцию 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.

0
ответ дан 20 January 2014 в 01:48

Другие вопросы по тегам:

Похожие вопросы: