Pull to refresh

Comments 73

Скажите често, это кого-то интересует в 2022 году? А то я прямо целый проект убил на эту тему, потому что спроса больше нет.

Если для Вас эта информация бесполезна, значит и другим не нужна? Странная у Вас логика.

Видимо вы неправильно поняли мой комментарий. Мне искренне интересно, есть ли все еще спрос на эту тему. Я посвятил ей более 25 лет, но просто спроса более не наблюдаю, только в контексте прочтения старых образов. В какой области это сейчас востребовано?

Какой спрос вы ожидаете?
Данная статья очень полезная, раскрыто практически все что нужно плюс даже предлагается реализовать свой загрузчик. Т.е. целевые аудитории этой статьи пересечение двух далеких — девопс, те кому нужно настраивать и устанавливать системы, восстанавливать с помощью загрузчика в нестандартных ситуациях и т.п. (например, как сделать загрузочный диск для рекавери если usb/cdrom не работают но есть второй диск?) и вторая — разработчики и тестириовщики ос (загрузчик), красивый пример — к вам пришел заказчик и сказал хочу загрузчик со… «странным» функционалом, grub/syslinux не подходят (точнее потребуется их модификация) как один из способов защиты данных от несанкционированного доступа в условиях железа с ограниченным функционалом.

p.s. очень жаль что покрыта только x86 архитектура, все чаще приходится работать с arm (android, rpim,,) и почти наверняка скоро в ходу будут полноценные железки со своими стандартами

Спрос на какую либо тему это, ИМХО, не главный показатель. Взять, к примеру, ролики в топе YouTube с миллионами просмотров при нулевой, лично для меня, ценности. А количество подписчиков на канал с видеоуроками одного хорошего человека, которые мне очень помогли в понимании WPF+MVVM, менее 2000. Спрос на тему в рамках YouTube минимальный, но в определённых кругах очень даже имеется.

и вообще оценивать полезность через популярность это как спрашивать, сколько будет «2+2» через опросы.

Мне интересно. Ибо в парке есть как современные ПК, так и очень древние, типа Пентиум 4 с шиной IDE HDD. И часто нужна универсальная флешка, с которой можно загрузиться на любом компе. А вот найти такой образ весьма непросто.

В такой ситуации лучше завести две флешки. Причём под старье ещё и стоит попытаться найти флешку с U3 — они умели притворяться usb CDROM, что позволяет грузиться на большем числе старых компьютеров. А вторую флешку — обычную, под современные компы.

А как насчёт легендарных Zalman VE-200?

Кушает много (не все порты так умеют), и в ТХ упоминание USB 3.0 (может и некритично).

Вроде бы у VE-200 (самого первого) был всё же USB 2.0

Есть VE-300, работает и от usb 2.0 с обычным hdd

Установить на флешку GRUB2 в режиме BIOS/UEFI, после чего из него запускать дистрибутивы - недостаточно?

В какой области это сейчас востребовано?

То есть в какой? В области установки ОС и/или загрузки livecd.
Что тут изменилось в последнее время? Дистрибутивы всё так же распространяются в виде iso.

импортозамещение -- пилите очечественный аналог Acronis

Уже был. Undisker. Да и сам Acronis изначально российский был.
В свое время успешно зареверсил tib и tibx, но уже охладел к теме.

В свое время успешно зареверсил tib и tibx, но уже охладел к теме.

А есть где почитать про это ваши труды?

В 2022 году это уже никого не интересует, потому что статья вышла, когда он уже кончился.

А в 2023, например, меня интересует. Я многое и сам знал — но далеко не всё.

Ситуация, когда BIOS инициализирует(или нет) UEFI видел многократно. Наоборот не видел никогда. Я бы сказал, что BIOS грузится всегда, после чего передаёт( или нет) управление UEFI.

Например, на Маках нет BIOS.

Статья про х86. Нет биоса на тех, где другие архитектуры?

На Маках x86 тоже нет биоса.

