Ban đầu khi mới cài Dual Boot Windows (7,8,10) với Arch Linux, do một số lý do khác nhau mà sử dụng MBR (Master Boot Record) thay vì GPT (GUID Partition Table).

Có rất nhiều hạn chế với MBR trong đó là khả năng quản lý được tối đa 2TB dung lượng (tại thời điểm tạo ra MBR thì 2TB là một con số rất lớn); chỉ sử dụng 1 sector để lưu toàn bộ cấu trúc ổ đĩa nên khả năng rủi ro cao, không thể phục hồi nếu có sự cố; tối đa chỉ có tối đa 3 phân vùng Primary và 1 phân vùng Extended. Vì do bị giới hạn số lượng các phân vùng trên đĩa, nên hạn chế số lượng các phân vùng để tổ chức hoặc quản lý dữ liệu.
GPT được tạo ra với mục đích khắc phục các vấn đề trên khi mà MBR không thể đáp ứng được sự phát triển của nền công nghiệp máy tính. GPT hỗ trợ kích thước phân vùng đĩa lên đến 18 EB (Exabyte) hay 1 triệu TB. Mỗi phân vùng GUID (globally unique ID) bao gồm một trường 36 ký tự, được gán liên kết với mỗi phân vùng. Với GPT Disk, Microsoft hỗ trợ lên đến 128 phân vùng trên mỗi đĩa. Trong đó một số phân vùng dành riêng cho Dynamic Disk và hỗ trợ EFI-boot, vì thế chỉ còn lại 124 phân vùng dành cho dữ liệu.
Trở lại với nội dung bài viết, để chuyển sang GPT có khả năng chuyển đổi mà không mất dữ liệu tuy nhiên theo quan điểm cá nhân thì việc này tiềm ẩn nhiều nguy cơ sau này, vì vậy mình quyết định sao lưu lại toàn bộ và chuyển đổi sau đó cài đặt mới toàn bộ để hệ thống hoạt động ổn định, nhân cơ hội tối ưu và dọn dẹp luôn thể. 🙂
Nếu xóa mới đi làm lại từ đầu thì công việc rất dễ dàng (nhớ sao lưu đầy đủ), để chuyển đổi mình khuyên bạn nên dùng Windows và sau khi định dạng xong thì cài luôn Windows rồi tới các hệ điều hành khác.

Chuyển đổi đĩa cừng từ MBR sang GPT với Windows 8

Tiến hành cài đặt Windows 8 như bình thường, khi hiện màn hình lựa chọn ngôn ngữ và định dạng ngôn ngữ thì bạn bấm Shift + F10 để mở cửa sổ Windows Command Prompt. Tiến hành chuyển đổi như sau:

  • Sử dụng phần mềm diskpart
  • Liệt kê ổ đĩa hiện có và chọn nó list disk sau đó chọn ổ cần chuyển đổi, ví dụ select disk 0
  • Dọn dẹp toàn bộ với lệnh clean sau đó chuyển đổi sang GPT bằng convert gpt

Sau đó tiến hành cài đặt bình thường, khi bạn cài GRUB thì nó có thể hoạt động song song với Windows Boot Manager đã được cài với Windows 8 tuy nhiên thứ tự lựa chọn của nó sẽ không như ý bạn. Để sửa, thay đổi chúng, bạn có thể thực hiện dễ dàng với efibootmgr trên Linux.
Xem thông tin về các boot manager hiện có trên máy bạn bằng

$ efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0001,0004,0005,0003
Boot0000* Windows Boot Manager	HD(2,96800,32000,740ff4d3-832a-488d-b08f-d06811560d25)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}..._................
Boot0001* arch_grub	HD(2,96800,32000,740ff4d3-832a-488d-b08f-d06811560d25)File(\EFI\arch_grub\grubx64.efi)
Boot0003* Windows Boot Manager	Vendor(99e275e7-75a0-4b37-a2e6-c5385e6c00cb,)
Boot0004* CD/DVD Drive 	BIOS(3,0,00)..GO..NO........o.T.S.S.T.c.o.r.p. .C.D.D.V.D.W. .S.U.-.2.2.8.F.B....................A...........................>..Gd-.;.A..MQ..L.1.S.H.2.Y.6.F.H.0.2.W.3.D.T. . . . . . ........BO
Boot0005* Hard Drive 	BIOS(2,0,00)..GO..NO........w.S.e.a.g.a.t.e. .B.a.c.k.u.p.+. .B.K. .0.4.1.9....................A.............................D..Gd-.;.A..MQ..L.S.e.a.g.a.t.e. .B.a.c.k.u.p.+. .B.K. .0.4.1.9........BO..NO........s.H.S.P.A. .M.M.C. .S.t.o.r.a.g.e. .2...3.1....................A.............................@..Gd-.;.A..MQ..L.H.S.P.A. .M.M.C. .S.t.o.r.a.g.e. .2...3.1........BO

Thay đổi thứ tự mặc định của các boot manager

Trong trường hợp này tôi sẽ đưa GRUB lên trước.

# efibootmgr -o 1,0,3,4,5

Kết quả như sau:

$ efibootmgr -v
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0000,0003,0004,0005

Sau đó khởi động lại để kiểm tra kết quả.