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 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 (se si vuole e solo con RC5 o superiori) e il supporto usb-storage:
ipkg update 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 e RC5 hanno 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 usb (o usb2) ed ext3 come indicato sopra, quindi occorre seguire la seguente procedura:
- Formattare il disco (o la flashpen) in ext3 su una qualsiasi macchina linux
- Infilare la flashpen nell' Asus
- Montare il disco usb da qualche parte (diciamo /mnt, che poi su openwrt RC4 e` linkato a /tmp/mnt, su RC5 no.)
mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
- Copiare tutto dalla root a /mnt (che poi e` /tmp/mnt in RC4). 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 && mkdir /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 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!