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
。これで問題が解決するはずです。
このコンパイル方法は専門家には適していませんが、さまざまな構成オプションの知識がなくても、カーネルコンパイルを開始するのに役立ちます。