Кроме того, я не заметил, чтобы статья была про x86.

На нет и суда нет. Зачем об этом говорить? Речь идёт про случаи где есть обе системы.

Вы написали двумя комментариями выше:

Я бы сказал, что BIOS грузится всегда, после чего передаёт( или нет) управление UEFI.

Это утверждение неверно. Но говорить о том, что оно неверно, Вы почему-то не хотите.

Во-первых, я не утверждаю что оно истинно. Я не зря написал "Я бы сказал"

Во-вторых, ваша аргументация сводится к утверждению, в моём понимании, -"В архитектурах не поддерживающих систему BIOS, BIOS не загружается, поэтому нельзя утверждать что BIOS загружается всегда". К данной статье оно неприменимо, так как в ней дёт речь об архитектурах, поддерживающих ОБЕ системы.

А вообще, я бы расширил и дополнил вышеприведённый аргумент до вида "В архитектурах не поддерживающих системы BIOS и UEFI, BIOS и UEFI не загружается, поэтому нельзя утверждать что обе они необходимы именно для работы с дисками"

В действительности, все не так, как на самом деле.

BIOS - это собирательное название прошивок x86 систем в том виде, в котором их начала выпускать IBM, т.е. таких, которые стартовали и работали в 16-битном режиме исполнения, имели текстовый или псевдографический интерфейс BIOS Setup, и предоставляли операционной системе интерфейс BIOS Interrupt Call, основанный на программных прерываниях. По мере развития железа и перехода на 32, а затем и 64-битные процессоры 16-битная прошивка стала серьезной обузой, как и устаревший и несовместимый с новыми устройствами интерфейс BIOS IC, и от них начали понемногу избавляться в пользу комбинации из трехфазового Platform Interface (32-битной Pre-EFI Initialization, где происходит тренировка памяти, чтобы перестать исполнять код с SPI flash, 32\64-битной Driver Execution Environment, где происходит вся остальная инициализация железа, и 32\64-битной Boot Device Selection, которая рисует графический Setup, запускает Option ROMы, находит на известных ей ФС загрузчик ОС и передает на него управление). При этом BDS (совместно с DXE) и реализует тот самый Unified Extensible Firmware Interface, который загрузчик ОС затем использует вместо устаревшего BIOS Interrupt Call. Тем не менее, последний все еще поддерживается на многих системах при помощи механизма Compatibility Support Module, который позволяет UEFI-совместимой прошивке публиковать не только свой нативный (32\64-битный) UEFI, но и оставленный для обратной совместимости 16-битный BIOS IC, и сделано это при помощи довольно хитрых трамплинов в старый режим и обратно. Запускается CSM частично в D
XE, частично в BDS, а работает только в BDS (потому что загрузчики ОС работают только там).

Таким образом, из "BIOS запускает UEFI", и "UEFI запускает BIOS" - это бессмысленные выражения. На старых компьютерах 16-битный BIOS имел 16-битный интерфейс IC, и никакого UEFI там не было еще. На новых компьютерах 32-битный PEI запускает 32\64-битный DXE, который запускает 32\64-битный BDS, который имеет либо только 32\64-битный UEFI, либо еще и 16-битный CSM, который эмулирует старый 16-битный IC в достаточной степени, чтобы старые загрузчики запускались.

BIOS IC и UEFI - не единственные интерфейсы между прошивкой и ОС на x86, как и BIOS и PI не единственные способы добраться до них. Вместо BIOS и PI можно использовать coreboot, вместо DXE/BDS/IC/UEFI - напрямую запускать ядро Linux или любой другой ОС. Интерфейс UEFI тоже не обязательно публикуется DXE и BDS, его могут публиковать и другие загрузчики, например, uBoot или TianoCore payload для coreboot.

Короче: BIOS - это собирательное название 16-битного всего, что работало на старых х86-машинах до ОС. UEFI - это интерфейс между прошивкой и ОС, и ничего больше. Прошивка же сама по себе называется "UEFI-совместимой", если на публикует вышеупомянутый интерфейс.

