Niedawno natknąłem się na ntldr
moduł GRUB .
Najwyraźniej jedną z rzeczy, których można użyć, jest alternatywa chainloader
dla rozruchu wersji Windows NT> = 6.0, jak w poniższym przykładzie. (Bardzo przydatny, jeśli rekord rozruchowy woluminu dla partycji Windows jest uszkodzony.)
menuentry "Windows 7 (bootmgr on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
ntldr ($root)/bootmgr
}
Gdzie mogę dowiedzieć się więcej o tym, jak korzystać z tej dyrektywy rozruchowej? Nie widziałem go na liście, kiedy spojrzał w wersji HTML z podręcznika GNU GRUB .
Odpowiadanie na odpowiedź ckhan
Dziękuję Ci bardzo! W zasadzie zdecydowałem, że będę musiał przekopać się przez kod źródłowy, aby dowiedzieć się więcej o ntldr
poleceniu / module GRUB . Ale wykonałeś dużo lepszą robotę niż ja.
Nigdy nie przyszło mi do głowy, aby przejrzeć archiwa e-mail, aby zobaczyć, jakie dyskusje na temat projektu mogła mieć osoba, która napisała kod. Ta metoda wydaje się być bardzo pomocna w przyszłości. Dzięki, że o tym wspomniałeś.
Moje przemyślenia na temat ntldr
wsparcia GRUB
- Chociaż nie jestem pewien, ile znaczy to rozróżnienie,
ntldr
to moduł, a nie polecenie. A może dynamicznie ładowane polecenie, jeśli chcesz.
Podążając za linkiem do kodu źródłowego i patrząc na linie 152 (GRUB_MOD_INIT
) i 159 (GRUB_MOD_FINI
) możesz zobaczyć kod do załadowania i ... Zgaduję ... rozładuj moduł.
GRUB najwyraźniej implementuje wiele funkcji, które możesz uważać za „ komendy ” jako moduły. Jedyną różnicą w użyciu, o której wiem, jest to, że przed użyciem modułu należy upewnić się, że został załadowany polecenieminsmod ntldr
.
Poza tym: zawsze zastanawiałem się, dlaczego GRUB nie obsługujereboot
. Okazuje się, że polecenie istnieje, ale jest to moduł. Jeślireboot
wróciunknown command
, toinsmod reboot
pozwala GRUB-owi „zapamiętać”reboot
polecenie.
Poza tym: kiedy i dlaczego GRUB może „ rozładować ” moduł, nie mam jeszcze pojęcia. Może to wynik czegoś podobnego do „ wywozu śmieci ”? Zauważyłem, że po załadowaniu moduły wydają się utrzymywać, nawet po wyłączeniu i ponownym uruchomieniu systemu. Oczywiście nie możesz na tym polegać , ale wydaje się, że tak często działa w praktyce. - Interesujące jest to, że opiera się
ntldr
nachainloader
. Nie spojrzałem nachainloader.c
kod. Wydaje mi się, że prawdopodobnie przenosi obciążenie w 16-bitowym trybie rzeczywistym Intel ?
Ja jestem raczej zadowolony, że nie realizowaćntldr
jako opcjąchainloader
. Zgadzam się z Vladimirem. Niezależnie od podobieństw pod okładkami, składnia użycia jest zupełnie inna. Obecne podejście jest mniej nieprzyzwoite. - Interesujący jest również widoczny brak entuzjazmu do dodawania tego polecenia do GRUB-a. Najwyraźniej programiści GRUB uznali, że uszkodzenie rekordu rozruchowego partycji systemu Windows (PBR) jest niezwykle mało prawdopodobne. Mogę jednak naszkicować, jak to zrobić podczas zwykłej instalacji.
Zacznij od założenia, że użytkownik ma zainstalowany system Windows w swoim systemie. Teraz instalują Ubuntu (12.04 LTS) „ obok ” systemu Windows. W pewnym momencie instalacji Ubuntu mogą najwyraźniej zdecydować, gdzie chcą zainstalować GRUB. Z powodów, których nie mogę się domyślić, niektórzy z nich decydują się zainstalować GRUB na partycji, na której jest zainstalowany system Windows.
Instalacja jest zakończona i mogą z powodzeniem uruchomić Ubuntu. Jednak gdy próbują uruchomić system Windows, wybierając pozycję w menu GRUB, system Windows nie uruchamia się. Czy zamiast próby uruchomienia systemu Windows za pomocą GRUB, po prostu ponownie wyświetla menu GRUB?
Dlaczego? Cóż, najwyraźniej kiedy zdecydowali się zainstalować GRUB na partycji Windows część tego, co faktycznie się wydarzyło, PBR dla partycji Windows został nadpisany przez PBR GRUB. Więcchainloader +1
nie ładuje łańcucha bootloadera Windows, ale zamiast tego ładuje GRUB.
IMO, najbezpieczniejszym szybkim sposobem, aby pozwolić użytkownikowi na uruchomienie systemu Windows w takiej sytuacji, jest użycie nowego GRUB-antldr
. Zastanawiam się, czy byłoby to interesujące dla programistów. Oczekuję, że nie przewidzieli tego scenariusza.
Zastanawiam się, jakie programy ładujące inne niż Windows ntldr
i bootmgr
GRUBntldr
polecenie może być w stanie załadować?