trove1217

New Member
Nếu như bạn chỉ dùng một hệ điều hành thì có lẽ không cần bận tâm đến khái niệm bootloader lắm. Tuy nhiên, mọi việc sẽ trở nên phức tạp khi bạn sử dụng nhiều hệ điều hành, và nhất là cài song song nhiều hệ điều hành trên cùng một máy tính. Do đó, việc tìm hiểu về bootloader sẽ giúp cho bạn làm chủ chiếc máy tính của mình tốt hơn.


Bài viết này sẽ tóm gọn những khái niệm cơ bản nhất về bootloader. Hãy lưu ý rằng nghiên cứu bootloader thực sự rất đau đầu nên bạn sẽ cần sự kiên nhẫn để hiểu những gì mình sẽ trình bày dưới đây. Rất mong sự ủng hộ từ các bạn.


1. Bootloader là gì:
Bootloader (tiếng Việt: bộ nạp khởi động, cái tên đã nói lên tất cả rồi phải không) là chương trình được khởi động đầu tiên khi máy tính của bạn được bật, công dụng của nó là gọi hệ điều hành chỉ định. Nó giống như một hệ điều hành con, quản lí tất cả các hệ điều hành trong máy của bạn và cho phép bạn khởi động vào hệ điều hành bạn cần.

=> Không có bootloader, hệ điều hành sẽ không thể khởi động được.

2. Vị trí đặt bootloader:

Một máy tính có thể được cài nhiều bootloader. Bootloader được đặt ở một trong các vị trí sau đây:


- Đặt trực tiếp trên một đĩa cứng

- Đặt trên một phân vùng của một đĩa cứng

Lưu ý: Tại mỗi vị trí, chỉ có thể đặt được một bootloader tại một thời điểm. Nếu bạn cài bootloader vào vị trí đã được cài trước một bootloader nào đó thì bootloader mới sẽ thay thế bootloader cũ. Khi bạn format hay xóa một phân vùng thì bootloader đặt trên nó sẽ bị mất đi.

3. Máy tính sẽ được khởi động từ bootloader nào?

- Mặc định, máy tính sẽ được khởi động từ đĩa cứng nằm ở vị trí đầu tiên trong BIOS.

- Nếu trên đĩa cứng có bootloader thì bootloader đó sẽ được nạp, tất cả các bootloader của phân vùng sẽ bị bỏ qua.

- Nếu trên đĩa cứng không có bootloader thì:

+ Nếu máy chuẩn Legacy-MBR: Bootloader của phân vùng đã được Set Active sẽ được nạp. Phân vùng được Set Active tất nhiên phải là Primary thì bootloader của nó mới nạp được. Sử dụng các công cụ như MiniTool Partition Wizard để Set Active cho phân vùng.

+ Nếu máy chuẩn UEFI-GPT: Bootloader của phân vùng FAT32 đầu tiên trên đĩa cứng sẽ được nạp.

4. Cài đặt bootloader như thế nào?

Bootloader sẽ tự động được cài đặt khi bạn cài đặt một hệ điều hành nào đó. Ngoài ra, bootloader cũng có thể được cài thủ công bằng những công cụ thông dụng: EasyBCD, Grub Customizer...


CÁC VẤN ĐỀ THÔNG DỤNG VỀ BOOTLOADER
Mối quan hệ giữa bootloader và hệ điều hành trong máy là gì?

Để hệ điều hành trong máy của bạn khởi động, trước tiên, bạn cần có bootloader hỗ trợ boot vào hệ điều hành đó. Thường thì khi cài đặt hệ điều hành, nó sẽ tự cài bootloader phù hợp cho bạn luôn.

Sự ràng buộc với bootloader khi cài song song nhiều hệ điều hành là gì?

Để cài song song nhiều hệ điều hành thì bootloader bạn sử dụng phải hỗ trợ khởi động vào tất cả các hệ điều hành, hay hỗ trợ chuyển hướng tới một bootloader khác mà bootloader đó hỗ trợ hệ điều hành ta cần.

Ví dụ: Trên máy tui có 3 phân vùng A, B, C. Phân vùng A chứa Windows 8, Phân vùng B chứa Windows 7, Phân vùng C chứa Linux. tui muốn dualboot 3 hệ điều hành này thì sẽ làm như sau:


- Tạo bootloader Windows 8 trên phân vùng A, bootloader này sẽ có nhiệm vụ cho phép khởi động vào Windows 8 hay Windows 7.