Ситуация, когда BIOS инициализирует(или нет) UEFI видел многократно. Наоборот не видел никогда
Как это определить, не прибегая к дизассемблированию ROM-образа?

Довольно давно на материнских платах Setup работает в графическом режиме и понимает всякую периферию, типа USB-мышек и BT-клавиатур.

На месте писателя BIOS, я бы всё это делал в 32/64-битном режиме. Потому что писать сейчас 16-битный код для UI или драйверов устройств — невообразимая пытка.

ISO-образ в данном контексте – это же образ раздела, а не всего диска, правильно? Если мы захотим скопировать ISO-образ загрузочного DVD посекторно на флешку, то должны его копировать на раздел, а не на устройство?

Посекторное копирование из ISO возможно только на CD/DVD (размер физического сектора 2048 против 512). На флешку просто извлекаются данные (включая загрузочный файл).

Ну никто ж не мешает сектор размером 2048 разместить в четырёх секторах размером 512. Я именно посекторно всегда копировал (может быть, правильнее назвать это побайтным для исключения споров), но каждый раз зависаю перед выбором приёмного устройства – диск или раздел.

Файловая система разная, способ загрузки разный, короче тут конвертация а не копирование на флешку.

Гибридный ISO образ позволяет копировать себя посекторно на флеш-накопитель, так как он содержит таблицу разделов и раздел, с которого будет осуществляться загрузка

<Зануда mode on>
Боюсь путаница с терминологией только усугубилась.

ISO - образ CD/DVD/BD диска с файловой системой ISO-9660 + расширения (RockRidge, Joliet, ElTorito) или UDF (опять же с кусочком совместимости с ISO-9660).

За загрузчика отвечает расширение ElTorito, которое просто указывает на файл, который еще должен быть виден через ISO-9660

Понятие "раздел" имеет смысл только для UDF, где есть таблица разделов на уровне структуры UDF. Классический ISO-9660 не имеет разделов, а запись на диски оперирует понятием "сессия", но это совсем другое.

Гибридный диск (если мы говорим о Hybrid-CD), то это ныне забытый формат CD (и только CD), где аудио-дорожки соседствуют с даннными, но его невозможно сохранить в ISO по определению (можно только BIN, MDF, и т.д.).

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

Обычные утилитки вроде https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool просто-напросто пишут свой boot sector, который умеет искать загрузчик самого Windows в корневом каталоге конкретной файловой системы.

За загрузчика отвечает расширение ElTorito, которое просто указывает на файл, который еще должен быть виден через ISO-9660

Спецификация El Torito не оперирует понятиями файл, она оперирует понятием сектор. В Booting Catalog хранятся LBA для первого сектора, где находится bootloader (для загрузки через BIOS) и LBA первого сектора, где находится образ раздела ESP (для загрузки через UEFI)

Понятие "раздел" имеет смысл только для UDF, где есть таблица разделов на уровне структуры UDF. Классический ISO-9660 не имеет разделов, а запись на диски оперирует понятием "сессия", но это совсем другое.

В UDF (Universal Disk Format) нет таблицы разделов - это файловая система. В моем понимании таблица разделов содержит информацию о том, какие сектора принадлежат конкретному разделу, а на разделе размещается файловая система. Файловая система, может занимать весь диск (блочное устройство), например, на дискете.

Гибридный диск (если мы говорим о Hybrid-CD), то это ныне забытый формат CD (и только CD), где аудио-дорожки соседствуют с даннными, но его невозможно сохранить в ISO по определению (можно только BIN, MDF, и т.д.).

Нет. Мы говорим об образе, который содержит MBR, загрузочный сектор и/или GPT, которые при записи всего образа на флеш-накопитель позволят загрузиться с него.

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

Вот тут я не понял, что Вы имеете ввиду

