Configurazione del file /etc/fstab

È arrivato il momento di configurare il nostro file fstab per indicare dove si troveranno le partizioni che andremmo a creare sul disco del nostro dispositivo embedded. Supponiamo di utilizzare una configurazione di questo tipo:

/dev/hda1       /               ext2 defaults,noatime,ro 0 1
/dev/hda2       /rw             ext2 defaults,noatime 0 2
/dev/hda3       /usr            squashfs ro,defaults 0 0
/dev/fd0        /mnt/floppy     vfat noauto 0 0
/dev/sda1       /mnt/usb        vfat noauto 0 0
proc            /proc           proc defaults 0 0
devpts          /dev/pts        devpts defaults,mode=620 0 0
tmpfs           /tmp            tmpfs defaults 0 0
none            /sys            sysfs defaults 0 0
none            /dev/shm        tmpfs defaults 0 0

Nota: non abbiamo alcuna partizione di swap perchè normalmente un sistema embedded non possiede un disco così grande da poter essere utilizzato per lo swap.

Normalmente, sui sistemi embedded, si utilizzano dischi a stato solido in tecnologia flash. Il taglio più utilizzato si attesta normalmente sui 128 Mb. Stando alle voci circolanti sulla rete, questo tipo di supporti non garantiscono cicli di scrittura "infiniti". Per questo motivo, ed anche perch´ i dispositivi embedded possono essere normalmente soggetti a bruschi shutdown ed assenze di alimentazione, è preferibile tenere l'intero filesystem totalmente in read-only, ed al limite lasciare qualche piccola porzione del disco in read-write: 4 mb a volte sono più che sufficienti per gli usi più disparati. Ecco il nostro fstab soprastante rispecchiare quanto detto:

Un utilizzo molto interessante della partizione /rw potrebbe essere quello di far puntare i file nella root partition che necessitano di essere scritti all'interno di un certo file dentro la partizione /rw, ecco alcuni esempi:

/embedded_rootfs/root -> /embedded_rootfs/rw/root/
/embedded_rootfs/etc/hostname -> /embedded_rootfs/rw/etc_rw/hostname
/embedded_rootfs/etc/mtab -> /embedded_rootfs/rw/etc_rw/mtab
/embedded_rootfs/etc/passwd -> /embedded_rootfs/rw/etc_rw/passwd
/embedded_rootfs/etc/passwd- -> /embedded_rootfs/rw/etc_rw/passwd-
/embedded_rootfs/etc/resolv.conf -> /embedded_rootfs/rw/etc_rw/resolv.conf
/embedded_rootfs/etc/ssh -> /embedded_rootfs/rw/etc_rw/ssh
/embedded_rootfs/etc/net.eth0 -> /embedded_rootfs/rw/etc_rw/net.eth0
Per creare questi link simbolici bisogna prima spostare i file dentro /embedded_rootfs/rw, e poi creare il link simbolico. Ad esempio, per il file passwd, i passi da seguire sono:
# mkdir -p /embedded_rootfs/rw/etc
# mv /embedded_rootfs/etc/passwd /embedded_rootfs/rw/etc/passwd
# ln -s /embedded_rootfs/etc/passwd /embedded_rootfs/rw/etc/passwd
Ovviamente questi sono solo alcuni esempi, in consiglio è quello di mettere su /rw tutti i file che, in relazione alla vostra particolare applicazione, prevedete cambieranno spesso, o possano essere alterati dall'utente. Nel caso soprastante abbiamo messo l'intera home di root in rw, così come i file hostname, resolv.conf e net.eth0 per permettere all'amministratore dell'embedded di poter variare la configurazione della rete, passwd* per permettere di aggiungere ed eliminare utenti, la directory /etc/ssh per consentire di modificare il comportamento di openssh. /etc/mtab viene anch'esso messo in una partizione rw perch&ègrave; è un file che cambia quando viene fatto un mount/umount di una partizione.