LinuxForum.Fans
Тема

set 1 bios_grub on на GTP

Автор: Macumazan 12 сообщений 4820 просмотров
#385198

Это опция актуальна? Делал всё по gentoo wiki, загрузка c GPT удалась, при этом диск выгдядит так

text

Partition Table: gpt
Disk Flags: 

Number Start End Size File system Name Flags 1 8000kB 512MB 504MB sda1 bios_grub 2 512MB 1000MB 488MB ext4 sda2 3 1000MB 20.0GB 19.0GB sda3 lvm

На таком же сетапе ставил ubuntu, там диск уже выглядит как

text
Partition Table: gpt

Number Start End Size File system Name Flags 1 4456kB 998MB 994MB ext4 boot 2 998MB 5099GB 5098GB lvm

Т.е. раздел под bios_grub уже не нужен?

#385200
"Macumazan" написал:
Т.е. раздел под bios_grub уже не нужен?

ЕМНИП он нужен только, если загружаешься без EFI и данных MBR'а для загрузки не достаточно.

хотя в этом не уверен...

#385343
Fat-Zer написал:
[quote="Macumazan"]Т.е. раздел под bios_grub уже не нужен?

ЕМНИП он нужен только, если загружаешься без EFI и данных MBR'а для загрузки не достаточно.

хотя в этом не уверен...[/quote]
Вы неправы, этот раздел нужен для того, что бы grub2 записал в него свой код, необходимый для подключения файловой системы, с которой он прочитает свой конфиг.
Если сравнивать grub-0.97 и grub2, то первичный код grub-0.97, необходимый для монтирования корневого для загрузчика раздела (файловой системы), т.е. того места, с которого загрузчик считает свой конфиг и прочие файлы, а так же будет считывать ядро и initramfs, помещается целиком в 466 байт MBR и точно так же поместится и при GPT разметке, а вот код grub2, необходимый для монтирования файловой системы, с которой он прочитает свой конфиг не помещается в эти 466 байт, даже в случае использование GPT, вот поэтому в случае GPT нужно создавать отдельный раздел bios_grub, в который как раз и будет записана вторая часть первичного кода загрузчика, для этого раздела достаточно 2 Мб.

#385370

kostik87, чудится мне, что в объяснении много дыр и оно совсем не сходится с листингами ТС (как я понял, в обоих случаях система рабочая)...
своим исследованием сейчас пока не хочу заниматься, так что контрверсию пока предлагать пока не буду...

#385374

Fat-Zer, какие же дыры вы видите в описании? ТС не уточнил какой загрузчик он использовал при установке Ubuntu. Возможно, там был grub-0.97, первичный код которого целиком помещается в 466 байт mbr, да, в gpt есть копия mbr, вы об этом, надеюсь знаете, либо вообще использовала lilo, весь код которого помещается в 466 байт mbr.

Ну а в случае EFI образ загрузчика вообще лежит на отдельном efi разделе, коего у ТС нет ни в первом ни во втором случае.

#385391
Fat-Zer написал:
kostik87, чудится мне, что в объяснении много дыр и оно совсем не сходится с листингами ТС (как я понял, в обоих случаях система рабочая)...
своим исследованием сейчас пока не хочу заниматься, так что контрверсию пока предлагать пока не буду...

Такие же впечатления. gentoo без bios_grub завелось нормально.

#385392
kostik87 написал:
Fat-Zer, какие же дыры вы видите в описании? ТС не уточнил какой загрузчик он использовал при установке Ubuntu. Возможно, там был grub-0.97, первичный код которого целиком помещается в 466 байт mbr, да, в gpt есть копия mbr, вы об этом, надеюсь знаете, либо вообще использовала lilo, весь код которого помещается в 466 байт mbr.

Ну а в случае EFI образ загрузчика вообще лежит на отдельном efi разделе, коего у ТС нет ни в первом ни во втором случае.

Везде grub2. BIOS.

#385393
Macumazan написал:
[quote=kostik87]Fat-Zer, какие же дыры вы видите в описании? ТС не уточнил какой загрузчик он использовал при установке Ubuntu. Возможно, там был grub-0.97, первичный код которого целиком помещается в 466 байт mbr, да, в gpt есть копия mbr, вы об этом, надеюсь знаете, либо вообще использовала lilo, весь код которого помещается в 466 байт mbr.

Ну а в случае EFI образ загрузчика вообще лежит на отдельном efi разделе, коего у ТС нет ни в первом ни во втором случае.

Везде grub2. BIOS.[/quote]
И там и там GPT? Вы уверены.

Покажите вывод

text

fdisk -l

На одной и второй системе.

Меня интересует именно fdisk.

И это один и тот же ПК или разные, да к тому же на одном BIOS, а на другом UEFI?

#385409
"kostik87" написал:
какие же дыры вы видите в описании?

для начала мне показалось странным утверждение, что «первичный код grub-0.97, …, помещается целиком в 466 байт MBR», а второго груба он почему-то не помещается...

"kostik87" написал:
а вот код grub2, …, даже в случае использование GPT

во-вторых, меня смутило тут «даже»

"kostik87" написал:
вот поэтому в случае GPT нужно создавать отдельный раздел bios_grub

в-третьих, вывод этого рассуждения у меня в уме ни как не вязался с предыдущими утверждениями.

