личинка не может найти grub.cfg при начальной загрузке от корня zfs

Я установил Xubuntu 14.04 на ZFS-корне после этих ZoL использования инструкций Debian repo: https://github.com/fajarnugraha/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-Root-Filesystem

Система работает хорошо, но при начальной загрузке, личинка идет непосредственно в оболочку личинки. Там я могу работать configfile (hd0,msdos3)/ROOT/ubuntu/@/boot/grub/grub.cfg и обычное меню личинки запускается, и я могу загрузить свою систему. Это кажется мне, личинка не может найти grub.cfg отдельно.

В инструкциях на самом деле говорится, что путь (hd0,msdos3)/ROOT/ubuntu@/boot/grub/grub.cfg (заметьте @). Но это не работало на меня. Я должен был поместить / перед. Но я предполагаю, что это не релевантно. (3,5 тестовых начальных загрузки от существующей установки личинки)

Личинка была установлена с grub-install --boot-directory=/rpool/ROOT/ubuntu/boot /dev/sda согласно инструкциям.

Так или иначе, после того, как несколько перезагрузок, которые я заметил, существуют на самом деле реальная папка /rpool/ROOT/ubuntu/boot и также папка /rpool/ROOT/ubuntu/@/boot которые содержат папку личинки приблизительно со всем кроме a grub.cfg:

$ ls -l /rpool/ROOT/ubuntu/boot/grub/
drwxr-xr-x 2 root root     3 Jan 30 21:34 fonts
-rw-r--r-- 1 root root   699 Jan 31 11:04 gfxblacklist.txt
-rw-r--r-- 1 root root  1024 Jan 30 21:34 grubenv
drwxr-xr-x 2 root root   273 Jan 30 21:47 i386-pc
drwxr-xr-x 2 root root     5 Jan 30 21:47 locale

/rpool/ROOT/ubuntu/@/boot/grub/ содержит то же.

Я скопировал /boot/grub/grub.cfg к обоим местам и теперь это работает. Моя фактическая проблема состоит в том, что, если что-то обновляет личинку, я должен скопировать grub.cfg снова. На данный момент я добавил 2 строки к /usr/sbin/grub-mkconfig сделать копирование на каждом grub-update. Но когда пакет личинки обновляется, это изменение закончится. Таким образом, я ищу надежное решение здесь.

Одно дальнейшее размышление:

Это могло быть это /rpool/ROOT/ubuntu/ должен также содержать мою файловую систему? Поскольку кроме boot каталог это пусто:

# ls -l /rpool/ROOT/ubuntu/
total 17
drwxr-xr-x 3 root root 3 Jän 30 21:40 @
drwxr-xr-x 3 root root 3 Jän 30 21:34 boot

Здесь некоторый infos, который может быть полезным:

# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
rpool              4,15G  94,3G   144K  /rpool
rpool/ROOT         4,15G  94,3G  7,09M  /rpool/ROOT
rpool/ROOT/ubuntu  4,14G  94,3G  4,01G  /rpool/ROOT/ubuntu

zfs-связанная часть mount:

rpool/ROOT/ubuntu on / type zfs (rw,relatime,xattr,noacl)
rpool on /rpool type zfs (rw,relatime,xattr,noacl)
rpool/ROOT on /rpool/ROOT type zfs (rw,relatime,xattr,noacl)

Любая справка ценится. Если Вам нужно больше сообщенный мне infos.

FWIW: Мои единственные предварительные знания ZFS от использования freenas, это - моя первая попытка сделать это самостоятельно.

0
задан 31 January 2015 в 15:33

2 ответа

Некоторые исправления из моего собственного опыта.

  1. Ваш «rpool» был смонтирован в «/ rpool» автоматически во время создания rpool. Вот почему где-то в процессе настройки вы запускаете zfs set mountpoint=none rpool, чтобы устранить это поведение. То же самое вы делаете для rpool/ROOT, чтобы исключить его автоматическое монтирование в / rpool / ROOT, которое вам не нужно.

  2. Фактически, ваш zpool - это «rpool», а «rpool / ROOT» - это набор данных ZFS, а не zpool.

  3. С помощью grub-install вы можете ссылаться только на текущее дерево каталогов. Вот почему вы даете это --boot-directory=/boot. Сам скрипт не хочет ничего слышать о ZFS. Но в дальнейшем другие вспомогательные скрипты, включенные в GRUB2, проверит, что там смонтировано, и удостоверится, что grub может получить к нему доступ во время загрузки. Так что, если вы используете самую последнюю версию ZFS, на момент написания этой статьи GRUB2 НЕ распознает ее и откажется устанавливать ее там. Увы!

  4. Вы уверены, что ставите «/» перед «@», и это ВАЖНО, так как вы сами признаете, что это НЕ работает для вас. РЕДАКТИРОВАТЬ: хорошо, это ИСПОЛЬЗУЕТСЯ, но с последним git-кодом это не так.

  5. И, наконец, загрузка снимков не поддерживается, я боюсь. То есть, хотя вы МОЖЕТЕ сказать GRUB использовать что-то вроде (hd0,2)mypool/ROOT/myfs@version и т. Д., Ваша фактическая загрузка будет не такой, как вы ожидаете. Так что не делай этого.

1
ответ дан 3 August 2019 в 17:28

Я просто изобразил его:

grub-install команда была неправильной. --boot-directory потребности быть /boot вместо /rpool/ROOT/ubuntu/boot.

Теперь я сделал grub-install --boot-directory=/boot, удаленный папки начальной загрузки в /rpool/ROOT/ubuntu и /rpool/ROOT/ubuntu/@ и это загружается очень хорошо.

Позвольте мне попытаться объяснить:

/rpool и /rpool/ROOT мои шпульки. Они смонтированы там, таким образом, я могу получить доступ к наборам данных, которые я могу создать в тех пулах, я думаю. Папка /rpool/ROOT/ubuntu является ненужным, это было просто скопировано там при копировании файловой системы с termporary ext4-фс к пулу ZFS. Я удалил его теперь.

Личинка находит файл конфигурации в /boot очень хорошо, потому что это знает ZFS. Это даже находит мои снимки. Это что пути с @ для:

В оболочке личинки я могу использовать (hd0,msdos3)/ROOT/ubuntu или (hd0,msdos3)/ROOT/ubuntu@ для фактической текущей файловой системы, или если у меня есть снимок, названный "версией 1", я могу сказать личинке использовать (hd0,msdos3)/ROOT/ubuntu@version-1. Должно быть то же на командной строке ядра для начальной загрузки со снимком как корневая файловая система как linux /ROOT/ubuntu/boot/vmlinuz-3.13.0-45-generic root=ZFS=rpool/ROOT/ubuntu@version-1 но я еще не попробовал это. Вероятно, должны загрузить предыдущее ядро, если бы оно было обновлено после взятия снимка.

0
ответ дан 3 August 2019 в 17:28

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

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