PLD w ramdysku przez PXE
Marcin Król
hawk w limanowa.net
Pon, 24 Lip 2006, 17:02:58 CEST
> Co z tym zrobić? Czego nie wrzuciłem, co zmienić, co poprawić?
Nie wiem jak to robi rescue, ale ja obrazy do bootowania bezdyskowo
przez siec robie tak:
1. Przygotowuje sobie docelowy system, kompresuje go do system.tar.bz2
2. Przygotowuje w drugim katalogu zawartosc initrd, wyglada to np tak:
drwxr-xr-x 2 root root 4096 Jan 1 1970 bin
drwxr-xr-x 2 root root 40960 Jan 1 1970 dev
-rwxr-xr-x 1 root root 476 Jan 1 1970 linuxrc
drwxr-xr-x 2 root root 4096 Jan 1 1970 proc
drwxr-xr-x 2 root root 4096 Jan 1 1970 rootfs
-rw-r--r-- 1 root root 18742886 Jan 1 1970 system.tar.bz2
W bin mam wlasna minimalna statyczna kompilacje busyboxa czyli:
lrwxrwxrwx 1 root root 7 Jul 24 16:49 [ -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 ash -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 bunzip2 -> busybox
-rwxr-xr-x 1 root root 109216 Jan 1 1970 busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 chroot -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 echo -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 freeramdisk -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 mount -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 pivot_root -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 sh -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 tar -> busybox
lrwxrwxrwx 1 root root 7 Jul 24 16:49 umount -> busybox
W dev mam pelny dev wziety z zywego systemu. Mozesz go przyciac do
wlasnych potrzeb, ale zysk w wielkosci jest tak maly, ze mi sie nie
chcialo :)
proc i rootfs to puste katalogi, a linuxrc to wykonwyalny skrypt
(przykladowa zawartosc ponizej). I to wszystko. Pieknie startuje po PXE :)
M.
#!/bin/sh
echo "Creating RAM disk..."
mount -n -t proc none /proc
mount -n -t tmpfs -o size=64M,nr_inodes=25k none /rootfs
cd /rootfs
echo "Uncompressing filesystem, please wait..."
tar jxf /system.tar.bz2
echo "Changing root..."
cd /
umount /proc
cd /rootfs
pivot_root . initrd
cd /
/bin/echo "Initializing..."
exec /usr/sbin/chroot . /bin/sh -c \ '
/bin/sleep 3;
/bin/umount initrd;
/sbin/blockdev --flushbufs /dev/ramdisk;
exec /sbin/init
' <dev/console >dev/console 2>&1
Więcej informacji o liście dyskusyjnej pld-users-pl