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
這是我的 /dev/mmcblk0p2 eMMC 設備的 UUID,它以 root 身份安裝。
再看一遍,您似乎在 PARTUUID=… 和 UUID=… 之間存在不匹配,這就是導致此問題的原因。
您提到引導載入程序配置為:
選項根= **PARTUUID** =2251a5a4-6c18-425c-9264-df971d297b09 rw
但是當你設法啟動它時,你實際上在下面找到了這個 UUID
/dev/disk/by-uuid
:kodi@BB-8:~$ ls -al /dev/disk/ **by-uuid** / lrwxrwxrwx 1 根 15 Jul 26 11:10 2251a5a4-6c18-425c-9264-df971d297b09 -> ../../mmcblk0p2
此外,這甚至在成功啟動中列出
/proc/cmdline
(我假設它是帶有 SuperGrub USB 的那個):
/proc/cmdline
輸出BOOT_IMAGE=/boot/vmlinuz-4.19.0-5-amd64 root= **UUID** =2251a5a4-6c18-425c-9264-df971d297b09 ro
這兩個 UUID 是不同的。PARTUUID= 是將在 GPT 分區表中找到的 UUID(這就是為什麼它被稱為“PART”,因為它是分區的屬性,記錄在分區表中),而 UUID= 是記錄在文件系統中的 UUID(ext4 ,或 xfs,或您格式化分區的任何文件系統),Linux 能夠在掃描磁碟時讀取這些文件。
因此,看起來您需要修復引導選項以使用 UUID= 而不是 PARTUUID=,因為您擁有的 UUID 是文件系統UUID 而不是分區UUID。
編輯文件
/boot/efi/loader/entries/debian.conf
並將最後一行替換為:選項根= **UUID** =2251a5a4-6c18-425c-9264-df971d297b09 rw
那應該可以解決您的問題!
確保您
/etc/fstab
在系統中的標籤也匹配正確。您還可以使用該
blkid
命令檢查分區和文件系統中存在的 UUID。這可能會幫助您確認您擁有正確類型的 UUID。例如, using
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。