USBスティックで使用する新しいISOイメージを作成しようとしています。 USBスティックをvfat
とext4
の2つのパーティションに分割しました。 vfat
パーティションにはISOとGRUB2
がインストールされており、GRUB2
がISOを起動します。
ext4
パーティションにはボリュームラベルcasper-rw
があり、Live USBの永続データストアとして使用されます。 grub.cfg
を変更して、ブート時に2つのオプションを取得できるようにしました。1つは永続モードでISOをブートするオプション、もう1つは通常にブートするオプションです。
ただし、「通常」モードで起動すると、casper-rw
パーティションは通常のドライブとしてマウントされ、永続モードで行われた変更は残りません。
希望するのは、/
ファイルシステムにオーバーレイするようにマウントされたcasper-rwパーティションですが、Ubuntuに通常のブートを要求した場合(つまり、GRUB2
でpersistent
オプションなし) 、永続モードで行われた変更が持続するように、そのパーティションを読み取り専用でマウントしたいと思います。
これを達成する最良の方法は何ですか?
私がやったのは、initrd.lz内のcasperスクリプトを変更することです。
スクリプトはcasper-rwを読み取り専用としてマウントし、/の上にオーバーレイします。その後、tmpfsをオーバーレイの上にマウントします。
私はmint btwを使用していますが、ubuntuについてはわかりませんが、あなたにとってうまくいくことを願っています。
詳細は次のとおりです。
スクリプト/キャスパーを編集し、setup_unionfs()
関数を変更します。変更された関数 here が見つかります。
...
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を使用します。