Монтаж файлової системи squashfs у режимі читання-запису


45

У мене є встановлення Clonezilla на USB-накопичувачі, і я хотів би внести деякі зміни в операційну систему. Зокрема, я хотів би вставити сценарій, який /usr/sbinможна виконати, щоб легко запустити власну команду резервного копіювання, щоб зробити резервні копії менш болючими.

Основна файлова система працює в /live/filesystem.squashfsрозділі USB FAT-32.

Як я можу встановити це читання / запис на своїй машині Linux, щоб мати змогу додавати / видаляти / змінювати файли? Я використовую похідну Ubuntu 12.04.

Відповіді:


38

Як корень, скопіюйте filesystem.squashfsу якийсь порожній каталог, наприклад:

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

Розпакуйте файл, а потім перенесіть його кудись інше (щоб ви все-таки мали його як резервну копію):

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

Увійдіть squashfs-root, додайте / модифікуйте за своїм смаком, а потім відтворіть filesystem.squashfs:

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

скопіюйте нещодавно створений filesystem.squashfsна наявний USB-накопичувач, наприклад:

cp filesystem.squashfs /mnt/clonezilla/live/

потім перезавантажте та використовуйте свій LIVE USB.

Примітка: вищезазначені команди входять до складу squashfs-tools.


Це чудово працює, але, на жаль, я отримую повідомлення про всі кореневі каталоги, які мені говорять Source directory entry bin already used! - trying bin_1. Звичайно, у своїй вихідній файловій системі я маю /binта /bin_1, а не об'єднуючи папку. Будь-які ідеї? Якщо я -noappend,працюю з файловою системою, просто не працює.
Нафтулі Кей

1
@TKKocheran - я не отримую жодної з цих помилок після додавання користувальницького сценарію /usr/binта перепакування mksquashfs. USB-накопичувач прекрасно завантажується, і я можу використовувати свій скрипт із прямого сеансу. Переконайтеся, що у вас більше немає старого filesystem.squashfsв одному каталозі зі зміненим squashfs-rootперед запуском mksquashfs.
don_crissti

@Naftuli: Ви, схоже, пропустили крок "mv ... резервне копіювання /".
Йоахім Вагнер

Це працює не під (фальшивим) корінням? Щойно з видобутку я отримую помилкуcreate_inode: could not create character device squashfs-root/dev/audio, because you're not superuser!
Вільф

@Wilf - ви не можете створювати файли пристрою ( squashfs-root/dev/*) як звичайний користувач, вам потрібні привілеї root.
don_crissti

5

Якщо ваша система підтримує якусь файлову систему uion, наприклад aufs або overlayfs , вам не доведеться витягувати свій оригінальний файл squashfs.

Наприклад, використовується накладка (опція ядра, щоб увімкнути її): Ви можете спочатку встановити свій файл squashfs.file в / fm або десь ще. Підготуйте файлову систему для запису з двома каталогами в ній, скажімо / до та / темп . підготуйте ще один каталог / фініш для запису для об'єднаних результатів. Монтуйте їх разом як накладку на вашу систему ---

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

Тепер ви можете додавати / змінювати файли в / fin . Як тільки все буде зроблено, ви можете mksquashfs / fin до нового файлу squashfs,

mksquashfs /fin newfile; umount /fin

, тоді очистіть / відключіть усі інші використовувані каталоги, як вам захочеться.

У SquashFS і деякі UnionFS зазвичай використовуються для живого кд .


Якщо ви видалите файл із змонтованого / плавника, він буде видалений з остаточного створеного вами тиску?
localhost

2

Тут я знайшов іншу відповідь:

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

7
Наведена вище команда зможе встановити його лише для читання, що краще, ніж взагалі не встановлювати його; на жаль, не повна відповідь на питання.
Харпервіль

Я згоден, що це не повна відповідь. Разом з unix.stackexchange.com/a/377269/27328 ви можете створити відповідь, де вам не потрібно розпаковувати вашу файлову систему, щоб її змінити - менше місця, менше часу.
Користувач

Найпростіший метод, що працював над CentOS 7
Seff

0

Використання накладених зображень, як показано, - найкращий спосіб мати псевдо "squashfs rw"; Однак для цього потрібно запустити ядро> 4.x (або ubuntu> 14.x надійно).

Альтернативне рішення, коли ви сидите на старшому живописному диску без будь-яких накладень / aufs / unionfs, - це використовувати власні можливості squashfs

важливо:

 without unsquashfs, so this can be done on low storage system

приклад:

змінити каталог "usr" squashfs

1    mount squashfs_file /mnt

2    cp -a /mnt/usr $HOME  ##modify whatever $HOME/usr as needed

3    mksquashfs /mnt new_squashfs_file -wildcards -e usr

4    mksquashfs $HOME/usr new_squashfs_file -keep-as-directory

5    umount /mnt  # cleanup

рядок 3 будує тимчасово squashfsfile, виключаючи olddir_usr

рядок 4 додає модифікований usr-dir до файлу new_squashfsfile

дивіться тут Додайте squashfs Додайте до підкаталогу всередині файлу squashfs

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.