%20%D0%B2%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5%20x86%20%D1%81%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%BE%D0%BC%20bzImage.png)
Используя HEX-просмотрщик, я смотрю на vmlinuz Linux kernel 3.14.28 в архитектуре X86, которая находится в формате bzImage. Загрузочный сектор файла выглядит так:
Он определяет два раздела: раздел 1 с файловой системой Ext2 размером 18,9 ГБ, который является активным, и расширенный раздел без логических разделов внутри. Означает ли это, что ядро Linux предполагает, что пользователь создал эти два раздела в своей системе? Почему ядро Linux определило эти два раздела?
решение1
Этот блок данных в основном является реликтом тех дней, когда Linux загружался с дискет и не нуждался в загрузчике. Это действительно загрузочный сектор, но реальный код режима x86 при выполнении просто говорит: "Используйте загрузчик. Извлеките диск и нажмите любую клавишу для перезагрузки".
Данные в конце не являются таблицей разделов, но пространство в конце использовалось для передачи таких настроек, как режим VGA, корневое устройство и некоторые флаги ядру. Если вы изучите значения немного внимательнее, вы увидите, что они не имеют смысла как таблица разделов.
Однако загрузочный блок все еще имеет некоторое значение, поэтому я и сказал выше "в основном". Начало файла тщательно продумано, чтобы также выглядеть как приложение UEFI, что позволяет ядру функционировать как собственный загрузчик. Файл начинается с магической строки MZ (как и DOS .exe) и содержит заголовок PE/COFF.