LINUX.ORG.RU

Как вы загружаете линукс на компьютере с UEFI?

 , , ,


2

2

UKI - Unified Kernel Image (Arch Wiki, Описание).

  1. GRUB 2 332 (69%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. systemd-boot 62 (13%)

    ***********************************************************

  3. UEFI работает в режиме совместимости с BIOS/MBR 56 (12%)

    *****************************************************

  4. rEFInd 31 (6%)

    *****************************

  5. EFI_STUB, без создания UKI 29 (6%)

    ***************************

  6. Не использую линукс на компьютере с UEFI 27 (6%)

    **************************

  7. Использую линукс в контейнере/виртуальной машине без UEFI 14 (3%)

    *************

  8. UKI + systemd-boot 9 (2%)

    ********

  9. EFI_STUB, UKI 8 (2%)

    *******

  10. Свой вариант 8 (2%)

    *******

  11. syslinux 5 (1%)

    ****

  12. elilo 4 (1%)

    ***

  13. UKI + rEFInd 1 (0%)

Всего голосов: 586, всего проголосовавших: 484

★☆

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)

Ответ на: комментарий от amd_amd

А точно у него разбивка MBR? Если «да», то что не так с расширенными разделами?

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

У меня веселее. Когда я впервые ставил себе линукс на комп, мне нужно было его поставить на диск 2 тб. Винда стояла на SSD с MBR разметкой, а свободное место было только на HDD с GPT. Материнка одна из первых уефишных. Про UEFI я тогда вообще не знал. И в итоге получилась такая херня, что Windows грузится через BIOS, а линукс через уефи. Дуалбут сделал костылём(когда уже стал понимать что к чему): прописал в конфиге граба

menuentry "Windows 7" {
exit
exit
}

А в настройках материнки настроил порядок, сначала граб, а потом Windows в legacy режиме.

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

Судя по всему про UEFI, но из его сообщений это вообще не понятно.

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

EFI_STUB, без создания UKI

но без системды и прочей скверны

Блин. Через 50 лет на ЛОРе по-прежнему будут воевать против systemd?

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

EFI_STUB, без создания UKI

принято

Через 50 лет на ЛОРе по-прежнему будут воевать против systemd?

А то!

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

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

Сектанство какое-то, честно говоря. Все эти 512 байт – это адские костыли времен MSDOS. Зачем тащить это говно в 21 веке, когда есть нормальный стандарт без этого дрочева?

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

Предлагаешь 512 байт заменить на объём побольше? А прошивка материнки действительно слишком много на себя берёт. Постепенно начинаю думать, что загрузка на одноплатниках c ARM процессорами сделана даже правильно… Но и не без недостатков конечно, например почти полное отсутствие модульности по оборудованию. Хотелось бы чего-то среднего, не скатываться в полное отсутвие firmware(ARM), но и не bloatware(EFI), и на этом фоне BIOS выглядит очень даже неплохо.

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

Блин. Через 50 лет на ЛОРе по-прежнему будут воевать против systemd?

Не будут, его (systemd) намного раньше выкинут на помойку.

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

когда есть нормальный стандарт

Нормальный стандарт есть с 1981 года. Зачем было придумывать что-то другое, нарушающее разделение зон ответственности между прошивкой и ОС, непонятно.

Вместо 512 байт, есть вариант использовать 4096 т.к. на новых дисках сектор теперь такой, но суть не меняется.

без этого дрочева?

Где дрочево то?

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

Предлагаешь 512 байт заменить на объём побольше?

Я предлагаю избавится от этого дерьма вовсе. И грузить специальные бинарники с обычного раздела, с которым можно по-человечески работать. Собственно, как сделано в UEFI. Причем, этим бинарником может быть какой-нибудь memtest, или GRUB, или сразу ядро операционной системы.

hateWin ★☆
() автор топика
Ответ на: комментарий от firkax

Нормальный стандарт есть с 1981 года. Зачем было придумывать что-то другое, нарушающее разделение зон ответственности между прошивкой и ОС, непонятно.

