web-dev-qa-db-fra.com

Monter un système de fichiers squashfs en lecture-écriture

J'ai une installation Clonezilla sur une clé USB et j'aimerais apporter quelques modifications au système d'exploitation. Plus précisément, j'aimerais insérer un script exécutable dans /usr/sbin pour faciliter l'exécution de ma propre commande de sauvegarde afin de rendre les sauvegardes moins pénibles.

Le système de fichiers principal vit sous /live/filesystem.squashfs sur la partition USB FAT-32.

Comment puis-je monter cette lecture/écriture sur ma machine Linux afin de pouvoir ajouter/supprimer/modifier des fichiers? J'utilise un dérivé d'Ubuntu 12.04.

48
Naftuli Kay

En tant que root, copiez filesystem.squashfs dans un répertoire vide, par exemple:

cp /mnt/clonezilla/live/filesystem.squashfs /path/to/workdir
cd /path/to/workdir

Décompressez le fichier puis déplacez-le ailleurs (vous l'avez donc toujours en tant que sauvegarde):

unsquashfs filesystem.squashfs
mv filesystem.squashfs /path/to/backup/

Va dans squashfs-root, ajoutez/modifiez selon votre goût puis recréez filesystem.squashfs:

cd /path/to/workdir
mksquashfs squashfs-root filesystem.squashfs -b 1024k -comp xz -Xbcj x86 -e boot

copier le nouveau filesystem.squashfs sur celui existant sur votre clé USB, par exemple:

cp filesystem.squashfs /mnt/clonezilla/live/

puis redémarrez et utilisez votre LIVE USB.

Remarque: les commandes ci-dessus font partie de squashfs-tools.

43
don_crissti

Si votre système prend en charge un système de fichiers uion, tel que aufs ou overlayfs, vous n'avez pas besoin d'extraire votre fichier squashfs d'origine.

Par exemple, overlayfs est utilisé (une option du noyau pour l'activer): Vous pouvez monter votre fichier squashfs.file sur /fm ou ailleurs d'abord. Préparez un système de fichiers accessible en écriture contenant 2 répertoires, par exemple /to et /temp . préparer un autre répertoire accessible en écriture /fin pour les résultats fusionnés. Montez-les ensemble en superposition sur votre système ---

mount -t overlay -o lowerdir=/fm,upperdir=/to,workdir=/temp overlay /fin

Vous pouvez maintenant ajouter/modifier des fichiers dans /fin . Une fois tout fait, vous pouvez mksquashfs /fin dans un nouveau fichier squashfs,

mksquashfs /fin newfile; umount /fin

, puis effacez/démontez tous les autres répertoires utilisés comme vous le souhaitez.

Les squashfs et certains nionfs sont couramment utilisés pour un live-cd.

5
Zhi-Ming Chen

Ici , j'ai trouvé une autre réponse:

bash# mount dir.sqsh /mnt/dir -t squashfs -o loop
2
User

Utiliser overlayfs comme indiqué est le meilleur moyen d'avoir des pseudo "squashfs rw"; Il nécessite cependant de fonctionner sur un noyau> 4.x (ou ubuntu> 14.x fidèle).

Une solution alternative lorsque l'on est assis sur un CD live plus ancien sans overlayfs/aufs/unionfs est d'utiliser les capacités de squashfs

Important: Sans unsquashfs, cela peut donc être fait sur un système de stockage faible

Exemple:

Modifier le répertoire "usr" de squashfs

mount squashfs_file /mnt    # 1
cp -a /mnt/usr $HOME        # 2  Modify whatever $HOME/usr as needed
mksquashfs /mnt new_squashfs_file -wildcards -e usr   # 3
mksquashfs $HOME/usr new_squashfs_file -keep-as-directory # 4
umount /mnt  # 5  Cleanup

La ligne 3 crée temporairement le fichier squashfs à l'exception de olddir_usr
La ligne 4 ajoute dir-usr-modifié dans new_squashfsfile

Voir ici ajouter squashfs

0
user3477652