Обычные утилитки вроде https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool просто-напросто пишут свой boot sector, который умеет искать загрузчик самого Windows в корневом каталоге конкретной файловой системы.

Да. Я это рассматриваю в главе "Ещё один способ создания загрузочного флеш-накопителя в Windows", где это делается обычными командами Windows, но это не имеет никакого отношения к гибридному ISO.

Спецификация El Torito не оперирует понятиями файл, она оперирует понятием сектор. В Booting Catalog хранятся LBA для первого сектора, где находится bootloader (для загрузки через BIOS) и LBA первого сектора, где находится образ раздела ESP (для загрузки через UEFI)

LBA указателю в ElToriro безразлично BIOS его читает или UEFI, главное чтобы LBA был валидным с точки зрения ISO-9660. А содержимое загрузчика стандартом, к счастью, не регламетируется, хотя стандарт и был изначально рассчитан на BIOS.

В UDF (Universal Disk Format) нет таблицы разделов - это файловая система. В моем понимании таблица разделов содержит информацию о том, какие сектора принадлежат конкретному разделу, а на разделе размещается файловая система. Файловая система, может занимать весь диск (блочное устройство), например, на дискете.

Совершенно верно. В UDF 2.5 и выше есть понятие разедлов, но они все до единого технические, ибо тот же стандарт предписывает иметь только один раздел для самих данных.

Нет. Мы говорим об образе, который содержит MBR, загрузочный сектор и/или GPT, которые при записи всего образа на флеш-накопитель позволят загрузиться с него.

Еще раз, образ CD-диска (неважно ISO или UDF) не имеет разделов, не содержит GPT или MBR по структуре, я не понимаю, с чего вы это решили.

Вот тут я не понял, что Вы имеете ввиду

Бинарный образ, на который ссылается ElTorito volume может содержать какой угодно код, и, теоретически, может сам справиться с определение среды, носителя и файловой системы.

Да. Я это рассматриваю в главе "Ещё один способ создания загрузочного флеш-накопителя в Windows", где это делается обычными командами Windows, но это не имеет никакого отношения к гибридному ISO.

Я про это все время вас и спрашиваю: что, конкретно вы, называете "гибридным диском", поскольку ваше понимание с общепринятной терминологией не совпадает.

Еще раз, образ CD-диска (неважно ISO или UDF) не имеет разделов, не содержит GPT или MBR по структуре, я не понимаю, с чего вы это решили.

Гибридный ISO содержит MBR и GPT https://wiki.syslinux.org/wiki/index.php?title=Isohybrid.

$ xxd -l 512 out/bootdisk.iso

$ xxd -l 512 -s 512 out/bootdisk.iso

$ xxd -l 512 -s 1024 out/bootdisk.iso

Наверное моя вина, что не привел в статье, исправлю, добавлю вывод первого сектора в iso файле. Можете такую же комаднду выволнить и посмотреть, что находится в iso популярных Linux дистрибутивов (Ubuntu, Debian и др.) В образах Windows такого нет. Там, как и должно быть первые 16 секторов по 2048 байт содержат 0.

Я про это все время вас и спрашиваю: что, конкретно вы, называете "гибридным диском", поскольку ваше понимание с общепринятной терминологией не совпадает.

Я нигде не у потреблял словосочетание "гибридный диск". https://wiki.syslinux.org/wiki/index.php?title=Isohybrid.

Если Вы имеете ввиду гибридный ISO образ, то он содержит MBR и/или GPT, соответственно, если Вы хотите записать весь на загрузочный флеш-накопитель, то Bам нужно посекторно записывать на диск, а не раздел

Вы не путаете ISO и UDF?

В вопросе я имел в виду ISO просто как формат файла, а не конкретно файловую систему ISO-9660.

Можно ссылку на документацию? MBR/GPT вообще к ISO отношения не имеют.

Форматируется USB под GPT, потом туда извлекаются файлы из ISO - я это и говорил. GPT данных в ISO нет, но есть совместимые в структуре UDF. Более того, UDF можно напрямую монтировать вместе со всеми разделами, даже не меняя ничего.

