Глядя на некоторые источники, я думаю, что grub-bios-setupименно это и является причиной записи в MBR, потому что, если я обнуляю первые 512 байт, а затем повторно запускаю grub-bios-setup, я вижу, что эти байты возвращаются к тому, что они были, прежде чем я обнулил их.
К сожалению, я недостаточно хорошо понимаю код, чтобы полностью понять, что пишется grub-bios-setup.
У меня были некоторые догадки. Я думаю, что часть написанного имеет отношение к boot.img. Действительно, если я сравниваю определенные байты из моего загрузочного сектора, и boot.imgони совпадают (обратите внимание, общее количество прочитанных байтов здесь 440).
У них есть сходство, но они не совсем одинаковы. Первые 104байты различаются, и я не могу понять, что вызывает эту разницу.
Есть ли сопоставимый mbr.binфайл для Grub? Это boot.img? Grub изменяет некоторые из этих байтов? Grub генерирует эти разные байты на лету? Эти байты, сгенерированные Grub, специфичны для каждой системы и уникальны каждый раз, когда Grub пишет их?
Я пытался посмотреть в своей системе, чтобы увидеть, что она использует, но ... я перешел на EFI некоторое время назад.
Ignacio Vazquez-Abrams 6 лет назад
0
1 ответ на вопрос
1
Johan Myréen
Да, boot.imgзаписывается в первые 440 байтов MBR. boot.imgсодержит «Блок параметров BIOS», который содержит данные, которые зависят от системы, в которой он установлен. Эти данные записываются в BPM при установке Grub. Вот исходный код.
Кстати, я бы не стал тратить много времени на GRUB. Этот код, вероятно, не будет работать на новых ПК через пару лет. Intel планирует избавиться от устаревшего режима BIOS к 2020 году.
Спасибо за эту информацию! Когда вы говорите «Эти данные записываются в BPM, когда Grub установлен», вы имеете в виду, что данные BPB извлекаются / записываются во время установки Grub в MBR? Таким образом, выполнение чего-то вроде `grub-install` приводит к тому, что системный BPB и общий` boot.img` объединяются в эти 440 байтов в MBR? Или вы имеете в виду, что BPB записывается, когда двоичные файлы / пакеты Grub установлены в хост-системе?
Will Haley 6 лет назад
0
И я знаю, что EFI - это современный / правильный способ ведения дел, но я не осознавал, что в устаревшем BIOS был какой-то крайний срок. Приятно знать, что дата 2020 года. Спасибо!
Will Haley 6 лет назад
0
Когда Grub установлен, программа установки считывает `boot.img` в память и распаковывает его перед записью на диск как новый MBR. Данные поступают из двух разных источников: BPM и таблица разделов считываются с диска, а некоторые генерируются на лету, например, загрузочный диск (смещение 0x64) и kernel_sector (смещение 0x5c). Даже два байта инструкции заменяются на NOP, если это необходимо. BPM отсутствует в MBR, но соответствующие байты все равно копируются.
Johan Myréen 6 лет назад
0
Intel объявила о крайнем сроке 2020 года в конце 2017 года, но я не задерживаю дыхание. С другой стороны, я считаю, что сброс BIOS - это хорошая вещь в долгосрочной перспективе, поскольку сосуществование как BIOS, так и UEFI вызывает много путаницы.
Johan Myréen 6 лет назад
0