Ahoj, mám pár routerů na Linuxu a chtěl bych tam použít Compact Flash karty místo disků. Karty mají omezený počet zápisů, takže je třeba s nimi většinu času pracovat jako read only.
Představuji si to teda tak, že na kartu nahraju (dd) systém. Při spuštění si ten udělá třeba 20 MB ramdisk, udělá na něm filesystém a zkopíruje tam z flashky adresáře /etc, /var a /root. Adresáře /etc, /var a /root se pak z kořenového (RO) filesystému přemountují a bude se pracovat s kopií, která je v ramdisku. Chtěl bych mít prográmek (skript), který bude umět synchronizovat ramdisk > flash. Tedy budu normálně pracovat, měnit nastavení, editovat confy a pak dám něco jako sync a ono se to uloží.

Takže pojďme na to...

Ramdisk potřebuje být zapnutý v kernelu, v 2.4 řadě defaultně je, používám 2.4.29, takže není problém. Používám bootloader grub, stačí do řádku v konfiguráku dát
Kód:
kernel /boot/vmlinuz ro root=/dev/hda1 ramdisk_size=12000
Potom jsem si v /etc/init.d udělal soubor ramdisk, asi takhle
Kód:
#!/bin/sh
# Creates filesystem and mounts 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
Takže mám po startu ramdisk, v něm adresáře, které chci.
Umím je přimountovat do root filesystému místo stávajích...
Kód:
mount --bind /ramdisk/etc /etc
No, ale tady je můj problém, nevím jak to vrátit. Když se snažím /etc odmountovat, tak na mě řve, že nemůže, že device je busy. A nevím, jak se vrátit k /etc na flashce, abych tam mohl nahrát změněné soubory. Nějaký nápad?