# [kernel] Che mi manca per initrd? [risolto]

## Alberto Santini

Salve,

ho deciso di usare un ramdisk per far funzionare il bootsplash. Ho letto "man lilo.conf" e "man initrd".

ho anche cmbiato lilo.conf in questo modo:

```

### MAIN ### 

boot=/dev/hda 

prompt 

delay=1200 

default=Gentoo 

vga=ask

password=xxxxxxxx 

restricted 

### GENTOO ### 

image=/boot/bzImage 

label=Gentoo 

read-only 

root=/dev/hda1 

append="video=vesafb,ywrap,1024x768-32@75 quiet splash=silent,theme:gentoo" 

initrd = /boot/fbsplash-gentoo-1024x768 

### MINIX 2.0.4 ### 

other=/dev/hdb2 

   label=Minix 

   table=/dev/hdb

```

in piu' ho ricompilato il kernel col supporto per il ramdisk.

Tuttavia, @boottime, ora ricevo questo errore:

 *Kernel 2.6.11-gentoo-r11 wrote:*   

> 
> 
> "VFS: Cannot open root device "301" or unknown-block(0,0)" 
> 
> "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)"
> ...

 

un po' quello che succede se, ad esempio usate XFS per il root fs e vi scordate di mettere il supporto per quel FS nel kernel.

ora... io che mi sono scordato, secondo voi? quale puo' essere il problema? (p.s. da dove deriva quel 301 come identificativo del root device?)

grazie a tutti  :Smile: Last edited by Alberto Santini on Tue Jul 05, 2005 8:37 pm; edited 1 time in total

----------

## .:chrome:.

hai compilato IN KERNEL:

 - il driver giusto per il tuo controller HDD (ocio ai dispositivi a blocchi)

 - il file system della partizione di root

 - eventuali supporti RAID/LVM

 :Question: 

----------

## Alberto Santini

 *k.gothmog wrote:*   

> hai compilato IN KERNEL:
> 
>  - il driver giusto per il tuo controller HDD (ocio ai dispositivi a blocchi)
> 
>  - il file system della partizione di root
> ...

 

si... il problema non e' questo, perche' mi basta commentare la riga initrd = ... in lilo.conf ed il boot viene effettuato normalmente.. i driver per l'hd e il supporto per il fs (ext3 per tutto tranne ext2 per /boot) ci sono... non so davvero che possa essere

magari se tu usi pure initrd e sei cosi' gentile da mandarmi il tou .config do' un'occhiata alla sezione sui device a blocchi  :Smile: 

----------

## .:chrome:.

è strano. molto strano

come cacchio lo generi quell'initrd?

prova per curiosità a farlo generare a genkernel, passandogli il tuo file di configurazione

----------

## Alberto Santini

per generare l'initrd uso (dalla dir /etc/splash)

```

splash_geninitramfs -v -g /boot/fbsplash-gentoo-1024x768  -r 1024x768 gentoo

```

non posso generarlo con genkernel perche' mi serve un initrd "apposito" per fbsplash... al massimo se non scopriamo niente di nuovo provo con genkernel in modo da vedere se e' un problema di *quell'*initrd o di initrd in generale

----------

## .:chrome:.

uhm.... mi viene da pensare che quel comando combini qualcosa che non deve.

sacrifica fbspash e prova a fare un initrd con il sano mkinitrd, e vedi cosa succede.

almeno se così funziona, hai isolato il problema

----------

## ultimodruido

ciao, hai messo il supporto per initial ramdisk nel kernel?

punto due, io ho usato solo bootsplash nella mia vita poi ho smesso, pero quello che mi ricordo era dover appendere l'output di un comando simile al tuo in coda ad un initrd gia fatto... comunque per creare un'initrd basta:

```
mkinitrd --with=modulo1 --with=modulo2 image.gz 2.6.11xxx
```

questo ti crea un file image.gz che è l'initrd per il kernel 2.6.11xxx con inclusi i moduli che hai esplicitamente elencato...

----------

## Alberto Santini

allora.. vi aggiorno:

1) ho creato un initrd "normale" (aka "vuoto") con mkinitrd.. e il tutto funziona, ovvero VFS mi monta il file system di root (anche se poi il kernel panica lo stesso perche', avendo messo una configurazione un po' improvvisata giusto per provare non ho messo nessun init = ... comunque cio' che interessa, credo, e' che supera la fase dove prima dava panic) ribadisco questo con  UN ALTRO RAMDISK

2) evidentemente deve essere malformato quello generato dalle splashutils... @ultimodruido: bootsplash conserva la compatibilita' solo con kernel <= 2.6.8 ... io ho il 2.6.11

3) ora.. vorrei usare initrd per creare un ram disk per il bootsplash... pero' quest'ultimo non e' realmente un modulo... e' solo un "supporto" per il kernel.. ovvero dopo la compilazione NON mi crea moduli per il bootsplash:

