GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ubuntu – Nach der Installation eines neuen Kernels in Ubuntu 14.04 führt mich ein Neustart zu Busybox Initramfs. Wie wird danach ein Dateisystem gemountet?

Ich habe eine virtuelle Maschine mit Ubuntu 14.04 darin. Ich habe kürzlich den Linux-3.14.5-Kernel darauf gebaut und installiert und versucht, ihn zu booten, aber er bringt mich zur integrierten Shell von BusyBox v1.21.1.

Folgendes habe ich getan:

    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

Ich konnte eine Datei namens initrd.img-3.14.5 sehen in /boot neben dem intrd.img-3.13.0-24-generic (was ich vermute, ist der Kernel von Ubuntu 14.04).

Es gab auch 2 Dateien namens vmlinuz-3.14.5 und vmlinuz-3.13.0-24-generic.

Danach lief

    sudo blkid

und bekam folgendes:

    /dev/sda1: UUID="92ec153c-cb92-4300-8d2a-f63b747ddd35" TYPE="ext4" 
    /dev/sda5: UUID="439a6423-28dc-4363-b47e-580f1e65e951" TYPE="swap"

Ich bin auch gelaufen

    sudo fdisk -l

das gab mir

    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

Ich habe die /boot/grub/grub.cfg überprüft Datei mit folgendem Eintrag:

    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
    }

Also ging ich weiter und fügte die folgenden Zeilen zu /etc/grub.d/40_custom hinzu (Ich habe gerade die Zeilen 1, 14, 15 und 17 geändert)

    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
}

und rannte

    sudo update-grub
    sudo reboot

Funktioniert nicht! Die Fehlermeldung lautete

    ALERT! /dev/disk/by-uuid/92ec153c-cb92-4300-8d2a-f63b747ddd35 does not exist.
    Dropping to a shell!

Also habe ich versucht, die UUID zu ersetzen von /dev/sda1 was zu folgender Datei führt.

    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
    }

Das hat auch nicht funktioniert und mir eine sehr ähnliche Fehlermeldung gegeben.

    ALERT! /dev/sda1 does not exist.
    Dropping to a shell!

Ich glaube, ich mache einen dummen Fehler, aber ich kann nicht herausfinden, was, da dies mein erstes Mal ist. Ich würde mich über jede Hilfe freuen.

Siehe auch:Ubuntu – Wie wird das /tmp-Verzeichnis aufgeräumt?

Danke für das Lesen des langen Beitrags. Bitte teilen Sie mir mit, wenn Sie weitere Informationen benötigen.

Akzeptierte Antwort:

Sie haben zwei Schritte vor dem make install verpasst , wodurch die erforderlichen Treiber installiert werden. Vor make install make modules und make modules_install in dieser Reihenfolge. Dadurch werden Treiber basierend auf Ihren .config-Dateien installiert.

Der Fehler kann auch aufgrund einer falschen Konfiguration in der .config-Datei und daher einiger fehlender Treiber auftreten. Hier ist also ein hackiger Weg, um die Kernel-Kompilierung durchzuführen. Eine der besten Möglichkeiten, um die richtige Konfiguration zu erhalten, besteht darin, eine funktionierende Konfiguration aus dem /boot-Verzeichnis in Ihre .config im Kernel-Quellcodeordner zu kopieren. Ihre funktionierende Kernel-Konfigurationsdatei ist

/boot/config-`uname -r`

Führen Sie dann die Kompilierung mit make durch . make wird nach einigen Konfigurationen fragen, die nicht in der .config-Datei enthalten sind, da diese .config-Datei möglicherweise einem alten Kernel entspricht und einige Konfigurationen in dem neuen Kernel, den Sie zu kompilieren versuchen, nicht enthält. Geben Sie einfach die Eingabetaste für alle Konfigurationsaufforderungen ein, wodurch Standardkonfigurationen ausgewählt werden. Machen Sie dann make modules , make modules_install und schließlich make install . Dies muss Ihre Probleme lösen.

Diese Art der Kompilierung ist nicht für einen Profi geeignet, hilft aber Neulingen ohne große Kenntnisse der verschiedenen Konfigurationsoptionen, mit der Kernel-Kompilierung zu beginnen.


Ubuntu
  1. Dinge, die nach der Installation von Ubuntu 18.04 und 19.10 zu tun sind

  2. So aktualisieren Sie den Linux-Kernel in Ubuntu

  3. Linux-Kernel 5.13 veröffentlicht! So installieren Sie unter Ubuntu 21.04

  4. Wie repariert man Grub? (Wie bekomme ich Ubuntu nach der Installation von Windows zurück?)?

  5. Wie starte ich Ubuntu von Initramfs aus?

So beheben Sie den Busybox Initramfs-Fehler unter Ubuntu

So installieren Sie den Linux-Kernel 5.15 auf Ubuntu 20.04

So überprüfen Sie die Kernel-Version in Ubuntu 20.04

So installieren Sie den neuesten Linux-Kernel 5.15 auf Ubuntu 20.04

So reparieren Sie ein beschädigtes Dateisystem in Ubuntu

So installieren Sie den neuesten Linux-Kernel 4.8 unter Ubuntu 16.04