- Tạo bootloader Grub trên toàn đĩa cứng, bootloader này có nhiệm vụ khởi động vào Linux, hay chuyển hướng tới bootloader Windows 8 đang nằm trên phân vùng A.


Vậy tui có kết quả như sau:


- Khi khởi động, tui sẽ được chuyển tới bootloader GRUB, trên menu GRUB sẽ có 2 tùy chọn:

+ Vào Linux

+ Vào Windows 8 Loader


- Nếu tui vào Windows 8 Loader thì sẽ có 2 tùy chọn tiếp theo:

+ Vào Windows 8

+ Vào Windows 7

Vì sao khi cài song song nhiều hệ điều hành lại phải cài “từ cũ đến mới”?

Việc cài từ cũ đến mới là hoàn toàn đúng, tuy nhiên có nhiều bạn vẫn không hiểu bản chất lý do vì sao phải làm vậy, chỉ biết là làm vậy thì mới khởi động được vào tất cả các hệ điều hành mà thôi!


Thực ra bản chất vấn đề là do Bootloader được cài sẵn khi bạn cài mỗi một hệ điều hành mà thôi! Khi bạn cài một hệ điều hành, thì hệ điều hành đó sẽ cài bootloader cho bạn, sau đó, hệ điều hành sẽ quét và tìm xem trên máy bạn đã được cài sẵn hệ điều hành hay bootloader nào, sao đó cập nhật vào bootloader mới nhất. Do đó, bootloader của hệ điều hành cài sau phải đáp ứng nhu cầu là nhận diện được hết các bootloader cũ và bootloader của hệ điều hành cài trước. Thế nên mới sinh ra cái nguyên tắc cài từ cũ đến mới!


Tuy nhiên, trên thực tế, không nhất thiết phải cài từ cũ đến mới mới có thể dual-boot được. Ví dụ đơn giản: Ubuntu 12.04Windows 8.1 Update 1! Ngay cả khi bạn cài Ubuntu 12.04 sau khi cài Windows 8.1 Update 1, bạn vẫn có thể dual-boot vào cả 2 hệ điều hành! Vì sao? Vì Ubuntu 12.04 mặc định sử dụng Bootloader GRUB 1.99, mà bootloader này thì lại nhận diện thành công bootloader Windows 8.1 Update 1!


Ngay cả khi bootloader ta sử dụng không nhận diện được mọi bootloader và hệ điều hành khác, ta vẫn có thể tự cài một bootloader mới, đáp ứng nhu cầu của chúng ta! Vậy, vấn đề ở đây không phải do hệ điều hành cũ hay mới mà là do bootloader chúng ta sử dụng có hỗ trợ khởi động vào tất cả các hệ điều hành hay không thôi!

=> Vậy ta có thể thấy việc quản lí bootloader có ý nghĩa quan trọng trong việc cài song song 2 hay nhiều hệ điều hành.

Có cần cài bootloader cùng vị trí với phân vùng cài đặt hệ điều hành không?

Câu trả lời là: KHÔNG! Bootloader chỉ có tác dụng nạp hệ điều hành, và hệ điều hành này có thể nằm ở bất kỳ vị trí nào, không phụ thuộc vị trí của bootloader. Ví dụ đơn giản: Cài bootloader lên toàn đĩa cứng. Đó là bootloader Global chứ có thuộc về một phân vùng nào đâu.

Vì sao khi cài Linux xong rồi sau đó cài Windows thì không khởi động được vào Windows?

Mình nghĩ bạn đã đọc từ đầu đến đây rồi thì cũng biết một phần câu trả lời rồi phải không? Không phải do chuyện cũ mới, mà là do bootloader của 2 hệ điều hành mà thôi!


Cụ thể là trong tình huống này, LinuxWindows cài bootloader vào 2 vị trí khác nhau:

- Linux mặc định cài bootloader trên toàn đĩa cứng.

- Windows lại thường cài mặc định bootloader trên một phân vùng gọi là Reserved Partition (hay cài trên chính phân vùng cài đặt), sau đó Set Active cho phân vùng đó.


Và từ đó, chúng ta hiểu ra nguyên nhân vấn đề: Do bạn cài Linux nên Linux đã cài trước một bootloader trên toàn đĩa cứng rồi, như vậy việc tạo boot cho phân vùng và set active phân vùng của Windows không còn ý nghĩa nữa.

