Ciao, amici!.
Ecco i passi necessari per compilare nativamente sul modem DGA4130.
Procurarsi innanzitutto una chiavetta usb GRANDE che verra' formattata ext3/ext4
Come dite? non sapete dove trovare il programma per formattare da Windows?
Scaricatevi il
Mini tool partition wizard eccovi il link:
https://www.partitionwizard.com/free-partition-manager.htmlAdesso inserite la chiavetta che verra' riconosciuta e montata automaticamente dal sistema. Verifichiamo!
Nel mio caso e' inserita sulla porta 1 quindi vedrete /dev/sda1utente@modemtim:~$ mount
/dev/sda1 on /tmp/run/mountd/sda1 type ext4 (rw,relatime,data=ordered)
Bene, Adesso dovremo procurarci la toolchain nativa
mini-native-armv4l.tar.bz2Non sapete dove trovarla? eccovi il link:
https://www.uclibc.org/downloads/binaries/0.9.30.1/A questo punto inviamo al modem il mini-native-armv4l.tar.gz
Possiamo farlo copiando mini-native-armv4l.tar.gz in una chiavetta usb
e poi da modem copiandolo dalla cartella /tmp/run/mountd/sda1
Oppure più semplicemente usando scp:
Assumendo che il vostro modem si trovi all'indirizzo 192.168.1.1(non dimenticate il : finale, e' la chiave di tutto)utente@superfast:~$ scp mini-native-armv4l.tar.gz 192.168.1.1:
Ci colleghiamo al modem per estrarre il pacchetto
utente@superfast:~$ ssh 192.168.1.1
utente@modemtim:~$ sudo ash
root@modemtim:/home/utente#
Ora ci portiamo nella cartella della nuova radice e dezippiamo
Per estrarre non userò il comando tar xvaf perché non riconosce i files bz2
invece userò il programma bzcat che riversa l'output al tar (grazie della correzione,
@shdf)
(per convenienza la rinomino la cartella creata come m)root@modemtim:/home/utente# cd /tmp/run/mountd/sda1
root@modemtim:/tmp/run/mountd/sda1# mv /home/utente/mini-native-armv4l.tar.gz .
root@modemtim:/tmp/run/mountd/sda1# bzcat mini-native-armv4l.tar.bz2 | tar -xvf -
root@modemtim:/tmp/run/mountd/sda1# mv mini-native-armv4l m
root@modemtim:/tmp/run/mountd/sda1# cd m
root@modemtim:/tmp/run/mountd/sda1/m# ls
bin dev etc lib proc sbin sys tmp usr
Come potete osservare abbiamo un secondo albero simile a quello che sta in /
Dobbiamo preparare l'ambiente ristretto copiando il file delle password
perché una volta dentro il chroot non potremo accedere a quello originario
attenti che il percorso destinazione e' relativo, quindi NON scrivere /etc
nella destinazione al posto di etc root@modemtim:/tmp/run/mountd/sda1/m# cp /etc/passwd etc
root@modemtim:/tmp/run/mountd/sda1/m# cp /etc/shadow etc
root@modemtim:/tmp/run/mountd/sda1/m# cp /etc/group etc
Dobbiamo creare la home directory dentro la quale compileremo
(al posto di utente e gruppo inserite il vostro nome utente/ gruppo) (anche stavolta attenti a non creare cartelle nel posto sbagliato
es. NON scrivere mkdir /root) root@modemtim:/tmp/run/mountd/sda1/m# mkdir root
root@modemtim:/tmp/run/mountd/sda1/m# mkdir home
root@modemtim:/tmp/run/mountd/sda1/m# mkdir home/utente
root@modemtim:/tmp/run/mountd/sda1/m# chown utente.gruppo home/utente
E ora viene il bello, facciamo un chroot che ci taglierà fuori dal sistema principale
ma ci permetterà di compilare i nostri programmi.
Subito dopo cambierò utente in modo da portarmi in condizione
di utente normale col quale non posso fare danni
root@modemtim:/tmp/run/mountd/sda1/m# chroot /tmp/run/mountd/sda1/m ash
root@modemtim:/# su utente
utente@modemtim:~$
Ora creiamo un semplice programmetto
utente@modemtim:~$ cat >test.c
#include <stdio.h>
main() { printf("ciao\n"); }
control-d
Lo compiliamo banalmente
utente@modemtim:~$ cc test.c
utente@modemtim:~$ a.out
ciao
Usciamo prima dalla shell di utente premendo control-d
e poi dall'ambiente chroot premendo control-d
Ci ritroveremo dove eravamo partiti, nell'ambiente non chroot. superuser.
Usciamo anche dalla shell di root premendo control-d
utente@modemtim:~$ control-d
root@modemtim:/home/utente# control-d
root@modemtim:/tmp/run/mountd/sda1# control-d
utente@modemtim:/tmp/run/mountd/sda1$ cd m/home/utente
utente@modemtim:/tmp/run/mountd/sda1/m/home/utente$ a.out
ciao
E come potete vedere il programma continua a funzionare.
Adesso potete compilarvi nativamente ogni tipo di programma
da soli !!
Se poi vorrete usare i programmi del toolchain nuovo senza chroot potrete aggiungere al .profile
export PATH=$PATH:/tmp/run/mountd/sda1/m/bin
Se la mia guida e' stata chiara, scrivetelo. Se manca qualcosa, notate delle sviste
o non avete capito un passaggio, scrivetemelo e vedrò di chiarire.
N.B. tutti i link citati in questa guida si riferiscono a programmi gratuiti.