Nếu muốn viết bài xin bạn đọc hướng dẫn sử dụng Wiki
Grub 2
Từ Ubuntu-VN
GRand Unified Bootloader, version 2 (Grub 2) là phiên bản thứ hai của GNU GRUB. Nó là chương trình chịu trách nhiệm quá trình nạp và giao quyền điều khiển cho nhân hệ điều hành trong lúc khởi động. Grub 2 tương thích với chuẩn POSIX (ví dụ như GNU/Linux, *BSD, Mac OS,...) và cũng có thể kết nối đến những hệ thống không tương thích với POSIX (Portable Operating System Interface for Unix).
GRUB 2 được viết lại mới hoàn toàn về mặt giao diện. Dựa trên nghiên cứu của dự án PUPA, GRUB 2 hỗ trợ tính mô-đun và cơ động nhiều hơn người tiền nhiệm của nó. Sau đây là một vài cải tiến dự kiến của GRUB 2:
- hỗ trợ giao diện đồ họa, kể cả theo chủ đề;
- mô-đun hóa quá trình nạp (modular loading);
- tương thích đa nền tảng (hệ điều hành);
- hỗ trợ nhúng mã (scripting support);
- tùy biến các mục khởi động;
- kiểm tra tên phân vùng.
Mục lục |
[sửa] Thử nghiệm GRUB 2
Grub 2 hiện đang ở phiên bản 1.97 vì vậy người dùng vẫn còn thời gian để đóng góp cho sự phát triển của nó. Hãy theo link này và vui lòng hỗ trợ chúng tôi. GRUB 2 Testing.
[sửa] Cài đặt / Nâng cấp
[sửa] Cài đặt (Ubuntu 9.10)
GRUB 2 sẽ được cài mặc định trên phiên bản Karmic. Nếu bạn muốn nâng cấp từ Jaunty 9.04 lên Karmic 9.10 bạn có thể theo các bước hướng dẫn dưới đây:
[sửa] Cài đặt (Ubuntu 9.04+)
Nếu bạn có bất kì vấn đề nào liên quan đến việc nâng cấp Grub hiện hữu (Grub Legacy) lên Grub 2 từ Jaunty cho đến Karmic, hãy tra cứu trong mục báo cáo lỗi: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/386789
- Mở một cửa sổ dòng lệnh (Terminal) và nhập
$ sudo apt-get install grub2
Chọn OK từ grub-pc configuration
- Chọn Chainload from menu.lst YES
- Tại dấu nhắc lệnh, ấn ENTER
NOTE: Cái này chỉ là tạm thời, bạn phải cố định nó lại bằng cách...
- Nhập vào một terminal
$ sudo upgrade-from-grub-legacy
Sau đó GRUB 2 sẽ cho biết địa chỉ mà nó khởi động. Trên hệ thống thử nghiệm của chúng tôi, nó hiển thị (hd0) /dev/sda nhưng có thể khác trên máy của bạn. Nếu chưa chính xác, bạn phải chỉnh sửa file /boot/grub/device.map để khớp với hệ thống của bạn và thế là chạy:
$ sudo grub-install
GRUB 2 sẽ được cài đầy đủ, còn GRUB hiện hữu thì bị gỡ ra và cấu hình của nó sẽ được sao lưu lại. Cấu hình của GRUB cũ được lưu tại /boot/grub và có tên là menu.lst*
Bạn có thể xác định lại phiên bản mà bạn vừa cài bằng cách nhập:
grub-install -v
[sửa] Hệ thống thư mục và tập tin của Grub 2
Trong khi toàn bộ các file của nó vẫn còn nằm trong thư mục /boot/grub, thì không còn có khái niệm menu.lst. Tâp tin điều khiển Grub đó bây giờ là grub.cfg. Nó được tạo ra bởi nhiều kịch bản (scripts) được chạy khi lệnh "update-grub" được thực thi (lưu ý phải chạy dưới quyền root: "sudo update-grub"). Những files đóng vai trò chính về nội dung của grub.cfg /etc/default/grub và những file kịch bản riêng lẻ được đặt tại /etc/grub.d/
Nhiều tập tin trong /boot/grub sẽ rất xa lạ với người dùng quen với Grub trước. Đặc biệt đáng chú ý là có vô số các file *.mod trong thư mục /boot/grub. Grub 2 có tính mô-đun và những dữ liệu trong *.mod được nạp lên khi cần thiết bởi grub. Mặc dù có sự bổ sung của những tập tin này, tổng kích thức của thư mục /boot/grub gần như không đổi so với Grub Legacy và không đòi hỏi nhiều không gian cho phân vùng /boot.
[sửa] grub.cfg (/boot/grub/grub.cfg)
KHÔNG CHỈNH SỬA TẬP TIN NÀY Đây là tập tin chính của Grub 2. Nó là "vết tích" của /boot/grub/menu.lst trong Grub Legacy. Nó chứa các lệnh chỉ thị các đề mục cho Grub. Nhưng không giống như file menu.lst trong Grub Legacy, grub.cfg vốn sinh ra KHÔNG ĐỂ NGƯỜI DÙNG CHỈNH SỬA!!!
- grub.cfg được tạo ra một cách tự động hoạt tự cập nhật khi và chỉ khi lệnh "update-grub" được thi hành. Lệnh này phải được chạy dưới quyền của "người quản trị" ("root").
- Các kịch bản được dùng để khởi tạo grub.cfg bao gồm các tâp tin chứa trong thư mục /etc/grub.d và thông tin được thu thập từ /etc/default/grub
- Tập tin này được chia thành từng khu vực. Mỗi phân khu được mô tả và có thể nhận biết bằng dòng ### BEGIN. Thông tin trong dòng này đề cập đến những tập tin trong thư mục /etc/grub.d vốn dùng để liên kết thông tin vào trong grub.cfg
- Mặc định, và mỗi khi lệnh "update-grub" được thực thi, tâp tin này được "niêm chì" chỉ đọc mà thôi. Điều này giữ cho nội dung của tập tin sẽ không bị thay đổi một cách "thủ công". Nếu bạn muốn chỉnh sửa file này, hướng dẫn nằm ở cuối bài.
- Đây là nội dung mẫu của grub.cfg, bao gồm hai lõi (kernel) Ubuntu, memtest86+, Windows và một mục tùy chỉnh (41_srcd), được nhập từ các kịch bản ở /etc/grub.d/ :
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/update-grub using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,5)
search --fs-uuid --set b02e1934-12dd-418a
if font /usr/share/grub/ascii.pff ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
terminal gfxterm
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###
### BEGIN /etc/grub.d/10_linux ###
set root=(hd0,5)
search --fs-uuid --set b02e1934-12dd-418a-be3a-9ff7d3e7e7ea
menuentry "Ubuntu, linux 2.6.28-13-generic" {
linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800
initrd /boot/initrd.img-2.6.28-13-generic
}
menuentry "Ubuntu, linux 2.6.28-13-generic (single-user mode)" {
linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro single
initrd /boot/initrd.img-2.6.28-13-generic
}
menuentry "Ubuntu, linux 2.6.28-11-generic" {
linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800
initrd /boot/initrd.img-2.6.28-11-generic
}
menuentry "Ubuntu, linux 2.6.28-11-generic (single-user mode)" {
linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro single
initrd /boot/initrd.img-2.6.28-11-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
set root=(hd0,1)
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_srcd ###
menuentry "SystemRescue CD on hard drive" {
set root=(hd0,10)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
### END /etc/grub.d/41_srcd ###
[sửa] grub (/etc/default/grub)
Tập tin này chứa đựng dữ liệu nằm ở phần trên trong tập tin /boot/grub/menu.lst vốn thuộc về grub trước đây. Nó lưu lại những thiết đặt chính yếu ảnh hưởng đến việc hiển thị các đề mục của Grub. Tập tin này có thể được chỉnh sửa bởi root để thay đổi các thiết đặt này; chúng sẽ được đưa vào grub.cfg khi chạy lệnh "update-grub".
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true" This file contains information formerly contained in the upper section of Grub Legacy's ''menu.lst'' and items contained on the end of the kernel line. The items in this file can be edited by a user with administrator (root) privileges. Grub developers have have placed explanatory comments within the file itself.
- GRUB_DEFAULT=0
- Thiết đặt lựa chọn khởi động mặc định. Giá trị có thể là con số hoặc từ "saved"
- GRUB_DEFAULT=0
- Thiết đặt mặc định theo vị trí trong đề mục. Giống với Grub Legacy, dòng mục đầu tiên trong grub.cfg là 0, thứ hai là 1, ...
- GRUB_DEFAULT=saved
- Thiết đặt mặc định theo lựa chọn ở lần khởi động trước. Nếu bảng lựa chọn được hiển thị trong lúc khởi động thì lựa chọn trước đó sẽ được làm nổi bật. Nếu không tác động gì đến bàn phím hoặc bảng lựa chọn không xuất hiện thì lựa chọn đó sẽ được khởi động khi hết thời gian chờ.
- GRUB_DEFAULT="xxxx"
- Với xxxx là tên chính xác của mục lựa chọn (chú ý phải có thêm 2 dấu ngoặc kép). Trong trường hợp này thì không cần phải quan tâm đến thứ tự của mục lựa chọn. Để biết tên của mục cần chọn, chạy lệnh này trong terminal:
grep menuentry /boot/grub/grub.cfg
- Với xxxx là tên chính xác của mục lựa chọn (chú ý phải có thêm 2 dấu ngoặc kép). Trong trường hợp này thì không cần phải quan tâm đến thứ tự của mục lựa chọn. Để biết tên của mục cần chọn, chạy lệnh này trong terminal:
- GRUB_TIMEOUT=5
- Không có gì thay đổi từ phiên bản trước. Đây là thời gian đếm ngược (tính bằng giây) hiển thị bảng lựa chọn trước khi lựa chọn mặc định được khởi động.
- Thiết đặt giá trị là -1 sẽ hiển thị bảng lựa chọn cho đến khi người dùng đưa ra quyết định (không có thời gian chờ).
- GRUB_HIDDEN_TIMEOUT=0
- Bảng lựa chọn sẽ bị ẩn đi nếu không có dấu "#" đặt ở đầu dòng này. ( # GRUB_HIDDEN_TIMEOUT=0 )
- Thiết đặt mặc định ban đầu phụ thuộc vào sự hiện diện của hệ điều hành khác.
- Nếu phát hiện có hệ điều hành khác: bảng lựa chọn sẽ xuất hiện (dòng này sẽ chêm dấu "#")
- Nếu không phát hiện hệ điều hành khác: bảng sẽ bị ẩn đi.
- Nếu đặt một số nguyên lớn hơn 0, khi khởi động máy sẽ xuất hiện thời gian chờ tương ứng với con số đó, nhưng vẫn không hiện bảng lựa chọn.
- 0: khởi động ngay tức khắc, không có bảng lựa chọn, không có thời gian chờ.
- Khi thiết đặt giá trị 0:
- Người dùng có thể ép buộc máy phải hiển thị bảng lựa chọn bằng cách ấn và giữ phím SHIFT.
- Trong quá trình khởi động, hệ thống sẽ kiểm tra trạng thái của phím SHIFT. Nếu nó không xác định được trạng thái của phím, sẽ hiện ra một khoảng thời gian ngắn cho phép hiển thị bảng lựa chọn bằng cách ấn phím ESC.
- Nếu được kích hoạt, một hình nền (splash screen) kiểu 05_debian_theme sẽ được hiển thị kể cả khi tính năng ẩn bảng lựa chọn được bật.
- Người dùng có thể ép buộc máy phải hiển thị bảng lựa chọn bằng cách ấn và giữ phím SHIFT.
- Khi thiết đặt giá trị 0:
- GRUB_HIDDEN_MENU_QUIET=true
- true - Không hiển thị thời gian đếm ngược. Màn hình hoàn toàn trống.
- false - Hiển thị thời gian đếm ngược dựa trên giá trị tại dòng GRUB_HIDDEN_TIMEOUT.
- GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
- Xác định phần mô tả của tên mục trong bảng lựa chọn. (Ubuntu, Xubuntu, Debian, ...)
- GRUB_CMDLINE_LINUX
- Nếu có dòng này được gán thông tin, nó sẽ nhập thông tin đó vào cuối dòng của đề mục (cho các chế độ normal và recovery). Lệnh này giống với lệnh "altoptions" trong menu.lst trước đây.
- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
- Dòng này nhập thông tin vào cuối dòng của đề mục (chỉ áp dụng cho chế độ normal). Nó tương tự như dòng "defoptions" trong menu.lst. Nếu bạn muốn lúc khởi động vào Ubuntu sẽ hiện chi chít chữ và số hãy gỡ bỏ cụm từ "quiet splash". Nếu bạn muốn có một ít thông tin chạy dưới logo của Ubuntu thì chỉ để là "splash". <-- Điều này ("splash") không có tác dụng trong quá trình khởi động của Karmic vì trình xsplash không cho phép hiển thị thông tin, nhưng lúc tắt máy (shutdown) thì lại có.
- #GRUB_TERMINAL=console
- Nếu bỏ chú thích thì sẽ vô hiệu tính đồ họa của terminal (chỉ grub-pc).
- #GRUB_DISABLE_LINUX_UUID=true
- Bỏ chú thích nếu bạn không muốn GRUB bỏ qua thông số "root=UUID=xxx" trong Linux.
- GRUB_DISABLE_LINUX_RECOVERY=true
- Thêm hoặc bỏ chú thích (#) ở dòng này để ngăn không cho chế độ "Recovery" xuất hiện trong bảng lựa chọn.
- GRUB_DISABLE_OS_PROBER=true
- Bất/Tắt kiểm tra các hệ điều hành khác có trong hệ thống, bao gồm Windows, Linux, OSX và Hurd.
[sửa] /etc/grub.d/ (thư mục)
Những tập tin trong thư mục này được truy xuất trong quá trình thực thi lệnh "update-grub". Các đoạn mã trong những tập tin này xuất thông tin vào trong /boot/grub/grub.cfg.
Các tập tin được chạy một cách tuần tự - tập tin nào có tên bắt đầu bằng số thì chạy trước, kế đến là tên bằng chữ cái. Thứ tự của tập tin được chạy quyết định vị trí của các đề mục trong bảng lựa chọn.
Các mục tùy chọn có thể được thêm vào tập tin "40_custom" hoặc được đặt vào một tập tin mới.
Bất kì tập tin nào được tạo ra phải có tính thực thi để được trích xuất vào trong tập tin "grub.cfg" tại thời điểm thực hiện lệnh "update-grub". Có thể đạt được điều này bằng cách gõ vào trong terminal "sudo chmod u+x /etc/grub.d/tên-tập-tin". Dưới dây là mô tả tổng quát nhiệm vụ của các tập tin:
- 00_header
- Tải các thiết lập từ /etc/default/grub, bao gồm cách trình bày, đếm ngược và các tuỳ chọn về terminal .
- 05_debian_theme
- Chỉnh hình nền, màu chữ và chủ đề.
- 10_hurd
- Định vị hurd kernels (hiện tại không dùng).
- 10_linux
- Định vị kernels dựa trên tên bản phân phối đã được xác định bởi kết quả của lệnh "lsb_release -i -s" ("Ubuntu").
- 20_memtest86+
- Nếu có tồn tại tập tin /boot/memtest86+.bin, nó sẽ được đưa vào danh sách lựa chọn lúc khởi động.
- 30_os-prober
- Dò tìm các hệ điều hành khác và đưa nó vào danh sách lựa chọn.
- 40_custom
- Một kiểu mẫu dùng để tạo các lựa chọn tuỳ biến sẽ được đưa vào trong grub.cfg khi thực hiện lệnh "update-grub". Tập tin này và bất kì tập tin tuỳ biến nào khác phải có tính thực thi để cho phép nhập nội dung vào trong grub.cfg. Những tập tin này được đặt vào trong bảng lựa chọn theo số thứ tự ghi trên tên tập tin.
[sửa] Thêm mục lựa chọn vào Grub 2
grub.cfg được cập nhật khi update-grub hoặc update-grub được thực thi. Các thay đổi ở trong grub.cfg phải được tạo ra bằng các tập tin chứa mã tương ứng chứ không phải từ chính bản thân grub.cfg.
LƯU Ý: Dòng ghi chú đầu tiên trong grub.cfg có nghĩa là "KHÔNG ĐƯỢC CHỈNH SỬA TẬP TIN NÀY". Tập tin này mang thuộc tính "chỉ đọc" và dù bạn có cố gắng sửa thì nó vẫn trở về trạng thái như cũ mỗi khi lệnh update-grub được chạy.
[sửa] Tự động thiết lập
- Khi "update-grub" được thực thi, Grub 2 sẽ đọc dữ liệu từ /etc/default/grub và những tập tin nằm trong thư mục /etc/grub.d. Sự kết hợp này sẽ tạo nên những thông số trực quan cho bảng lựa chọn (/etc/default/grub) và tìm kiếm các nhân linux, các hệ điều hành khác và các tuỳ chọn khác do người dùng thiết lập trong /etc/grub.d.
Các tập tin kịch bản trong /etc/grub.d thực hiện các thao tác sau:
- 10_linux dò tìm những nhân linux đã được cài đặt.
- 30_os-prober dò tìm các hệ điều hành khác .
- 40_custom và những tập tin khác do người dùng tự thiết lập trong thư mục /etc/grub.d có vai trò thêm các những mục tuỳ chọn vào trong bảng lựa chọn.
- Tên tập tin sẽ quyết định thứ tự của các mục trong bảng lựa chọn. Các mục trong 30_os-prober sẽ đứng trước các mục trong 40_custom. Các mục có số cao hơn sẽ xếp sau các mục có số nhỏ hơn.
- Mọi tập tin do người dùng tạo ra phải có tính thực thi. Điều này có thể thực hiển với quyền root bằng cách chạy:
sudo chmod u+x /etc/grub.d/tên-tập-tin
[sửa] Người dùng tự thiết lập
Người sử dụng với quyền "root" có thể tạo các kịch bản trong thư mục /etc/grub.d/ để có thể sát nhập chúng vào trong tập tin grub.cfg khi update-grub được chạy.
- Tên tập tin nên có dạng XX_tên, với XX là con số.
- Thứ tự của mục ở bảng lựa chọn khởi động dựa trên số thứ tự các tập tin trong /etc/grub.d. Các tập tin thực thi trong thư mục /etc/grub.d bắt đầu bằng chữ cái sẽ được ưu tiên xếp trước các tập bắt đầu bằng số trong bảng lựa chọn.
- Tập tin phải được thiết lập thuộc tích thực thi bằng các gõ trong terminal:
sudo chmod +x /etc/grub.d/'''filename'''
- Đây là một ví dụ về mục tuỳ chọn. Tập tin này tạo một mục trong bảng lựa chọn để khởi chạy quá trình cài đặt SystemRescueCD trên phân vùng sdb10 và một nhân tuỳ chọn trên sda1.
LƯU Ý: về quy ước đặt tên phân vùng mới. Các thiết bị bắt đầu đếm từ 0 như trước đây. sda được chỉ định cho "hd0", sdb là "hd1", .... Tuy nhiên bây giờ phân vùng đầu tiên được chỉ định là sda1. Việc đếm các phân vùng không bắt đầu bằng "0". Phân vùng thứ năm trên sda là sda5).
#!/bin/sh
echo "Adding Custom Kernel & SystemRescue" >&2
cat << EOF
menuentry "Ubuntu, linux 2.6.31-11-custom" {
set root=(hd0,9)
linux /boot/vmlinuz-2.6.31-11-custom root=UUID=c6829e27-2350-4e84-bdbb-91b83f018f98 ro
initrd /boot/initrd.img-2.6.28-11-generic
}
menuentry "Boot SystemRescue CD from hard drive" {
set root=(hd1,10)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
EOF
- Dòng "echo "Adding SystemRescueCD" >&2" không bắt buộc. Thêm nó vào tập tin để cho phép nó được hiển thị trong terminal khi "update-grub" được kích hoạt. Điều này cung cấp những thông tin phản hồi rằng cái mục này đã được nhận diện và được vào (grub.cfg). Nếu được biên soạn đúng chuẩn thì mục lựa chọn được đưa vào grub.cfg dù cho cái dòng đó có được chèn vào hay không.
- Chỉnh sửa thủ công grub.cfg
- Nếu bạn phải chỉnh sửa tập tin này:
sudo chmod +w /boot/grub/grub.cfg # Remove 'read-only', necessary even for "root" sudo nano /boot/grub/grub.cfg # Edit as "root"
- Lưu ý: Tập tin này sẽ trở lại trạng thái 'chỉ đọc' và những thiết lập của người dùng trong đó sẽ bị ghi đè mỗi khi lệnh "update-grub" được chạy.
[sửa] Gỡ bỏ mục lựa chọn trong Grub 2
Các mục được gỡ bỏ bằng cách điều chỉnh hoặc xoá bỏ các tập tin trong thư mục /etc/grub.d. Tập tin /boot/grub/grub.cfg chỉ để đọc và không nên chỉnh sửa một cách trực tiếp.
- Làm tự động.
- Những nhân Linux được gỡ bỏ bởi Synaptic cũng sẽ tự biến mất trong grub.cfg mà không cần người dùng động tay đến.
- Nhưng hệ điều hành khác nếu được gỡ bỏ khỏi máy tính cũng sẽ biến mất trong danh sách lựa chọn một khi lệnh "update-grub" được chạy với quyền root.
- Làm thủ công.
- Để ngăn không cho một tập tin trong /etc/grub.d nạp các mục vào trong bảng lựa chọn, hãy thay đổi thuộc tính thực thi hoặc xoá tập tin ứng dụng.
- memtest86+: Nếu bạn không muốn thấy memtest86+ xuất hiện trong bảng lựa chọn, chạy lệnh
sudo chmod -x /etc/grub.d/20_memtest86+
. Tập tin vẫn còn đó nhưng sẽ không phản ứng với lệnh update-grub. - Recovery mode: Nếu bạn không muốn thấy mục Recovery mode đi kèm với mục nhân kernel, hãy chỉnh sửa file /etc/default/grub bằng cách thêm dòng này:
GRUB_DISABLE_LINUX_RECOVERY=true
- Nếu một kịch bản tuỳ biến ở trong thư mục /etc/grub.d/ có chứa nhiều mục lựa chọn, có thể xoá bỏ từng mục một mà không ảnh hưởng đến các mục còn lại.
- Mẹo: Nếu người dùng muốn các mục tuỳ biến xuất hiện ở đầu bảng lựa chọn, hãy đạt tên có giá trị nhỏ hơn "10_linux", ví dụ như "07_custom". Kiểm tra giá trị "Mặc định" trong /etc/default/grub trỏ đến đúng menuentry sau khi xác lập sự thay đổi.
- Sự thay đổi sẽ không diễn ra cho đến khi lệnh "update-grub" được chạy để cập nhật grub.cfg.
[sửa] Chủ đề
Ở phiên bản GRUB 2 đã hỗ trợ hiển thị theo chủ đề.
Giao diện đồ hoạ của GRUB giúp cho việc tuỳ biến cách bố trí và diện mạo của bảng lựa chọn GRUB. Chủ đề được cấu hình bằng một tập tin text đơn thuần mà nó chỉ rõ cách sắp xếp của nhiều thành phần GUI khác nhau (bao gồm bảng lựa chọn, thanh hiển thị quá trình đếm ngược và các thông điệp) cũng như diện mạo bằng việc sử dụng màu sắc, kiểu chữ và hình ảnh.
Để biết chi tiết xin xem bài viết này: [Grub 2 Themeing]
[sửa] Hình Splash
Đây là một dự án thuộc Google Summer of Code của Colin Bennett. Cái [GRUB 2 graphical menu project] này nhằm tạo ra một hệ thống menu đồ hoạ tuỳ biến cao cho GNU GRUB bootloader.
Xem tại [đây.]
[sửa] Ảnh và màu nền
Ảnh và màu nền được cấu hình trong một kịch bản nằm ở /etc/grub.d/ nếu bạn vào đấy sẽ thấy một tập tin tên là 05_debian_theme, đó là sơ đồ phối màu mặc định của GRUB 2. Bây giờ để tạo cách phối màu cho riêng bạn thì có vài lựa chọn, bạn có thể sao chép và chỉnh sửa tập tin 05_debian_theme or hoặc tự tạo một cái mới hoàn toàn.
Mọi tập tin ở /etc/grub.d/ đều được chạy có thứ tự, nếu như bạn có 2 tập tin chủ đề, 05_debian_theme và 06_mytheme chẳng hạn, cái thứ hai (06_mytheme) sẽ được chạy sau cùng, cũng là cái được hiển thị cho bạn xem.
[sửa] Sao chép và chỉnh sửa màu mặc định
- Sao chép sơ đồ màu sắc của chủ đề mặc định
$ sudo cp /etc/grub.d/05_debian_theme /etc/grub.d/05_debian_theme.BACKUP $ sudo nano /etc/grub.d/05_debian_theme
- Bây giờ bạn có thể chỉnh sửa theo ý thích.
[sửa] Tạo một tập tin chủ đề mới
- Tạo tập tin chủ đề mới
$ sudo nano /etc/grub.d/06_mytheme
- Bây giờ bạn có thể bắt tay vào thiết kế.
[sửa] Câu lệnh
Vì GRUB 2 đã được viết lại hoàn toàn, cho nên có một số lệnh từng sử dụng ở Grub cũ có thể không tồn tại ở GRUB 2. Hãy kiểm tra chúng ở danh sách lệnh của Grub 2 tại đây.
Phím SHIFT bây giờ cho phép bạn can thiệp vào quá trình boot nhanh để buộc máy phải hiện bảng lựa chọn.
[sửa] Phục hồi Grub 2 bằng đĩa LiveCD
- Đầu tiên, tải về phiên bản LiveCD mới nhất tại [Ubuntu LiveCD] và khởi động nó.
- Mở terminal và gõ
$ sudo fdisk -l
- Bây giờ bạn cần ghi nhớ thiết bị nào trong danh sách liệt kê chứa bản phân phối Linux của bạn. Chẳng hạn /dev/sda1. Tiếp theo chúng ta cần gắn kết (mount) nó tới /mnt
$ sudo mount /dev/sda1 /mnt
- Nếu bạn để /boot trên một phân vùng riêng biệt, thì cũng cần phải mount nó lên luôn. Ví dụ như /dev/sda2.
$ sudo mount /dev/sda2 /mnt/boot
Kiểm tra chắc chắn rằng bạn không nhầm lẫn giữa chúng, chú ý kĩ tới thông tin mà FDISK đưa ra.
Cách 1
- Dùng lệnh install grub lên thiết bị của bạn
ví dụ với cái trên thì
$ sudo grub-install --root-directory=/mnt/ /dev/sda
Cần lưu ý ở đây sda là tên cái ổ cứng hoặc thiết bị của bạn, có thể là sda, sdb, sdc ... còn cái sda1 ở các lệnh trên là phân vùng đầu tiên của thiết bị sda. Sau đó bạn vào ubuntu của bạn rồi dùng lệnh
$ sudo update grub
lại hoặc chỉnh sửa gì tùy ý thích
Cách 2
- Mount các thiết bị còn lại.
$ sudo mount --bind /dev /mnt/dev
- Kế tiếp là chroot vào hệ thống của bạn.
$ sudo chroot /mnt
Bạn cần thực hiện chroot vào hệ thống với quyền root, vì vậy bạn nên chuyển vai trò sang root để khỏi phải thêm sudo trước mỗi dòng lệnh.
- Giờ thì bạn cần chỉnh sửa tập tin /etc/default/grub cho phù hợp với hệ thống
$ nano /etc/default/grub
- Khi mọi thứ đã xong bạn cần chạy lệnh update-grub để tạo tập tin cấu hình.
$ update-grub
- Để cài GRUB 2 vào MBR, bạn cần chạy ở bước tiếp theo: grub-install /dev/sda
$ grub-install /dev/sda
- Nếu bạn gặp bất kì lỗi nào, hãy thử grub-install --recheck /dev/sda
$ grub-install --recheck /dev/sda
- Ấn Ctrl+D để thoát khỏi chroot.
- Một khi bạn trở về vai trò người dùng quen thuộc, hãy tháo bỏ các gắn kết vào hệ thống, đầu tiên là /dev
$ sudo umount /mnt/dev
- Nếu lúc đầu có gắn /boot vào thì giờ tháo nó ra:
sudo umount /mnt/boot
- Giờ thì bạn có thể tháo gắn kết cuối cùng.
$ sudo umount /mnt
- Và bạn có thể khởi động lại hệ thống của mình và GRUB 2 sẽ lại xuất hiện và chờ lệnh của bạn.
[sửa] Lỗi
[sửa] Bảng lựa chọn khởi động Grub 2 biến đi đâu rồi!?!?!
Nếu bạn không thấy bảng lựa chọn thì có lẽ nó đã bị ẩn đi rồi. Để móc nó ra chỉ cần chỉnh /etc/default/grub bằng cách vô hiệu hoá dòng GRUB_HIDDEN_TIMEOUT
$ sudo nano /etc/default/grub
Làm cho dòng đó giống như thế này...
#GRUB_HIDDEN_TIMEOUT=3 GRUB_TIMEOUT=XXX <---bảo đảm rằng bạn đặt một giá trị nào đó vào đây.
Lưu lại và thoạt, sau đó chạy...
$ sudo update-grub
[sửa] Khởi động kép
Thường sử dụng khi cài lại Grub 2 mà không nhận hệ điều hành khác ngoài Ubuntu như Windows.
$ sudo apt-get install --reinstall libdebian-installer4 $ sudo os-prober $ sudo update-grub
[sửa] Liên kết
Grub2 (Community Documentation)
