J'ai une machine virtuelle avec Ubuntu 14.04. J'ai récemment construit et installé le noyau linux-3.14.5 dessus, et j'ai essayé de démarrer dessus, mais cela me laisse tomber dans le shell intégré BusyBox v1.21.1.
Voici ce que j'ai fait :
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
Je pouvais voir un fichier appelé initrd.img-3.14.5 dans /boot à côté de intrd.img-3.13.0-24-generic (qui, je suppose, est le noyau d'Ubuntu 14.04).
Il y avait aussi 2 fichiers appelés vmlinuz-3.14.5 et vmlinuz-3.13.0-24-generic.
Après cela, couru
sudo blkid
et j'ai obtenu ceci :
/dev/sda1: UUID="92ec153c-cb92-4300-8d2a-f63b747ddd35" TYPE="ext4"
/dev/sda5: UUID="439a6423-28dc-4363-b47e-580f1e65e951" TYPE="swap"
J'ai aussi couru
sudo fdisk -l
qui m'a donné
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
J'ai vérifié le fichier /boot/grub/grub.cfg fichier qui avait l'entrée suivante :
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
}
Donc, je suis allé de l'avant et j'ai ajouté les lignes suivantes à /etc/grub.d/40_custom (je viens de changer les lignes 1, 14, 15 et 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
}
et a couru
sudo update-grub
sudo reboot
N'a pas fonctionné! Le message d'erreur disait
ALERT! /dev/disk/by-uuid/92ec153c-cb92-4300-8d2a-f63b747ddd35 does not exist.
Dropping to a shell!
J'ai donc essayé de remplacer l'UUID par /dev/sda1 résultant dans le fichier suivant.
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
}
Cela n'a pas fonctionné non plus et m'a donné un message d'erreur très similaire.
ALERT! /dev/sda1 does not exist.
Dropping to a shell!
Je pense que je fais une erreur stupide, mais je ne peux pas comprendre quoi puisque c'est ma première fois. J'apprécierais toute aide.
Connexe :Ubuntu – Comment le répertoire /tmp est-il nettoyé ?Merci d'avoir lu le long message. N'hésitez pas à me faire savoir si vous avez besoin de plus d'informations.
Réponse acceptée :
Vous avez manqué deux étapes avant le make install
, qui installe les pilotes requis. Avant make install
faire make modules
et make modules_install
dans cet ordre. Cela installe les pilotes en fonction de vos fichiers .config.
L'erreur peut également se produire en raison d'une configuration incorrecte dans le fichier .config et donc de certains pilotes manquants. Voici donc une façon hackish de faire la compilation du noyau. L'un des meilleurs moyens d'obtenir la bonne configuration consiste à copier une configuration de travail du répertoire / boot vers votre fichier .config dans le dossier du code source du noyau. Votre fichier de configuration du noyau de travail est
/boot/config-`uname -r`
Faites ensuite la compilation avec make
. make
demandera certaines configurations, qui ne sont pas dans le fichier .config, car ce fichier .config peut correspondre à un ancien noyau et n'a pas certaines configurations dans le nouveau noyau que vous essayez de compiler. Tapez simplement Entrée pour toutes les invites de configuration - qui sélectionneront les configurations par défaut. Ensuite, faites make modules
, make modules_install
et enfin make install
. Cela doit résoudre vos problèmes.
Cette méthode de compilation ne convient pas à un professionnel, mais aidera les débutants sans grande connaissance des différentes options de configuration à démarrer avec la compilation du noyau.