Squashfs dosya sisteminin okuma-yazma işlemine bağlanması


45

Bir USB çubuğuna Clonezilla kurulumum var ve işletim sisteminde bazı değişiklikler yapmak istiyorum. Özellikle, /usr/sbinyedeklemeleri daha az acı verici hale getirmek için kendi yedekleme komutumu çalıştırmayı kolaylaştırmak için çalıştırılabilir bir komut dosyası eklemek istiyorum .

Ana dosya sistemi /live/filesystem.squashfsUSB FAT-32 bölümünde yer almaktadır.

Dosyaları okuma / kaldırma / değiştirme için bu okuma / yazma işlemini Linux makineme nasıl bağlayabilirim? Bir Ubuntu 12.04 türevi çalıştırıyorum.

Yanıtlar:


38

Kök olarak, filesystem.squashfsboş bir dizine kopyalayın , örneğin:

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

Dosyayı ambalajından çıkarın, sonra başka bir yere taşıyın (böylece hala bir yedek olarak bulundurun):

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

İçeri gir squashfs-root, sonra yeniden zevkinize göre modifiye / eklemek filesystem.squashfs:

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

yeni oluşturulanları filesystem.squashfsUSB sürücünüzdeki mevcut kopya üzerinden kopyalayın , örneğin:

cp filesystem.squashfs /mnt/clonezilla/live/

sonra yeniden başlatın ve LIVE USB'nizi kullanın.

Not: Yukarıdaki komutlar bir parçasıdır squashfs-tools.


Bu harika çalışıyor, ancak ne yazık ki, bana tüm kök dizinleri için bir mesaj alıyorum Source directory entry bin already used! - trying bin_1. Tabii ki, çıktı dosya sistemimde, klasörü birleştirmek yerine bir /binve a'ya sahibim /bin_1. Herhangi bir fikir? Birlikte çalıştırırsanız -noappend,dosya sistemi basitçe çalışmaz.
Naftuli Kay

1
@TKKocheran - Özel bir komut dosyası ekledikten /usr/binve yeniden paketledikten sonra bu hatalardan hiçbirini alamıyorum mksquashfs. USB sürücü iyi önyükleme yapıyor ve komut dosyasını canlı oturumdan kullanabilirim. filesystem.squashfsÇalıştırmadan squashfs-rootönce artık eskimişinizle aynı dizinde olmadığından emin olun mksquashfs.
don_crissti

@Naftuli: "mv ... backup /" adımını atlamış gibisin.
Joachim Wagner,

Bu çalışma (sahte) kök altında değil mi? Sadece ayıklamaktan hatayı alıyorumcreate_inode: could not create character device squashfs-root/dev/audio, because you're not superuser!
Wilf

@Wilf - squashfs-root/dev/*Düzenli kullanıcı olarak aygıt dosyaları ( ) oluşturamazsınız , root haklarına sahip olmanız gerekir.
don_crissti

5

Sisteminiz bazı uion-dosya sistemi destekliyorsa, gibi aufs ya overlayfs , orijinal squashfs dosyayı ayıklamak için gerekmez.

Örneğin bindirmeler kullanılır (bunu etkinleştirmek için bir çekirdek seçeneği): Squashfs.file dosyasını / fm veya önce başka bir yere monte edebilirsiniz . Yazılabilir bir dosya sistemi hazırlayın, içinde / dizininde ve / temp adında 2 dizin var . birleştirilmiş sonuçlar için başka bir yazılabilir dizin / yüzgeç hazırlayın . Bunları sisteminize bindirmeler olarak bir araya getirin ---

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

Şimdi / fin içine dosya ekleyebilir / değiştirebilirsiniz . Her şey bittiğinde, mksquashfs / fin'i yeni bir squashfs dosyasına dönüştürebilirsiniz,

mksquashfs /fin newfile; umount /fin

, sonra kullandığınız diğer tüm dizinleri temizleyin / ayırın.

Squashfs ve bazı unionfs yaygın bir kullanılır canlı cd .


Eğer bir dosyayı mount / fin'den silerseniz, oluşturduğunuz son squashfs'ten silinecek mi?
localhost

2

Burada başka bir cevap buldum:

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

7
Yukarıdaki komut, salt okunur olacak ve hiç monte etmemekten daha iyidir; ne yazık ki eldeki sorunun tam bir cevabı değil.
harperville

Bunun tam bir cevap olmadığı konusunda hemfikirim. Unix.stackexchange.com/a/377269/27328 ile birlikte, değiştirmek için dosya sisteminizi açmak zorunda kalmayacağınız bir cevap oluşturabilirsiniz - daha az yer, daha az zaman.
Kullanıcı

En basit yöntem, CentOS 7'de çalışmış
Seff

0

Kaplamaları gösterildiği gibi kullanmak, sözde "squashfs rw" ye sahip olmanın en iyi yoludur; Ancak> 4.x çekirdeğinde (veya ubuntu> 14.x güvenilir) çalışılmasını gerektirir.

Herhangi biri bindirmeli / aufs / unionfs olmadan eski canlı cd üzerinde otururken alternatif bir çözüm squashfs'in özelliklerinden faydalanmaktır.

önemli:

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

örnek:

squashfs'in "usr" dizinini değiştir

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. satır, olddir_usr hariç, geçici olarak squashfsfile dosyasını oluşturur.

4. satır, değiştirilmiş-usr-dir 'yi new_squashfsfile' e ekler.

buraya bakınız squashfs ekleme Squashfs dosyasının içindeki alt dizine ekle

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.