Pagina 1 di 1

[Risolto]catturare messaggi initrd

Inviato: dom 30 mag 2010, 19:56
da slux
Ciao a tutti,
ho questo problema:
ho un sistema che si avvia con initrd regolarmente,ma se provo a sospenderlo (suspend to disk) al riavvio la macchina fallisce ed esegue fsck.
Riesco ad intravedere dei messaggi di errore ( forse errori miei nel file init in initrd.gz),ma sono troppo veloci da leggere.Inutile dire che in /var/log/messages o /var/log/syslog non ho niente che mi aiuti a capire l'errore.
Ho cercato in internet ed ho provato ad usare netconsole;funziona,ma catturo solamente l'output del kernel (printk) e non gli errori di script o dei tool di avvio.
Esiste un modo per catturare TUTTO l'output del sistema su un'altra macchina,magari mediante rete?Non ho un cavo seriale e sul portatile che uso per catturare i log non ho manco la porta. :doubt:
Idee?

Re: catturare messaggi initrd

Inviato: dom 30 mag 2010, 20:34
da Mario Vanoni
slux ha scritto:Ciao a tutti,
ho questo problema:
ho un sistema che si avvia con initrd regolarmente,ma se provo a sospenderlo (suspend to disk) al riavvio la macchina fallisce ed esegue fsck.
Riesco ad intravedere dei messaggi di errore ( forse errori miei nel file init in initrd.gz),ma sono troppo veloci da leggere.Inutile dire che in /var/log/messages o /var/log/syslog non ho niente che mi aiuti a capire l'errore.
Ho cercato in internet ed ho provato ad usare netconsole;funziona,ma catturo solamente l'output del kernel (printk) e non gli errori di script o dei tool di avvio.
Esiste un modo per catturare TUTTO l'output del sistema su un'altra macchina,magari mediante rete?Non ho un cavo seriale e sul portatile che uso per catturare i log non ho manco la porta. :doubt:
Idee?
Non uso initrd, kernel puramente statico, compilato con in

Codice: Seleziona tutto

General setup  ---> 
(21) Kernel log buffer size (16 => 64KB, 17 => 128KB)
il valore 21 non e` officiale, ma supportato ed aumenta il buffer,
forse ti aiuta ...

Re: catturare messaggi initrd

Inviato: dom 30 mag 2010, 20:57
da targzeta
Non ho capito quando fallisce, comunque potresti mettere un comando 'read' nell'initrd così puoi leggere tutto con calma.

Emanuele

Re: catturare messaggi initrd

Inviato: dom 30 mag 2010, 21:38
da slux
spina ha scritto:Non ho capito quando fallisce, comunque potresti mettere un comando 'read' nell'initrd così puoi leggere tutto con calma.
Ciao spina,
per evitare inutili repliche ti do altre informazioni.
Sono costretto ad usare initrd perchè ho un sistema raid 1 con swap in array.
Per eseguire correttamente il resume (uso s2disk) bisogna mettere l'array della swap in read_only e questo va fatto appunto da initrd.
Purtroppo mkinitrd di Pat non supporta uswsusp,quindi ho dovuto modificare a mano lo script init e copiare dentro l'initrd il tool di resuming (resume).
Il tutto mi funzionava a dovere prima che aggiornassi alla 13.1.In current (13.1 rc1 mi sembra) andava tutto benone.Anche il kernel è lo stesso,uno compilato da me.Ho solo dovuto ricompilarlo perchè ho aggiornato i driver Nvidia e la versione di gcc nel frattempo era cambiata.

Il pc fallisce nella fase di ripristino,segnala che la swap è danneggiata ed esegue un fsck di / ed il resync di swap.
Il comando read è un comando builtin della bash ed in initrd si usa busybox,non credo di poterlo usare come anche pause del resto(in /bin non ci sono).

@Mario:
Non è un problema di buffer.Netconsole restituisce solamente i messaggi del kernel,non l'output di uno script bash o di un tool come resume o udev per esempio.

Re: catturare messaggi initrd

Inviato: lun 31 mag 2010, 0:55
da targzeta
Hai ragione, è proprio il dubbio che mi è venuto mentre scrivevo la risposta. Vabbé, vedo che comunque ci siamo intesi, quindi perchè non fai partire proprio la shell (ash)? Io ricordo di averlo fatto per debuggare l'intrd.
Un altro modo che mi viene in mente è:

Codice: Seleziona tutto

cat < /dev/stdin
O ancora 'sleep' che è compreso in busybox.

Emanuele

Re: catturare messaggi initrd

Inviato: lun 31 mag 2010, 22:25
da slux
Ho risolto proprio come hai detto tu spina.Ho lanciato il sistema con il parametro RESCUE=1 e sono arrivato così alla shell di emergenza.
Ho eseguito passo passo lo script init digitando manualmente i vari comandi senza alcun errore ,e quando sono arrivato ad eseguire il comando resume ,la macchina è tornata al prompt senza fare nulla!Non mi riconosce l'immagine ibernata!!!Eppure s2disk sembra lavorare correttamente...davvero bella questa!
Comunque per il topic in questione possiamo considerare la cosa risolta.Grazie mille spina.

Re: catturare messaggi initrd

Inviato: lun 31 mag 2010, 22:47
da targzeta
slux ha scritto:...Grazie mille spina.
Emanuele per gli amici. Comunque grazie a te perchè questa storia del parametro rescue=1 mica la sapevo, io intendevo proprio di mettere nell'initrd l'esecuzione della shell :).

Tra l'altro cercando un po' in giro non ho trovato niente, cioé devi passare al boot il parametro rescue=1? Penso sia un parametro proprio di initrd no? Anche perchè tra i parametri del kernel non ho trovato niente.

Emanuele

Re: [Risolto]catturare messaggi initrd

Inviato: lun 31 mag 2010, 23:46
da slux
precisamente,premi tab al menu di lilo ,digiti il nome dell' immagine da caricare e maiuscolo RESCUE=1 e ti ritrovi alla shell,tutto qui.Viene gestito tutto nello script di initrd esatto