答え1
最初のスクリーンショットには、パニックが発生する前に最後に「prepare_namespace」および「mount_root」機能のみが表示されます。
2番目は正しいエラーメッセージです。
VFS: unable to mount root fs on unknown-block...
他のカーネルを使用するのと同じ問題があります。カーネルパニックは次のように大きく異なります。どれほど無力なのかカーネルは次のとおりです。一言で言えば、root=
直接的または間接的に影響を与えない基本的な始動パラメータです。
簡単な理由は次のとおりです。VFS:ルートディレクトリをマウントできません。。これはいくつかのコンテキストを提供します。
私の場合、起動パラメータがありませんinitrd=
。最大カーネルがディスクにアクセスするには、initrdにモジュールが必要です。
スラックウェアイメージのあるUSBフラッシュドライブから起動してインストールしたようです。したがって、これは単なる構成問題です。
4回再インストールしよう
何を言うのか分かります。時には5回目の試みもしたが、その後は体系的なアプローチを取ろうとします。
以下は、Uefi Shellでスラックウェアを起動するために保存した2つのカーネルコマンドラインです。
slack\huge.s root=/dev/sda2
そして
slack\huge.s initrd=slack\initrd.img
しかし、どちらもそのように動作しません。動作するには2つの引数が必要です。 Grubはほぼ同じラインを持っています。
これは働きます:
arch5\vmlinuz-linux initrd=arch5\initramfs-linux.img root=/dev/sda3
これは、SSDモジュールが組み込まれた唯一のカーネルでもあります。
fedora\vmlinuz root=/dev/sda2
slack
、arch5
カーネルfedora
とそのinitrdを保存するために作成されたディレクトリです。
slackware
Linuxベースのオペレーティングシステムというラベルを見ました。
私はこれに完全に同意しません、そしてそれをLinuxディストリビューションと呼びたいので、面白く聞こえるかもしれません。しかし、このウェブサイトはPosix&DistrosではなくUnix&Linuxと呼ばれています。
mount_block_root()
以下がありますinit/do_mounts.c
(#ifdefを削除しました)。
/*
* Allow the user to distinguish between failed sys_open
* and bad superblock on root device.
* and give them a list of the available devices
*/
__bdevname(ROOT_DEV, b);
printk("VFS: Cannot open root device \"%s\" or %s: error %d\n",
root_device_name, b, err);
printk("Please append a correct \"root=\" boot option; here are the available partitions:\n");
printk_all_partitions();
panic("VFS: Unable to mount root fs on %s", b);
}
if (!(flags & SB_RDONLY)) {
flags |= SB_RDONLY;
goto retry;
}
printk("List of all partitions:\n");
printk_all_partitions();
printk("No filesystem could mount root, tried: ");
for (p = fs_names; *p; p += strlen(p)+1)
printk(" %s", p);
printk("\n");
__bdevname(ROOT_DEV, b);
panic("VFS: Unable to mount root fs on %s", b);
out:
put_page(page);
}
したがって、有用なエラーメッセージがありますが、問題が(欠落している)ブロックデバイスドライバ/モジュール自体である場合は、とにかく少し破損しています。カーネルのコマンドラインが正しくないため、さまざまなカーネルパニックが発生しました。