Давайте так, я суммирую ваше утверждение, а вы мне скажете, правильно я понял, или нет:

  • Стандарт ISO подразумевает начало данных с MSF 2:0:0 или LBA 150. Все предыдущие сектора для дисков данных априори считаются заполненными нулями

  • Ваша идея заключается в том, чтобы в неиспользуемое пространство дописать таблицу разделов, оформить ISO-9660 как отдельный ее раздел и добавить раздел для загрузчика

Т.е. фактически это попытка сделать универсальный формат, наподобие экспериментов с universal executive, где за счет легаси classic MZ-section прописывают заголовки для ELF, и это тоже не 100% корректно. И, опять же, термин Hybrid CD image уже занят на mixed-mode (data+audio), поэтому его использование не совсем корректно.

Технически же я вижу 2 проблемы:

  • Программы для записи ISO на CD/DVD чаще всего игнорируют первые 150 секторов, если они даны в формате ISO, а не BIN. Есть риск потери данных при записи на оптический носитель (если таковая операция, конечно, вообще предусметривается)

  • Секторы, на которых расположен загрузчик, должны быть видны из ISO-9660. Опять же, при записи на носитель такие области данных будут просто проигнорированы, если находятся за пределами LBA прописыных в ISO Volume. Проще всего представить такой загрузчик как файл на уровне файловой системы (как в ElTorito). Если, конечно, раздел не сликом большой и помещается в 2 GB.

    Собственно, это все, что вызвало у меня вопросы.

Примерно так. Только технические проблемы не имеют значения, поскольку это именно hybrid iso. Когда его уже записали — то он или флешка, или диск. И возможность получить hybrid iso обратно из записанного образа уже особо никого не волнует. Используется как раз для разнообразных загрузочных дисков, которые можно в итоге просто залить хоть на CD/DVD, хоть на флешку через dd и загрузиться с неё.

Стандарт ISO подразумевает начало данных с MSF 2:0:0 или LBA 150. Все предыдущие сектора для дисков данных априори считаются заполненными нулями

Нет. Размер блока (сектора) 2048 байт. В стандартном (негибридном ISO) ненули начинаются с LBA 16. Там располагается Primary Volume Descriptor, по LBA 17 располагается Boot Record Volume.

Ваша идея заключается в том, чтобы в неиспользуемое пространство дописать таблицу разделов, оформить ISO-9660 как отдельный ее раздел и добавить раздел для загрузчика

Нет. ISO-9660 и MBR GPT существуют параллельно. В таблице разделов (как и MBR так и GPT) указывается LBA данных, где располагается раздел ESP (для UEFI загрузки), а по LBA 0 - располагается загрузочный сектор (для BIOS загрузки). Размер блока (сектора) 512 байт. Для ISO-9660 - размер блока 2048 байт. В зависимости от того, куда будет производиться запись образа на флешку или на оптический диск, структра будет рассматриваться по-разному.

Программы для записи ISO на CD/DVD чаще всего игнорируют первые 150 секторов, если они даны в формате ISO, а не BIN. Есть риск потери данных при записи на оптический носитель (если таковая операция, конечно, вообще предусметривается)

Про первые 150 секторов не знал, да и я все-таки думаю, что первые 16 секторов по 2048 байт. Но это никак не помешает, так как 0 и следующие за ним сектора, которые содержат MBR/GPT/Boot сектор нужны только для загрузки с флешки.

Секторы, на которых расположен загрузчик, должны быть видны из ISO-9660. Опять же, при записи на носитель такие области данных будут просто проигнорированы, если находятся за пределами LBA прописыных в ISO Volume. Проще всего представить такой загрузчик как файл на уровне файловой системы (как в ElTorito). Если, конечно, раздел не сликом большой и помещается в 2 GB.

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

Я понимаю, что это сложно осмыслить, сам осмысливал достаточно долго, поэтому советую перечитать статью и ссылку, что я Вам давал.

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

