GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu – Ubuntu 14.04に新しいカーネルをインストールした後、再起動するとBusyboxInitramfsに移動します。その後、ファイルシステムをマウントする方法は?

Ubuntu14.04を搭載した仮想マシンがあります。最近、linux-3.14.5カーネルをビルドしてインストールし、起動しようとしましたが、BusyBoxv1.21.1の組み込みシェルに移動します。

これが私がしたことです:

    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

initrd.img-3.14.5というファイルが表示されました / boot intrd.img-3.13.0-24-genericと一緒に (これはUbuntu 14.04のカーネルだと思います)。

vmlinuz-3.14.5という2つのファイルもありました およびvmlinuz-3.13.0-24-generic。

その後、実行しました

    sudo blkid

そして、次のようになりました:

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

私も走りました

    sudo fdisk -l

それは私に

    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

/boot/grub/grub.cfgを確認しました 次のエントリが含まれるファイル:

    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
    }

そこで、先に進み、次の行を /etc/grub.d/40_customに追加しました。 (1、14、15、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
}

実行しました

    sudo update-grub
    sudo reboot

動作しませんでした!エラーメッセージは言った

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

そこで、 UUIDを置き換えようとしました / dev / sda1による 次のファイルになります。

    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
    }

それも機能せず、非常によく似たエラーメッセージが表示されました。

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

ばかげた間違いをしていると思いますが、初めてなので何がわかりません。助けていただければ幸いです。

関連:Ubuntu – / tmpディレクトリはどのようにクリーンアップされますか?

長い投稿を読んでいただきありがとうございます。さらに情報が必要な場合はお知らせください。

承認された回答:

make installの前に2つのステップを逃しました 、必要なドライバをインストールします。 make installの前に make modulesする およびmake modules_install その順序で。これにより、.configファイルに基づいてドライバーがインストールされます。

このエラーは、.configファイルの構成が不適切であるため、一部のドライバーが欠落している場合にも発生する可能性があります。だからここにカーネルコンパイルを行うためのハックな方法があります。適切な構成を取得するための最良の方法の1つは、作業構成を/bootディレクトリーからカーネルソースコードフォルダーの.configにコピーすることです。作業中のカーネル構成ファイルは

です。
/boot/config-`uname -r`

次に、makeを使用してコンパイルを行います 。 make この.configファイルは古いカーネルに対応している可能性があり、コンパイルしようとしている新しいカーネルにいくつかの構成がないため、.configファイルにないいくつかの構成の入力を求められます。すべての構成プロンプトにEnterと入力するだけで、デフォルトの構成が選択されます。次に、make modulesを実行します 、make modules_install そして最後にmake install 。これで問題が解決するはずです。

このコンパイル方法は専門家には適していませんが、さまざまな構成オプションの知識がなくても、カーネルコンパイルを開始するのに役立ちます。


Ubuntu
  1. Linuxカーネル5.13がリリースされました! Ubuntu21.04にインストールする方法

  2. グラブを修復する方法は? (Windowsのインストール後にUbuntuを元に戻す方法は?)?

  3. Initramfs から Ubuntu を起動するにはどうすればよいですか?

  1. Ubuntu18.04および19.10をインストールした後に行うこと

  2. UbuntuでLinuxカーネルを更新する方法

  3. Ubuntuで古いカーネルを削除する方法

  1. 新しいUbuntuテーマを試す方法

  2. Ubuntu13.04をインストールした後に行う必要があります

  3. Ubuntu13.10をインストールした後に行うこと