Giải pháp: hay là bạn vào Linux cập nhật Bootloader GRUB để nó nhận diện Bootloader Windows mới được cài thêm, hay là nếu bạn thích dùng Windows 8 Loader làm mặc định, thì xóa bootloader trên toàn đĩa cứng đi, tạo một Bootloader GRUB mới trên một phân vùng khác, rồi vào Windows để cập nhật Windows 8 Loader.

Sự tồn tại của Bootloader có liên quan đến sự tồn tại của một hệ điều hành?

Câu trả lời là KHÔNG LIÊN QUAN. Có hệ điều hành ắt phải có bootloader nhưng có bootloader không có nghĩa là có hệ điều hành! Ví dụ rất đơn giản: Bạn cài Linux vào phân vùng A nhưng bootloader lại đặt ở phân vùng B, sau này bạn không thích dùng Linux nữa nên xóa phân vùng A đi thì cái bootloader ở phân vùng B vẫn còn, và lúc này nếu ta boot vào bootloader này thì báo lỗi. Có thể sau này nếu ta cài một bootloader khác thì cái bootloader đó lại nhận diện được bootloader của phân vùng B này, nhiều bạn sẽ lầm tưởng là bản Linux chúng ta xóa đi trước kia vẫn còn, nhưng nó đã bị xóa hoàn toàn, cái bạn nhìn thấy chỉ là bộ nạp khởi động đã được cài vào đó thôi.

Nói chung là chỉ có thực nghiệm mới giúp chúng ta thực sự thấu hiểu về bootloader. Nằm cứng về bootloader sẽ giúp chúng ta quản lí tốt hơn việc khởi động vào các hệ điều hành, và đặc biệt là việc dual-boot trên chuẩn UEFI-GPT mới hiện nay. Thank tất cả đã đọc bài viết này!
 

Swain

New Member
Đây là đối với chuẩn BIOS cũ thôi nhé, với UEFI ta không cần quan tâm đến phân vùng đã active hay không (vì đơn giản là nó không cần active). Trên UEFI khi khởi động nó sẽ tìm đến phân vùng FAT32 (thường là phân vùng đầu tiên của ổ cứng) để khởi động. Từ đó nếu ta biết vận dụng chức năng của phân vùng này thì việc dualboot trên UEFI khá đơn giản
 

fung_kut3

New Member
Đây là đối với chuẩn BIOS cũ thôi nhé, với UEFI ta không cần quan tâm đến phân vùng đã active hay không (vì đơn giản là nó không cần active). Trên UEFI khi khởi động nó sẽ tìm đến phân vùng FAT32 (thường là phân vùng đầu tiên của ổ cứng) để khởi động. Từ đó nếu ta biết vận dụng chức năng của phân vùng này thì việc dualboot trên UEFI khá đơn giản Thank bạn, đã cập nhật vào #1
 

deltaseriea

New Member
thank, đọc bài để có cái nhìn tổng quan hơn

mình có 1 vấn đề thắc mắc trên uefi cài song song windows 8.1 và linux

Grub được cài vào đĩa cứng, theo lý giải thông thường thì bootloader của windows sẽ được chạy sau khi grub chạy, nghĩa là vào grub sẽ có tuỳ chọn để vào win

Trên máy mình đúng là như thế, grub nhận diện được win.

Nhưng ngoài ra, bios lại nhận diện được cả Grub(trên toàn ổ cứng) và Windows bootmanager (trên phân vùng fat32)

Nên trong bios có tuỳ chọn boot cho 2 thằng này.

Tại sao lại như thế nhỉ?
 
Đây là đối với chuẩn BIOS cũ thôi nhé, với UEFI ta không cần quan tâm đến phân vùng đã active hay không (vì đơn giản là nó không cần active). Trên UEFI khi khởi động nó sẽ tìm đến phân vùng FAT32 (thường là phân vùng đầu tiên của ổ cứng) để khởi động. Từ đó nếu ta biết vận dụng chức năng của phân vùng này thì việc dualboot trên UEFI khá đơn giản Chính xác là EFI khi khởi tạo nó đã được Active cũng như MSR khi được tạo cùng với C từ Unallcated nó cũng đã được Active mặc định.



thank, đọc bài để có cái nhìn tổng quan hơn

mình có 1 vấn đề thắc mắc trên uefi cài song song windows 8.1 và linux

Grub được cài vào đĩa cứng, theo lý giải thông thường thì bootloader của windows sẽ được chạy sau khi grub chạy, nghĩa là vào grub sẽ có tuỳ chọn để vào win

Trên máy mình đúng là như thế, grub nhận diện được win.

