Я хотел бы спросить, если GRUB переключает процессор в защищенный режим во время загрузки или это делает ядро Linux. И еще я хотел бы спросить - само ядро (vmlinuz) - ELF или это простой двоичный формат? Спасибо.
GRUB выдает в защищенном режиме.
Спецификация мультизагрузки GRUB (версия 0.6.96) Раздел 3.2 сообщает вам
'CR0' Бит 31 (PG) должен быть очищен.Бит 0 (PE) должен быть установлен.Все остальные биты не определены.
'CR0'
Бит 31 (PG) должен быть очищен.Бит 0 (PE) должен быть установлен.Все остальные биты не определены.
И Отображение регистра CR0 говорит вам, что система должна находиться в защищенном режиме.
Linux не является мультизагрузкойЯдро и не полагается на какой-либо загрузчик для переключения в PM, он следует Linux Boot Protocol .Но linux сам переключает защищенный режим и не использует в загрузчике
check: http://lxr.linux.no/#linux+v2.6.39/arch/x86/boot/main.c
Здесь он вызывает go_to_protected_mode();, когда затем вызывает protected_mode_jump (), который затем делает CR0 вещи (устанавливает бит 0)
go_to_protected_mode();
protected_mode_jump ()
CR0
(другой бит говорит, что подкачка отключена)
РЕДАКТИРОВАТЬ
То, что я могу понять, эточто GRUB может обнаруживать загрузочный протокол Linux (GRUB2, и устаревшее должно также) и загружает Linux в память, но не не переключается в защищенный режим.Посмотрите эту ссылку: http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux и раздел 16 этой страницы.
Согласно http://www.moses.uklinux.net/patches/lki-1.html ядро Linux представляет собой двоичный файл ELF. Я уверен, что Linux переключается в защищенный режим, а не загрузчик. Эта страница согласна: http://oss.sgi.com/LDP/HOWTO/Kernel-HOWTO/linux_boot_process.html