netch80: (Default)
[personal profile] netch80
Как сделать установку нового диска в десктоп незабываемой от полного непонимания, что вообще творится и на каком свете находишься? Надо всего лишь просочетать несколько факторов:

1. Если диск не упомянут в пункте "Hard drive BBS priorities" в настройке BIOS, то та его не отдаёт в I/O через int 13h. В результате GRUB не может его увидеть.

1б. Первым в списке стоял тот диск, с которого не загружаются ;(

2. Простых надёжных способов собрать grub.cfg под новые условия (смена корневого раздела) нет, а замена UUID редактором не позволяет подсказать, что надо было ещё добавить "insmod part_gpt" (на старом такого не было).

3. На диске с GPT но без "BIOS boot partition" GRUB ставит свой core.img урезанным и неверно работающим. Но чтобы понять, что не так, его родной документации не хватает, там связь замолчана.

4. Если GRUB не нашёл по указанным UUID и пути типа (hd1,msdos5) раздела со своими модулями и конфигами, он хватает первый попавшийся, который нашёл.

4б. При этом он ещё перезаписывает UUID в параметрах загрузки, чтобы совсем уже никто не догадался.

5. Спросить, по какому пути GRUB прошёл и прочитал свои конфиги, откуда грузил модули - невозможно.

6. На то, загрузит ли BIOS внешнюю флэшку, если она была вставлена до перезагрузки, влияет погода на Марсе. Если нет - пункт в boot menu есть, но молча игнорируется.

Таки взлетел. Выдыхаю:)
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Date: 2022-01-08 05:31 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
За что боролись, называется. И вот оно было надо? У тебя загрузочный диск больше 4GB, что создаёт трудности с MBR?

Date: 2022-01-08 05:58 pm (UTC)
From: [identity profile] edo-rus.livejournal.com
0. а почему не efi?
по мне это куда более прямой способ загрузки: весь загрузчик ОС лежит в файлах, а не размазан по MBR и неразмеченному пространству, нет int 13h с ограничением на размер дисков (тот же nvme без option rom редкий bios через int 13h отдаёт), запускается сразу из x64.

вообще где-то 16-битный режим кроме бутлоадера сейчас используется? не удивлюсь, если его поддержку скоро выкинут из процессоров )

3. ЕМНИП у меня в такой конфигурации grub вообще не ставился.

4б. не понял, это как? сам бутлоадер (а не его утилиты) перезаписывал файлы конфигов?

6. обычно есть какая-нибудь горячая кнопка для boot menu.
Edited Date: 2022-01-08 05:59 pm (UTC)

Date: 2022-01-08 06:26 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
Я, конечно, имел в виду 2TB - ограничение MBR. В смысле, почему не использовать старый давным-давно отлаженный код для работы с MBR?

Date: 2022-01-08 06:50 pm (UTC)
From: [personal profile] muwlgr
Однажды напишу в жж/дв о своём способе создания гибридных загрузочных флэшек (съёмных дисков), одинаково хорошо работающих и под старым bios, и под uefi. Общий принцип в том, что если установить grub-pc, прогнать grub-install на новое устройство и затем снести grub-pc и поставить grub-efi , то код grub-pc на bios-устройстве сохранится.
Сейчас только отмечу, что когда я устанавливал новый диск в десктопную мамку, я сразу создавал на нём второй mbr-раздел с нижней границей 1024*63*16==1032192 512-байтных секторов, и затем первый mbr-раздел с типом ef от дозволенной нижней границы (обычно 2048) до следующей дозволенной верхней (обычно 1032192-1).
Также добавлю, что таблица разделов gpt нужна только для дисков объёмом 2.5 ТБ или больше, т.е. где число 512-байтных секторов превышает 2**32-1 . Ну или если этот фиксированный или съёмный диск не предполагается использовать на bios/mbr-системах вообще никогда в будущем.
И в заключении отмечу, что использование Linux LVM2 значительно упрощает перенос всех существующих файловых систем на новый диск или диски через pvmove.
Edited Date: 2022-01-08 07:01 pm (UTC)

Date: 2022-01-08 07:32 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
Пункты 2,3,4,4б это проблемы кода загрузчика в части работы с GPT. Остальное - проблемы кода BIOS.

Date: 2022-01-08 07:34 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
Если устройство не загрузочное, ему вообще не нужны таблицы MBR/GPT. Как минимум под FreeBSD его в зависимости от задач можно целиком отдать под ZFS, или под GRAID, или под disklabel - в общем, под любой менеджер томов с 64-битной адресацией.

