WL-500G Premium: Installare pacchetti sullla periferica usb esterna

Da Wizard linux team wiki.

Jump to: navigation, search

Contents

Premessa

L' Asus WL-500G Premium è certamente un bel giocattolo ma ha la limitazione della capacità di memoria che diminuisce notevolmente tutti i bei giochini che si possono fare ... soluzione? Installare i pacchetti su un pendrive usb esterno (anche hdd o a altro non ha importanza).

Far riconoscere la periferica

  • Se non è già stato fatto installiamo i moduli per lo storage USB e per il riconoscimento dei FS:
ipkg install kmod-usb-core kmod-usb-storage kmod-usb-ohci kmod-usb-serial kmod-usb-uhci kmod-vfat kmod-fs-ext3 kmod-ext2

(Ulteriori dettagli li strovate presso: http://wlt.netsons.org/wiki/index.php/Disco_USB_2.0_su_OpenWRT_su_ASUS_WL-500G)

N.B.:la periferica deve essere formattata ext2

  • Inseriamo il modulo:
 insmod ext2 
  • Per farlo caricare al boot:
 echo 'ext2' > /etc/modules.d/30-ext2 
  • Creazione del punto di mount:
mkdir -p /mnt/sd
  • Mount all'avvio:
echo 'mount /dev/mmc/disc0/part1 /mnt/sd' > /etc/init.d/S60externalmount
chmod +x /etc/init.d/S60externalmount

N.B.: il device potrebbe essere diverso da /dev/mmc/disc0/part1 si puo vedere precisamente faccendo un dmesg e cercando una cosa di questo tipo: /dev/scsi/host0/bus0/target0/lun0. Se è così aggiungere /disc


Modifica dell'eviroment e creazione script

  • Editare il file /etc/profile e alla linea dove si legge
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
  • modificarla in questo modo:
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/mnt/sd/bin:/mnt/sd/sbin:/mnt/sd/usr/bin:/mnt/sd/usr/sbin
  • aggiungere:
 export LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/sd/lib:/mnt/sd/usr/lib 
  • Configurare il file ipkg.conf:
echo 'dest sd /mnt/sd' >> /etc/ipkg.conf
  • Fare copia e incolla del seguente script sotto /bin. (Questo script vi permette di effettuare dei link simbolici sotto le esistenti directory della flash.)
#!/bin/sh
COMMAND=$1
PACKAGE=$2
setdest () {
        for i in `grep dest /etc/ipkg.conf | cut -d ' ' -f 3`; do
                if [ -f $i/usr/lib/ipkg/info/$PACKAGE.list ]; then
                        DEST=$i
                fi
        done
        if [ "x$DEST" = "x" ]; then
                echo "Can not locate $PACKAGE."
                echo "Check /etc/ipkg.conf for correct dest listings";
                echo "Check name of requested package: $PACKAGE"
                exit 1
        fi
}
addlinks () {
        setdest;
        cat $DEST/usr/lib/ipkg/info/$PACKAGE.list | while read LINE; do
                SRC=$LINE
                DST=`echo $SRC | sed "s|$DEST||"`
                DSTNAME=`basename $DST`
                DSTDIR=`echo $DST | sed "s|$DSTNAME\$||"`
                test -f "$SRC"
                if [ $? = 0 ]; then
                        test -e "$DST"
                        if [ $? = 1 ]; then
                                mkdir -p $DSTDIR
                                ln -sf $SRC $DST
                        else
                                echo "Not linking $SRC to $DST"
                                echo "$DST Already exists"
                        fi
                else
                        test -d "$SRC"
                        if [ $? = 0 ]; then
                                test -e $DST
                                if [ $? = 1 ]; then
                                        mkdir -p $DST
                                else
                                        echo "directory already exists"
                                fi
                        else
                                echo "Source directory $SRC does not exist"
                        fi
                fi
        done
}
removelinks () {
        setdest;
        cat $DEST/usr/lib/ipkg/info/$PACKAGE.list | while read LINE; do
                SRC=$LINE
                DST=`echo $LINE | sed "s|$DEST||"`
                DSTNAME=`basename $DST`
                DSTDIR=`echo $DST | sed "s|$DSTNAME\$||"`
                test -f $DST
                if [ $? = 0 ]; then
                        rm -f $DST
                        test -d $DSTDIR && rmdir $DSTDIR 2>/dev/null
                else
                        test -d $DST
                        if [ $? = 0 ]; then
                                rmdir $DST
                        else
                                echo "$DST does not exist"
                        fi
                fi
        done
}
mountdest () {
        test -d $PACKAGE
        if [ $? = 1 ]; then
                echo "Mount point does not exist"
                exit 1
        fi
        for i in $PACKAGE/usr/lib/ipkg/info/*.list; do
                $0 add `basename $i .list`
        done
}
umountdest () {
        test -d $PACKAGE
        if [ $? = 1 ]; then
                echo "Mount point does not exist"
                exit 1
        fi
        for i in $PACKAGE/usr/lib/ipkg/info/*.list; do
                $0 remove `basename $i .list`
        done
}
case "$COMMAND" in
  add)
        addlinks
  ;;
  remove)
        removelinks
  ;;
  mount)
        mountdest
  ;;
  umount)
        umountdest
  ;;
  *)
        echo "Usage: $0 <cmd> <target>"
        echo "       Commands: add, remove, mount, umount"
        echo "       Targets: <package>, <mount point>"
        echo "Example:  $0 add kismet-server"
        echo "Example:  $0 remove kismet-server"
        echo "Example:  $0 mount /mnt/usb"
        echo "Example:  $0 umount /mnt/usb"
        exit 1
        ;;
esac
exit 0

*Date i permessi di esecuzione con 

<pre>chmod a+x /bin/ipkg-link
  • Prepariamo la struttura delle directocry destinazione sul pendrive:
mkdir /mnt/sd/bin
mkdir /mnt/sd/sbin
mkdir /mnt/sd/usr/bin
mkdir /mnt/sd/usr
mkdir /mnt/sd/usr/bin
mkdir /mnt/sd/usr/sbin
mkdir /mnt/sd/opt
mkdir /mnt/sd/opt/bin

Installazione dei pacchetti

Un pacchetto ora viene installato sulla periferica usb con:

ipkg -d sd install tcpdump

Infine facciamo creare i link simbolici dalla periferica usb con la flash lanciando lo scrpt ipkg-link. Quindi:

  • per il package singolo
ipkg-link add kismet-server
  • per farli tutti:
ipkg-link mount /mnt/sd
  • per rimuoverne uno specifico:
ipkg-link remove kismet-server
  • per rimuoverli tutti:
ipkg-link umount /mnt/sd

Links

wizard linux team