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.
źródło
setup
narzędziu oprogramowania układowego .Odpowiedzi:
Aby odpowiedzieć na twoje pierwotne pytanie, nie. Nie można załadować systemu Windows bez przechodzenia przez jego własny program ładujący (w przypadku instalacji UEFI bootmgfw.efi). Wynika to z faktu, że system Windows oczekuje, że bootmanager tam będzie ORAZ wywołania winload.efi. Jeśli tak się nie stanie, system Windows ulegnie awarii do momentu rozwiązania problemu. Jest wiele przyczyn tego (praktyczne i ignoranckie). Wynika to głównie z faktu, że Microsoft napisał bootmanagera do obsługi wszystkich rzeczy (ładowanie systemu operacyjnego, ładowanie środowiska odzyskiwania, środowisko pseudo pre-os itp.). Jedynym sposobem na osiągnięcie jakiegokolwiek pozoru rozsądku jest łańcuchowe obciążenie za pomocą Grub-efi.
źródło
Musisz dodać moduł ładujący EFI systemu Windows do listy opcji uruchamiania w oprogramowaniu układowym UEFI. W ten sposób będziesz mógł wybrać, czy:
W tym miejscu powinny być również widoczne dodatkowe opcje, takie jak napęd DVD, zewnętrzne dyski twarde lub rozruch sieciowy. Program ładujący UEFI zwykle znajduje się na partycji
\EFI
(/boot/efi/
). Ponieważ właśnie skopiowałeś obraz dysku twardego systemu Windows bez prawidłowej instalacji systemu Windows, partycja EFI bieżącego komputera może nie zawierać odpowiedniego programu ładującego. Dlatego konieczne jestPowinieneś być w stanie wybrać, który system operacyjny ma zostać uruchomiony, po prostu zmieniając kolejność uruchamiania w systemie BIOS. Naciśnięcie przycisku na moim laptopie F12powoduje wyświetlenie menu wyboru programu ładującego.
Do tych kroków użyję
efibootmgr
i wykonam kroki z tego samouczka :Konieczne będzie skopiowanie odpowiedniego pliku
bootmgfw.efi
na partycję EFI w systemie Linux\EFI\Microsoft\Boot\bootmgfw.efi
lub w/boot/efi/Microsoft/Boot/bootmgfw.efi
przypadku korzystania z niego:gdzie
Microsoft
jest folder zawierający oryginalne pliki EFI dla twojej wersji Windows.Następnie musisz dodać
.efi
plik do wpisów rozruchowych UEFI, używając:gdzie oczywiście musisz zmienić
/dev/sda
i-p 1
wprowadzić poprawne wartości dla twojego urządzenia dyskowego i numeru partycji.Uwaga: jeśli masz laptopa Lenovo:
Uruchomienie komputera powinno wtedy pokazać coś takiego (jeśli przytrzymasz odpowiednie klawisze podczas procesu uruchamiania):
i
bcdedit
w systemie Windows pokazuje to:źródło
\EFI\Boot\Microsoft
folderu do przetestowania (jest tam kilka plików)?inherit {bootloadersettings}
naprawdę oznacza sklep BCD?Możesz wykonywać instalacje w dowolnej kolejności, np. Instalując GNU / Linux, a następnie Windows lub vice-verse.
Po zainstalowaniu wszystkich systemów operacyjnych wykonaj następujące czynności.
Pobierz „Boot Repair Disk” stąd. http://sourceforge.net/projects/boot-repair-cd/
Utwórz bootowalny dysk USB na żywo z niego (instrukcje na pendrivelinux.com)
Lub wypal plik ISO na płycie CD.
Uruchom przez to i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie. Będziesz miał ponownie zainstalowany GRUB zawierający wszystkie zainstalowane systemy operacyjne.
Wszystkiego najlepszego.
źródło