Я установил 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, это - моя первая попытка сделать это самостоятельно.
Некоторые исправления из моего собственного опыта.
Ваш «rpool» был смонтирован в «/ rpool» автоматически во время создания rpool. Вот почему где-то в процессе настройки вы запускаете zfs set mountpoint=none rpool
, чтобы устранить это поведение. То же самое вы делаете для rpool/ROOT
, чтобы исключить его автоматическое монтирование в / rpool / ROOT, которое вам не нужно.
Фактически, ваш zpool - это «rpool», а «rpool / ROOT» - это набор данных ZFS, а не zpool.
С помощью grub-install
вы можете ссылаться только на текущее дерево каталогов. Вот почему вы даете это --boot-directory=/boot
. Сам скрипт не хочет ничего слышать о ZFS. Но в дальнейшем другие вспомогательные скрипты, включенные в GRUB2, проверит, что там смонтировано, и удостоверится, что grub может получить к нему доступ во время загрузки. Так что, если вы используете самую последнюю версию ZFS, на момент написания этой статьи GRUB2 НЕ распознает ее и откажется устанавливать ее там. Увы!
Вы уверены, что ставите «/» перед «@», и это ВАЖНО, так как вы сами признаете, что это НЕ работает для вас. РЕДАКТИРОВАТЬ: хорошо, это ИСПОЛЬЗУЕТСЯ, но с последним git-кодом это не так.
И, наконец, загрузка снимков не поддерживается, я боюсь. То есть, хотя вы МОЖЕТЕ сказать GRUB использовать что-то вроде (hd0,2)mypool/ROOT/myfs@version
и т. Д., Ваша фактическая загрузка будет не такой, как вы ожидаете. Так что не делай этого.
Я просто изобразил его:
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
но я еще не попробовал это. Вероятно, должны загрузить предыдущее ядро, если бы оно было обновлено после взятия снимка.