Date: 2022-01-08 07:58 pm (UTC)
From: [identity profile] edo-rus.livejournal.com

Обычно таки ставится. На лаптопе вот:

эээ… я что-то потерял нить, при чём тут листинг efi-раздела?
я говорил, что grub-legacy на диске с gpt у меня безальтернативно требовал специальный раздел, о котором вы сами же пишете

дальше он хочет "BIOS boot partition", куда и записывает продолжение (полный толстый собранный под эту загрузку core.img)

Date: 2022-01-08 08:24 pm (UTC)
From: [identity profile] edo-rus.livejournal.com

Я, конечно, имел в виду 2TB - ограничение MBR

так диски больше 2ТБ уже есть, и массово (во всяком случае у меня в хозяйстве уже достаточно машин, на которых просто нет накопителей меньше 2ТБ). проще везде использовать gpt, чем метаться между gpt и mbr.

пока к gpt у меня только одна претензия: в случае виртуалок при расширении диска приходится делать дополнительное телодвижение для исправления копии таблицы разделов, лежащей в конце диска.

Date: 2022-01-08 09:11 pm (UTC)
From: [personal profile] permeakra
Все-таки, диск с системой (и, следовательно, загрузочный) - это, как правило, SSD не более 2TB, даже если в системе есть HDD большого объема. Поэтому скорее нет смысла пытаться использовать GPT без острой необходимости.

Date: 2022-01-08 09:59 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
Я не очень вообще понимаю, что ты имеешь в виду под старым/новым диском, потому что про это ни слова в посте нету, а телепатировать мне не хочется.

Ты хочешь сказать, что проблема 2 в GRUB есть как и с MBR, так и с GPT?

Проблема 3 это четкая проблема с кодом, почему-то фряха всю жизнь обходится без установки чего-либо в нераспределенную область, а ставит boot2 или zfsboot в область своего слайса.

Date: 2022-01-08 10:02 pm (UTC)
From: [identity profile] edo-rus.livejournal.com

Все-таки, диск с системой (и, следовательно, загрузочный) - это, как правило, SSD не более 2TB

