No, tak jsem zkoušel... etc nemůže být na oddělené partition, musí být v / .
Ale zjistil jsem, že se přebindované /etc přecejen umountovat dá. Když použiju umount s parametrem -l tak to jde. Mělo by se to chovat, tak že ho umountuje a když je při tom v onom filesystému otevřen nějaký soubor, tak ho to ještě zapíše do starého mountpointu. To mi ale nevadí, dám si pozor - poedituju, uložim a pak teprv budu umountovat a zapisovat na flashku.
Tak jsem si zkusil napsat tohle:
Kód:
#!/bin/sh
#
# ramdisk This shell script takes care of ramdisk and ro fs
#
# Source function library.
. /etc/init.d/functions
RETVAL=0
# See how we were called.
case "$1" in
start)
# Sets up ramdisk.
echo -n "Seting up ramdisk: "
/sbin/mke2fs -q -m 0 /dev/ramdisk
/bin/mount /dev/ramdisk /ramdisk
/bin/cp /etc /ramdisk/ -R
/bin/cp /var /ramdisk/ -R
/bin/cp /root /ramdisk/ -R
/bin/cp /tmp /ramdisk/ -R
/bin/mount --bind /ramdisk/etc /etc
/bin/mount --bind /ramdisk/var /var
/bin/mount --bind /ramdisk/root /root
/bin/mount --bind /ramdisk/tmp /tmp
;;
stop)
# Stop daemons.
echo -n "Cleaning and unmounting ramdisk: "
/bin/umount /etc -l
/bin/umount /var -l
/bin/umount /var -l
/bin/umount /tmp -l
;;
sync|ramtoflash)
/bin/umount /etc -l
/bin/umount /var -l
/bin/umount /var -l
/bin/umount /tmp -l
/bin/cp /ramdisk/etc /etc -R
/bin/cp /ramdisk/var /var -R
/bin/cp /ramdisk/root /root -R
/bin/mount --bind /ramdisk/etc /etc
/bin/mount --bind /ramdisk/var /var
/bin/mount --bind /ramdisk/root /root
/bin/mount --bind /ramdisk/tmp /tmp
;;
*)
echo "Usage: ramdisk {start|stop|sync}"
exit 1
esac
exit $RETVAL
Skript se bude při startu systému volat s parametrem start, při vypínání stop a když budu chtít zapsat na CF, tak s parametrem sync. Ještě tam není pořešené přepínání RO a RW / filesystému, to přidám, zatím to zkouším na HDD.
Ještě se zeptám - routovací tabulky jsou jen v paměti, že?