Salt okunur / vb yazılabilir yap


11

Linux çalıştıran gömülü bir cihazla uğraşıyorum. Bu cihazın üreticileri, kök dosya sistemini salt okunur olarak yükleyecek şekilde kurmuşlardır.

/ Etc / mtab sitesinden:

rootfs / rootfs rw 0 0
/dev/root / squashfs ro,relatime 0 0

Bu, / etc içindeki yeni bir kullanıcı eklemek gibi dosyaları değiştiremediğim anlamına gelir.

Kök dizini yeniden monte etmeyi denedim:

mount -o remount,rw -t squashfs /dev/root /

ama sadece bir hata alıyorum

mount: cannot remount block device /dev/root read-write, is write-protected

Bu hatayı aradım ve insanlar blockdev'i kullanmayı söylüyorlardı. Sistemde blockdev yüklü değil, bu yüzden çapraz derledim ve kopyaladım. Sonra koştum

blockdev --setrw rootfs

ama yine bir hata aldım:

blockdev: cannot open rootfs: No such file or directory

/ Etc zaten yoksa yazılabilir hale getirilebilir mi? Sisteme kök erişimim var, ancak 'çevrimdışı' dosya sistemine erişemiyorum, tüm değişikliklerin Bash komutları ile yapılması gerekiyor.

Yanıtlar:


19

squashfssalt okunur sıkıştırılmış bir dosya sistemidir. Oluşturulduktan sonra üzerinde değişiklik yapma hükmü yoktur. Bu nedenle, alttaki blok cihazı yazılabilir hale getirilse bile ona yazamazsınız. Değişikliklerinizle birlikte tüm dosya sisteminin yeni bir squashfs görüntüsünü oluşturmanız ve bunu, bu dosya sisteminin depolandığı depolama cihazına yazmanız gerekir; bu, canlı sistemden yapılması sorun yaratır .

Başka bir seçenek de farklı bir dosya sistemi monte etmektir /etc. Çekirdek tarafından destekleniyorsa, genellikle bir temel salt okunur dosya sistemindeki değişiklikleri kaydeden iki dosya sistemini bir dosya sistemiyle birleştiren bir birleşim bağlantısı aracılığıyla olabilir .

Çekirdek yapılandırmasında AUFS_FS veya OVERLAY_FS desteğini kontrol edin.

Örneğin , sistemde kalıcı olarak yazılabilir bir depolama alanı yoksa, bir dizini /tmp(muhtemelen tmpfsbellekte olsa da yazılabilir (yeniden başlatma sırasında kalıcı olmayacaktır) bir dizine birleştirmek )

mkdir -p /tmp/etc/work /tmp/etc/upper
mount -t overlay \
      -o lowerdir=/etc,upperdir=/tmp/etc/upper,workdir=/tmp/etc/work \
       overlay /etc

Sonra /etcyazılabilir olacak ve üzerinde yaptığınız değişiklikler aslında saklanacaktır /tmp/etc/upper.

Alternatif olarak, değiştirmek istediğiniz yalnızca birkaç dosyaysa, yazılabilir dosya sistemlerinde depolanan bir sürümden bunları bağlayabilir (evet, yalnızca dizinlere değil, herhangi bir dosyaya da bağlayabilirsiniz):

cp /etc/passwd /tmp
mount --bind /tmp/passwd /etc/passwd

O /etc/passwdzaman yazılabilir olur. Tabii /etcbunun yerine bunu da yapabilirsiniz . ( cp -a /etc /tmp && mount --bind /tmp/etc /etc).


Bazı gömülü sistemler, /etcnvram'daki belirli ayarlara bağlı olarak önyükleme sırasında dosyaları geçersiz kılabilir . Bu nedenle, bir dosyayı değiştirmek için /etc"sihirli" bir sistem değişkeni ayarladınız, bunu nvram'a kaydedin, ardından yapılandırmayı yeniden yükleyin veya yeniden başlatın. Ev yönlendiricilerinin büyük çoğunluğu böyle çalışır. Ancak, kesin mekanizmalar ve komutlar sisteme özgüdür.
Satō Katsura

Mükemmel! Cihaz kaplama montajlarını desteklemiyor, ancak / etc içindeki dosyalar üzerine özel dosyalar bağlamak çok iyi çalıştı! Yardımın için teşekkürler.
Joshua Walsh
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.