Sto provando a far funzionare la nuova versione di u-boot manon ho havuto molto successo sino ad ora ... non sono molto bravo con il codice :-(
Io sviluppo per professione e passione, ma diciamo che sono più avvezzo agli ambienti Micro$oft. In campo lavorativo mi capita moooolto raramente di lavorare su progetti di derivazione Linux (qualche volta su roba portata tramite cygwin). Comunque mi è capitato di scrivere qualche cosa in C, partendo da progetti preesistenti e mettendoci le mani su.
Magari, quando avrò uno Zaurus sottomano potremmo provare ad esplorare la strada di un U-Boot multikernel, multiroot.
Di preciso, cosa hai provato? Hai provato ad applicare le patch di pdaXrom all'u-boot 1.1.5 e non vanno?
Visto che io non sono in grado di scrivere patch per il kernel (ma solo di aggiustarle in modo che si possano applicare su kernel + nuovi) la lentezza non dipende da me ma soprattutto da chi scrive le patch.
Un kernel unificato sarebbe bello ma e' molto difficile perche' le diverse distro per Z hanno mete molto diverse ed esigenze ancora piu' diverse. Giusto per farti un esempio:
al aeam Angstrom non importa molto se il loro kernel non puo montare la root su' SD/MMC se non via chroot.
Quindi pensi anche tu che permettere ad u-boot di caricare più kernel sia la soluzione più realistica?
Per fare in modo che u-boot possa usare 2 o piu' kernel bisogna fare + spazio nella mtd1 ... e questo comporta ricostruire sia l'immagine emergency che la root. Oppure magari basterebbe solo confihurare u-boot in modo da passare la nuova partizione della nand ai kernel ;-)
Ma u-boot quali filesystem è in grado di leggere?
Secondo te è possibile fargli cercare il kernel su un filesystem complesso tipo jffs2 (magari nella flash interna nella partizione root) o, addirittura ext2/3 per fargli leggere il kernel direttamente nella directory boot di una partizione a scelta del microdrive interno?
Capisci dove vorrei arrivare?
Purtroppo in mio cavo seriale e' tornato a funzionare solo in ricezione ... me ne devo costruire uno che non viola tutti gli standard coinvolti ;-)
Senza cavo seriale è impossibile interagire con u-boot?
Senti, invece hai pensato a una soluzione con kexec?
Si potrebbe lasciare stare il bootloader e l'immagine di emergenza così come sono, senza ripartizionare nulla, insomma una cosa meno invasiva e questo già mi piace. Poi si potrebbe creare una struttura per riflashare solo il kernel e la root jffs2 nella flash interna con un sistema minimale con la sola console, ma con più strumenti rispetto alla console di ripristino. Insomma una cosettina completa che permetta di collegarsi a Internet e fare tutto senza accendere un PC. Però questa distribuzione dovrebbe avere installati i kexec-tools e uno script di inizializzazione (da quello che ho capito tu sei sistemista e ti dovrebbero scintillare gli occhi) un po' smart.
Questo dovrebbe montare tutte le partizioni montabili dell'SD e delle due CF, controllare la presenza del kernel in boot e, proporre la lista delle possibili partizioni bootabili. Se l'utente sceglie una partizione allora viene caricato e lanciato il relativo kernel (quest'ultimo deve essere compilato con l'opzione della root giusta oppure non so, kexec potrebbe passargli i parametri). Addirittura si potrebbe pensare di automatizzare il processo di installazione di una nuova immagine. Si decide un nome e una path standard per un file tgz da cercare durante la fase di ricerca dei kernel, se questo file (contenente tutta la root e il kernel nella directory boot) esiste, viene chiesto all'utente se si vuole installare il nuovo sistema. In caso affermativo si cancella tutto (al limite si chiede all'utente se si vuole lasciare la directory home), si scompatta il tutto, si cancella l'archivio e poi si prosegue con la ricerca dei kernel.
Nel caso in cui, dopo aver finito il ciclo e proposto le varie partizioni, l'utente non scelga nulla, allora si prosegue con l'inizializzazione standard e si lancia il sistema su console (o al limite anche con ambiente grafico) su flash interna.
Si potrebbe fare un wget di un tgz di un'immagine con root e boot su una partizione, rebootare (o lanciare lo script detto prima) e voilà...
Che ne pensi?
Tutto sommato, anche se meno universale della soluzione u-boot (nel senso che non attraverserebbe i confini degli zauri), IMHO è una soluzione meno invasiva (non ripartizioniamo nulla sulla flash) e che lascerebbe l'opportunità di avere su flash un mega sistema di emergenza che poi sarebbe una distribuzione completa.
Mi sa che con questo approccio si potrebbe lanciare anche OpenBSD.
Unico dubbio: il kernel di pdaXrom, con la sua struttura della flash alterata, distruggerbbe il filesystem in flash anche nel caso in cui si adotti una soluzione con la root e tutto il resto su MD/CF/SD? Insomma, una soluzione che non monti per nulla la flash?