```

# make modules_install

  INSTALL drivers/base/firmware_class.ko

  INSTALL drivers/block/loop.ko

  INSTALL drivers/block/pktcdvd.ko

  INSTALL drivers/char/lp.ko

  INSTALL drivers/i2c/algos/i2c-algo-bit.ko

  INSTALL drivers/i2c/busses/i2c-parport.ko

  INSTALL drivers/i2c/i2c-core.ko

  INSTALL drivers/i2c/i2c-dev.ko

  INSTALL drivers/net/dummy.ko

  INSTALL drivers/scsi/dpt_i2o.ko

  INSTALL drivers/scsi/ipr.ko

  INSTALL lib/libcrc32c.ko

  INSTALL net/ipv4/netfilter/ipt_NOTRACK.ko

  INSTALL net/ipv4/netfilter/iptable_raw.ko

```

posso usare mkinitrd con il "rispettivo" compilato? si, lo so, non mi sono spiegato.. intendo con questo:

```

/usr/src/linux/drivers/video/fbsplash.o

```

e

```

/usr/src/linux/drivers/video/fbcmap.o

/usr/src/linux/drivers/video/fbmem.o

/usr/src/linux/drivers/video/fbmon.o

/usr/src/linux/drivers/video/fbsysfs.o

/usr/src/linux/drivers/video/vesafb-thread.o

/usr/src/linux/drivers/video/vesafb-tng.o

```

4) ma un init (aka /linuxrc) mi serve per forza? (a giudicare da man initrd si, ma a vedere alcuni esempi on-line no)

grazie  a tutti.... se riesco a finire giurin-giurello scrivo un bell'howto  :Very Happy: 

----------

## .:chrome:.

 *Quote:*   

> 1) ho creato un initrd "normale" (aka "vuoto")

 

errore: mkinitrd crea un initrd contenente tutto quello che ti serve per avviare il sistema, sulla base della configurazione del kernel

 *Quote:*   

> 2) evidentemente deve essere malformato quello generato dalle splashutils... @ultimodruido: bootsplash conserva la compatibilita' solo con kernel <= 2.6.8 ... io ho il 2.6.11

 

evidentemente deve essere così

 *Quote:*   

> 3) ora.. vorrei usare initrd per creare un ram disk per il bootsplash... pero' quest'ultimo non e' realmente un modulo... e' solo un "supporto" per il kernel.. ovvero dopo la compilazione NON mi crea moduli per il bootsplash:

 

creare un ramdisk per il bootsplash...? che vuol dire?

il bootsplash NON CREDO sia un modulo, ma solo una procedura che viene chiamata da init. correggimi se sbaglio

 *Quote:*   

> 4) ma un init (aka /linuxrc) mi serve per forza? (a giudicare da man initrd si, ma a vedere alcuni esempi on-line no)

 

se non ce l'hai chi dice, al tuo sistema, cosa deve fare una volta completato il bootstrap del kernel?

----------

## Alberto Santini

 *k.gothmog wrote:*   

>  *Quote:*   1) ho creato un initrd "normale" (aka "vuoto") 
> 
> errore: mkinitrd crea un initrd contenente tutto quello che ti serve per avviare il sistema, sulla base della configurazione del kernel
> 
> 

 

mh.. per vuoto intendevo che non ho messo alcun modulo in piu'

 *Quote:*   

> 
> 
>  *Quote:*   3) ora.. vorrei usare initrd per creare un ram disk per il bootsplash... pero' quest'ultimo non e' realmente un modulo... e' solo un "supporto" per il kernel.. ovvero dopo la compilazione NON mi crea moduli per il bootsplash: 
> 
> creare un ramdisk per il bootsplash...? che vuol dire?
> ...

 

infatti non e' un modulo, ma neanche una procedura... e' semplicemente una patch al driver del fb

 *Quote:*   

> 
> 
>  *Quote:*   4) ma un init (aka /linuxrc) mi serve per forza? (a giudicare da man initrd si, ma a vedere alcuni esempi on-line no) 
> 
> se non ce l'hai chi dice, al tuo sistema, cosa deve fare una volta completato il bootstrap del kernel?

 

gia'... allora ora provero' ad usare bootsplash senza un initrd (nell'howto e' spiegato)

ti aggiorno  :Smile: 

grazie ancora

----------

## Alberto Santini

yooo  :Cool:  ce l'ho fatta... creando un'immagine dell'initramfs interna al kernel!  :Very Happy: 

che sono felice  :Razz: 

----------

## Ic3M4n

metti il tag [risolto]  :Wink: 

se possibile posta anche il "come" a memoria futura...

----------

## Alberto Santini

come:

quando leggendo l'howto vi trovate di fronte all'amletica questione:

2.4.2 Option 1: Compiling The initramfs Image Directly Into The Kernel

2.4.3 Option 2: Loading The initramfs Image Dynamically At Boot Time

scegliete LA PRIMA  :Very Happy: 

----------

## bandreabis

La prima non c'è più!

----------

