LINUX.ORG.RU

GRUB на диске полностью под BTRFS

 , ,


1

2

Несколько лет поставил систему на диск с BTRFS, без MBR/GPT, сейчас переношу систему на новый диск и больше grub на такие диски вставать не хочет, при чем и переустанавливаться на старый диск тоже:

# grub-install /dev/nvme0n1 
Выполняется установка для платформы i386-pc.
grub-install: предупреждение: данный core.img необычно большого размера. Он не влезет во встраиваемую область.
grub-install: ошибка: файловая система «btrfs» не поддерживает списки блоков.

Диск форматировал так же, как и старый: mkfs.btrfs /dev/nvme0n1

★★★★

Я проклят. Которая тема подряд, сразу после создания нахожу ответ и не важно, сколько до этого страдал. Грубу надо скормить -grub-setup=/bin/true, что бы он подавился своим core.img с multiboot, и нормально поставил загрузчик

https://wiki.archlinux.org/index.php/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

тут написано, что в таком случае он только собирает образ, но не устанавливает. Ты уверен, что при этом загрузчик нормально установится?

Einstok_Fair ★★☆ ()
Ответ на: комментарий от SR_team

раньше же влезал? Или я что-то путаю?

У меня нет уверенности, что он раньше влезал:

current GRUB documentation discourages the practice of installing to a Linux filesystem and deems that method «fragile». Whether it is any more fragile than installing to the no-man's-land between the MBR and the beginning of the first partition is open to debate. It is well known that several programs write data that area, and currently the GRUB developers are forced to include ad-hoc workarounds in GRUB code whenever a new such program is discovered. The basic problem seems to be that ext* filesystems do not provide for a fixed location for boot code (other than the filesystem boot block, which is inadequate) and thus GRUB uses a simple block list, but cannot ensure that those blocks will remain unchanged. This is in contrast to, say, NTFS filesystems, whose bootcode is accessed via fixed-location pointers and files.

https://superuser.com/a/443798

Если я правильно перевёл этот фрагмент, то установить можно на NTFS-раздел.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от SR_team

я нашел какой-то гайд

https://github.com/alberthdev/alberthdev-misc/wiki/Installing-GRUB2-to-a-Partition

сейчас попробую его прочитать.

Вот ещё бага интересная:

https://bugzilla.redhat.com/show_bug.cgi?id=748071

grub2 fails to install in the btrfs bootloader area, apparetnly thinkng that it needs to resort to blocklists when there in fact is 64KB space available for use by the bootloader (double that of the DOS MBR unmanaged space).
Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

grub 2.04. форматнул старый диск. гиг не размечено для жирного кор, и почти 120гб под Бут - не лезет. Все ext он видит как ext2 и вставать не хочет (я точно помню, что ставил раньше Бут на ext2 без проблем), на fat тоже не хочет, на бтрфс плюет ошибку из ОП. Устанавливается только если директория с бутом на другом диске, но его он не видит при загрузке

SR_team ★★★★ ()
Последнее исправление: SR_team (всего исправлений: 1)
Ответ на: комментарий от SR_team

Вот ещё статья-записки:
http://www.dolda2000.com/~fredrik/doc/grub2
В ней нет решения проблемы (установки grub2 на btrfs), но статья хороша.

А какой текст у твоей ошибки в английской локали?
LANG=«C» grub-install /dev/sda1

возможно это помогло бы поиску такого текста в интернете.

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 2)

Пара записей в трекере Ubuntu:
https://bugs.launchpad.net/ubuntu/ source/grub-installer/ bug/1266195

The --force flag will fail on XFS and Btrfs.


https://bugs.launchpad.net/ubuntu/ source/grub2/ bug/1059827

3) BTRFS: KO on 11.04 (Bugs #782543 , #781010 , #774217) KO on 11.10 (Bug #885264 , #881342 , #879109 , #873392 , #842247 , #813259 , #800840) KO on 12.04 (Bugs #990558 , #988848 , #953559 , #945449 , #928128 , #917212 ), KO on 12.10 (Bug #1045178) ---> not a regression, unless we show it worked with a previous version of GRUB.

Einstok_Fair ★★☆ ()

вот запись в официальном багтрекере grub:
https://savannah.gnu.org/bugs/?func=detailitem&item_id=47760
bug #47760: grub-pc: GRUB fails to install to USB-stick with BTRFS filesystem

Но она не про нашу ошибку.

Вот ещё другие записи про btrfs:
https://savannah.gnu.org/search/?Search=Поиск&words=btrfs&type_of_sea...

Среди них я не нашел нужной.

Про формат btrfs на диске:
https://btrfs.wiki.kernel.org/index.php/On-disk_Format

The primary superblock is located at 0x1 0000 (64 KiB)

проблема известная:
https://wiki.archlinux.org/index.php/Btrfs_(Русский)
Надо либо уменьшить размер core.img
либо увеличить отступ у суперблока btrfs

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 5)

Пара гайдов от Gentoo:

https://wiki.gentoo.org/wiki/Btrfs/System_Root_Guide

https://wiki.gentoo.org/wiki/Btrfs/Native_System_Root_Guide

второй особенно хорош своей целью: использовать зеркало от BTRFS, и обойтись без mdadm (хотя если подумать, то mdadm всё-таки лучше, но думать сейчас - не наша цель, наша цель поставить Grub2 на BTRFS).

Чтобы уменьшить размер core.img можно использовать тот факт, что их можно сделать два: один для внедрения, а второй расположить в файловой системе и использовать тот факт, что его можно грузить как ядро.

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

Спасибо за помощь, а наверно до этого коммента еще спать ушел. В общем переразметил диск, создал отдельный раздел под бут и установил EFI-загрузчик вместо нормального. Все работает, почему больше не получает отдать весь диск btrfs и поставить на него груб не знаю. BTRFS версии 5.6 и старай инсталяция груба на старом диске работала, пока я не попробовал переустановить груб на нем.

SR_team ★★★★ ()
Ответ на: комментарий от SR_team

по-моему, нормальный это когда uefi прозрачно сам находит исполняемый файл(ядро) на обычном разделе(чё там думать? фигачь гигабайт лол), и не нужно хрупких извращений с прописыванием каких-то там загрузчиков в какие-то там специальные места, которые как раз очень ограничены размером и которые затрёт венда

anonymous ()
Ответ на: комментарий от anonymous

по-моему, нормальный это когда uefi прозрачно сам находит исполняемый файл(ядро)

Я грубу на биосе тоже в ручную диски не указывал

чё там думать? фигачь гигабайт лол

Именно так и сделал, Но гигабайт это много, хватило бы и 350мб, правда хз на долго ли

которые затрёт венда

Нет винды, так что проблема мне не знакома

SR_team ★★★★ ()