venerdì 29 aprile 2011

Repository optware sulla Fonera 2.0n v2

NON HO ANCORA POTUTO PROVARE QUESTO TUTORIAL SULLA FONERA CON UN'INSTALLAZIONE DEL FIRMWARE PULITA, QUINDI POTREBBE ESSERCI QUALCHE ERRORE NEI PASSAGGI. FATEMI SAPERE SE FUNZIONA TUTTO.
TESTATA. SEMBRA FUNZIONARE.


Visto i piccoli problemi che portava la guida precedente nell'installazione di pacchetti presenti su più repository (es.python) ho cercato e trovato un modo alternativo.
Leggendo meglio la documentazione presente su nslu2-linux.org ho trovato il pacchetto ipkg-opt, il quale non sostituisce opkg, ma fa da gestore dei pacchetti di installazione dedicato ai soli pacchetti presenti sul repo di nslu2.
Alla fine quindi avremo due gestori di pacchetti uno per il repository di openwrt e l'altro per quello di nslu2-linux.org con "1000+ ported applications", comodo no? ;)
Inoltre nel pacchetto è presente il file update-alternatives così da non doverlo creare manualmente.
I pacchetti di nslu2-linux dovrebero basarsi su "/opt/lib/uClibc.so" e anche il dynamic loader in "/opt/lib" con un diverso "/opt/etc/ld-opt.so.conf" per ".so.cache" personalizzato. Nel pacchetto uclibc-opt troviamo insfatti "/opt/sbin/ldconfig".
Per finire sempre leggendo meglio la documentazione mi sembra di aver sbagliato i repository a cui facevo riferimento, infatti per quello di openwrt quello corretto dovrebbe essere:
http://downloads.openwrt.org/kamikaze/8.09.2/rb532/packages
e per nslu2-linux.org
http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
Prerequisiti:
unità esterna formattata in ext3 o altro filesystem che supporti i link simbolici

Quindi per installare ipkg-opt prima di tutto dobbiamo creare la cartella opt sull'hd esterno e crearne il link simbolico in "/". Nel mio caso l'hd viene montato automaticamente in "/tmp/mounts/Disc-A1" potete controllare la posizione del vostro con
ls /tmp/mounts
mkdir -p /tmp/mounts/Disc-A1/opt/
ln -s /tmp/mounts/Disc-A1/opt /opt
Ottenuto l'accesso ssh alla fonera editiamo il file "/etc/opkg.conf"

vi /etc/opkg.conf
src snapshots http://downloads.openwrt.org/kamikaze/8.09.2/rb532/packages
dest root /
dest ram /tmp
dest usb /tmp/mounts/Disc-A1
lists_dir ext /var/opkg-lists
 Digitate <ESC> ":wq" per salvare e chiudere l'editor. Con "dest usb /tmp/mounts/Disc-A1" abbiamo aggiunto come destinazione per opkg l'hard disk o pen drive usb, mi raccomando di sostiture la destinazione con quella della vostra periferica.
Visto che ci siamo modifichiamo il profilo per poter installare pure i pacchetti presi da openwrt sull'unità esterna. Aggiungiamo al profilo le parti in rosso
vi /etc/profile
ext_path='/tmp/mounts/Disc-A1'
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$ext_path/bin:$ext_path/sbin:$ext_path/usr/bin:$ext_path/usr/sbin:/opt/bin:/opt/sbin
. /etc/profile
per ricaricare il profilo senza riavviare.


mkdir -p /usr/lib/opkg
opkg update
così creiamo una cartella necessaria a opkg e aggiorniamo la lista dei pacchetti disponibili.
opkg -dest usb install ldconfig
così installiamo ldconfig necessario per far trovare le librerie al sistema senza aggiungerne la destinazione in "/etc/profile"
vi /etc/ld.so.conf
/tmp/mounts/Disc-A1/usr/lib
/tmp/mounts/Disc-A1/lib

Aggiungiamo gli script necessari per quei pacchetti installati da nslu2-linux.org che contengono uno script all'avvio (mysql, lighttpd, etc..)
vi /etc/init.d/optware
come prima incollate il codice:
#!/bin/sh /etc/rc.common

START=80

start() {
echo "Starting Optware."
[ -x /opt/etc/rc.optware ] && /opt/etc/rc.optware start
}

stop() {
echo "Shutting down Optware."
[ -x /opt/etc/rc.optware ] && /opt/etc/rc.optware stop
}
chmod +x /etc/init.d/optware
mkdir -p /opt/etc
vi /opt/etc/rc.optware
codice:
#!/bin/sh

# Start all init scripts in /opt/etc/init.d
# executing them in numerical order.
#
if [ x$1 == xstop ] ; then
progs="/opt/etc/init.d/K??*"
rc=stop
else
progs="/opt/etc/init.d/S??*"
rc=start
fi

for i in $progs ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

echo starting $i
case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set $rc
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i $rc
;;
esac
done
chmod +x /opt/etc/rc.optware
e infine per abilitare lo script come si fa su openwrt dare
/etc/init.d/optware enable
 Finalmente possiamo installare ipk-opt

opkg --dest usb install http://ipkg2.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc-opt_0.9.28-13_mipsel.ipk http://ipkg2.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ipkg-opt_0.99.163-10_mipsel.ipk
ldconfig
Personalmente uso "ldconfig" dopo ogni installazione così sono più sicuro che le librerie vengano caricate, dopo l'installazione di "uclibc-opt" sarà presente anche "/opt/sbin/ldconfig" che dovrebbe gestire le librerie in /opt separamente da quelle del resto del sistema.

editiamo il file di configurazione di ipkg-opt
vi /opt/etc/ipkg.conf

e decommentiamo la linea
src whiterussian http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable


soddisfiamo questa dipendenza manualmente
ipkg update
ipkg install uclibc-opt

Sempre sul wiki di nslu2-linux viene cosigliato di installare alcune librerie di base.
opkg update
opkg install -dest usb libgcc libpthread libstdcpp librt
ldconfig


Quindi ora possiamo usare "ipkg" per installare pacchetti da nslu2-linux.org e "opkg" per installare quelli da openwrt.
Ad esempio
ipkg install python
Se dovesse risultare mancante qualche libreria provate con il comando
/opt/sbin/ldconfig
 Fonti:
http://www.nslu2-linux.org/wiki/Optware/HomePage
http://www.nslu2-linux.org/wiki/OpenWrt/HomePage
http://www.nslu2-linux.org/wiki/FAQ/Optware-uClibcBuild
http://wiki.fon.com/wiki/Fonera_Development#For_the_Fonera_2.0N_.28FON2303.29

2 commenti:

  1. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  2. Thanks! It work and now I have python on my fonera 2.0n.
    Nice :D

    RispondiElimina