Redboot e ^C

Una cosa che fa impazzire chi vuole usare Linux per interrompere la sequenza di boot di RebBoot è lo spedire ^C con telnet. Eppure la soluzione è molto semplice.

Personalmente mi ci sono già scornato due volte per riflashare dei Fonera. Tutte le guide in rete danno per scontato che si usi il telnet (o putty) in Windows, che però di default è in modalità singolo carattere, a differenza di quello Linux che è invece in modalità line-buffered.
Visto che la procedura è semplice ma non banale, ho deciso di documentarla, limitatamente a quanto necessario in Linux. Per il resto seguite una delle ottime guide presenti in rete...

RedBoot su Fonera, se è attivo boot_wait, rimane per qualche secondo attivo sull'indirizzo 192.168.1.254, porta 9000 TCP.
Durante questo periodo, è possibile telnettarlo ed interrompere l'avvio. Il primo passo è però quello problematico...

Intanto serve un minimo di preparazione: va creato un file contenente solo il carattere di break (0x03, ^C):

echo -n -e '\03' >sendbreak

A questo punto potete scrivere questo comando senza premere ancora INVIO:

cat sendbreak - | nc 192.168.1.254 9000

Staccate l'alimentazione al Fonera, riattaccatela, contate 4-5 secondi e date l'invio.
Dovreste trovarvi con una schermata tipo:

== Executing boot script in 5.980 seconds - enter ^C to abort                  
^C                                                                             
RedBoot>

A questo punto seguite pure i tutorial.
Ma se volete solo ripristinare la NVRAM del [u]vecchio Fonera[/b] ai valori di default, basta che diate:

RedBoot> fis erase -f 0xA83D0000 -l 0x00010000                                        
... Erase from 0xa83d0000-0xa83e0000: .                                               

Sto anche pensando ad uno script che, utilizzando il comando lft o arping sia in grado di determinare il momento esatto in cui spedire il break, per poter intercettare anche il boot dei device con boot_wait = off .

Realizzato con Drupal, un sistema open source per la gestione dei contenuti