Tengo una máquina virtual con Ubuntu 14.04. Recientemente construí e instalé el kernel linux-3.14.5 en él, e intenté iniciarlo, pero me deja en el shell incorporado de BusyBox v1.21.1.
Esto es lo que hice:
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.5.tar.xz
mkdir ~/linux
mv linux-3.14.5.tar.xz ~/linux
tar -xJf linux-3.14.5.tar.xz
mkdir linux-3.14.5
cd linux-3.14.5_src/
make defconfig O=../linux-3.14.5
make menuconfig O=../linux-3.14.5 /* i didn't change anything */
make O=../linux-3.14.5
cd ../linux-3.14.5
sudo make install
Pude ver un archivo llamado initrd.img-3.14.5 en /arranque junto con intrd.img-3.13.0-24-generic (que supongo, es el kernel de Ubuntu 14.04).
También había 2 archivos llamados vmlinuz-3.14.5 y vmlinuz-3.13.0-24-genérico.
Después de eso, corrió
sudo blkid
y obtuve lo siguiente:
/dev/sda1: UUID="92ec153c-cb92-4300-8d2a-f63b747ddd35" TYPE="ext4"
/dev/sda5: UUID="439a6423-28dc-4363-b47e-580f1e65e951" TYPE="swap"
Yo también corrí
sudo fdisk -l
que me dio
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000268be
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 39845887 19921920 83 Linux
/dev/sda2 39847934 41940991 1046529 5 Extended
/dev/sda5 39847936 41940991 1046528 82 Linux swap / Solaris
Revisé el /boot/grub/grub.cfg archivo que tenía la siguiente entrada:
menuentry 'Ubuntu, with Linux 3.13.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-24-generic-advanced-92ec153c-cb92-4300-8d2a-f63b747ddd35' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 92ec153c-cb92-4300-8d2a-f63b747ddd35
else
search --no-floppy --fs-uuid --set=root 92ec153c-cb92-4300-8d2a-f63b747ddd35
fi
echo 'Loading Linux 3.13.0-24-generic ...'
linux /boot/vmlinuz-3.13.0-24-generic root=UUID=92ec153c-cb92-4300-8d2a-f63b747ddd35 ro find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.13.0-24-generic
}
Entonces, seguí adelante y agregué las siguientes líneas a /etc/grub.d/40_custom (acabo de cambiar las líneas 1, 14, 15 y 17)
menuentry 'MyNewKernel' {
recordfail
load_video
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 92ec153c-cb92-4300-8d2a-f63b747ddd35
else
search --no-floppy --fs-uuid --set=root 92ec153c-cb92-4300-8d2a-f63b747ddd35
fi
echo 'Loading My New Kernel ...'
linux /boot/vmlinuz-3.14.5 root=UUID=92ec153c-cb92-4300-8d2a-f63b747ddd35 ro recovery nomodeset find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.14.5
}
y corrió
sudo update-grub
sudo reboot
¡No funcionó! El mensaje de error decía
ALERT! /dev/disk/by-uuid/92ec153c-cb92-4300-8d2a-f63b747ddd35 does not exist.
Dropping to a shell!
Así que intenté reemplazar el UUID por /dev/sda1 resultando en el siguiente archivo.
menuentry 'MyNewKernel' {
recordfail
load_video
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 /dev/sda1
else
search --no-floppy --fs-uuid --set=root /dev/sda1
fi
echo 'Loading Linux 3.13.0-24-generic ...'
linux /boot/vmlinuz-3.14.5 root=/dev/sda1 ro recovery nomodeset find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.14.5
}
Eso tampoco funcionó y me dio un mensaje de error muy similar.
ALERT! /dev/sda1 does not exist.
Dropping to a shell!
Creo que estoy cometiendo un error estúpido, pero no puedo entender qué, ya que esta es mi primera vez. Agradecería cualquier ayuda.
Relacionado:Ubuntu – ¿Cómo se limpia el directorio /tmp?Gracias por leer la larga publicación. Por favor, hágamelo saber si necesita más información.
Respuesta aceptada:
Te has saltado dos pasos antes de make install
, que instala los controladores necesarios. Antes de make install
hacer make modules
y make modules_install
en ese orden. Esto instala controladores basados en sus archivos .config.
El error también puede ocurrir debido a una configuración incorrecta en el archivo .config y, por lo tanto, faltan algunos controladores. Así que aquí hay una manera de hacer la compilación del núcleo. Una de las mejores formas de obtener la configuración correcta es copiar una configuración funcional desde el directorio /boot a su .config en la carpeta de código fuente del kernel. Su archivo de configuración de kernel en funcionamiento es
/boot/config-`uname -r`
Luego haz la compilación con make
. make
solicitará algunas configuraciones, que no están en el archivo .config, porque este archivo .config puede corresponder a un núcleo antiguo y no tiene algunas configuraciones en el nuevo núcleo que está tratando de compilar. Simplemente escriba Enter para todas las solicitudes de configuración, que seleccionarán las configuraciones predeterminadas. Luego haz make modules
, make modules_install
y finalmente make install
. Esto debe resolver sus problemas.
Esta forma de compilación no es adecuada para un profesional, pero ayudará a los novatos sin mucho conocimiento de las diferentes opciones de configuración para comenzar con la compilación del kernel.