Khác biệt giữa các bản “GRUB”

n
sửa chính tả 3, replaced: ( → ( using AWB
(Tạo với bản dịch của trang “GNU GRUB”)
 
n (sửa chính tả 3, replaced: ( → ( using AWB)
'''GNU GRUB''' (viết tắt của '''GNU GRand Unified Bootloader''') là một chương trình khởi động máy tính được phát triển bởi dự án [[GNU]]. GRUB là một [[Cài đặt tham khảo|cài đặt mẫu]] của [[Multiboot Specification]] của [[Quỹ Phần mềm Tự do]] (FSF) , cung cấp cho người dùng một lựa chọn  cho phép khởi động một trong nhiều [[hệ điều hành]] được cài trên một máy tính hoặc lựa chọn một cấu hình hạt nhân cụ thể có sẵn trên các phân vùng của một hệ điều hành cụ thể.
 
GNU GRUB được phát triển từ một gói phần mềm được gọi là ''Grand Unified Bootloader'' (dựa trên [[Lý thuyết thống nhất lớn]]<ref>[http://searchenterpriselinux.techtarget.com/definition/GRUB-GRand-Unified-Bootloader EnterpriseLinux.com Definitions] Definition of GRand Unified Bootloader</ref>). nó được sử dụng chủ yếu cho các hệ thống [[Tương tự Unix|tương tự Unix]]. Các hệ điều hành [[GNU]] sử dụng GNU GRUB làm trình khởi động mặc định, cũng như hầu hết các [[Bản phân phối Linux|bản phân phối Linux]]. Hệ điều hành [[:en:Solaris_Solaris (operating_systemoperating system)|Solaris]] cũng đã dùng GRUB làm trình khởi động trên các hệ thống [[x86]], bắt đầu từ phiên bản Solaris 10 1/06.
 
== Tính năng ==
Người dùng có thể tự động cấu hình các hệ thống con GRUB. GRUB nạp cấu hình của nó lúc khởi động, cho phép thay đổi thời gian khởi động, chẳng hạn như việc lựa chọn [[Nhân hệ điều hành|hạt nhân]] khác nhau hoặc đĩa RAM ban đầu. Để kết thúc, GRUB cung cấp một [[giao diện dòng lệnh]] đơn giản, tương tự [[:en:Bash_Bash (Unix_shellUnix shell)|bash]],cho phép người dùng viết các trình tự khởi động mới một cách nhanh chóng, ngoài các danh sách thực đơn bình thường.
 
GRUB có tính cơ động cao. Nó hỗ trợ nhiều định dạng thực thi. Nó hỗ trợ tất cả các hệ thống tập tin Unix thường được sử dụng, [[hệ thống tập tin]] [[FAT]] và [[NTFS]] của Windows, và [[:en:Logical_block_addressingLogical block addressing|logical block addressing]] (LBA). GRUB cho phép người dùng xem nội dung của tập tin trên bất kỳ hệ thống tập tin được hỗ trợ.
 
GRUB có thể tải ảnh khởi động của hệ điều hành  từ mạng, do đó nó hỗ trợ các hệ thống không có ổ cứng. Nó cũng hỗ trợ giải nén tự động của các hình ảnh khởi động trước khi khởi động chúng. GRUB hỗ trợ các hệ điều hành mà không hỗ trợ đa khởi động, bằng cách sử dụng chuỗi tải. Nó sử dụng hai hoặc ba dòng của chuỗi lệnh để khởi động bất kỳ hệ thống [[DOS]], [[Windows]], [[Linux]], [[BSD]] hay [[Solaris (hệ điều hành)|Solaris]], làm cho nó rất dễ dàng để làm việc với nó. Chuỗi tải hỗ trợ các hệ điều hành tương tự [[Unix]] cũng đã tích hợp trong GRUB.
 
=== <span id="MAP-FILE" contenteditable="false"></span>Khởi động ===
Khi một máy tính được bật, [[BIOS]] của máy tính sẽ tìm thiết bị được cấu hình khởi động chính (thường là [[ổ cứng]]) tải và thực thi chương trình bootstrap đầu tiên từ [[Boot record|master boot record]] (MBR). MBR là những [[:en:Disk_sectorDisk sector|sector]] đầu tiên của ổ cứng, với số 0 là offset của nó(các sector bắt đầu đếm từ 0). Trong một thời gian dài, kích thước của sector là 512&nbsp;[[byte]], nhưng từ năm 2009 có nhiều ổ cứng có kích thước một sector là 4096&nbsp;byte, được gọi là ổ cứng [[:en:Advanced_FormatAdvanced Format|Advanced Format]]. Tính đến tháng 10/2013, những ổ cứng như thế vẫn được truy cập những sector 512-byte, bằng cách sử dung mô phỏng 512e.<ref>{{Bản mẫu:Chú thích web|last=Smith|first=Ryan|title=Western Digital’s Advanced Format: The 4K Sector Transition Begins|publisher=[[AnandTech]]|date=December 18, 2009|url=http://www.anandtech.com/show/2888|accessdate=2013-10-10}}</ref>
 
[[Boot record]] MBR [[legacy]] hỗ trợ tối đa 4 phân vùng primary và chiếm 64&nbsp;byte. Cùng với tùy chọn chữ ký đĩa (4 byte) và nhãn đĩa (6 byte), chuỗi dữ liệu này chiếm từ 434 đến 446&nbsp;byte [[mã máy]] của boot loader. Mặc dù một kích thước nhỏ có thể chứa đủ một boot loader đơn giản,<ref>{{Bản mẫu:Chú thích web|url=http://mbldr.sourceforge.net/|title=mbldr (Master Boot LoaDeR)|year=2009|accessdate=2013-10-10|publisher=sourceforge.net}}</ref> nó không đủ lớn để chứa một boot loader hỗ trợ một [[hệ thống tập tin]] lớn và phức tạp, menu điều khiển các lựa chọn khởi động hệ thống là ví dụ. Boot loader với footprints lớn hơn do đó được chia thành nhiều phần, nơi những phần nhỏ nhất được tích hợp bên trong MBR, trong khi những phần lớn hơn chứa trong các khu vực khác (ví dụ,trong một sector trống ở giữa MBR phân vùng đầu tiên) và được gọi đến bởi mã MBR của boot loader.
 
Ảnh [[nhân hệ điều hành]] trong phần lớn các trường hợp các [[tập tin]] nằm trên hệ thống tập tin thích hợp, nhưng các khái niệm về một hệ thống tập tin là không biết đến [[BIOS]]. Vì vậy,trong các hệ thống dựa trên BIOS,nhiệm vụ của boot loader là để truy cập vào nội dung của các tập tin, vì vậy nó có thể đọc từ đĩa cứng, nạp vào bộ nhớ [[RAM]] và thực hiện.
 
Một trong những phương pháp tiếp cận có thể cho boot loader là tải trực tiếp các ảnh của hạt nhân từ các sector ổ cứng đang sử dụng bởi hình ảnh thực tế hạt nhân, mà không có sự hiểu biết cơ bản hệ thống tập tin.  <span>Thông thường, cấp bổ sung gián tiếp là cần thiết, ở dạng bản đồ hoặc các bản đồ tập tin </span>&#x2013ndash;&nbsp;&#x63;&#xE1;&#x63;&#x20;&#x66;&#x69;&#x6C;&#x65;&#x20;&#x70;&#x68;&#x1EE5;&#x20;&#x74;&#x72;&#x1EE3;&#x20;&#x63;&#xF3;&#x20;&#x63;&#x68;&#x1EE9;&#x61;&#x20;&#x6D;&#x1ED9;&#x74;&#x20;&#x64;&#x61;&#x6E;&#x68;&#x20;&#x73;&#xE1;&#x63;&#x68;&#x20;&#x63;&#xE1;&#x63;các file phụ trợ có chứa một danh sách các&nbsp;sector vật lý đang sử dụng bởi ảnh hạt nhân, cung cấp thông tin cho boot loader về nơi có thể tìm thấy những sector cơ sở của nhân hệ thống. Các bản đồ này cần được cập nhật mỗi lần nhân hệ thống bị thay đổi, ví dụ như nâng cấp hạt nhân hệ thống giải phân mảnh hệ thống file. Cũng như vậy, trong các trường hợp bản đồ thay đổi trên ổ đĩa vật lý, vị trí của chúng cũng cần được cập nhật vào mã MBR của boot loader, vì vậy các cơ chế khu vực gián tiếp tiếp tục làm việc. Điều này không phức tạp, nhưng nó yêu cầu phải sửa đổi bằng tay trong trường hợp bị sai trong ki cập nhật hệ thống.<ref name="boot-admin">{{Bản mẫu:Chú thích web|url=http://www-uxsup.csx.cam.ac.uk/pub/doc/suse/suse9.0/adminguide-9.0/node8.html|title=Booting and Boot Managers|accessdate=2013-10-10|publisher=SuSE}}</ref>
 
Một cách khác là tạo một boot loader nhận biết được hệ thống file bên dưới, Hạt nhân như vậy được cấu hình và truy cập thông qua đường dẫn thực tế. Điều này yêu cầu boot loader cần chứa một trình điều khiển hệ thống file cho mỗi hệ thống file mà nó hỗ trợ, so they can be understood and accessed by the boot loader itself. This approach eliminates the need for hardcoded locations of hard disk sectors and existence of map files, and does not require MBR updates after the kernel images are added or moved around. Configuration of a boot loader is stored in a regular file, which is also accessed in a file system-aware way to obtain boot configurations before the actual booting of any kernel images. As a result, the possibility for things to go wrong during various system updates is significantly reduced. As a downside, such boot loaders have increased internal complexity and even bigger footprints.<ref name="boot-admin">{{Bản mẫu:Chú thích web|url=http://www-uxsup.csx.cam.ac.uk/pub/doc/suse/suse9.0/adminguide-9.0/node8.html|title=Booting and Boot Managers|accessdate=2013-10-10|publisher=SuSE}}</ref>
 
GNU GRUB sử dụng phương pháp thứ hai, bằng cách tìm hiểu các hệ thống tập tin cơ bản. Boot loader tự chia thành nhiều phần, cho phép nó phù hợp với các chương trình khởi động MBR.
Với kích thước nhỏ của một [[boot sector]] (512&nbsp;Byte), ''stage 1'' có thể làm ít hơn so với tải các giai đoạn tiếp theo của GRUB bằng cách tải một vài sector từ một vùng cố định  gần điểm đầu đĩa cứng (trong 1024 cylinder đầu tiên).
 
''Stage 1'' có thể tải ''stage 2'' trực tiếp, nhưng nó thường được thiết lập để tải ''stage 1.5.'' GRUB ''stage 1.5'' ở khu vực 30 [[:en:KiB|KiB]] đầu tiên của ổ cứng ngay sau MBR và trước phân vùng đầu tiên. Trong trường hợp vị trí này không có sẵn(bảng phân vùng bất thường, trình điều khiển đĩa đặc biệt, đĩa [[:en:GUID_Partition_TableGUID Partition Table|GPT]] hoặc [[:en:Logical_Volume_Manager_Logical Volume Manager (Linux)|LVM]]) các cài đặt của ''stage 1.5'' sẽ bị lỗi. S''tage 1.5'' chứa trình điều khiển hệ thống tập tin. điều này cho phép ''stage 1.5'' tải trực tiếp ''stage 2'' từ bất kỳ vị trí nào trên hệ thống file, ví dụ từ<code>/boot/grub</code>. ''Stage 2'' sẽ tải file cấu hình mặc định và các module cần thiết khác.
 
=== {{Bản mẫu:Anchor|GRUB 2}}GRUB 2 (GRUB) ===
[[Tập tin:GNU_GRUB_components.svg|phải|nhỏ|400x400px|<code>boot.img</code> có kích thước 446 byte và được ghi vào [[Boot record|MBR]] (sector 0). <code>core.img</code> được ghi vào phần trống giữa MBR và và phân vùng đầu tiên. Thư mục <code>/boot/grub</code> có thể được lưu trên một phân vùng riêng biệt, hoặc trên phân vùng ''root'' .]]
* '''Stage 1''': <code>boot.img</code> được lưu trữ trên master boot record (MBR) hoặc có thể bất kỳ vị trí nào thuộc [[:en:Volume_boot_recordVolume boot record|volume boot records]] (VBR), và chỉ tới các stage tiếp theo bằng một địa chỉ [[:en:LBA48|LBA48]] ( vì vậy tránh được giới hạn 1024-cylinder của GRUB legacy); lúc cài đặt nó được cấu hình để tải sector đầu tiên của <code>core.img</code>.
* '''Stage 1.5''': <code>core.img</code> mặc định được ghi vào các sector giữa MBR và phân vùng đầu tiên, khi những sector này trống và có sẵn. Với  các phân vùng legacy, phân vùng đầu tiên của ổ cứng không bắt đầu từ sector 1 (bộ đếm bắt đầu từ 0) mà từ sector 63,để lại một khoảng trống 62 sector. không gian đó không phải là một phần của bất kỳ phân vùng hoặc tập tin hệ thống, và do đó không dễ bị bất kỳ vấn đề liên quan với nó.Mỗi khi thực thi, <code>core.img</code> sẽ tải file cấu hình của nó  và các module cần thiết khác, trình điều khiển hệ thống file riêng biệt; lúc cài đặt, nó được tạo ra từ <code>diskboot.img</code> và được cấu hình để tải ''stage 2 ''bằng đường dẫn của nó
* '''Stage 2''': file thuộc ''stage 2'' đều được lưu trữ trong thư mục <code>/boot/grub</code>  một thư mục con của thư mục  <code>/boot</code> quy định bởi Filesystem Hierarchy Standard (FHS).