раз (https://www.hetzner.com/dedicated-rootserver/ax101/configurator#/)
два (https://www.hetzner.com/dedicated-rootserver/sx64/configurator#/)

притом в первую конфигурацию ещё можно добавить диски меньше 2ТБ (но зачем?), во вторую же уже нельзя.

и да, локальные машины с ssd больше 2ТБ у меня тоже есть, вот пример с ещё не пущенной в прод:

root@debian:~# lsblk -d
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme2n1 259:0    0   3.5T  0 disk 
nvme0n1 259:1    0   3.5T  0 disk 
nvme1n1 259:7    0   3.5T  0 disk 


P. S. предвижу возражение «ну это сервера, для десктопов это всё неактуально».
но зачем умножать сущности? тем более, что для десктопов это пока не очень актуально.

Edited Date: 2022-01-08 10:03 pm (UTC)

Date: 2022-01-08 10:08 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
При этом минусов у GPT тоже хватает и на практике (а не в теории) они перевешивают теоретические плюсы. На практике extended-разделы MBR не нужны вообще, вместо этого можно и нужно обходиться менеджерами томов внутри единственного MBR-раздела (в ZFS встроенный, ещё есть disklabel/bsdlabel, ну и в линуксах своё). Проблемы выравнивания просто не существует, это вопрос качества кода и дефолтов софта для создания разделов. Проблемы "CHS-адресации" уже много лет как не существует на практике, никого не колышит "противоречие CHS" и вообще эмуляция CHS давно не нужна. На практике ограниченность типов разделов чисто теоретическая, реально никого не колышат конфликты, потому что все валидируют содержимое раздела, и GPT эту валидацию не отменяет. UUID-адресация вероятно хороша, но вынос её на уровень пользователя/админа это полный идиотизм, такие идентификаторы не должны юзера колебать от слова никак, на то есть номера от 1 до 4 в MBR и метки в GPT. Нумерация от 1 до 4 - ни разу не проблемная, а если кому-то она создаёт проблемы, то наверное ему нужно подумать о смене профессии :-)

Date: 2022-01-08 10:23 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
Если на сервере, подобном тем, что по ссылке, нет и нельзя добавить пару небольших SSD для загрузки операционки, то я делаю так в случае FreeBSD: средствами менеджера GRAID создаю из N больших дисков один массив из N+1 тома.

Первый том это мелкое зеркало, занимающее первые 8-10 гигабайт каждого из дисков, в нулевом секторе создаю MBR с единственным разделом, покрывающим весь этот зеркальный том, на разделе операционная система в виде небольшого отдельного пула ZFS (можно и UFS при желании). Для системы этот раздел виден в качестве устройства /dev/raid/r0. GRAID обеспечивает тупое поблочное программное зеркалирование этого тома, автоматически зеркалируются загрузчики всех уровней, бесплатно.

Оставшееся пространство каждого диска GRAID представляет в виде индивидуальных (SINGLE) томов /dev/raid/r1, ..., /dev/raid/rN и они отдаются ZFS под второй основной пул RAIDZ или RAIDZ2.

GPT на таком сервере просто низачем не нужен.
Edited Date: 2022-01-08 10:23 pm (UTC)

Date: 2022-01-08 10:34 pm (UTC)
From: [identity profile] edo-rus.livejournal.com

При этом минусов у GPT тоже хватает и на практике (а не в теории) они перевешивают теоретические плюсы.

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

Date: 2022-01-08 11:04 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
> Ну или руками исправить автогенерированный конфиг.

И это, типа, не проблема в коде?

> Поищи по истории, когда /boot/boot0 был не 512 байт, а 1024. (Мог называться boot0ext.) Это было долго.

В релизах всегда был рабочий 512-байтный boot0, а кроме того, для серверов boot0 вообще опционален и стандартного mbr для сервера с одной операционкой может быть достаточно. Что там экспериментального случалось в девелоперских ветках, я в то время не следил.

> потеря 7.5KB на каждый раздел

Ох, ну и потеря. Там гораздо больше оверхед найдется в любой файловой системе, просто несравнимо.


> У тебя там нет возможности сделать универсальный читатель всего.

И не нужно на практике. Всё, что должен сделать код в MBR это прочитать "бутсектор" раздела с абстрактной операционной системой и передать ему управление. Код из этого первого сектора конкретной операционки уже умеет грузить свою операционку, универсальный читатель просто низачем не нужен.

> ты ограничен возможностью грузиться этим механизмом только с primary.

И загрузочные расширенные разделы на практике тоже не нужны. Они вообще не нужны, даже незагрузочные :-)

> GRUB'у пофиг, он грузит любой раздел. Я ему выделил 128MB, он создал образ на ~33MB, зато впихнул все модули, какие нужны, вплоть до framebuffer.

И эти люди попрекают семью с половиной килобайтами, пусть даже умноженными на 8!

> Ты можешь сделать какой-то другой тип FS загрузочной? Не можешь.

И не надо. boot0 прекрасно работает с дуалбутом с виндой, и с Win9x работал, и с XP работает, и с Win8.1 работает. Просто читает бутсектор произвольного раздела произвольной операционки и запускает его. Безо всяких GPT.

Date: 2022-01-08 11:14 pm (UTC)
dadv: (Default)
From: [personal profile] dadv
> не хочет такие схемы применять?

Против "нихачю" ничего нельзя сделать, увы.

> А если кому dualboot нужен?

Четыре primary-раздела в MBR достаточны для dualboot нынче. И были достаточны во времена WinXP. У меня по старой памяти десктоп с фряхой/Win8.1, всё работает с двумя разделами в MBR и ещё два свободных, можно было бы Linux добавить при необходимости, был бы triple boot.

> Всё это периодически где-то взрывается.

Уже много-много лет ничего взорваться тут не может, LBA есть везде.

> Воткнул я новый диск и сижу теперь такой красивый переписываю ada1->ada2 и так далее?

Разумеется нет, уже много лет как (как минимум с 8.0) всё монтируется по меткам типа /dev/ufs/root в случае UFS, а ZFS вообще сама.

> Кстати, во фре уже полечили, что если диск/раздел становится виден по id/метке, то он не виден по классической схеме (в стиле /dev/ada1s2)?

Это не бага, это фича :-) :-) Если используешь метки, то старая схема низачем не нужна.

> отвергая всё новое

Не новое, а бестолковое. Новья-то полно.
Page 1 of 5 << [1] [2] [3] [4] [5] >>
Page generated Jan. 14th, 2026 04:47 am
Powered by Dreamwidth Studios