web-dev-qa-db-fra.com

Montage de la partition de persistance (casper-rw) en lecture seule

J'essaie de créer une nouvelle image ISO à utiliser sur une clé USB. J'ai partitionné ma clé USB en 2 partitions, une vfat et une ext4. La partition vfat contient les images ISO et GRUB2, de telle sorte que GRUB2 initialise l'image ISO.

La partition ext4 porte l'étiquette de volume casper-rw et est utilisée comme magasin de données persistant pour Live USB. J'ai modifié le grub.cfg de telle sorte que je reçoive deux options au démarrage, une pour démarrer l'ISO en mode persistant et une pour démarrer normalement.

Toutefois, lors du démarrage en mode "normal", la partition casper-rw est montée en tant que lecteur normal et les modifications apportées en mode persistant ne sont pas conservées.

Ce que j'aimerais, c'est que la partition casper-rw soit montée superposée sur le système de fichiers /, mais lorsque je demande à Ubuntu de démarrer normalement (c'est-à-dire sans l'option persistent de GRUB2), J'aimerais que cette partition soit montée en lecture seule afin que les modifications apportées en mode persistant persistent.

Quel est le meilleur moyen d'y parvenir?

1
Chinmay Kanchi

Ce que j'ai fait est de modifier le script casper dans initrd.lz.

Le script montera casper-rw en lecture seule, puis le superpose au-dessus de /. Il montera ensuite les fichiers tmpfs par-dessus la superposition.

J'utilise mint btw, pas sûr d'ubuntu, j'espère que ça marche pour vous.

Voici plus de détails:

  1. Extrait initrd en utilisant l'instruction from here .
  2. Editez les scripts/casper, modifiez la fonction setup_unionfs(). Vous trouvez la fonction modifiée ici .

    ...
    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. Remplacez initrd.lz, ou dans mon cas, je viens d'en créer un nouveau.

    find . | cpio --quiet -o -H newc | lzma -7 > ../ro-initrd.lz
    
  4. Ajouter plus d'option de démarrage à syslinux.cfg

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

Note: J'utilise Mint 16 (x86) et unetbootin.

2
David Lim