LFSにルートファイルシステムをマウントできません。

LFSにルートファイルシステムをマウントできません。

最近私は建物を建てています。LFS [最初からLinux]私のためのシステムラズベリーパイシングルボードコンピュータ、私は現在最後の段階にあります。コンパイルしようとしています。公式kernel.orgリポジトリのLinux 5.19.2しかし、カーネルをインストールして再起動するたびに、次のことが起こります。

  1. レインボースプラッシュ画面が表示されます。 [READING FAT32 PARTITION]
  2. Raspberry Piのロゴが表示されます。 [UEFIファームウェアがロードされました]
  3. GRUB2ブートメニューが表示されます
  4. 次のカーネルパニックが発生します。

    LFS Linuxカーネルパニックテキスト

それはすべてです。起動プロセスが中断され、永久に停止します。私が考えることができる最も可能性のある問題は、私のカーネル構成で特定のファイルシステムがアクティブにならないことです。どんな助けでも大変感謝します。

次に接続する/boot/config-5.19.2/boot/config-5.19.2

修正する 次のガイドを使用してinitramfsを作成しました。このBLFSページ、再起動したとき、最初は驚くべきことだと思ったinitramfsシェルが現れました。今理解する:

The device /dev/sda2, which is supposed to contain the
root file system, does not exist.
Please fix this problem and exit this shell.

Encountered a problem!

Dropping you to a shell.

sh: cannot set terminal process group (-1): Innapropriate ioctl for device
sh: no job control in this shell
sh-5.1# _

そこから自分のシステムをデバッグできるようにしたいのですが、何らかの理由で入力できません。だからls -a /dev私のカーネルがどのデバイスを検出しているのかを確認できるようにinitramfs initスクリプトを追加することにしました。しかし、結果は非常に衝撃的です。

.       core            full  mem   ptmx   snapshot tty   tty11 tty15 tty19 tty22 tty26 tty3  tty33 tty37 tty40 tty44 tty48 tty51 tty55 tty59 tty62 tty9    ttyS2   vcs1  vcsu1
..      cpu_dma_latency input null  random stderr   tty0  tty12 tty16 tty19 tty23 tty27 tty30 tty34 tty38 tty41 tty45 tty49 tty52 tty56 tty6  tty63 ttyAMA0 ttyS3   vcsa  vga_arbiter
char    fb0             kmsg  port  rtc    stdin    tty1  tty13 tty17 tty20 tty24 tty28 tty31 tty35 tty39 tty42 tty46 tty5  tty53 tty57 tty60 tty7  ttyS0   urandom vcsa1 zero
console fd              kvm   psaux rtc0   stdout   tty10 tty14 tty18 tty21 tty25 tty29 tty32 tty36 tty4  tty43 tty47 tty50 tty54 tty58 tty61 tty8  ttyS1   vcs     vcsu

sdまたはmmcblk!で始まるファイルはありません。これで、カーネル構成で物理デバイスを検出できないという問題があることは明らかです。

修正する- カーネルバージョンをLinux 6.0.5にアップデートし、initramfsを再コンパイルしましたが、違いはありません。

修正する- Raspberry PiオペレーティングシステムはUEFI変数を使用していないことを知り、システムでUEFI変数をサポートするようにGRUBをコンパイルすると問題が解決されると思いました。だから何とか私のRaspberry Piにarm64用のDebian GNU / Linux 11をインストールし、[実行によって] UEFI変数がサポートされていることを発見しましたefivar -l。 UEFI変数をサポートしてGRUBを再コンパイルしましたが、問題も解決されませんでした。

修正する- 問題は私のカーネルコンパイルにあるようではありません。 Debian インストール (arm64 用) でカーネル構成ファイルをコピーして貼り付け、カーネルを再コンパイルしても同じ結果が得られるからです。物理デバイスを検出するためにインストールされていないパッケージがあるようです。

修正する- 実際にシステムを起動するおおよその方法を見つけましたが、問題は解決されませんでした。 DebianインストールのGRUBコマンドラインに案内し、次のコマンドを入力しました。

grub> linux (hd0,1)/vmlinuz-5.10.0-19-arm64 root=/dev/sdb2 rootfstype=ext4 init=/bin/bash
grub> initrd (hd0,1)/initrd.img-5.10.0-19-arm64
grub> boot

システムを起動するために常に外部インストールを使用したくありません。これは問題を見つけるのにも役立ちません。 Debian インストールのカーネルプロファイルを使用して LFS カーネルをコンパイルする場合、カーネルも同じことをする必要はありませんか?別の予期せぬ発見もしました。 initramfsをロードせずにDebianインストールを起動しようとすると、カーネルパニックが発生します。ほぼ同じ上記と同じです。パーティションを見つけるためにinitramfsはどのような役割を果たしますか?私は今まで以上に混乱しています。

ベストアンサー1

私の問題を解決するために、単にコピーして貼り付けるのではなく、カーネルが/boot/modules/カーネルモジュールをインストールしていたことがわかりました。/usr/lib/modules//boot/modules/usr/lib/modules

おすすめ記事