GRUB2 là một version mới của Linux bootloader. GRUB2 viết tắt của GRand Unified Bootloader version 2.
Phiên bản trước là GRUB đã không còn phù hợp do nó thiếu một đặc điểm rất quan trọng đó là tính năng GPT management để quản lý các ổ đĩa lớn hơn 2.4Tb. Vì thế GRUB2 ra đời để khắc phục điểm yếu này.
GRUB2 có những đặc điểm mới như sau:
. Có khả năng boot trên nhiều file system khác nhau (xfs, ext4, ntfs, hfs+, raid, etc)
. Giải nén nhanh các file gzip
. Hỗ trợ GPT (GUID Partition Tables) và MBR (Master Boot Record)
. Linh hoạt với các kiến trúc khác nhau như BIOS, EFI
. Có khả năng load nhiều module khi thực thi
Các file cấu hình chính của GRUB2:
. /boot/grub2/grub.cfg: file chứa cấu hình chung (không edit file này)
. /etc/grub2.cfg: một file liên kết đến file /boot/grub2/grub.cfg file
. /etc/default/grub: file chưa các biến của GRUB2
. /etc/sysconfig/grub: file liên kết đến file /etc/default/grub
. /etc/grub.d: thư mục chưa các file riêng được sử dụng bới GRUB2
Để lấy thông tin chi tiết về kernel đang hoạt động, dùng lệnh:
# grub2-editenv list saved_entry=CentOS Linux (3.10.0-229.11.1.el7.x86_64) 7 (Core)
Chú ý: Thông tin được đặt trong file /boot/grub2/grubenv
Để lấy thông tin của các kernel lúc khởi động:
# grep ^menuentry /boot/grub2/grub.cfg menuentry 'CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)' ... menuentry 'CentOS Linux (3.10.0-229.14.1.el7.x86_64) 7 (Core)' ... menuentry 'CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127' ...caf
Để đặt kernek boot vào lúc khởi động (ở đây 0 là entry đầu tiên):
# grub2-set-default 0
Để hiển thị các biến của GRUB2:
# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200" GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root console=ttyS0,115200"" GRUB_DISABLE_RECOVERY="true"
Trong đó
. GRUB_TIMEOUT : là thời gian đợi để boot (5 giây)
. GRUB_DISTRIBUTOR: chứa tên phiên bản Centos Linux
. GRUB_DEFAULT: specifies the default menu entry; it can be a number, an entry name or the string saved which means the entry saved during the last reboot or the execution of the grub2-set-default command
. GRUB_DISABLE_SUBMENU: cho phép hoặc không cho phép hiển thị submenu
. GRUB_TERMINAL: định nghĩa thiết bị vào/ra
. GRUB_SERIAL_COMMAND: cấu hình serial port
. GRUB_CMDLINE_LINUX: các tham số truyền vào các entry cho Linux kernel
. GRUB_DISABLE_RECOVERY: có thực hiện recovery tức là chuyển sang chế độ single khi vào kernel hay không?
Nếu muốn thay đổi thông tin của biến nào trong file trên, sử dụng lệnh:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Chú ý: Có thể điều chỉnh hoặc file /boot/grub2/grub.cfg hoặc /etc/grub2.cfg
Để rõ hơn ta lấy ví dụ với các biến và giá trị sau:
Với GRUB_DISABLE_RECOVERY=”true” and GRUB_DISABLE_SUBMENU=true:
CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64 CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64 CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127> Use the ^ and v keys to change the selection. Press 'e' to edit the selected item, or 'c' for a command prompt.
Với GRUB_DISABLE_RECOVERY =“false”:
CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64 CentOS Linux 7 (Core), with Linux 3.10.0-229.20.1.el7.x86_64 (recovery m> CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64 CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64 (recovery m> CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127> CentOS Linux 7 (Core), with Linux 0-rescue-f19b719117b44bf3a3fb777bd4127> Use the ^ and v keys to change the selection. Press 'e' to edit the selected item, or 'c' for a command prompt.
Mỗi dòng kernel sẽ có thêm 1 dòng ở chế độ recovery.
Với GRUB_DISABLE_RECOVERY = “true” và GRUB_DISABLE_SUBMENU = false:
CentOS Linux 7 (Core) Advanced options for CentOS Linux 7 (Core) Use the ^ and v keys to change the selection. Press 'e' to edit the selected item, or 'c' for a command prompt.