Это не нормальный стандарт. Это костыль. Во времена 8086, реального режима, 64 килобайт памяти и MSDOS 2.0 этого было достаточно. Сейчас это смотрится нелепо.

Вместо 512 байт, есть вариант использовать 4096

Вместо 512 байт есть вариант использовать обычный раздел и не мучатся со всякими «первичными загрузчиками», которые сами по себе все равно ничего загрузить неспособны. В досовские времена в эти 512 байт помещался код, который мог загрузить DOS. Но уже в девяностые годы народ страдал фигней типа LILO и первограба. Потому что операционные системы стали сложнее и 512 байт перестало хватать. Процесс загрузки превратился в подпирание костылями древнего стандарта. Теперь код из этих 512 байт грузит с первого раздела на диске основную часть загрузчика, которая уже находит и запускает ядро. Получается последовательность фирмварь -> первичный загрузчик -> вторичный загрузчик -> ядро

UEFI позволяет просто выкинуть середину этой последовательности и упростить процесс загрузки.

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

Особенно это актуально в свете того, что Linux – монолитное ядро. Ядро самостоятельно может найти и смонтировать (а при необходимости – и расшифровать) корневой раздел. Зачем ему для этого загрузчик или, тем более, legacy-чехарда с вереницей загрузчиков?

hateWin ★☆
() автор топика
Ответ на: комментарий от Werenter

Как будто это что-то плохое

Вообще-то плохое

hateWin ★☆
() автор топика
Ответ на: комментарий от Werenter

А прошивка материнки действительно слишком много на себя берёт

В каком месте? Эта прошивка в конечном итоге должна обеспечить загрузку OS. Почему прошивка «много на себя берет», если она грузит не код из первых 512 байт диска, а бинарник с FAT32 раздела?

hateWin ★☆
() автор топика
Ответ на: комментарий от mittorn

efi не нужно да. grub нужен чтобы была возможность выбрать старое ядро после обновления на неработающее новое.

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

efi не нужно да. grub нужен чтобы была возможность выбрать старое ядро после обновления на неработающее новое.

Отсутствие граба и наличие UEFI не мешает тебе это сделать.

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

В чём костыльность то?

Вместо 512 байт есть вариант использовать обычный раздел

Раздел - это сущность, определяемая (или не определяемая) операционной системой. Пока операционная система не загрузилась, никаких разделов быть не может.

UEFI позволяет просто выкинуть середину этой последовательности и упростить процесс загрузки.

Прибить гвоздями некий формат таблицы разделов и файловой системы на одном из них. Это плохо. Может я вообще не хочу никакие разделы и файловые системы, у меня с нулевого сектора записано монолитное приложение, а после него идёт кольцевой буфер для записи потока с видеорегистратора например.

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

Может я вообще не хочу никакие разделы и файловые системы, у меня с нулевого сектора записано монолитное приложение

btrfs вроде ещё умеет в таком режиме работать.

Werenter ★★★
()

Такой вопрос может возникнуть когда не загружается. Зачем себя знапрягать, когда надо будет разберусь.

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

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

Честно, вот совсем не выглядит задачей, для которой оптимально брать ПК с x86, под которые UEFI собственно и делался. Если уж уходить в такие крайности, то и MBR в таком кейсе будет мешать: если твоё приложение не влезает в 2МБ — будь добр городить логику предзагрузки и передачи управления куда надо, очень удобно.

SeTSeR
()
Последнее исправление: SeTSeR (всего исправлений: 1)

Без понятия. Как манжара установилась - так и работает. grub присутствует.

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

Честно, вот совсем не выглядит задачей, для которой оптимально брать ПК с x86, под которые UEFI собственно и делался.

Это не «UEFI делался под такой ПК», а производители усердно пытаются «такой ПК» навязать, уничтожить изначальную свободу платформы и прибить везде всё гвоздями. В ряде мест уже получилось.

Если уж уходить в такие крайности, то и MBR в таком кейсе будет мешать: если твоё приложение не влезает в 2МБ — будь добр городить логику предзагрузки и передачи управления куда надо, очень удобно.

