PDA

Visualizza la versione completa : init timeout opening writing control channel /dev/initctl


Andre00
22-07-2009, 11:03
Sto tentando di crearmi una initrd che mi permetta di caricare moduli aggiuntivi senza caricarli direttamente nel kernel.
Il problema è che la initrd l'ho creata e funziona benissimo quando però arriva il momento di passare dalla initrd al filesystem di root (/dev/sda3)
ottengo l'errore di cui sopra.
trovato il device sul quale è presente root (/dev/sda3) lo monto su /mnt
Quindi faccio eseguire allo script di avvio (linuxrc)
exec chroot /mnt /sbin/init 2

e qui ottengo quell'errore di init
Credo che il problema derivi dal fatto che passando da ram0 (device dal quale viene caricata la init) a sda3 sia necessario passare al kernel l'informazione di nuovo real-root-device
ho provato dando
echo "0x705" /proc/sys/kernel/real-root-device
ma non funziona... qualcuno di voi più esperto sa come posso evitare questo errore?

Grazie a tutti voi in anticipo!
:confused:

sacarde
22-07-2009, 12:57
che distribuzione?

Andre00
22-07-2009, 16:33
Debian...

PinguinoGoloso
22-07-2009, 16:57
Probabilmente devi passare al kernel il parametro root=/dev/sdaX, nel tuo caso sda3.

Andre00
22-07-2009, 17:14
come boot loader uso grub e in grub ho già settato root=/dev/sda3 ma non riesco a passare da ram0 a sda3
strano...

PinguinoGoloso
22-07-2009, 17:31
Mmmh, ma il tuo initrd lo specifichi nel menu.lst con la direttiva initrd <path>, no ?

Non è che nella configurazione del kernel o nei moduli manca qualcosa relativo alla tua interfaccia verso gli HD o qualche modulo di filesystem ?

sacarde
22-07-2009, 17:55
ma l'initrd.....

lo hai costruito tu da zero

o ne hai implementato uno (aggiungendo i moduli)



p.s.
http://www.kernel.org/doc/Documentation/initrd.txt

Andre00
22-07-2009, 21:03
l'initrd l'ho costruito io da zero e l'ho già anche utilizzato per una versione live che mi sono creato tipo knoppix e funziona benissimo.. in effetti ora mi viene in mente che nella distro live che mi sono creato non ho aggiornato la debian mentre quella che ho su sda3 (HD) è stata aggiornata.. potrebbe derivare da due versioni di init troppo differenti su ram0 e sda3
oppure nella nuova versione di init hanno cambiato qualcosa che mi da questo errore...

provo a cambiare init presente nell'initrd....

Andre00
23-07-2009, 15:43
Ho risolto il problema con mkinitramfs anzi con update-initramfs che chiarmente ha l'opzione -k per selezionare la versione del kernel per il quale si vuole creare l'initrd.

Tuttavia strano che non si possa o non si riesca a passare da un fs di root ad un altro. Comprendo il problema.. init deve avere pid 1 quindi se passo da root=/dev/ram0 con pid 1 a root=/dev/sda3 init si deve riavviare e bisogna far credere al kernel che sia il primo processo anche sul nuovo fs... ma come?
Ho pensato di modificare il file /proc/sys/kernel/real-root-dev e far ripartire init?
Il problema è che probabilmente sbaglio qualcosa e non so bene su che valore esadecimale settare real-root-dev per fare in modo che corrisponda a /dev/sda3...

Any idea?

GRAZIE A TUTTI!

sacarde
23-07-2009, 17:10
http://www.kernel.org/doc/Documentation/initrd.txt

qui dice:

o

con root_pivot

o

echo 0x301 >/proc/sys/kernel/real-root-dev

Loading