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입니다.
답변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)에 포함되어야 합니다.
데비안에서는 다음 initrd.img
을 사용하여 파일을 다시 빌드 할 수 있습니다.update-initramfs
주문하다.
하지만 먼저 필요한 모듈이 업데이트된 initramfs에 포함되도록 구성을 업데이트해야 합니다.
MODULES
in 지시어를 사용하여 구성하거나 , 로드할 모듈과 로드할 모듈을 /etc/initramfs-tools/initramfs.conf
나열할 수 있습니다 . 바라보다/etc/initramfs-tools/modules
/usr/share/initramfs-tools/modules.d/*
man initramfs.conf
자세한 내용은.
필요한 모듈은 mmc_core
및 입니다 mmc_block
. sdhci
및 이 필요할 수도 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 파티션입니다.