Эм, MBR - это всего лишь первый сектор диска. В нём может быть (а может и не быть) таблица разделов (причём как в DOS-формате с 4 элементами так и в любом другом несовместимом, например BSD label), и линуксовый fdisk традиционно при создании таблицы разделов по умолчанию создаёт первый раздел на 1мб от начала диска. А где 2мб я не знаю.

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

Это не «UEFI делался под такой ПК», а производители усердно пытаются «такой ПК» навязать, уничтожить изначальную свободу платформы и прибить везде всё гвоздями. В ряде мест уже получилось.

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

Эм, MBR - это всего лишь первый сектор диска. В нём может быть (а может и не быть) таблица разделов (причём как в DOS-формате с 4 элементами так и в любом другом несовместимом, например BSD label), и линуксовый fdisk традиционно при создании таблицы разделов по умолчанию создаёт первый раздел на 1мб от начала диска.

Так и что в итоге делать-то автору монолитного приложения, которое в этот самый первый сектор не влезает? Не писать такого приложения? А как же «свобода»?

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

которое в этот самый первый сектор не влезает

А зачем ему влезать? BIOS загружает определённый адрес на диске, и оттуда начинает выполнение машинного кода последовательно. Код совсем не обязан оканчиваться на 512 байтах и может продолжаться дальше, разве нет?

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

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

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

Что ты несёшь? Зачем ему влезать в 512? Ему передали управление - на первый сектор, дальше оно само разбирается что делать дальше. Очевидно, подгрузит остальные секторы своего кода. Но подгрузит оттуда, откуда удобно автору приложения (например, читая со 2 сектора диска и дальше), а не по навязанной схеме от прошивки материнки (GPT + раздел + FAT32 + файлы в нём).

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

Режим работы проца вообще не имеет к этому всему отношения. Какой нужно такой и поставишь.

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

В чём костыльность то?

В том, что бутсектор изначально был полноценным загрузчиком и мог сразу грузить DOS. Теперь в этом нет никакого смысла. В 512 байт не влезает код, загружающий ядро современной операционной системы. Бутсектор – ненужный промежуточный этап. Проще научить прошивку работать с FAT32 и грузить оттуда исполняемые файлы. Исполняемым файлом может быть что угодно. Хоть сразу ядро, хоть refind, хоть утилита типа мемтеста. Раньше, чтобы загрузить тот же мемтест, нужно было переписать MBR, затолкать на флешку граб и оттуда уже запускать memtest. Теперь достаточно скопировать бинарник на раздел, отформатированный в FAT32. Согласись, что второе гораздо изящней и практичней, чем возня с грабом и MBR.

hateWin ★☆
() автор топика
Ответ на: комментарий от firkax

Раздел - это сущность, определяемая (или не определяемая) операционной системой

«это гуманитарные ярлыки» (с) – ты

Любая программа, которая может прочитать таблицу разделов, сможет с этой сущностью работать. Особенно, если туда добавить драйвер файловой системы. FAT32 используется потому, что для работы с ней нужно очень мало кода. А сложная FS для esp и не нужна.

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

Проще научить прошивку работать с FAT32

Почему FAT32 а не UFS2? Почему GPT а не BSD label? Или почему оно не поддерживает файловую систему без таблицы разделов? Почему не поддерживает образ ядра без таблицы разделов и файловой системы? Да и повторюсь - прошивка не должна лезть в структуру диска.

Раньше, чтобы загрузить тот же мемтест, нужно было переписать MBR, затолкать на флешку граб и оттуда уже запускать memtest

Не понял. Если у тебя есть флешка с мемтестом то переписывать ничего уже не нужно, просто запускаешься с неё и всё. И заталкивать туда grub тоже не нужно. Если у тебя флешки нет и ты хочешь установить мемтест рядом с системой на жёсткий диск, то надо только положить тот же исполняемый файл мемтеста в нужную директорию (и fat32 тоже подойдёт, но не обязательно) и прописать его в grub.cfg.

Согласись, что второе гораздо изящней и практичней, чем возня с грабом и MBR.

