Paso a explicarles el problema:
Tenia Ubuntu 11.04 instalado en la partición /dev/sda5
Me hice un LiveUSB de Gentoo11 a partir del liveDVD, desde el cual instalé el sistema con el stage3 gentoo-hardened
Bajé los fuentes del kernel de hardened
Con make menuconfig hice la configuración de un kernel con ext4 compilado (no modulo) porque la partición raíz tiene ext4.
Para no tener que armar la configuración de un cargador de arranque, entre en Ubuntu y corrí la actualización de GRUB2 para que reconozca Gentoo, cosa que hizo.
Reinicié, y ohh!! Kernel Panic. Para hacerlo más simple y obtener solo lo necesario, agregué "quiet" a la línea de comandos del kernel.
Ahora, reiniciando nuevamente, puedo dar el error:
kvm: no hardware support
Kernel Panic - not syncing: VFS: unable to mount root fs on unknown-block (0,0)
swapper not tainted 2.6.38-<mi kernel>
Cosa que no se como solucionar. Si el kernel no tuviera soporte para ext4 bien, pero con el soporte para ext4 builtin ¿?
Voy a tratar de reiniciar sin la swap en el fstab, pero como no pudo montar el raiz, supongo que no tendrá nada que ver... sino trataré con genkernel
Si alguien tiene una sugerencia, bienvenido sea
saludos
EDITO (AGREGO):
Modifique la función que arroja el kernel panic (mount_block_root()) en init/do_mounts.c, queda como indico a continuación:
Código
void __init mount_block_root(char *name, int flags) { char *fs_names = __getname_gfp(GFP_KERNEL | __GFP_NOTRACK_FALSE_POSITIVE); char *p; #ifdef CONFIG_BLOCK char b[BDEVNAME_SIZE]; #else const char *b = name; #endif printk("D4RIO: mount_block_root([%s],[%d])\n",name,flags); printk("D4RIO: fs_names before gfn: [%s]\n",fs_names); get_fs_names(fs_names); printk("D4RIO: fs_names after gfn: [%s]\n",fs_names); retry: int err = do_mount_root(name, p, flags, root_mount_data); switch (err) { case 0: goto out; case -EACCES: flags |= MS_RDONLY; goto retry; case -EINVAL: continue; } /* * Allow the user to distinguish between failed sys_open * and bad superblock on root device. * and give them a list of the available devices */ #ifdef CONFIG_BLOCK __bdevname(ROOT_DEV, b); #endif printk("VFS: Err open root=\"%s\", listing:\n", root_device_name); printk_all_partitions(); #ifdef CONFIG_DEBUG_BLOCK_EXT_DEVT printk("DEBUG_BLOCK_EXT_DEVT is enabled, you need to specify " "explicit textual name for \"root=\" boot option.\n"); #endif panic("VFS: Cant mount root fs on %s", b); } printk("List of all partitions:\n"); printk_all_partitions(); printk("No filesystem could mount root, tried: "); printk(" %s", p); printk("\n"); #ifdef CONFIG_BLOCK __bdevname(ROOT_DEV, b); #endif panic("VFS: Unable to mount root fs on %s", b); out: putname(fs_names); }
Como verán, agregué unas trazas muy vistosas con valores que no se trazan en el original, el resultado:
D4RIO: mount_block_root([/dev/root],[32769])
D4RIO: fs_names before gfn: [/dev/root]
D4RIO: fs_names after gfn: [ext3]
VFS: Err open root="sda6", listing:
Kernel panic - not syncing: VFS: Cant mount root fs on unknown-block(0,0)
Pid: 1, comm: swapper Not tainted 2.6.38-hardened-r6dario-hardened1 #3
Call Trace:
[<c1379439>] ? panic+0x4d/0x129
[<c1592c72>] ? mount_block_root+0x210/0x224
[<c1592cbf>] ? mount_root+0x39/0x4d
[<c1592e15>] ? prepare_namespace+0x142/0x168
[<c1592400>] ? kernel_init+0x196/0x1a6
[<c159226a>] ? kernel_init+0x0/0x1a6
[<c1027f86>] ? kernel_thread_helper+0x6/0x10
No me gusta ese ext3, pero no tengo tiempo ahora para ponerme a mirarlo.
Será hasta mañana!