Differences between revisions 3 and 4
Revision 3 as of 2006-03-30 14:49:36
Size: 4696
Editor: Kurgan
Comment: adattamento a rc5 e secondo test di esecuzione per vedere se la procedura e` ok.
Revision 4 as of 2009-04-12 17:33:25
Size: 4696
Editor: localhost
Comment: converted to 1.6 markup
No differences found!

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!

OpenWrt/WhiteRussian/HardDiskUSB (last edited 2009-04-12 17:33:25 by localhost)