В первую очередь – потому что разработали международный стандарт, не привязанный к процессорной архитектуре.

Ну и всякие вещи, связанные, например, с доверенной загрузкой, в схеме BIOS делаются очень криво.

С моей точки зрения очень удобно, что я могу просто скопировать все файлы с установочного диска Windows на флешку и всё — она автоматически становится загрузочной без секса с Rufus, Ventoy и так далее.

Нет не можете. UEFI умеет загружаться с FAT32, который не умеет хранить файлы больше 2 гигабайт. А в инсталляторе винды как раз есть такие файлы.

А вот копирование на NTFS действительно работает. Но только лишь потому что в заголовке NTFS раздела есть загрузчик, который ищет на разделе ntldr. Но это работает только для Legacy и никакого отношения к UEFI не имеет.

Вообще архив в инсталляторе винды можно перепаковать в несколько томов размером до 2 гигабайт. Но это не "просто скопировать файлы".

Только 4 Гб, и тот факт, что MS не могут исправить проблему со слишком большими файлами (особенно с учетом того, что формат WIM поддерживает нативно нарезку на файлы любого размера) и тем, что установщику ОС не нравится наличие EFI-раздела на носителе, с которого происходит установка - результат безалаберного отношения к тому небольшому количеству пользователей, которые устанавливают ОС с нуля, а не получают ее предустановленой при покупке железа.

UEFI тут не при чем, и винить его разработчиков не в чем.

Действительно 4, почему-то 2 в памяти было.

Не виню разработчиков UEFI. Лишь хотел обратить внимание, что рабочий копипаст файлов основан совсем на другом способе загрузки.

Нет не можете. UEFI умеет загружаться с FAT32, который не умеет хранить файлы больше 2 гигабайт. А в инсталляторе винды как раз есть такие файлы.
В прошивках десктопных мамок зачастую есть драйвер для чтения/записи NTFS, поэтому очень даже могу. Это не абстрактные рассуждения, на текущей мамке я именно так и делаю.

Если драйвера нет, его можно внедрить самостоятельно.

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

Встроенный драйвер ntfs все равно является привязкой к вендору. Т.е. не получится создать флешку простым копипастом, что бы она работала везде. А ведь изначально я возразил о том, что UEFI позволяет упростить установку винды. А вот и нет. Не каждая материнка без танцев загрузит инсталлятор с NTFS через UEFI, но каждая загрузит с NTFS в легаси режиме.

легаси режим тоже не идеален

у меня были материнки (и не одна) старые я имею в виду, в которых mbr загрузка с флешки работала только если ее размер не превышает кажется 8Гб (долгое время у меня была 4Гб флешка которую ну все понимали, а вот остальные — лотерея)

Если говорить про гарантии — самый универсальный способ — это cdrom (не usb), вот уж где точно все работало, если есть загрузочный dvd будь спокоен на любой материнке, какая бы старая она не была, если есть ide/sata cd/dvd — все загрузится.
upd. нет была одна материнка, у которой sata cdrom не обнаруживал биос но обнаруживал windows, что то мне говорит это решалось обновлением биоса
Внедрение драйвера ничем не отличается от загрузки через grub например. Вам все равно нужен fat32 раздел, что бы этот драйвер сначала загрузить с него.

Драйвер внедряется прямо в прошивку.

Многие вендоры материнок пихают в прошивку UEFI-драйвер NTFS, поэтому UEFI-загрузка с NTFS-флэшек вполне массовое явление.

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

Потому что очень устали тренировать десятки гигабайт памяти 16-битным кодом с 64кб на страницу и пояснять такому же 16-битному коду на ассемблере, написанному в 1992 году, что у нас теперь диски по 2 терабайта, и переферия вся подключена по USB.

