OS-sw ver.: CCBot/2.0 (https://commoncrawl.org/faq/)
Login date: 21 Jul 19 - 03:03:35
IP Address: 18.232.99.123Cursore

Registrati

---------------------------------------------------------------------------------
Introduzione
---------------------------------------------------------------------------------




Allora, premetto che il router in questione è uno dei migliori acquisti che ho fatto negli ultimi 10 anni... All'inizio l'ho usato con il firmware originale, poi mi è balzata in mente l'idea di installarci sopra Openwrt e debbo dire che il risultato finale è stato molto gratificante.
In rete ho beccato varie guide, nello specifico ho seguito quelle di questo sito http://wl700ge.hezik.nl/ che offre la possibilità di scaricare le versioni già compilate di Kamikaze(7.09-8.09-8.09rc2) e Backfire(10.3.01rc4).
Di seguito, come nella guida inserita da lamroe https://forum.openwrt.org/viewtopic.php?pid=161677#p161677 spiegherò passo per passo la compilazione del kernel e l'installazione dello stesso nel nostro oggettino.

---------------------------------------------------------------------------------
1. Preparazione
---------------------------------------------------------------------------------



Come prerequisiti bisogna avere

- una distro linux installata su un pc per poter compilare i sorgenti di Openwrt (io nel momento in cui scrivo ho un Ubuntu 13.04).
- 3-4GB di spazio libero

Ora creiamo la directory nella home del nostro user dove andremo a scaricarci i sorgenti:

mkdir ~/openwrt cd ~/openwrt svn co svn://svn.openwrt.org/openwrt/trunk/backfire



Andiamo a scaricarci i feeds (opzionale)

cd ~/openwrt/trunk ./scripts/feeds update -a ./scripts/feeds install -a



Verifichiamo se abbiamo tutti i pacchetti installati nella macchina linux per poter compilare i sorgenti

make defconfig make prereq make menuconfig



Se richiesto installiamo i pacchetti, nella guida di Openwrt per la buildroot vengono specificati i seguenti

sudo apt-get install libncurses5-dev zlib1g-dev gawk



---------------------------------------------------------------------------------
2. Compilazione primo boot
---------------------------------------------------------------------------------



Ora che siamo pronti per iniziare il build posizioniamoci sotto la trunk e andiamo a configurare il sistema, i pacchetti, i moduli del kernel, ecc ecc del nostro firmware.Ora siamo di fronte a 2 strade:

- o ci scarichiamo il file config con le opzioni già preselezionate
- o scegliamo in autonomamente quali pacchetti compilare
A. Con config già pronto
Nel primo caso basta fare un wget del config_kexec e sovrascrivere il file .config con lo stesso eseguendo il comando:

cd ~/openwrt/trunk
wget http://www.fileden.com/files/2012/3/21/3281530/config_kexec
mv config_kexec .config
make menuconfig



oppure quello della configurazione che ho usato io:

cd ~/openwrt/trunk
wget http://www.mozzo.altervista.org/files/backfire/config_kexec
mv config_kexec .config
make menuconfig



I 2 config sono appositamente predisposti per fare il "boot" con kexec leggendo da chiavetta usb, volendo si può far boottare il rooter da disco fisso, quindi basta togliere il supporto usb dai moduli del kernel e selezionare i moduli ide
Kernel Modules--> USB Support --> deselezionare tutto
Kernel Modules--> Block devices --> kmod-ide-core
B. Senza config già pronto
Se invece scegliamo di arrangiarci basta lanciare direttamente:

cd ~/openwrt/trunkmake menuconfig



scegliere Target System Broadcom BCM947xx/953xx e poi i pacchetti che ci interessano (io ho disabilitato il Target Profile (No Wifi)lasciando abilitato quello proposto di default, disbilitando i moduli dell'ipv6 assicurandomi che sia selezionato
- Kernel Modules--> filesystems --> kmod-fs-ext2 (*) (per leggere le partizioni della chiavetta usb/disco fisso)
- Kernel Modules--> USB Support --> kmod-usb-core
  Kernel Modules--> USB Support --> kmod-usb-corekmod-usb-ohci
  Kernel Modules--> USB Support --> kmod-usb-corekmod-usb-storage
  Kernel Modules--> USB Support --> kmod-usb-corekmod-usb-uhci
  Kernel Modules--> USB Support --> kmod-usb-corekmod-usb2

Ora che abbiamo selezionato tutto quello che vogliamo che sia presente nell'immagine di "boot" andiamo a modificare la configurazione del Kernel che verrà caricato:

make V=99 world
make kernel_menuconfig



Assicuriamoci che sia selezionato:
- Kernel type --> Kexec system call (EXPERIMENTAL)
- General setup --> Initial RAM filesystem and RAM disk(initramfs/initrd)
- General setup --> Support initial ramdisks compressed using LZMA
ora con modifichiamo il file machine_kexec.c

vi ~/openwrt/trunk/build_dir/linux-brcm47xx/linux-2.6.32.27/arch/mips/kernel/machine_kexec.c



facciamo un find della riga
kexec_start_address = image->start;
e la sostituiamo per intero con
kexec_start_address = (unsigned long) phys_to_virt(image->start);
Ora diciamo all'immagine kexec dove puntare la seconda immagine del kernel, quindi dobbiamo modificare il file rc.local che poi verrà copiato sulla chiavetta durante il build, quindi creiamo le dir che il build caricherà poi nel filesystem ext2:

mkdir files && cd files/ && mkdir etc && cd etc
touch ~/openwrt/trunk/files/etc/rc.local
vi ~/openwrt/trunk/files/etc/rc.local



e ci incolliamo:


mkdir /new
until [ -e /dev/sda1 ]; do
  sleep 2
done
mount /dev/sda1 /new
if [ -f /new/openwrt-brcm47xx-vmlinux.elf ]; then
  kexec -l /new/openwrt-brcm47xx-vmlinux.elf
  kexec -e
fi
exit 0


salviamo e usciamo
ora torniamo nella root della trunk, lanciamo la compilazione e andiamo al bar:

cd ~/openwrt/trunk
make V=99



**Se dovesse dare degli errori nella compilazione (ne ho rilevati 3) consultare google, i file .h che vengono specificati nell'errore necessitano di essere "patchati" inserendo un paio di righe nel file stesso.

Dopo essere stati al bar e aver finito di compilare il tutto correttamente ci troveremo nella situazione in cui avremo il file compilato in ~/openwrt/trunk/bin/brcm47xx/ e avrà nome openwrt-brcm47xx-squashfs.trxquesto file che non deve superare gli 1,7-1,8MB verrà flashato nella rom del router

---------------------------------------------------------------------------------
3. Flashare il router
---------------------------------------------------------------------------------



Staccare brutalmente il cavo di alimentazione del router, staccare tutte le eventuali chiavette, stampanti, cellulari ecc ecc dall'usb, cavi di rete... attaccare il cavo di rete del proprio pc (porta lan o wan è indifferente) con a bordo l'immagine da flashare. Assegnare alla rete ethernet del pc un 192.168.1.2 (subnet 255.255.255.0).
Tenere premuto il tastino rosso sul retro del modem e riattaccare il cavo di alimentazione. Attendere, sempre col tastino rosso premuto, che il led blu del router lampeggi per 5 volte e che poi si spenga e non lampeggi più.
Se è andato tutto ok dovrebbe rispondere al ping con indirizzo 192.168.1.1 ed aver attivato il server tftp che ci servirà per trasferire il file creato precedentemente.
Lanciare quindi il comando:

cd ~/openwrt/trunk/bin/brcm47xx/
tftp 192.168.1.1
tftp> bin
tftp> put openwrt-brcm47xx-squashfs.trx



attendere 30 secondi e premere il tastino reset (quello nero dalla parte opposta del tasto rosso di prima)
Se il tutto ha funzionato il router dovrebbe lampeggiare con led blu e permetterci di fare un telnet all'ip 192.168.1.1 salutandoci con la schermata classica di openwrt
BusyBox v1.15.3 (2013-06-30 23:30:52 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 Backfire (10.03.1, r29638) ------------------------
  * 1/3 shot Kahlua    In a shot glass, layer Kahlua
  * 1/3 shot Bailey's  on the bottom, then Bailey's,
  * 1/3 shot Vodka     then Vodka.
 ---------------------------------------------------
4. Compilazione secondo boot
Ora che abbiamo flashato correttamente il router dobbiamo far partire il sistema operativo vero e proprio (da usb nel mio caso)
Dopo aver salvato da qualche parte il file .trx ho cancellato la dir nella mia home di openwrt e riscaricato il trunk con i vari script per i feeds e i vari make per arrivare alla configurazione del build

mkdir ~/openwrt cd ~/openwrt svn co svn://svn.openwrt.org/openwrt/trunk/backfire
cd ~/openwrt/trunk ./scripts/feeds update -a ./scripts/feeds install -a
make V=99 defconfig
make V=99 package/symlink
make menuconfig



Ho selezionato come prima Target System Broadcom BCM947xx/953xx questa volta ovviamente includendo il supporto WiFi, poi:
Terget Image --> ramdisk
Kernel Modules--> USB Support --> kmod-usb-core
Kernel Modules--> USB Support --> kmod-usb-corekmod-usb-ohci
Kernel Modules--> USB Support --> kmod-usb-corekmod-usb-storage
Kernel Modules--> USB Support --> kmod-usb-corekmod-usb-uhci
Kernel Modules--> USB Support --> kmod-usb-corekmod-usb2
Kernel Modules--> Block devices --> kmod-ide-core
Kernel Modules--> Block devices --> kmod-loop
Kernel Modules--> Filesystems --> kmod-fs-ext2
Kernel Modules--> Filesystems --> kmod-fs-ext3
Kernel Modules--> Filesystems --> kmod-fs-ext4
Kernel Modules--> Filesystems --> kmod-fs-ntfs
Kernel Modules--> Filesystems --> kmod-fs-vfat
Controllare i wireless drivers se ci sono i b43, b43legacy. Controllare se c'è luci selezionato con parte dei pacchetti base, ho selezionato anche minidlna upnp e altri sw. Volendo basta scaricare il config con un wget e rinominarlo in .config:

cd ~/openwrt/trunk
wget http://www.mozzo.altervista.org/files/backfire/config_2doboot
mv config_2doboot .config
make menuconfig



uscire e salvare la configurazione.
lanciare il comando

make V=99 world



attendiamo pazienti.........
............................
zzzzzz......................
una volta completato il make editare il file che si trova sotto:
~/openwrt/trunk/package/base-files/files/etc/preinit
ed aggiungere dopo la riga ". /etc/diag.sh"
- per boot da usb:

 
rootfs=/dev/sda1 


- per boot da hard disk:

 
rootfs=/dev/hda1


Aggiungere anche la riga nel file ~/openwrt/trunk/target/linux/generic-2.6/base-files/init

da'mount $rootfs /mnt' a 'mount $rootfs /mnt -o noatime'
lanciare il comando make

make V=99d



alla fine ci troveremo finalemente un file in:
~/openwrt/trunk/bin/brcm47xx/openwrt-brcm47xx-vmlinux.elf
ed avremo la struttura delle directory in ~/openwrt/trunk/build_dir/target-mipsel_uClibc-0.9.30.1/root-brcm47xx
prendiamo la chiavetta USB, formattiamola (l'ho fatta in ext2)
copiamo la struttura della dir con:

cd ~/openwrt/trunk/build_dir/target-mipsel_uClibc-0.9.30.1/root-brcm47xx
cp -a -R * /mnt/chiavettaUSBcp ~/openwrt/trunk/bin/brcm47xx/openwrt-brcm47xx-vmlinux.elf /mnt/chiavettaUSBschown -R  root:root /mnt/chiavettaUSB



Il passo successivo è incrociare le dita, spegnere il router, inserire la chiavetta usb ed accendere. Se il tutto funziona il router risponde via http con luci al 192.168.1.1 e si entra con admin senza password.
Good Luck!
Riferimenti:
http://wl700ge.hezik.nl/10.03.1
https://forum.openwrt.org/viewtopic.php?pid=161677#p161677
http://wiki.openwrt.org/doc/howto/buildroot.exigence
http://wiki.openwrt.org/doc/howto/build
Visite totali80701
Questo sito web usa i cookies per gestire alcune funzionalità, quali navigazione, autenticazione, commenti, etc. Utilizzando il nostro sito web, accetti l'utilizzo dei cookies.