Modifier et personnaliser sa neufbox 4
Vous n'êtes pas connecté.
Bon, c'est enfin fait !
Je voulais une synthèse, la voilà...
Merci aux pionniers, plus particulièrement à SGDA pour leur aide
Tout est dans le WIKI..
Cet enchaînement fonctionne, mais je ne garanti rien et décline toute responsabilité en cas de problème!
Pré-requis :
- Un accés au port-série comme indiqué dans le WIKI : port série
- Un serveur tftp est installé sur votre système comme indiqué dans le WIKI : serveur tftp
1 - Dans le dépôt subversion, récupérer et installer NB4-extract, NB4-adsl, NB4-concat, unsquash.py.
Récupérer le firmware comme indiqué dans le WIKI : récupération du firmware
2 - Valider que ce qui est récupéré est bon au moyen des outils NB4-extract (pour MAIN et RESCUE) et NB4-adsl (le driver ADSL)
3 - NB4- extract produit trois fichiers NB4-R1.3.11-KERNEL, NB4-R1.3.11-HEADER et NB4-R1.3.11-ROOTFS
4 - Au moyen de unsquash.py on obtient une copie locale décompressée du File System de la NB4, dans rootfs
5 – Modifier le file system :
- modifier dans rootfs/etc/shadow le mot de passe crypté de root
- renommer dans rootfs/bin le fichier upgrade en xupgrade afin de rendre inopérantes les mise à jour automatiques
- on peut effacer les 12 répertoires cachés .svn qui ne servent à rien dans une box et prennent de la place inutilement
# find rootfs -name '.svn' -exec rm -r {} \;6 - reconstruire un fichier NB4-R1.3.99-ROOTFS à partir du rootfs modifié en utilisant l'utilitaire mksquashfs dans l'archive USR9113_release1.0.tar.gz que l'on trouve
http://www.usr.com/support/gpl/USR9113_ … 1.0.tar.gz
le fichier mksquashfs se trouve dans
USR91xx_3.06L.06V_consumer.tar.gz\hostTools
Pour s’exécuter , mksquashfs a besoin de la bibliothèque libstdc++5
Si nécessaire (j’ai une Debian etch)
apt-get install libstdc++5
./mksquashfs rootfs NB4-R1.3.99-ROOTFS -be -lzma -no-fragments -noI -all-root -noappend
Creating big endian filesystem on NB4-R1.3.99-ROOTFS, block size 65536.
Big endian filesystem, data block size 65536, uncompressed data, compressed metadata, no fragments
Filesystem size 2798.40 Kbytes (2.73 Mbytes)
30.79% of uncompressed filesystem size (9088.67 Kbytes)
Inode table size 14902 bytes (14.55 Kbytes)
100.00% of uncompressed inode table size (14902 bytes)
Directory table size 7785 bytes (7.60 Kbytes)
100.00% of uncompressed directory table size (7785 bytes)
Number of duplicate files found 0
Number of inodes 684
Number of files 406
Number of symbolic links 124
Number of device nodes 110
Number of fifo nodes 1
Number of socket nodes 0
Number of directories 43
Number of uids 1
root (0)
Number of gids 07 - Créer une copie de NB4-R1.3.11-KERNEL que l'on appelle NB4-R1.3.99-KERNEL
8 - Au moyen de l'utilitaire nb4-concat (que l'on trouve dans le dépôt svn) construire une image NB4-R1.3.99-MAIN
./nb4-concat NB4-R1.3.99 Adresse du rootfs : 0Xbfc10100 Adresse du KERNEL : 0Xbfeef100 Fichier NB4-R1.3.99-MAIN créé avec succés
9 - Copier les fichiers NB4-R1.3.99-MAIN, NB4-R1.3.11-RESCUE, NB4-A2pB022p dans le répertoire /tftpboot
10 - Connectez votre serveur tftp à la NB4 sur un port PCx et notez l'adresse qui lui est assigné par la NB4 (par exemple 192.168.1.20)
11 - Faire un reset de la NB4 qui redémarre et prendre la main sous CFE
12 - Au moyen de la commande c modifier l'adresse du host par l'adresse de votre serveur tftp
Soit dans l’exemple choisi : Host IP address 192.168.1.20
13 – Reconnectez votre serveur tftp du port PCx sur le port TV
14 - Flasher l'image par la commande ... flashimage
CFE> flashimage NB4-R1.3.99-MAIN flashimage NB4-R1.3.99-MAIN Loading 192.168.1.20:NB4-R1.3.99-MAIN ... Finished loading 3954842 bytes .............. Finished flashing image. Resetting board...
15 – La NB4 se relance automatiquement, et la procédure de boot se termine par :
[NB4-SER-r0][NB4-R1.3.99-MAIN][????????...?????] Lost login:
16 - Il y a ces points d'interrogation car le driver ADSL a disparu, mais on peut se logger en root
root
Password: votre_mot_de_passe
_ __ ________ ____ _ __
/ | / /__ __ __/ __/ __ )/ __ \ |/ /
/ |/ / _ \/ / / / /_/ __ / / / / /
/ /| / __/ /_/ / __/ /_/ / /_/ / |
/_/ |_/\___/\__,_/_/ /_____/\____/_/|_|
Trio4 Project By Efixo
N9UF Box Version : Trio_4D
Version : 1.3.11
Build Date : 070806_1526
Kernel Version : linux 2.6.8.1 on mips cpu
[root@Lost ~]17 - A ce stade on est dans la place et l'accès en telnet sur le port 1287 est aussi possible. Il ne reste qu’à faire un xupgrade (puisqu'on a renommé le programme upgrade afin d'interdire son emploi automatique et garder le contrôle des mises à jour) pour charger en FLASH le firmware RESCUE puis le driver ADSL. Il est nécessaire (curieux) de reconnecter le serveur tftp sur le port PCx
[root@Lost /bin] ./xupgrade --rootpath 192.168.1.20 --rescue_fskernel NB4-R1.3.4-RESCUE [root@Lost /bin] [root@Lost /bin] flashing rescue fskernel... [flash] write @BE600000 length 1143434 flashing rescue fskernel ok! [root@Lost /bin] ./xupgrade --rootpath 192.168.1.20 --adsl_driver NB4-A2pB022p [root@Lost /bin] [root@Lost /bin] flashing adsl firmware... [flash] write @BE780000 length 458752 flashing adsl firmware ok!
18 – La NB4 se relance automatiquement, et la procédure de boot se termine par :
Starting pid 1180, console /dev/ttyS0: '/bin/login' [NB4-SER-r0][NB4-R1.3.99-MAIN][NB4-A2pB022b] Lost login:
A vous de jouez maintenant !
Dernière modification par cuagn (10/11/2007 07:58:02)
Hors ligne
je conseillerai de modifier /bin/upgrade en /bin/xupgrade pour éviter une mise à jour intempestive de la box
Dernière modification par SGDA (17/10/2007 21:36:56)
Hors ligne
J'avais noté et la version finale de la procédure me semble maintenant complète.
Merci
Dernière modification par cuagn (18/10/2007 13:57:39)
Hors ligne
Bonjour,
j'ai deux questions:
1/ malgré les 4 fichiers "augmentés" de 1 octet (en fait un 0), la NB4 est bien fonctionnelle?
2/ pour reflasher, ne peut-on pas utiliser la procédure donnée dans le wiki ?
http://www.neufbox4.org/wiki/index.php? … n_firmware
Vincent
Hors ligne
Question 1: je ne peux pas répondre plus que ce que j'ai déjà dit dans le forum. Les fichiers n'étant pas identiques, il y a doute. Et comme je (on ?) ne connais pas les fonctions qui les utilisent il faut rester prudent.
Pour mes tests, j'utilise une NB4 perso (qui m'appartient, pas à Neuf) connecté au réseau "CEGETEL" (mon contrat est un vieux contrat CEGETEL). La téléphonie n'est donc pas disponible. Les fonctions de base marchent...
Question 2: Il faut faire attention à certaines infos du WIKI non réellement validées (le WIKI est un peu un cahier de laboratoire aussi ...). Quoi qu'il en soit, je n'ai pas réussi à faire fonctionner la manip indiquée.
Je ne perçois pas "a priori" la relation entre une demande FTTH et la mise à jour du firmware sur le port PC3...et de plus la config du dnsmasq donne des erreurs sur les lignes
enable-tftp tftp-root=/tftpboot/
J'ai donc utilisé l'autre méthode qui nécessite un port série, et donc un peu de bricolage HW, alors que la méthode WIKI (si elle marche) laisse la NB4 inviolée au plan HW.
Il serait interessant de savoir si quelqu'un est parvenu à s'en servir avec succès.
Dernière modification par cuagn (18/10/2007 15:59:09)
Hors ligne
à l'étape 5, je conseille d'effacer toutes les directories .svn disséminées dans le fs
cela diminue le nombre de fichiers et évite d'avoir un
Number of duplicate files found
Ces fichiers ne peuvent être fonctionnels
J'ai voulu essayer la méthode en passant en ffth..mais sous windows je n'ai pas trouvé de solution
Dernière modification par SGDA (18/10/2007 20:41:49)
Hors ligne
Tu as raison, j'avais oublié.
Oubli corrigé.
Dernière modification par cuagn (18/10/2007 21:17:21)
Hors ligne
Indispensable !! (unsquash35.py ne le crée pas me semble-t-il..donc vérifier)
il faut recréer le fichier dev/initctl avec les commandes (à partir de la racine du fs)
mknod dev/initctl p
chmod 600 dev/initctl
Hors ligne
Je viens d'installer dnsmasq sur ma gentoo:
USE="tftp" emerge dnsmasq
Le fichier de config donné dans le wiki passe bien
(/etc/init.d/dnsmasq start OK)
reste à voir si la NB4 fait bien une requête dhcp/tftp sur PC3 en mode FTTH...
Je teste ça dès que j'ai le temps, à suivre...
Vincent
Hors ligne
Bons tests via FTTH
Concernant initctl, je ne suis pas chez moi pendant plusieurs semaines, je ne peux pas vérifier...
Il n'est pas créé. J'ai donc modifié l'étape 5
Dernière modification par cuagn (21/10/2007 18:21:53)
Hors ligne
Je peux vous dire que ca flash par FTTH et une NB4 de plantée une.
Mon mkSquashfs a merdé j'ai pourtant recopié la ligne de commande donné dans le récapitulatif.
Quelqu'un sais comment forcer la NB4 a booter sur le firmware de secour?
Dernière modification par Ptitdic (27/10/2007 19:35:05)
Hors ligne
tu vas sous CFE
et (de tête) il ya le dernier paramètre à mettre à 1 au lieu d'auto
désolé mais en déplacement donc peu d'aide
sinon si tu es sous CFE tu fais un flashimage du firmware courant
Il ne faut utiliser le mksquash d'efixo !!!
Dernière modification par SGDA (27/10/2007 19:12:25)
Hors ligne
Ok je verrais ca demain si j'ai le temps, la je viens juste de finir mon cable et il est operationnel je vois que la box fait un kernel panic suite a mon flashage avec la methode FTTH. Ce qui parrait normal puisque le rootfs est completement faux.
Aller il est 3h23, je n'ai plus envie de reflechir ![]()
Hors ligne
Autre conclusion provisoire, toujours vérifier ce que vous faite (ce que je n'ai pas fait),
Et il est préférable d'avoir un cable série en cas de bêtise ![]()
Je n'ai toujours pas compris ou j'ai merdé dans la commande mksquashfs, la seule chose que je sais c'est que si j'avais utilisé CFE ca aurait donné le même résultat
.
Dernière modification par Ptitdic (28/10/2007 10:03:46)
Hors ligne
Je viens d'observer un peu plus attentivement les traces via le cable série, et il semble que finallement la box a correctement booté sur le firmware de rescue.
Je croyais qu'elle était plantée car a première vu le firmware de rescue n'a pas le même fonctionnement que le firmware normal.
=> pas de serveur DHCP
Mais si je regarde viens le port serie je vois qu'un client dhcp est lancé :
+ifconfig eth1 hw ether 00:17:33:4E:1C:5C up
+ifconfig eth1.4 hw ether 00:17:33:4E:1C:5C up
+udhcpc -V neufbox_IN_RESCUE -C -i eth1.4 -s /etc/dhcpc.script
Donc c'est peut etre possible de recuperer l'affaire sans cable serie
info, udhcpc (v0.9.9-pre-efixo) started
Hors ligne
he oui j'avais oublié après 3 (5) échecs de boot la NB4 bascule sure le rescue
Hors ligne
Bonsoir,
Je m'étais arrêté juste avant le flashage en mode FTTH, c'est à dire requête dhcp et tftp de la nb4. Je n'avais rien mis dans /tftpboot, donc ça n'a pas été plus loin...
D'autre part, il me semble que le problème vient plus de l'extraction depuis le squashfs d'origine que de la recompression par mksquashfs.
En effet, il y a 4 fichiers qui "gagnent" un octet d'un squashfs à l'autre (avec la méthode d'extraction par le script python), mais en utilisant le module kernel (du site italien mentionné dans le wiki) et le mksquashfs, on n'a plus ce problème (le squashfs résultat est de même taille que l'original).
Le résultat est-il pour autant bootable? Je n'ose pas tenter, de peur d'être privé de net et de téléphone!
Vincent
Hors ligne
Peux-tu me rappeler les fichiers qui "gagnent" un octet ? Merci
Hors ligne
dans /lib/modules/2.6.8.1/extra:
adsldd.ko
event.ko
leds.ko
profile.ko
l'octet en plus à l'air d'être un "0" à la fin...
Hors ligne
Le gain d'un octet n'est pas systématique à chaque étape
fil dans le forum
Plus surprenant j'avais les fichiers suivants :
cuagn a écrit:
Mais plus grave, certains fichiers (toujours les mêmes) de l’arborescence obtenue gagnent 1 octet à chaque génération !:
V0
-rwxr-xr-x 1 root root 11473 2007-10-11 10:07 event.ko
-rwxr-xr-x 1 root root 18573 2007-10-11 10:07 leds.ko
-rw-r--r-- 1 root root 9497 2007-10-11 10:07 ipt_LOG.ko
-rwxr-xr-x 1 root root 16733 2007-10-11 10:07 pure-mrtginfo
V1
-rwxr-xr-x 1 root root 11474 2007-10-11 10:48 event.ko
-rwxr-xr-x 1 root root 18574 2007-10-11 10:48 leds.ko
-rw-r--r-- 1 root root 9498 2007-10-11 10:48 ipt_LOG.ko
-rwxr-xr-x 1 root root 16734 2007-10-11 10:48 pure-mrtginfo
V2
-rwxr-xr-x 1 root root 11475 2007-10-11 11:14 event.ko
-rwxr-xr-x 1 root root 18575 2007-10-11 11:14 leds.ko
-rw-r--r-- 1 root root 9499 2007-10-11 11:14 ipt_LOG.ko
-rwxr-xr-x 1 root root 16735 2007-10-11 11:14 pure-mrtginfo
V3
-rwxr-xr-x 1 root root 11476 2007-10-11 11:15 event.ko
-rwxr-xr-x 1 root root 18575 2007-10-11 11:15 leds.ko
-rw-r--r-- 1 root root 9500 2007-10-11 11:15 ipt_LOG.ko
-rwxr-xr-x 1 root root 16735 2007-10-11 11:15 pure-mrtginfo
Est-ce le même mksquashfs ?
Dernière modification par cuagn (29/10/2007 17:16:31)
Hors ligne
quelqu'un a réussit a utiliser la methode de cuagn avec nb4-concat?
Car moi si je fais simplement un unsquash + mksquashfs du répertoire sans rien modifier, et que je reconstruit un firm avec ca et nb4-concat et ma box plante
(
Hors ligne
As-tu essayé de concatener avec
/opt/NB42/NB4/hostTools/bcmImageBuilder --output ./myfirmware --chip 6358 --board "96358VW" --blocksize 64 --cfefile /opt/NB42/NB4/targets/cfe/cfe6358.bin --rootfsfile ./rootfs.img --kernelfile kernel.lz
l'inconvénient est que le champ de version du firmware (à partir octet 142 (octect 0 =1er octect) n'est pas informé.il faut ensuite le faire à la main
1°) editer l'image avec un éditeru hexa et rajouter le nom de la version à paritr octet 142 (NB4-R1.3.12-MAIN par exemple)
2°) sauver l'image
3°) effacer à partir de l'octet 236 (CRCde controle de l'entête) jusqu'à la fin
4°) sauver dans un autre fichier
5°) calculer le CRC32 de ce nouveau fichier puis son complément à 1 (FFFFFFFF - CRC32)
6°) rouvrir le fichier image et taper à partir de l'octet 236 le CRC de contrôle calculé en 5
7) sauver l'image
Bon flashage
L'absence de ce champ n'empêche pas de flasher et de booter...mais c'est pas très jolie sur l'interface html
Dernière modification par SGDA (30/10/2007 17:16:48)
Hors ligne
non ca c'etait prevu pour ce soir ![]()
Si l'absence du champs version n'empeche pas de booter, je vais m'en passer pour le moment ![]()
Dernière modification par Ptitdic (30/10/2007 17:05:33)
Hors ligne
Ptitdic a écrit:
quelqu'un a réussit a utiliser la methode de cuagn avec nb4-concat?
Car moi si je fais simplement un unsquash + mksquashfs du répertoire sans rien modifier, et que je reconstruit un firm avec ca et nb4-concat et ma box plante(
Le nb4-concat marche.
Je l'ai utilisé.
Au demeurant c'est assez bestial (ie trivial, simple) mais très utile pour ne pas reconstruire un header "à la mano".
Le nb4-concat n'est que la fonction inverse de nb4-extract
nb4-extract produit un rootfs et un kernel (plus un header)
nb4-concat produit une image (avec le bon header) à partir d'un rootfs et d'un kernel
Si ça plante c'est que ton aller-retour unsquash/squash altère quelque chose.
Ton fichier rootfs (avant / après) est il identique ?
Dernière modification par cuagn (30/10/2007 19:35:30)
Hors ligne