Próbowałem wymyślić łatwiejszy sposób instalowania podwójnego uruchamiania systemu Windows i Linux na moim laptopie, niekoniecznie w tej kolejności. Na ogół musimy najpierw zainstalować system Windows, a następnie zainstalować system Linux i umożliwić GRUB-owi obsługę systemu Windows.
Więc staram się znaleźć sposób na ominięcie tego nieznośnego procesu instalacji (Windows) i po prostu użyć obrazu, aby bezpośrednio skopiować na mój dysk. Pozwoliłoby mi to również zachować mojego menedżera rozruchu (GRUB). (nie że nie mogę go później przywrócić, ale polityka firmy Microsoft polega na monopolizacji, w tym przypadku zaprzeczając istnieniu innych menedżerów rozruchu w systemie).
Najpierw uzyskałem legalną kopię systemu Windows 8.1, a następnie zainstalowałem ją na maszynie wirtualnej za pomocą VirtualBox. Następnie utworzyłem partycję NTFS na dysku twardym z partycjami GPT i skopiowałem zawartość partycji Windows z obrazu .vdi na nowo utworzoną partycję.
Oczywiście to jeszcze nie działa. Nie wiem jak zastąpić bootmgr. To daje
File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.
ponieważ nie może znaleźć tego pliku z innej partycji, która jest używana do uruchamiania, odzyskiwania systemu itp.
Teraz przeczytałem, że bootmgr ostatecznie uruchamia program winload.exe, aby uruchomić system Windows. Nie mam pojęcia, co dalej robić.
Uważam, że powinien działać teoretycznie, ponieważ mam wszystkie pliki wymagane do uruchomienia systemu Windows. Uważam też, że nie powinienem być jedynym, który o tym pomyślał, dlatego może mi brakować czegoś bardzo podstawowego. Może to już zrobione?
Nie mam pojęcia, jak działa uruchamianie. Zrozumiałem, że kiedy uruchamiasz podwójnie system Windows i Linux, łączysz program ładujący Windows z Linuksem. Staram się w jakiś sposób pozbyć się bootloadera Windows.
EDYTOWAĆ
Patrzyłem na pliki binarne bootmgr
i \Boot\BCD
. bootmgr
odczytuje plik BCD i wyświetla listę opcji, spośród których możesz wybrać rozruch.
Informacje takie jak wykonanie winload.exe
znajdują się w pliku BCD. Teraz myślę, że bootmgr
sam jest wykonywany przez syslinux przy użyciu chain.c32
modułu. To, co próbuję zrobić, to jakoś uruchomić bootloader systemu Windows, tj. winload.exe
Bezpośrednio z syslinux (jeśli to możliwe), lub zmodyfikować bootmgr
tak, aby uruchamiał się winload.exe
sam (którego ścieżka będzie bezpośrednio w bootmgr
pliku wykonywalnym) bez szukania BCD lub czegokolwiek innego.
Hibernacja (która wymaga innej procedury) nie ma dla mnie znaczenia na tym etapie.
Edytuj swoje pytanie, aby poinformować nas o rodzaju oprogramowania układowego i (jeśli EFI), czy włączyłeś moduł wsparcia zgodności w ustawieniach oprogramowania układowego
Moje oprogramowanie to EFI (z włączonym CSM) i zwykle uruchamiam Arch Arch przy użyciu GRUB-a. Odkryłem, że bootmgr
działa System32\winload.exe
na starszych systemach i System32\winload.efi
na EFI.
Mam 0.0
pomysł na to, co robić stąd. Przez ostatnie 10 dni próbowałem wprowadzić zmiany w BCD i myślę, że wkrótce osiągnę sukces. Ale to nie ma znaczenia, ponieważ tak naprawdę chcę to całkowicie ominąć Menedżera rozruchu systemu Windows.
Jeśli masz jakiś pomysł, czy istnieje sposób na wykonanie tego winload.efi
z powłoki EFI (tylko zgadnij), lub jakiejś innej modyfikacji GRUB-a, aby uruchomił Windows w trybie EFI bez modułu ładującego.
Wszelkie porady są mile widziane.
Uzupełnienie
Następujące posty na forum mogą dostarczyć użytecznych informacji:
http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/
1.
Grub4dos może teraz ładować program ładujący (np. NTLDR lub BOOTMGR), ponieważ może działać jako zamiennik kodu zawartego w „normalnym” sektorze rozruchowym (tj. Około 300 bajtów kodu maszynowego).
Ten kod po prostu ustawia kilka parametrów, a następnie wywołuje moduł ładujący.
Nawet to (było) wcale nie było łatwe do zrozumienia i powielenia z innym kodem.
Program ładujący systemu NT, taki jak BOOTMGR, ma mniej więcej w jednym .exe system operacyjny „w trybie rzeczywistym” (nie do końca w przeciwieństwie do DOS) oraz narzędzia / narzędzia do analizowania zarówno zwykłego tekstu, jak i gałęzi rejestru, nie można tego ponownie łatwo napisane od podstaw.
Dobrzy ludzie @ReactOS pracują nad napisaniem FREELDR (który ma być zamiennikiem znacznie prostszego NTLDR) od YEARS (i wierzcie mi, że wśród programistów ReactOS są naprawdę dobrzy i dobrzy w tym chłopaki).
To wydaje się (ale nie jest to udokumentowane wyraźnie), że udało im się uruchomić doświadczalnie Server 2003 z NTLDR.
2)
Dzięki wprowadzeniu obsługi (U) EFI, BootMgr pomaga wyodrębnić różnicę między BIOS a (U) EFI. Na przykład tutaj są dwie sekwencje:
BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows 64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> Windows
WinLoad oczekuje obecności określonego środowiska (w tym API). Zajmuje się tym BootMgr, więc [prawie] ten sam program WinLoad będzie działał w każdym środowisku.
W rzeczywistości (U) EFI definiuje metodę przechowywania i pobierania parametrów rozruchowych, więc BCD BootMgr obejmuje ten sam cel, niezależnie od BIOS / (U) EFI.
Ale poza różnicami BIOS i (U) EFI, BootMgr pozwala dokonać „wyboru rozruchu”, podczas gdy WinLoad uruchamia określony system operacyjny, który wie, jak się uruchomić.
W zależności od tego, jakie środowisko oczekuje WinLoad, może być możliwe bezpośrednie wywołanie WinLoad. Wimboot Michaela Browna wywołuje bezpośrednio BootMgr PE [1], aby mógł bezpośrednio wywołać WinLoad, z tym wyjątkiem, że WinLoad prawdopodobnie chce więcej środowiska. Możesz spróbować!
[1] Nie mylić z BootMgr, który mogą wywoływać GRUB4DOS i Syslinux 'chain.c32. Ten program BootMgr zawiera kod pośredniczący, który wie, jak wywołać osadzony program BootMgr PE.
setup
narzędziu oprogramowania układowego .