systemd-boot не может найти мой корень

В f()измените %sна %q:

.
f() { read -rn 1 -p "Enter a character: " char && \
      printf "\nYou entered '%q'\n" "$char"; }
f;f

Вывод, если пользователь вводит новую строку , затем ' Ctrl -D ':

Enter a character: 

You entered ''''
Enter a character: ^D
You entered '$'\004''

Из `man printf:

 %q       ARGUMENT is printed in a format that can be reused as shell input, 
          escaping non-printable characters with the proposed POSIX $'' syntax.
2
09.08.2019, 04:15
1 ответ

Устройство, на котором находится ваш корневой раздел, — это /dev/mmcblk0, то есть SD-карта. Модули для этих устройств обычно компилируются не в ядро, а во внешние модули, поэтому их необходимо включить в ваши initramfs (или initrd ), чтобы их можно было загрузить до того, как ваша корневая файловая система сможет быть смонтирована.

В Debian вы можете пересобрать файл initrd.imgс помощью команды update-initramfs.

Но сначала вам нужно обновить конфигурацию, чтобы убедиться, что нужные вам модули будут включены в обновленные файлы initramfs.

Вы можете настроить это с помощью директивы MODULESв /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

Надеюсь, это все, что нужно ядру, чтобы найти корневой раздел при загрузке.

1
27.01.2020, 22:02

Теги

Похожие вопросы