>> Modificare il firmware
Il firmware è composto da due file, il kernel Linux ed il filesystem.
Modificare il FS dlinkpedia
Requisiti: Ricompilare il kernel
Applicare ad un kernel vanilla 2.6.X (scaricato da kernel.org) la patch SquashFS+LZMA. Questa patch permette di poter gestire filesystem squashfs che usano la compressione LZMA (Lempel Ziv Markov-chain Algorithm, è un algoritmo di compressione dati basato su 7-zip e StuffiX): si ottengono così filesystem più compressi. Per applicarla leggere la documentazione di SquashFS.
Inoltre, sempre sul sito MCMCC, c'è una versione modificata di mksquashfs2 che permette di creare filesystem con compressione LZMA.
Procedura:
Una volta compilato il kernel, è possibile montare le immagini SquashFS:
# mount -t squashfs -o loop mia.immagine /mnt/somewhere
e copiare il contenuto in una cartella per modificarlo:
# cp -Rp /mnt/somewhere/ /home/fra/dlink
NOTA: -R copia le sottocartelle, mentre -p preserva i permessi originali dei file.
A questo punto è possibile modificare i file.
Creare filesystem compatibili con il kernel dlinkpedia
Per creare una nuova immagine (supponendo che in ~/dlink ci siano le cartelle var etc usr ecc.) è sufficiente digitare:
# mksquashfs /home/fra/dlink/ /home/fra/nuova.immagine -noappend
mksquashfs --help chiarià ogni dubbio.
(attenzione: sembra che -check_data renda il filesystem inutilizzabile)
Modificare filesystem dlink (v 2.0 quello con supporto adsl2+ ufficiale)
Si deve applicare la patch prima di tutto la patch "ufficiale" di squashfs al kernel 2.6.12.2 vanilla disponibile qui, poi applicare questa squashfs2.2_lzma.patch.
Ora si procede come sopra con un mount:
mount -t squashfs mia.immagine /mnt/squashfs -o loop,offset=0x81000
L' offset, in questo caso, serve perchè dalla versione 2.0 la dlink ha realizzato un unico file immagine che comprende kernel e filesystem, questa cifra esadecimale è stata trovata con un editor esadecimale, cercando la striga "hsqs".
Creare filesystem compatibili con il kernel originale dlink (v2.0)
Scaricare:
- LZMA SDK 4.27 di 7-zip.org
- patch per LZMA SDK
- SquashFS 1.3r3 di http://squashfs.sourceforge.net/
- patch per SquashFS 1.3r3
Supponendo che i file siano tutti all'interno della home (/home/utente) si procede con questi comandi:
mkdir lzma427 cd lzma427 tar -xjf ../lzma427.tar.bz2 patch -p1 < ../lzma427_zlib.patch cd SRC/7zip/Compress/LZMA_Lib make cd tar -xzf squashfs1.3r3.tar.gz cd squashfs1.3r3 patch -p1 < ../squashfs1.3r3_lzma.patch cd squashfs-tools make
Creazione del filesystem:
./mksquashfs /home/utente/firmware fs-squashfs.img
se lo voglio firmare per rendere possibile l'aggiornamento via web, devo usare TIchksum
./tichksum ../squashrw.fs
Modificare filesystem dlink (v 1.0)
Scaricare SquashFS 1.3r3 di http://squashfs.sourceforge.net/ all'interno troverete le patch per le versioni supportate del kernel linux, da applicare come sempre ad un kernel vanilla. Poi si procede normalmente montandola e facendo una copia del contenuto del punto di mount.
Creare filesystem compatibili con il kernel originale del 302T (v 1.0)
Per creare filesystem compatibili con il kernel originale del 302T (tipo quello di Zwanky) bisogna usare la versione 1.3r3 di mksquashfs scaricabile qui.
Questo perchè il kernel originale del 302T supporta solo filesystem di tipo squashfs1.x
OpenWRT
http://wiki.openwrt.org/AR7Port
