/sysrootでUUID = xxxをマウントできませんでした:デバイスが見つかりません - Linuxカーネルのインストール後に発生する

/sysrootでUUID = xxxをマウントできませんでした:デバイスが見つかりません - Linuxカーネルのインストール後に発生する

組み込みカーネルをインストールして再起動しようとするとエラーが発生します。

インストール:/sysrootへのUUID = 59c56381-e5ec-4a8b-8c2e-f9c6a66d524cインストールに失敗しました:該当デバイスはありません

なぜこれが起こるのですか?正しく起動するには、この問題をどのように解決する必要がありますか?

システム情報

  • Alpine Linux 3.12_alpha20200319(edge) – Alpine Linux 仮想エディション
  • kernel5.4.31-0-virt
  • VirtualBoxで実行

カーネルビルドステップ

wget https://mirrors.edge.kernel/pub/linux/kernel/v5.x/linux-5.4.30.tar.xz
tar -xf linux-5.4.30.tar.xz
cp /boot/config-virt /home/name/build/.config
make -C /home/name/linux-5.4.30 O=/home/name/build listnewconfig
make -j4 -C /home/name/linux-5.4.30 O=/home/name/build
cd /home/name/build
make modules_install

次のステップについてよくわかりません。

cp System.map /boot/System.map-virt
cp arch/x86_64/boot/bzImage /boot/vmlinuz-virt
cp .config /boot/config-virt

私はそれを実行しません。make installなぜなら、それはarch/x86/boot/bzImageを通過するからです。それで、32ビットと64ビットをインストールしていると思います。だから手動でインストールしてみました。

私のextlinux.confファイル:

DEFAULT menu.c32
PROMPT 0
MENU TITLE Alpine/Linux Boot Menu
MENU HIDDEN
MENU AUTOBOOT Alpine will be booted automatically in # seconds
TIMEOUT 30
LABEL virt
  MENU LABEL linux virt
  LINUX vmlinuz-virt
  INITRD initramfs-virt
  APPEND root=UUID=59c56381-e5ec-4a8b-8c2e-f9c6a66d524c moudles=sd-mod,usb-storage,ext4 quiet rootfstype=ext4

MENU SEPARATOR

修正しよう

(以下のすべての項目は依然として同じエラーを引き起こします)

  • 再起動する前にmkinitfsディレクトリから実行/
  • 走るextlinux --install /boot
  • 代わりに、ビルドディレクトリで実行し、make installextlinux.conf行をLINUX vmlinuz-virt次のように変更します。LINUX vmlinuz
  • VirtualBoxストレージコントローラをAHCI、virtio-scsi、およびPIIX4に切り替えます。

助けることができます:

extlinux.confで指定されたエラーとUUIDを確認しました。これは/ dev / sda3を識別します。ところで、起動失敗後に緊急回復シェルに入り、/devディレクトリを確認してみるとそこにはありません。なぜか分からない。

lsmodは、モジュールがロードされていないことを示します。私はこのようなことが起こってはいけないと思います。

次のように入力して起動を続行すると、exitカーネルパニックが発生します。カーネルパニックスクリーンショット

文書

.config-https://github.com/alpinelinux/aports/blob/master/main/linux-lts/config-virt.x86_64

extlinux.conf -https://pastebin.com/QMkePsqS

mkinitfs.conf -https://pastebin.com/rksn7GcN

答え1

投稿で述べたように、

lsmodは、モジュールがロードされていないことを示します。私の考えでは、このようなことが起こってはいけないと思います。

問題は、モジュールがカーネルにロードされていないためです。現在実行中のカーネルバージョンは5.4.31-0-virt wapで、ビルド中のバージョンは5.4.30です。インストールされるモジュールは/lib/modules/5.4.30ディレクトリに配置されます。これにより、正しいカーネルモジュールなしで初期RAMディスク(initramfs)が構築され、起動時にロードされません。

この問題を解決するには、initramfsをビルドするときにカーネルモジュールをインストールした後、次のコマンドを使用する必要があります。

mkinitfs -o /boot/initramfs-virt 5.4.30

uname -rこのコマンドには、デフォルトバージョン(この場合は5.4.31-0-virt)ではなく、initramfsに5.4.30カーネル用にインストールされたモジュールが含まれています。その後、カーネルはモジュールのロード - >ディスクの読み取り - >必要なディスクから起動できます。

関連情報