Никакой возни нет, см. выше. Единственная разница так это то, что у grub-а нет автодетекта списка исполняемых файлов и он берёт этот список из конфига. Ну, я думаю это не недоработка а идеологический выбор его авторов. Впрочем, никто тебе не мешает дописать в него функционал запуска чего угодно из /boot без предварительного добавления в конфиг. Или взять другой загрузчик, пусть даже реализующий интерфейс UEFI (т.е. ищущий тот самый FAT32 раздел и запускающий с него ядра), и записать его в бутсектор и рядом.

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

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

Нет, это не гуманитарные ярлыки, а самая суть. Разделами руководит ОС, а в схеме с UEFI ей прямо таки навязывается сверху формат хранения данных на диске.

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

Почему FAT32 а не UFS2?

Добавь в любую опенсорную реализацию UEFI драйвер UFS2. Только не обижайся если тебя спросят: «Ты наркоман штоле, сцуко?» FAT32 выбрана не просто так. Она простая. А для esp никакие продвинутые функции ненужны. Нужна просто компактная реализация абстракции файла.

hateWin ★☆
() автор топика
Ответ на: комментарий от firkax

Почему GPT а не BSD label?

Насколько я понимаю, bsd label – это костыль поверх mbr, придуманный во времена, когда BSD начали запускать на x86. GPT выбрана потому, что она проще и универсальней. Серьезно, Haiku или винде нахрен не упала специфика BSD label. Все равно, сложная разметка в любой нормальной операционной системе создается аналогом LVM. Или файловой системой типа btrfs, HAMMER2 или ZFS.

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

Не понял. Если у тебя есть флешка с мемтестом то переписывать ничего уже не нужно, просто запускаешься с неё и всё. И заталкивать туда grub тоже не нужно.

Нету у меня никакой флешки с мемтестом. Мне нужно ее создать. Для UEFI достаточно положить туда бинарник (если флешка уже отформатирована в FAT32). А для legacy BIOS нужно мучатся с грабом и MBR

hateWin ★☆
() автор топика
Ответ на: комментарий от firkax

Да и повторюсь - прошивка не должна лезть в структуру диска.

Если руководствоваться твоей логикой, то legacy bios тоже туда лезет. Для загрузки с классическим биосом нужен либо бутсектор, либо специальный раздел в GPT, который будет имитировать бутсектор.

hateWin ★☆
() автор топика
Ответ на: комментарий от firkax

Разделами руководит ОС, а в схеме с UEFI ей прямо таки навязывается сверху формат хранения данных на диске.

С твоей логикой классический биос тоже навязывает формат хранения данных.

hateWin ★☆
() автор топика

Я про этот UKI читал и не понял накой ляд он нужОн. Ну образы эти в один файл сливает, которые как единый файл грузятся…

Грузиться без systemd-boot/grub можно так:

efibootmgr --create --disk /dev/sdX --part Y --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=block_device_identifier rw initrd=\initramfs-linux.img'

А этот UKI просто все файлы в один сливает… Зачем? Это место не экономит же

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

UKI нужен для ненужного Secure Boot, чтобы потом этот UKI подписывать. Следовательно, нужное только для ненужно - не нужно.

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

Ну, у тебя теперь один файл, а не два. Для изменения параметров ядра достаточно пересобрать образ.

hateWin ★☆
() автор топика

Интересно при помощи какого шаманского бубна чел, проголосовавший за syslinux смог подружить его с efi.

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

Лазить по дискам ей не положено

Лол. А legacy bios не лазит по дискам и систему грузит святой дух? Серьезно, твои возражения про «не положено лазить по дискам» звучат как «женщине не положено выходить из дому без хиджаба», или как «в субботу работать нельзя». Такой же уровень аргументации.

hateWin ★☆
() автор топика
Ответ на: комментарий от sunny1983

Интересно при помощи какого шаманского бубна чел, проголосовавший за syslinux смог подружить его с efi

syslinux давно умеет работать с UEFI. Я когда-то использовал его, пока не перешел на systemd-boot.

hateWin ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.