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
заявления.