systemd-bootが私のルートディレクトリを見つけることができません

systemd-bootが私のルートディレクトリを見つけることができません

Debianテスト(Buster)を実行していて、Grub2からsystemdに切り替えていますが、Grub2を動作させることができないため、誰かがsystemd-bootを試してみることを提案しました。

ブート/ルートドライブはマザーボードのeMMCドライブにあり、データドライブはmSATA SSDにあります。

私のsystemd-bootは半分だけ動作し、起動時にこのメッセージでクラッシュします。

Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
done.
Gave up waiting for root file system device. Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT! PARTUUID=2251a5a4-6c18-425c-9264-df971d297b09 does not exist. Dropping to shell!

私は再起動し、SuperGrub USBディスクを使用してログインしましたが、UUIDが私のルートパーティションと一致するのがわかりますが、なぜ見つからないのかわかりません。

/proc/cmdline 出力

BOOT_IMAGE=/boot/vmlinuz-4.19.0-5-amd64 root=UUID=2251a5a4-6c18-425c-9264-df971d297b09 ro

/boot および /boot/efi リスト

kodi@BB-8:~$ ls /boot
config-4.15.0-3-amd64    grub                         System.map-4.15.0-3-amd64    vmlinuz-4.19.0-5-amd64
config-4.19.0-5-amd64    initrd.img-4.15.0-3-amd64    System.map-4.19.0-5-amd64    vmlinuz-4.9.45-ubilinux+
config-4.9.45-ubilinux+  initrd.img-4.19.0-5-amd64    System.map-4.9.45-ubilinux+
efi                      initrd.img-4.9.45-ubilinux+  vmlinuz-4.15.0-3-amd64

kodi@BB-8:~$ sudo ls /boot/efi
debian  EFI  loader

kodi@BB-8:~$ sudo ls /boot/efi/debian
drwx------ 2 root root     4096 Jul 16 22:31 .
drwx------ 5 root root     4096 Jan  1  1970 ..
-rwx------ 1 root root 31595838 Jul 26 11:09 initrd.img-4.15.0-3-amd64
-rwx------ 1 root root 33228805 Jul 26 11:09 initrd.img-amd64
-rwx------ 1 root root  4933392 Jul 26 11:09 vmlinuz-4.15.0-3-amd64
-rwx------ 1 root root  5217520 Jul 26 11:09 vmlinuz-amd64

ドライブUUIDおよびdfコマンド

kodi@BB-8:~$ ls -al /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 220 Jul 26 08:59 .
drwxr-xr-x 8 root root 160 Jul 26 08:58 ..
lrwxrwxrwx 1 root root  15 Jul 26 11:10 2251a5a4-6c18-425c-9264-df971d297b09 -> ../../mmcblk0p2
lrwxrwxrwx 1 root root  10 Jul 26 11:10 42a36b04-83f8-4105-aef4-7f24b9ffff66 -> ../../sdb3
lrwxrwxrwx 1 root root  10 Jul 26 11:10 8280cf20-b70e-44f4-b092-6d3f92d54eab -> ../../dm-0
lrwxrwxrwx 1 root root  10 Jul 26 11:10 8A84-E6C0 -> ../../sdb2
lrwxrwxrwx 1 root root  10 Jul 26 11:10 8B91-8099 -> ../../sdb4
lrwxrwxrwx 1 root root  15 Jul 26 11:10 A9CE-4035 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root  10 Jul 26 11:10 b2a67d10-07da-4eb4-bc16-b768084db045 -> ../../sda1
lrwxrwxrwx 1 root root  10 Jul 26 11:10 b618f5b0-2b8a-4e33-b288-407fd4355f83 -> ../../sdb5
lrwxrwxrwx 1 root root  10 Jul 26 11:10 f9a00ae7-07d2-4726-947b-03a4074049dd -> ../../sda2

kodi@BB-8:~$ df -h
Filesystem              Size  Used Avail Use% Mounted on
udev                    3.9G     0  3.9G   0% /dev
tmpfs                   783M   78M  705M  10% /run
/dev/mmcblk0p2           57G   14G   41G  26% /
tmpfs                   3.9G   39M  3.8G   1% /dev/shm
tmpfs                   5.0M  4.0K  5.0M   1% /run/lock
tmpfs                   3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               820G  555G  224G  72% /home
/dev/mmcblk0p1          511M   82M  429M  17% /boot/efi
/dev/sda2                96G   67G   24G  74% /home/hts
10.1.1.1:/media/backup  2.7T  2.3T  178G  93% /media/backup
tmpfs                   783M   44K  783M   1% /run/user/1001
/dev/dm-0               7.8G   36M  7.3G   1% /media/kodi/8280cf20-b70e-44f4-b092-6d3f92d54eab
/dev/sdb4               7.9G  4.8G  3.2G  61% /media/kodi/DATA
/dev/sdb3                14G   12G  1.7G  88% /media/kodi/boot

アップデート:モジュールが追加されました

/etc/initramfs-tools/modules に追加

mmc_core
mmc_block
sdhci
sdhci-pci

次に、4.19.0-5 カーネルを入力します。

