Grub бросает "не могу найти команду`['." при добавлении условного в grub.cfg

Насколько я понимаю, grub поддерживает небольшое подмножество bash. Их документация не входит в детали, кроме как "поддерживает условные выражения" и т. Д.

Я пытаюсь запустить простой if,

grub> if [ "${myvar}" = "fred" ]; then
> echo "test"
> fi
error: can't find command `['.

У кого-нибудь есть идея? Я использую Grub2-EFI 2.00.

1 ответ

Вам не хватает модуля grub2 для запуска тестов.

Я запускаю Gentoo в системе PowerPC (компьютер PPC64 G5) и делаю настройки по умолчанию.grub-mkconfigто загрузка с него дает мне ошибку в вашем вопросе.

Сbashподдерживает этот синтаксис, я решил, что это просто модуль grub, который необходимо добавить (недавно я работал с модулями grub). Вкратце: вам нужно загрузить соответствующий модуль grub, и тогда ошибка исчезнет.

Первый шаг — выяснить, какие модули у вас есть. Для меня это все, что доступно в моем/boot/grub/powerpc-ieee1275/папка. Также есть модули в/usr/lib/grub/powerpc-ieee1275/.

Я составил список модулей, которые, по моему мнению, мне были нужны:

      normal
eval
read
test
test_blockarg
trig
true

Затем я добавил их в свой/etc/default/grubфайл:

      GRUB_PRELOAD_MODULES="normal eval read test test_blockarg trig true"

Я не нашел запись дляGRUB_PRELOAD_MODULESв файле конфигурации, поэтому мне пришлось немного поискать, чтобы узнать, как это сделать. Я хочу, чтобы эти модули добавлялись каждый раз, когда я создаю файл конфигурации grub, что означает помещение их в00_headerпорция жвачки.

Затем я воссоздал файл конфигурации:

      grub-mkconfig -o /boot/grub/grub.cfg

Модули были в шапке и все отлично работало при перезагрузке.

Если бы мне пришлось угадывать: вам, вероятно, нужно толькоtestмодуль для включенияifзаявления.

Другие вопросы по тегам