Я пытаюсь создать новый 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
), Мне бы хотелось, чтобы этот раздел монтировался только для чтения, чтобы изменения, сделанные в постоянном режиме, сохранялись.
Как лучше всего достичь этого?
Что я сделал, так это изменил скрипт casper внутри initrd.lz.
Скрипт монтирует casper-rw только для чтения, а затем накладывает его поверх /. Затем он установит tmpfs поверх оверлея.
Я использую mint, кстати, не уверен насчет ubuntu, надеюсь, он вам подойдет.
Вот более подробная информация:
Редактировать скрипты / Каспер, изменить функцию 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
...
Замените initrd.lz, или в моем случае я только что создал новый.
find . | cpio --quiet -o -H newc | lzma -7 > ../ro-initrd.lz
Добавить дополнительную опцию загрузки в syslinux.cfg
append initrd=/casper/ro-initrd.lz file=/cdrom/preseed/linuxmint.seed boot=casper splash -- persistent
Примечание: я использую Mint 16 (x86) и unetbootin.