GNU/Linux >> Belajar Linux >  >> Ubuntu

Ubuntu – Setelah Menginstal Kernel Baru Di Ubuntu 14.04, Reboot Membawa Saya Ke Initramfs Busybox. Bagaimana Cara Memasang Sistem File Setelah Itu?

Saya memiliki mesin virtual dengan Ubuntu 14.04 di dalamnya. Saya baru-baru ini membuat dan menginstal kernel linux-3.14.5 di dalamnya, dan mencoba untuk mem-boot ke dalamnya, tetapi itu menjatuhkan saya ke shell built-in BusyBox v1.21.1.

Inilah yang saya lakukan:

    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

Saya bisa melihat file bernama initrd.img-3.14.5 di /boot di samping intrd.img-3.13.0-24-generic (yang saya kira, adalah kernel Ubuntu 14.04).

Ada juga 2 file bernama vmlinuz-3.14.5 dan vmlinuz-3.13.0-24-generic.

Setelah itu, lari

    sudo blkid

dan dapatkan yang berikut:

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

Saya juga berlari

    sudo fdisk -l

yang memberi saya

    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

Saya memeriksa /boot/grub/grub.cfg file yang memiliki entri berikut:

    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
    }

Jadi, saya melanjutkan dan menambahkan baris berikut ke /etc/grub.d/40_custom ( saya baru saja mengganti baris 1, 14, 15 dan 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
}

dan berlari

    sudo update-grub
    sudo reboot

Tidak bekerja! Pesan kesalahan mengatakan

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

Jadi saya mencoba mengganti UUID oleh /dev/sda1 menghasilkan file berikut.

    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
    }

Itu juga tidak berhasil, dan memberi saya pesan kesalahan yang sangat mirip.

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

Saya pikir saya melakukan beberapa kesalahan bodoh, tetapi saya tidak tahu apa karena ini adalah pertama kalinya saya. Saya akan sangat menghargai bantuan apa pun.

Terkait:Ubuntu – Bagaimana direktori /tmp dibersihkan?

Terima kasih telah membaca posting yang panjang. Beri tahu saya jika Anda memerlukan informasi lebih lanjut.

Jawaban yang Diterima:

Anda melewatkan dua langkah sebelum make install , yang menginstal driver yang diperlukan. Sebelum make install melakukan make modules dan make modules_install dalam urutan itu. Ini menginstal driver berdasarkan file .config Anda.

Kesalahan juga dapat terjadi karena konfigurasi yang tidak tepat dalam file .config dan karenanya beberapa driver hilang. Jadi di sini adalah cara hackish untuk melakukan kompilasi kernel. Salah satu cara terbaik untuk mendapatkan konfigurasi yang tepat adalah dengan menyalin konfigurasi yang berfungsi dari direktori /boot ke .config Anda di folder kode sumber kernel. File konfigurasi kernel Anda yang berfungsi adalah

/boot/config-`uname -r`

Kemudian lakukan kompilasi dengan make . make akan menanyakan beberapa konfigurasi, yang tidak ada dalam file .config, karena file .config ini mungkin sesuai dengan kernel lama dan tidak memiliki beberapa konfigurasi di kernel baru yang Anda coba kompilasi. Cukup ketik Enter untuk semua petunjuk konfigurasi – yang akan memilih konfigurasi default. Kemudian lakukan make modules , make modules_install dan terakhir make install . Ini harus menyelesaikan masalah Anda.

Cara kompilasi ini tidak cocok untuk seorang profesional, tetapi akan membantu pemula tanpa banyak pengetahuan tentang opsi konfigurasi yang berbeda untuk memulai kompilasi kernel.


Ubuntu
  1. Kernel Linux 5.13 Dirilis! Cara Menginstal di Ubuntu 21.04

  2. Bagaimana Cara Memperbaiki Grub? (Bagaimana Cara Mendapatkan Kembali Ubuntu Setelah Menginstal Windows?)?

  3. Bagaimana cara memulai Ubuntu dari Initramfs?

  1. Hal yang harus dilakukan Setelah Menginstal Ubuntu 18.04 dan 19.10

  2. Cara Memperbarui Kernel Linux Di Ubuntu

  3. Cara menghapus kernel lama di Ubuntu

  1. Cara Mencoba Tema Ubuntu Baru

  2. Harus Melakukan Hal-Hal Setelah Menginstal Ubuntu 13.04

  3. Hal Yang Harus Dilakukan Setelah Menginstal Ubuntu 13.10