Newsgroup: it.comp.os.linux.iniziare
Titolo: eseguire software su openwrt

Ciao a tutti,
ho modificato un router wrt54gl-eu installando una scheda di memoria SD da 
1Gb e aggiornarno il firmware con OperWrt White Russian (0.9), kernel 
2.4.30.
Vorrei poter eseguire un software per l'acquisizione dati da una centralina 
meteo ma ho qualche difficolt� perch� con linux sono alle prime armi..
Il software � questo: 
http://www.weather-display.com/downloadfiles/consolewd.tar.gz
Dopo aver scompattato tutto, ho provato ad eseguire lo script GoWdconsole.sh 
con il comando:
root@OpenWrt:/mmc/consolewdfiles# sh GoWdconsole.sh
ed ottengo:
ERROR: You can't run this as ROOT. Change to another user and try again.
Cercando info riguardo Openwrt leggo che questi non � stato progettato per 
gestire pi� utenti...quindi ci si deve accontentare dell'utente root. Il 
comando adduser proprio non esiste.
Volendo far partire lo script, l'ho editato per vedere cosa impedisse l'uso 
dell'utente root:
#!/bin/bash
# Function to establish user id of current user.
# We call this function later on to test if they are ROOT and fail if they 
are.
getUID() {
        id $1 | sed -e 's/(.*$//' -e 's/^uid=//'
}
# Test if user is root and deny access if they are.
# It is not a good idea to be running software as root.
if [ "`getUID`" = 0 ] ; then
        echo "ERROR: You can't run this as ROOT. Change to another user and 
try again.";
        exit;
fi
# End of User test.
DIR_PATH=`dirname $0`
#setup the path to include our directory
export PATH="$DIR_PATH":"$PATH"
# If we made it this far we mustn't be root.
# Just set the library path.
export LD_LIBRARY_PATH=$DIR_PATH/deploy/
# Then run the program.
$DIR_PATH/consolewd
exit $?
root@OpenWrt:/mmc/consolewdfiles#
Ho provato ad "eliminare" la parte che riguarda il controllo sull'utente ed 
a rieseguire lo script.
L'errore in questo caso diventa:
./consolewd: 1: Syntax error: "(" unexpected
"consolewd" � un altro file presente nella cartella...
A questo punto mi fermo.. non capisco perch� dia questo errore..
Potreste aiutarmi?
Ciao,
Alberto
-- 

 Potreste aiutarmi?
Il problema ï¿œ consolewd che a naso ï¿œ un altro script. Verifica cosa 
contiene; probabilmente si tratta di qualche "bashismo".
-- 
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)


Ciao Flavio,
ho provato a fare un cat di consolewd... ma bisognerebbe essere come 
Morpheus nel film matrix...che legge direttamente il codice sorgente :-))
Niente di comprensibile... mi si � quasi impallata la console (visto che 
interrogo il router da remoto..).
Pu� dipendere anche dal tipo di processore o l'architettura hardware non 
c'entra?
ciao 

 c'entra?
Sï¿œ. Io davo per scontato che fosse per l'architettura del tuo router, invece 
  ï¿œ tutta roba per x86, quindi non puï¿œ funzionare lï¿œ sopra. Mi pare anche 
che non sia opensource, quindi quel programma non potrai metterlo su openwrt 
nemmeno sacrificando la moglie a Cthulhu. Cerca qualche alternativa 
opensource o metti il programma su un normale PC.



Ah, ecco... ma avendo il sorgente di un programma lo si pu� ricompilare per 
il proprio tipo di processore, oppure un programma va riscritto tutto?

 il proprio tipo di processore, oppure un programma va riscritto tutto?
Dipende dal programma e dal programmatore.
Il kernel Linux 
p.es
. ï¿œ un unico sorgente per tutte le architetture, altri 
programmi invece richiedono di essere riscritti o pesantemente modificati 
per poter essere compilati per altri sistemi.
In genere se il programmatore ï¿œ in gamba il suo codice sarï¿œ portabile o 
richiederï¿œ interventi veramente minimi per poter essere portato. Il problema 
ï¿œ la scarsitï¿œ di sviluppatori in gamba.


 Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)
Grazie 1000 per le info!! 

adduser esiste, devi includerlo al momento della compilazione del 
firmeare (cerca usando  /   ),cmq mi pare sia nella configurazione di 
busybox.

 Il kernel Linux 
p.es
. � un unico sorgente per tutte le architetture, altri
]zac[
Tanto per pignoleggiare questo � parzialmente vero, ci sono parti molto 
importanti del kernel che sono separati in base all'architettura e vengono 
selezionati in basa ail tipo di architettura (tipo di processore) che � 
stato rilevato in fase di configurazione.
In sintesi ci sono molte parti che sono specifiche in base al processore, 
all'architettura o anche solo al x86 e x86_64, e la selezione delle parti 
viene fatta usando una marea if ARCH == xyz ...