GRUB переключается в защищенный режим? - PullRequest
15 голосов
/ 28 января 2011

Я хотел бы спросить, если GRUB переключает процессор в защищенный режим во время загрузки или это делает ядро ​​Linux. И еще я хотел бы спросить - само ядро ​​(vmlinuz) - ELF или это простой двоичный формат? Спасибо.

Ответы [ 2 ]

14 голосов
/ 18 июня 2011

GRUB выдает в защищенном режиме.

Спецификация мультизагрузки GRUB (версия 0.6.96) Раздел 3.2 сообщает вам

'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)

(другой бит говорит, что подкачка отключена)

РЕДАКТИРОВАТЬ

То, что я могу понять, эточто GRUB может обнаруживать загрузочный протокол Linux (GRUB2, и устаревшее должно также) и загружает Linux в память, но не не переключается в защищенный режим.Посмотрите эту ссылку: http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux и раздел 16 этой страницы.

0 голосов
/ 28 января 2011

Согласно http://www.moses.uklinux.net/patches/lki-1.html ядро ​​Linux представляет собой двоичный файл ELF. Я уверен, что Linux переключается в защищенный режим, а не загрузчик. Эта страница согласна: http://oss.sgi.com/LDP/HOWTO/Kernel-HOWTO/linux_boot_process.html

...