Ко временам чипсета P55 там в 16-битном БИОСе этом творилась такая дикая вакханалия чада и угара, что переход на UEFI Platform Interface (т.е. на PEI/DXE/BDS) в следующем поколении решил огромное количество проблем. При этом некоторые вендоры даже не стали этот самый UEFI публиковать, все равно на тот момент загрузчиков совместимых почти не было, и прошивка продолжала делать вид, что она BIOS, с переменным успехом. Некоторые вендоры потом таки опубликовали новый интерфейс обновлением прошивки, но есть еще модели, в которых это приходится делать разблокировкой скрытых опций. К 2012 году на UEFI PI в качестве базы и UEFI в качестве интерфейса с загрузчиками и ОС ПК-индустрия перешла окончательно, последние сервера HP с БИОСами как раз в конце 2011 и вышли, ЕМНИП.

В общем, зачем - чтобы жить проще стало и не нужно было писать на ассемблере драйверы для USB, PCIe и Thunderbolt, и потому, что вендоры процессоров продавили с одной стороны, в вендоры ОС - с другой. Intel к тому времени над UEFI работал уже 13 лет, и уже лет 5 как поставлял Memory Reference Code в виде 32-битного бинаря, который с 16-битным БИОСом тоже надо было женить при помощи мата и уговоров, поэтому рано или поздно с дохлой лошади наконец слезли, и теперь вот понемногу слезают с CSM, который уже отключен по умолчанию почти на всех платах начиная с 2020 года, а на некоторых его уже нет совсем.

Собравши много компьютеров и починив кучу ноутбуков знакомым, сколько раз ловил проблемы именно из-за уефи. То они вендорлок туда зашили, то оно дисковод не поддерживает... На старых платах все работало как часы (кроме саундкарт, это да)

Пытался осилить man xorriso но не смог. Для создания гибридных загрузочных iso с grub2 подсказали простой способ.

grub-mkrescue -o boot.iso папка_с_файлами

В папке должен быть конфигboot/grub/grub.cfg

В системе должны быть установлены пакеты grub-common grub-pc-bin grub-efi-amd64-bin

cli
xor ax, ax
push ax
pop es
push ax
pop ds
sti

Чтобы аппаратные прерывания не помешали начальной инициализации регистров, используется команда процессора cli.

зачем запрещать прерывания? вы же не ss:sp инициализируете.

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

если бы обработчик прерывания не сохранял регистры, то комп бы завис после первого прерывания.

зачем запрещать прерывания? вы же не ss:sp инициализируете.
Так то инструкции pop ss / mov sp, ax выполняются процессором без прерывания. Разве что вы хотите сохранить совместимость с некоторыми непропатченными моделями процессоров 8086, где установка регистра ss не блокировала прерывания на следующей инструкции.

Дела давно минувших дней. 99,99 процентов аудитории записывают, когда это надо, загрузочные имиджи на флэшки при помощи rufus и глубже в эту теме не погружаются.

99,99 процентов аудитории записывают, когда это надо, загрузочные имиджи на флэшки при помощи rufus

Здесь всё-таки хабр, здесь аудитория не такая! Реальные пацаны записывают загрузочные имиджи на флэшки при помощи dd if=my_image.iso of=/dev/da1 bs=1M

99.99% и программы не пишут, что же теперь, о программировании на хабре не писать?

99,99 процентов
rufus

Смешная шутка. Учитывая то, что изрядная часть целевой аудитории руфуса не может осилить его (записал образ — он не грузится — помогите!).

Очень подробно раскрыта тема загрузчиков и подход к его использованию, если начать писать загрузчик с нуля.

Вы не сталкивались с проектом IPXE? Открытая прошивка для возможности загрузки практически откуда угодно и чего угодно. Как раз готовый загрузчик для практических нужд. Использование и сборку ранее описывали на Habr

Спасибо за идею.

Сам я не сталкивался, но, как я понял из описания, это касается сетевой загрузки операционных систем, что уже ближе профессиональным администраторам. Я написал просто введение в загрузку с оптических дисков и флеш-накопителей.

Sign up to leave a comment.