Невозможно выполнить двойную загрузку FreeBSD вместе с Arch Linux с Grub2.

Ну, вы думаете, что не показали все свои переменные (нет ссылки на то, где _First_Second set), но я думаю так:

${!_thisVarNam[${ctX}]+x}

считывает значение _thisVarNam[${ctX}] и использует его как имя переменной. Это не то же самое, что взять значение _thisVarNam, использовать его в качестве имени массива, а затем проиндексировать этот массив.

Давайте посмотрим:

$ P=(somevar othervar); 
$ somevar=foo; unset othervar

$ i=0; echo "${!P[i]-unset}"        # reads somevar
foo
$ i=1; echo "${!P[i]-unset}"        # reads othervar (not set)
unset

$ q="P[0]"; echo "${!q}"            # reads P[0]
somevar
$ q="P[1]"; echo "${!q}"            # reads P[1]
othervar

$ arrayname=P; i=1
$ q="$arrayname[$i]"     # this is just a string so same as above
$ echo "${!q}"           # still P[1]  
othervar

Итак, если _thisVarNam содержит имя массива, и вы хотите проверить, не установлен ли элемент этого массива, вам нужно сделать что-то вроде этого:

p="$_thisVarNam[${ctX}]"
if [ -z "${!p+x}" ] ; then ...

Кроме того, в Bash вы можете использовать declare для косвенной установки переменной, нет необходимости в полной силе eval:

$ arrayname=P; i=19
$ declare "$arrayname[$i]"=qwerty
$ echo "${P[19]}"
qwerty
1
02.11.2016, 16:52
2 ответа

Хотя большинство руководств советуют использовать chainloader +1 для цепной загрузки, у меня это не сработало.
Следующая конфигурация помогла:

insmod ufs2  
set root=(hd0,gpt4)  
chainloader /boot/loader.efi
0
28.01.2020, 01:08

У меня была такая же проблема на моей стороне с тем же ноутбуком (lenovo X220 с 2 жесткими дисками, один для системы/один для данных) и FreeBSD 10. Одним из решений для меня было:

  1. установить схему MBR (поддержка GPT, похоже, сломана на этом ноутбуке)
  2. установить grub
  3. установить FreeBSD на какой-то раздел

Мой grub.cfg прост (и хорошо работает уже много лет):

menuentry 'FreeBSD' {
  insmod bsd
  insmod ufs2
  set root='hd0,msdos3'
  kfreebsd /boot/loader
}

Я просто использую загрузчик FreeBSD для запуска ядра FreeBSD (с некоторыми пользовательскими настройками в моем loader.conf). Если вы попытаетесь загрузиться напрямую с опцией kfreebsd на ядре FreeBSD, вам придется много чего настраивать.

BTW, вы читали официальную документацию FreeBSD по мультизагрузке env с grub2?

0
28.01.2020, 01:08

Теги

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