В дополнение к тому, что предлагает uther, можно также попытаться загрузить Windows непосредственно от GRUB. Вы используете GRUB 0.97 (т.е. Личинка 'наследие'), так попробуйте это:
chainload (hd0,0)+1
Это загрузит первый сектор (+1
) из первого раздела (,0
) из первого HD (hd0
). Ваше расположение раздела может отличаться. Нажмите Tab несколько раз после ввода вводной круглой скобки ((
) чтобы получить список Ваших разделов и выбрать тот, Вам нужно.
Первый сектор раздела Windows является своим загрузчиком, и chainload
способ, которым GRUB обычно загружает Windows.
Если это работает, и Вы добираетесь до Windows, необходимо сделать, как uther предполагает: откройтесь оболочка (Запустите Выполнение → … → тип cmd
Войдите), затем перепишите Windows MBR с bootsect /nt60 SYS /mbr
. Это должно мешать GRUB работать на начальной загрузке.
GRUB не должен загружать целое ядро в память. Изображение ядра разделяется на две части:
Загрузчик только загружает код ядра реального режима, который в свою очередь загружается, остальные (смотрите на go_to_protected_mode()
в arch/x86/boot/pm.c
). Это - то, как процесс может остаться в рамках ограничений памяти выполнения в реальном режиме.
Маленькое примечание: GRUB может работать и в реальном режиме и в защищенном режиме, в зависимости от того, что он делает. Это может переключиться в защищенный режим для некоторых вещей (некоторое аппаратное обнаружение и изображение меню). Вы правы, однако, в размышлении, что это находится в реальном режиме, когда это поражает ядро.
Это можно сделать в реальном режим с помощью функции BIOS int 0x15, 0x87. GDT должен быть заполнен соответствующим образом для источника и назначения. cx
- количество байтов для перемещения.
push edx
push es
xor ax, ax
mov es, ax
mov ah, 0x87
mov si, gdt
int 0x15
jc error
pop es
pop edx
ret
gdt:
times 16 db 0
dw 0xffff ; segment limit
.src:
dw 0
db 2
db 0x93 ; data access rights
dw 0
dw 0xffff ; segment limit
.dest:
dw 0
db 0x10 ; load protected-mode kernel to 100000h
db 0x93 ; data access rights
dw 0
times 16 db 0
error:
/boot
файловая система, прежде чем это загрузит initrd (и даже большая часть из себя!). Вы знакомы с ядром, не могущим получить доступ к корневому устройству. Когда-нибудь услышанный о ядре, не могущем загрузить initrd? Думайте об этом снова. – Hauke Laging 14.05.2013, 13:26/boot
прежде чем это загрузит initrd - initrd предоставляется ядру загрузчиком (и загрузчик обрабатывает файловую систему). Находите ли Вы, что это имеет "мало смысла" или не не важно его правдивости. Если Вы ожидаете, что я прокомментирую некоторую определенную часть boot.txt, обеспечьте раздел. – Chris Down 14.05.2013, 13:48