Installazione di un hard disk usb2 sull Asus WL500G Deluxe
Chiaramente va bene per hard disk o flashpen, usb o usb2. Attenzione che sembra che usb2 abbia dei problemi e sotto carico si incasini. Questo probelma e` risolto dalla White Russian RC5 in poi.
IMPORTANTE: Se non si vuole installare la root sul disco esterno, e non si vuole usare l' USB2 dato che e` bacato sulla RC4, NON INSTALLARE IL MODULO, altrimenti al momento del pivot_root il disco esterno usb2 (che durante il boot e` visto come usb 1.1, si ingrippa quando viene caricato il modulo dell' usb2. Va da se` che siccome la root e` sul disco esterno, il boot si inchioda. Va ricordato che il modulo usb2 deve non essere presente ne` nella flash interna ne` nella root copiata sul disco esterno.
- Caricare i moduli per l' USB, l' USB2 e il supporto usb-storage:
ipkg install kmod-usb-uhci # ipkg install kmod-usb2 ipkg install kmod-usb-storage
- rebootare per far caricare i moduli al boot (facoltativo, si puo` fare dopo)
- Caricare i moduli per il file system che preferite (vfat, ext2, ext3)
ipkg install kmod-vfat ipkg install kmod-ext3 ipkg install kmod-ext2
- Reboot again per caricare i moduli (stavolta si`, altrimenti poi non vedi il disco)
Attaccare il disco usb e vedere con dmesg come e` stato chiamato (qualcosa tipo "/dev/scsi/host0/bus0/target0/lun0/part1")
Siccome Openwrt Whiterussian RC4 ha il plug and play, automontera` il disco, se ci riesce. Se odiate il plug and play, occorrera` provvedere a modificare /etc/hotplug.d/usb/01-mount.
Opzione per installare il root file system sul disco esterno
Se lo spazio dentro la flash del router non basta, si puo` avere un sacco di flash usando il disco esterno come root. Per farlo, occorre prima di tutto installare openwrt sulla flash interna, come al solito. Poi occorre installare il supporto per ext3 come indicato sopra, quindi occorre seguire la seguente procedura:
- Montare il disco usb da qualche parte (diciamo /mnt, che poi su openwrt e` linkato a /tmp/mnt)
mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
- Copiare tutto dalla root a /mnt (che poi e` /tmp/mnt in questo caso). Attenzione che puo` essere necessario adattare la struttura delle directory a seconda della versione di Openwrt.
tar cvO -C / bin/ etc/ lib/ sbin/ usr/ www/ | tar x -C /mnt
- Creare le directory e i link che mancano in /mnt
mkdir -p /mnt/tmp && mkdir -p /mnt/dev && mkdir -p /mnt/proc ln -s /tmp/mnt /mnt/mnt ln -s /tmp /mnt/var
- Ora, un "ls -la" di / e /mnt dovrebbero essere uguali.
- Creare in "/" la directory "usb" che useremo poi per montare il disco usb
mkdir /usb
- Creare in /mnt la directory "jffs" che conterra`, dopo che si e` bootato con la root montata sul disco usb esterno, il file system della flash interna al router, per eventuali modifiche o per leggerne roba che serve.
mkdir /mnt/jffs
- A questo punto occorre modificare /sbin/init per adattarlo alla nuova config.
- Cancellare /sbin/init (Che e` un link a busybox)
- Inserire questo shell script al posto di /sbin/init
# change this to your boot partition boot_dev="/dev/scsi/host0/bus0/target0/lun0/part1" # install needed modules for usb and the ext3 filesystem insmod usbcore insmod uhci && sleep 2s # insmod ehci-hcd && sleep 2s insmod scsi_mod && insmod sd_mod && insmod sg && insmod usb-storage insmod ext2 && insmod jbd && insmod ext3 sleep 2s # mount the usb stick mount -t ext3 -o rw,noatime "$boot_dev" /usb # if everything looks ok, do the pivot root if [ -x /usb/sbin/init ] && [ -d /usb/jffs ]; then pivot_root /usb /usb/jffs mount none /proc -t proc mount none /dev -t devfs mount none /tmp -t tmpfs size=50% mkdir -p /dev/pts mount none /dev/pts -t devpts umount /jffs/proc /jffs/dev/pts sleep 1s umount /jffs/tmp /jffs/dev fi # finally, run the real init (from USB hopefully). exec /bin/busybox init
- Rendere eseguibile lo script di init:
chmod a+x /sbin/init
- Eliminare l'hotplug in modo che il disco USB non venga montato automaticamente, in quanto e` GIA` montato come /.
rm /etc/hotplug.d/usb/01-mount
- Riavviare e vedere se monta il disco esterno come root. Se qualcosa non va, e` probabile che togliendo il disco esterno si riesca a bootare dalla flash. Se ancora non va, it's serial console time!