PLD w ramdysku i squashfs

Jacek Konieczny jajcus w bnet.pl
Wto, 7 Cze 2005, 15:48:33 CEST


On Tue, Jun 07, 2005 at 11:14:24AM +0200, Pawel Koska wrote:
> Ogólnie to wkopiowałem linuxrc i coś tam jeszcze z RescueCD ;) Nawet działa, 
> ale jednak nie jest to czego potrzebuję :( Ja potrzebuję niektóre rzeczy np. 
> etc/ jako rw, a bin/ sbin/ usr/ itp. moge mieć z obrazu squashfs, bo to może 
> być ro. Najlepiej jak bym wszystko miał rw, ale chyba wtedy ze squashfs muszę 
> zrezygnować :(

Ja właśnie robię taki projekt, na dysku Flash, gdzie nie powinno być
niepotrzebnych zapisów. Używam właśnie squashfs dla większości systemu
(/bin, /sbin, /usr, etc) i tmpfs na restę /. Dla uproszczenia użyłem
monolitycznego kernelu (nie trzeba bawić się z initrd i modułami).

Użyłem takiego triku:

Kernel bootuję z init=/sbin/preinit, /sbin/preinit robi, między innymi,
coś takiego:

#!/bin/sh

export PATH=/bin:/sbin:/usr/bin:/usr/sbin

echo "Preparing rootfs..."
/bin/mount -n -t tmpfs -o size=64m none /rootfs
/bin/mount -n -t proc none /proc
cd /rootfs
/bin/tar xzpf /rootfs.tar.gz
/bin/mount -n -o bind /bin /rootfs/bin
/bin/mount -n -o bind /boot /rootfs/boot
/bin/mount -n -o bind /lib /rootfs/lib
/bin/mount -n -o bind /media /rootfs/media
/bin/mount -n -o bind /mnt /rootfs/mnt
/bin/mount -n -o bind /opt /rootfs/opt
/bin/mount -n -o bind /sbin /rootfs/sbin
/bin/mount -n -o bind /srv /rootfs/srv
/bin/mount -n -o bind /usr /rootfs/usr
cd /

[...]

echo "Switching root..."
cd /rootfs
/bin/umount -n /proc
/sbin/pivot_root . squashfs

echo "Startinig init..."
exec /usr/sbin/chroot . /sbin/init $@


A więc robiony jest filesystem tmpfs, tam wrzucana jest zawartość / z tar.gz i podmonowywana reszta z aktualnego
/ (ro), potem rooty są zamieniane i jest odpalany właściwy init, który startuje już we właściwym środowisku.

Pozdrowienia,
	Jacek 



Więcej informacji o liście dyskusyjnej pld-users-pl