Tôi đã cố gắng đưa ra một cách dễ dàng hơn để cài đặt khởi động kép Windows và Linux trên máy tính xách tay của tôi, không nhất thiết phải theo thứ tự đó. Những gì chúng ta thường phải làm là cài đặt Windows trước, sau đó cài đặt linux và cho phép GRUB xử lý Windows.
Vì vậy, những gì tôi đang cố gắng đạt được là tìm cách vượt qua quá trình cài đặt (cửa sổ) phiền phức đó và chỉ cần sử dụng một hình ảnh để sao chép trực tiếp vào ổ đĩa của tôi. Điều này cũng sẽ cho phép tôi giữ lại trình quản lý khởi động (GRUB) của mình. (không phải là tôi không thể khôi phục nó sau đó, nhưng chính sách của Microsoft là độc quyền, trong trường hợp này phủ nhận sự tồn tại của các trình quản lý khởi động khác trong hệ thống).
Trước tiên tôi đã có được một bản sao hợp pháp của Windows 8.1, sau đó tiến hành cài đặt nó trên máy ảo bằng VirtualBox. Sau đó, tôi đã tạo một phân vùng NTFS trên ổ cứng được phân vùng GPT của mình và sao chép nội dung của phân vùng Windows từ hình ảnh .vdi sang phân vùng mới được tạo.
Tất nhiên, nó chưa hoạt động. Tôi không biết cách thay thế bootmgr. Nó cho
File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.
bởi vì nó không thể tìm thấy tệp đó từ phân vùng khác được sử dụng để khởi động, khôi phục hệ thống, v.v.
Bây giờ, tôi đã đọc rằng bootmgr cuối cùng thực thi winload.exe để khởi động Windows. Tôi không biết phải làm gì tiếp theo.
Tôi cho rằng nó nên hoạt động trên lý thuyết vì tôi có tất cả các tệp cần thiết để chạy Windows. Tôi cũng nghĩ rằng tôi không nên là người duy nhất nghĩ về điều này, và do đó tôi có thể đang thiếu một cái gì đó rất cơ bản ở đây. Có lẽ nó đã được thực hiện?
Tôi có ít ý tưởng làm thế nào khởi động hoạt động. Điều tôi quản lý để hiểu là khi bạn khởi động kép Windows và Linux, bạn xâu chuỗi bộ tải khởi động windows sang linux. Vì vậy, những gì tôi đang cố gắng để đạt được là bằng cách nào đó thoát khỏi bộ tải khởi động Windows.
BIÊN TẬP
Tôi đã xem xét các tập tin nhị phân bootmgr
và \Boot\BCD
. bootmgr
đọc tệp BCD và liệt kê các tùy chọn của bạn, trong đó bạn có thể chọn để khởi động.
Vì vậy, thông tin như thực thi winload.exe
nằm trong tệp BCD. Bây giờ, tôi nghĩ rằng bootmgr
chính nó được thực thi bởi syslinux bằng cách sử dụng chain.c32
mô-đun. Những gì tôi đang cố gắng là bằng cách nào đó thực thi bộ tải khởi động windows, tức là winload.exe
trực tiếp từ syslinux (nếu có thể) hoặc sửa đổi bootmgr
để nó winload.exe
tự thực thi (đường dẫn của nó sẽ trực tiếp trong bootmgr
tệp thực thi) mà không cần tìm BCD hoặc bất cứ thứ gì khác.
Ngủ đông (yêu cầu một quy trình khác) không liên quan đến tôi ở bước này.
Chỉnh sửa câu hỏi của bạn để cho chúng tôi biết loại phần sụn và (nếu EFI) xem bạn đã bật Mô-đun hỗ trợ tương thích trong cài đặt phần sụn
Phần sụn của tôi là EFI (đã bật CSM) và tôi thường khởi động vào Arch Linux bằng GRUB. Tôi đã phát hiện ra rằng bootmgr
thực thi System32\winload.exe
trên các hệ thống cũ và System32\winload.efi
trên EFI.
Tôi có 0.0
ý tưởng về những gì để làm từ đây. Trong 10 ngày qua, tôi đã cố gắng thay đổi BCD và tôi nghĩ rằng tôi sắp đạt được thành công. Nhưng điều đó không liên quan, bởi vì điều tôi thực sự muốn làm là bỏ qua Windows Boot Manager hoàn toàn.
Nếu bạn có bất kỳ ý tưởng nào cho dù có cách nào để thực thi điều đó winload.efi
từ trình bao EFI (chỉ là phỏng đoán) hoặc một số sửa đổi khác cho GRUB để nó sẽ khởi động Windows ở chế độ EFI mà không cần bộ tải chuỗi.
Bất kỳ lời khuyên đều được chào đón.
Phụ lục
Sau bài viết diễn đàn có thể cung cấp một số cái nhìn sâu sắc hữu ích:
http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/
1.
Grub4dos ngay bây giờ có thể tải chuỗi bộ tải khởi động (như NTLDR hoặc BOOTMGR) vì nó có thể hoạt động như một sự thay thế mã chứa trong bộ khởi động "bình thường" (nghĩa là 300 byte mã máy).
Mã này chỉ cần đặt một vài tham số và sau đó gọi trình nạp.
Ngay cả điều đó là (không) dễ dàng để hiểu và sao chép với các mã khác nhau.
Trình tải hệ thống NT như BOOTMGR có ít nhiều trong một hệ điều hành .exe một chế độ "chế độ thực" (không hoàn toàn không giống với DOS) và các phương tiện / công cụ để phân tích cả văn bản đơn giản và tổ ong Registry, đó không phải là thứ có thể tái tạo viết từ đầu dễ dàng.
Những người tốt @ReactOS đang làm việc để viết FREELDR (nhằm mục đích thay thế cho NTLDR đơn giản hơn nhiều) kể từ NĂM (và tôi tin rằng có một số lập trình viên ReactOS thực sự giỏi và giỏi về nó).
Có vẻ như (nhưng không được ghi lại rõ ràng) rằng họ đã quản lý để khởi động thử nghiệm một Máy chủ 2003 với NTLDR.
2.
Với việc giới thiệu hỗ trợ cho (U) EFI, BootMgr giúp trừu tượng hóa sự khác biệt giữa BIOS và (U) EFI. Ví dụ, đây là hai chuỗi:
BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows 64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> Windows
WinLoad mong muốn có một môi trường nhất định (bao gồm API). BootMgr đảm nhiệm việc này, vì vậy [gần như] cùng một chương trình WinLoad sẽ hoạt động trong cả hai môi trường.
Trên thực tế, (U) EFI định nghĩa một phương thức lưu trữ và tìm nạp các tham số khởi động, do đó BCD của BootMgr bao gồm cùng một mục đích, bất kể EFI của BIOS / (U).
Nhưng ngoài sự khác biệt về BIOS và (U) EFI, BootMgr cho phép bạn thực hiện "lựa chọn khởi động", trong khi WinLoad khởi động một hệ điều hành cụ thể mà nó biết cách khởi động.
Tùy thuộc vào mức độ môi trường mà WinLoad dự kiến sẽ có mặt, có thể gọi WinLoad trực tiếp. Wimboot của Michael Brown gọi trực tiếp BootMgr PE [1], do đó, nó có thể gọi trực tiếp WinLoad, ngoại trừ WinLoad có thể muốn có nhiều môi trường hơn. Bạn có thể thử nó!
[1] Không nên nhầm lẫn với BootMgr mà GRUB4DOS và Syslinux 'chain.c32 có thể gọi. BootMgr đó bao gồm một sơ khai biết cách gọi BootMgr PE nhúng.
setup
tiện ích của phần sụn chưa .