sudo update-initramfs -u -k all

再起動しても同じメッセージが表示されます。

アップデート:私のsystemd loader.conf

これは私の/boot/efi/loader/entries/debian.confです。

title   Debian
linux   /debian/vmlinuz-amd64
initrd  /debian/initrd.img-amd64
options root=PARTUUID=2251a5a4-6c18-425c-9264-df971d297b09 rw

これは、rootとしてインストールした/ dev / mmcblk0p2 eMMCデバイスのUUIDです。

答え1

もう一度見てみると、PARTUUID = ...とUUID = ...の間に矛盾があるように見え、これが問題の原因です。

ブートローダが次のように構成されていると言われました。

オプションルート=パトゥUID=2251a5a4-6c18-425c-9264-df971d297b09 読み書き

ただし、実行すると、実際には次の場所でこのUUIDを見つけることができます/dev/disk/by-uuid

kodi@BB-8:~$ ls -al /dev/disk/-uuidを押す/
lrwxrwxrwx 1ルート7月26日、15日、11:10 2251a5a4-6c18-425c-9264-df971d297b09 -> ../../mmcblk0p2

また、これは/proc/cmdline成功した起動リストにもリストされています(SuperGrub USBを使用した起動であると仮定します)。

/proc/cmdline出力

BOOT_IMAGE=/boot/vmlinuz-4.19.0-5-amd64 ルート=普遍的に一意の識別子=2251a5a4-6c18-425c-9264-df971d297b09 ルオ

両方のUUIDは異なります。 PARTUUID=はGPTパーティションテーブルのUUIDです(パーティションテーブルに書き込まれたパーティションの属性なので、「PART」と呼ばれます)。 UUID =はファイルシステム(ext4)UUIDに書き込まれます。 xfsまたはパーティションをフォーマットしたファイルシステム)、Linuxはディスクをスキャンするときにこれらのファイルシステムを読み取ることができます。

したがって、持っているUUIDは次のようになるため、PARTUUID =の代わりにUUID =を使用するように起動オプションを変更する必要があるようです。ファイルシステム代わりにUUID分割UUID。

ファイルを編集/boot/efi/loader/entries/debian.confし、最後の行を次に置き換えます。

オプションルート=普遍的に一意の識別子=2251a5a4-6c18-425c-9264-df971d297b09 読み書き

これで問題は解決します!

/etc/fstabシステムのタグも正しいことを確認してください。

blkidこのコマンドを使用して、パーティションとファイルシステムのUUIDを確認することもできます。これは、あなたが正しい情報を持っていることを確認するのに役立ちます。タイプUUID。

たとえば、use はblkid -o export次のように表示されます。

$ sudo blkid -o export
DEVNAME=/dev/mmcblk0p1
SEC_TYPE=msdos
LABEL=boot
UUID=9A8B-7C6D
TYPE=vfat
PARTUUID=abcd1234-01

DEVNAME=/dev/mmcblk0p2
UUID=2251a5a4-6c18-425c-9264-df971d297b09
TYPE=ext4
PARTUUID=abcd1234-01

...

これは、Linux識別タグを持つすべてのUUIDを表示するのに役立ちます。

答え2

ルートパーティションを持つデバイス/dev/mmcblk0はSDカードです。これらのデバイスのモジュールは通常カーネルではなく外部モジュールにコンパイルされるため、ルートファイルシステムがマウントされる前にロードされるようにinitramfs(またはinitrd)に含める必要があります。

Debian では、次のようにinitrd.imgファイルを再構築できます。update-initramfs注文する。

ただし、最初に必要なモジュールが更新されたinitramfsに含まれるように構成を更新する必要があります。

MODULESinディレクティブを使用して設定したり、ロードするモジュールとロードするモジュールを一覧/etc/initramfs-tools/initramfs.conf表示したりできます。バラより/etc/initramfs-tools/modules/usr/share/initramfs-tools/modules.d/*man initramfs.conf詳細については。

必要なモジュールはmmc_coreと ですmmc_blocksdhciそしてこれが必要な場合sdhci-pciがあるので、それらの項目もリストすることをお勧めします。

設定を更新したら、次の手順を実行して、起動するカーネルバージョンのinitramfsを再生成します。

$ sudo update-initramfs -u -k 4.19.0-5-amd64

または、すべてのコアに対してinitramfsファイルを再生成します。

$ sudo update-initramfs -u -k all

カーネルが起動時にルートパーティションを見つけるのに必要なすべてがこれであることを願っています。

答え3

今までここには少し誤解があったようです。出力で言及されていないモジュールは次のとおりです。いいえカーネルモジュールですがブートローダー基準寸法。ブートローダがカーネルイメージ自体を見つけるのに問題があることがわかりました。それはおそらく、ブートローダがマウントされたデバイスを処理できないからです。この段階では、カーネルモジュールは無関係です。

私はsystemd-bootには全く慣れていませんが、追加する必要があるすべてのモジュールはブートローダがインストールされている/boot/efi/パーティションのどこかにあると思います。これは通常ブートデバイスのFAT32パーティションです。

関連情報