Nhưng ngoài ra, bios lại nhận diện được cả Grub(trên toàn ổ cứng) và Windows bootmanager (trên phân vùng fat32)

Nên trong bios có tuỳ chọn boot cho 2 thằng này.

Tại sao lại như thế nhỉ? Đó là do cấu tạo của máy EFI (nhưng không phải máy nào cũng thêm được boot loader vào Bios), đưa thêm các Boot Loader vào Bios để tăng tốc khởi động hệ thống. Vì dụ khi ta đưa Windows Boot Manager lên first boot nó sẽ vào ngay Menu boot của windows bỏ qua Linux.
 

lamvietphap

New Member
Đó là do cấu tạo của máy EFI (nhưng không phải máy nào cũng thêm được boot loader vào Bios), đưa thêm các Boot Loader vào Bios để tăng tốc khởi động hệ thống. Vì dụ khi ta đưa Windows Boot Manager lên first boot nó sẽ vào ngay Menu boot của windows bỏ qua Linux. Vậy ra đây cũng là một công dụng nữa của chuẩn boot UEFI-GPT đúng không bạn? Nếu có thêm tuỳ chọn chọn Bootloader trên BIOS thì khả năng tuỳ biến sẽ tăng cao và đương nhiên là có lợi trong việc cài song song rồi Còn trên Legacy-MBR thì BIOS chỉ boot theo mặc định và ta không thể chọn bootloader linh hoạt như vậy được.
 

kid.heavensent

New Member
Vậy ra đây cũng là một công dụng nữa của chuẩn boot UEFI-GPT đúng không bạn? Nếu có thêm tuỳ chọn chọn Bootloader trên BIOS thì khả năng tuỳ biến sẽ tăng cao và đương nhiên là có lợi trong việc cài song song rồi Còn trên Legacy-MBR thì BIOS chỉ boot theo mặc định và ta không thể chọn bootloader linh hoạt như vậy được. OK! Chính vì đang ở giai đoạn giao thời nên máy còn giữ Bios và chúng ta cứ nhầm tưởng UEFI là Bios. Bios chỉ giữ vai trò thiết lập còn boot máy UEFI (đừng hiểu nhầm với boot HĐH) lại tùy thuộc hoàn toàn vào partition EFI boot của HDD. Ngày nay đã có những máy bỏ hẳn Bios. Khi khởi động, máy vào ngay EFI và gọi boot loader và chạy HĐH rút ngắn đáng kể thời gian khởi động.

Bạn đã đầu tư khá kĩ lưỡng cho topic này, đã tham khảo rất nhiều tài liệu để viết bài. Mình không dám đánh giá vì mình cũng là người đang tìm hiểu, chỉ dám nói lời chúc mừng bạn cho một bài viết giá trị
 

mirinda_1410

New Member
OK! Chính vì đang ở giai đoạn giao thời nên máy còn giữ Bios và chúng ta cứ nhầm tưởng UEFI là Bios. Bios chỉ giữ vai trò thiết lập còn boot máy UEFI (đừng hiểu nhầm với boot HĐH) lại tùy thuộc hoàn toàn vào partition EFI boot của HDD. Ngày nay đã có những máy bỏ hẳn Bios. Khi khởi động, máy vào ngay EFI và gọi boot loader và chạy HĐH rút ngắn đáng kể thời gian khởi động.

Bạn đã đầu tư khá kĩ lưỡng cho topic này, đã tham khảo rất nhiều tài liệu để viết bài. Mình không dám đánh giá vì mình cũng là người đang tìm hiểu, chỉ dám nói lời chúc mừng bạn cho một bài viết giá trị BIOS ở đây là viết tắt của cụm từ tiếng Anh (Basic Input/Output System) có nghĩa là Hệ thống xuất nhập cơ bản. BIOS nằm bên trong máy tính cá nhân, trên bo mạch chính. BIOS được xem như là chương trình được chạy đầu tiên khi máy tính khởi động. Chức năng chính của BIOS là chuẩn bị cho máy tính để các chương trình phần mềm được lưu trữ trên các thiết bị lưu trữ (chẳng hạn như ổ cứng, đĩa mềm và đĩa CD) có thể được nạp, thực thi và điều khiển máy tính. Quá trình này gọi là khởi động.
 

Frewen

New Member
Thank bài viết

mong có 1 hay nhiều topic khác nói về các vấn đề xung quanh nữa
 
Các chủ đề có liên quan khác

Các chủ đề có liên quan khác

Top