По зрелому размышлению, я конечно понял, что всё это был сумбурный бред дилетанта... Справедливости ради, стоит заметить, что мои рассуждения из первого поста не сильно лучше.

И так, как же всё происходит на самом деле...
Начальная загрузка grub2 от grub1 практически не отличается. (специально для комплектующих: ни что в размере кардинально не увеличивалось).
В первом grub'е порядок был таков:
1. Сначала bios загружает в память stage1 из mbr'а. В нём было прописано расположение stage1.5. Загрузить его первый сектор и передать ему управление это всё на что у stage1 хватало ресурсов
2. stage1.5 располагается в «специальной дисковой области» для mbr таковой являлось пространство между таблицей разделов и самим разделом оно всегда было (~>30к), т.к. первый раздел обязан начинаться на новом цилиндре <fixme>... а со временем разделы стали выравнивать по мегабайтам и места на диске размеченном по «современным канонам там попой кушай»... но с этим были проблемы некоторый нехороший проприетакрный софт пытался использовать эту область под свои нужды...
stage1.5 был размером пару десятков килобайт и уже мог полностью загрузить себя. и оперировать с файлами на уровне ФС. А его единственной задачей является найти на /boot разделе stage2
3. stage2 уже занимается тем что мы видим: отображает менюшечки, красивые картинки, и делает всякие мелочи вроде загрузки ядер...

Но! без stage1.5 можно обойтись: надо только в stage1 прямо прописать первый сектор stage2. Правда тут придётся молится, чтобы файл не сдвинулся в другую область диска на уровне ФС.


Единственное отличие grub2 в загрузке — это модульный «stage2». А «stage1.5» является точной копией «ядра загрузчика» core.img.


Теперь про GPT.
В GPT, вообще говоря, гепа перед первым разделом может не быть, хотя ИРЛ в 99% случаев там есть несколько !сотен! килобайт, помним выравнивание по мегабайтам. Поэтому, чтобы не обременять хомячков лишними знаниями, разработчики grub решили: «всё, теперь обязательно нужен отдельный раздел для stage1.5».
Хотя есть пара альтернативных вариантов:
1. Установка в не размеченную область перед первым разделом и после всей таблицы gpt. (Опасно, как и раньше или даже немного более)
2. установка в пустые записи GPT бред
3. как и раньше, обходится без stage1.5 (проблемы с модификацией на уровне ОС)

Вывод: обойтись без раздела, в принципе, можно, хотя это и не столь надёжно.... вопрос только как заставить груб записать загрузчик так, как нужно нам...
ЗЫ: малость подправил т.к. вчера писал всё это полусонный...

#385413

Это 2 идентичные машины
на 1й
[console]# fdisk -l

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 5099.4 GB, 5099428820992 bytes
255 heads, 63 sectors/track, 619970 cylinders, total 9959821916 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 4456448 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sda1 1 4294967295 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary.

Disk /dev/mapper/RAID6-root: 20.0 GB, 19998441472 bytes
255 heads, 63 sectors/track, 2431 cylinders, total 39059456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 4456448 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/RAID6-root doesn't contain a valid partition table

[/console]

На 2й
[console]
fdisk -l

Disk /dev/sda: 6,6 TiB, 7199193610240 bytes, 14060925020 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 6291456 bytes
Disklabel type: gpt
Disk identifier: 560FBB98-ABF7-4039-83A7-ACE7776374A8
Partition 1 does not start on physical sector boundary.
Partition 2 does not start on physical sector boundary.

Device Start End Size Type
/dev/sda1 7812 1000000 484,5M EFI System
/dev/sda2 1000001 39062500 18,2G Linux LVM


Disk /dev/mapper/vg0-root: 15 GiB, 16106127360 bytes, 31457280 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 6291456 bytes
[/console]

#385503

Macumazan, эмм... не хочу расстраивать, но на втором диске у тебя mbr... и размер lvm'а не такой, как в ппервом посте...
и я бы ещё выровнял разделы хотя бы по 256к, а лучше по 6М...
кстати, это же аппаратный рейд?

#385525

mbr? А как это определить?

Интересен вывод gfdisk о первом разделе.
Убунту

text
Partition number (1-2): 1
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: D4EA737A-9190-4DC0-8200-D5ABE9F502AA
First sector: 8704 (at 4.2 MiB)
Last sector: 1949695 (at 952.0 MiB)
Partition size: 1940992 sectors (947.8 MiB)
Attribute flags: 0000000000000000
Partition name: 'boot'

Генту

text

Partition number (1-2): 1 Partition GUID code: C12A7328-F81F-11D2-BA4B-00A0C93EC93B (EFI System) Partition unique GUID: 66C88E56-C3F5-4333-993F-1139933B8981 First sector: 7812 (at 3.8 MiB) Last sector: 1000000 (at 488.3 MiB) Partition size: 992189 sectors (484.5 MiB) Attribute flags: 0000000000000000 Partition name: 'sda1'

Откуда взялся GUID (EFI System) в генту я ума не приложу. Может, grub-install поправил? Хотя я его ставил с ключом target=i386-pc.

А lvm разный по размеру это не беда. На лету всё меняется в сторону увеличения. А вот про выравнивание: что выравнивание что нет - тесты показали, что на аппаратном рейде оно как-то и не заметно.

Войдите или зарегистрируйтесь, чтобы ответить.