GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ubuntu - Après avoir installé un nouveau noyau dans Ubuntu 14.04, le redémarrage m'amène à Busybox Initramfs. Comment monter un système de fichiers après cela ?

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.


Ubuntu
  1. Choses à faire après l'installation d'Ubuntu 18.04 et 19.10

  2. Comment mettre à jour le noyau Linux dans Ubuntu

  3. Sortie du noyau Linux 5.13 ! Comment installer dans Ubuntu 21.04

  4. Comment réparer Grub ? (comment récupérer Ubuntu après avoir installé Windows ?) ?

  5. Comment démarrer Ubuntu depuis Initramfs ?

Comment réparer l'erreur Busybox Initramfs sur Ubuntu

Comment installer le noyau Linux 5.15 sur Ubuntu 20.04

Comment vérifier la version du noyau dans Ubuntu 20.04

Comment installer le dernier noyau Linux 5.15 sur Ubuntu 20.04

Comment réparer un système de fichiers endommagé dans Ubuntu

Comment installer le dernier noyau Linux 4.8 sur Ubuntu 16.04