Đồ án "Tìm hiểu và cấu hình GRUB trên LINUX"
LINUX là một hệ điều hành họ UNIX miễn phí dùng cho máy tính cá nhân đang được sử dụng rộng rãi hiện nay. Được viết vào những năm 1991 bởi Linus Tovard, hệ điều hành LINUX đã thu được những thành công nhất định. Hiện nay, LINUX ngày càng phát triển được đánh giá cao và thu hút nhiều sự quan tâm của các nhà tin học.
63 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3341 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Tìm hiểu và cấu hình GRUB trên LINUX, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ảnh.
Nếu muốn chớp nháy màu tiền cảnh, dùng tiền tố blink- cho tiền_cảnh.
Lệnh này dùng được trong tập tin cấu hình và ở dòng lệnh. Thí dụ trong tập
tin cấu hình:
# Thie^'t la^.p ma`u ma(.c ddi.nh.
color light-gray/blue black/light-gray
# Thay ddo^?i ma`u.
title OS-BS like
color magenta/blue black/magenta
device ổ_đĩa tập_tin
Trong shell grub, chỉ định tập tin tập_tin như là ổ đĩa thực sự cho ổ đĩa BIOS
ổ_đĩa. Có thể dùng lệnh này để tạo hình ảnh đĩa, và/hoặc sửa chữa các ổ đĩa được
GRUB đoán khi GRUB không xác định được chúng một cách chính xác, như:
grub> device (fd0) /floppy-image
grub> device (hd0) /dev/sd0
Lệnh này chỉ dùng được ở shell grub.
hide phân_vùng
Che dấu phân vùng phân_vùng bằng cách thiết lập bit ẩn trong mã loại phân vùng
của nó. Điều này có lợi khi khởi động DOS hay Windows và nhiều phân vùng
FAT sơ cấp tồn tại trên một đĩa.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 17
GVHD: NGUYỄN TẤN KHÔI
password [--md5] mật_khẩu [tập_tin_cấu_hình_mới]
Nếu được dùng trong phần đầu tiên của một tập tin thực đơn, nó sẽ vô hiệu hoá
mọi hoạt động điều khiển biên tập tương tác (bộ phận biên tập đề mục thực đơn
và dòng lệnh) và các đề mục được bảo vệ bằng lệnh lock. Nếu mật khẩu mật_khẩu
được nhập, nó sẽ tải tập_tin_cấu_hình_mới làm tập tin cấu hình mới và khởi động
lại GRUB Giai đoạn 2 nếu tập_tin_cấu_hình_mới được chỉ định. Nếu không,
GRUB sẽ chỉ mở khoá các lệnh đặc quyền. Lệnh này cũng có thể được dùng trong
phần script, khi đó nó sẽ hỏi mật khẩu trước khi tiếp tục. Tuỳ chọn --md5 bảo
GRUB rằng mật_khẩu được mã hoá với md5crypt.
setkey [đến_phím từ_phím]
Thay đổi ánh xạ bàn phím. Phím từ_phím được ánh xạ sang đến_phím. Nếu không
có đối số nó sẽ thiết lập lại ánh xạ bàn phím. Lưu ý rằng lệnh này không hoán đổi
các phím. Nếu muốn hoán đổi các phím, chạy lệnh này một lần nữa với thông số
hoán đổi, như:
grub> setkey capslock control
grub> setkey control capslock
Một phím phải là một chữ cái, một con số, hoặc một trong các kí hiệu sau: escape,
exclam, at, numbersign, dollar, percent, caret, ampersand, asterisk, parenleft, parenright, minus,
underscore, equal, plus, backspace, tab, bracketleft, braceleft, bracketright, braceright, enter,
control, semicolon, colon, quote, doublequote, backquote, tilde, shift, backslash, bar, comma,
less, period, greater, slash, question, alt, space, capslock, FX (X là một chữ số), và delete.
unhide phân_vùng
Khử ẩn phân vùng phân_vùng bằng cách xoá bit ẩn trong mã loại phân vùng.
Lệnh này có ích khi khởi động DOS hoặc Windows và có nhiều phân vùng sơ cấp
trên một đĩa cứng.
17. Các lệnh dùng ở dòng lệnh và đề mục thực đơn
Các lệnh này dùng được ở dòng lệnh và ở đề mục thực đơn. Có thể chạy lệnh help để xem
thông tin về các lệnh này.
blocklist tập_tin
In kí hiệu danh sách khối của tập tin tập_tin.
boot
Khởi động hệ điều hành/trình nạp chuỗi đã được nạp. Chỉ cần thiết khi chạy trên
dòng lệnh tương tác đầy đủ (nó được hiểu ngầm ở cuối đề mục thực đơn).
cat tập_tin
Hiển thị nội dung tập tin tập_tin. Lệnh này có thể giúp xác định đúng đâu là thư
mục gốc của hệ điều hành:
grub> cat /etc/fstab
chainloader [--force] tập_tin
Nạp chuỗi tập_tin. Nếu chỉ định tuỳ chọn --force, nó sẽ cưỡng bức nạp tập_tin, cho
dù nó có chữ kí đúng hay không. Điều này giúp nạp một trình nạp khởi động
khiếm khuyết (như để khởi động SCO UnixWare 7.1).
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 18
GVHD: NGUYỄN TẤN KHÔI
cmp tập_tin1 tập_tin2
So sánh tập tin tập_tin1 với tập_tin2. Nếu chúng khác nhau về kích thước, in các
kích thước như sau:
Differ in size: 0x1234 [foo], 0x4321 [bar]
Nếu kích thước bằng nhau nhưng các byte ở một offset khác nhau, in các byte như
sau:
Differ at the offset 777: 0xbe [foo], 0xef [bar]
Nếu chúng hoàn toàn giống nhau, không in gì cả.
configfile tập_tin
Tải tập_tin làm tập tin cấu hình.
displaymem
Hiển thị thông tin về bộ nhớ đang được sử dụng, bao gồm tất cả các vùng của
RAM vật lý được cài đặt, dựa trên thông tin từ BIOS. Giúp xác định hệ thống có
bao nhiêu RAM dành cho khởi động.
embed stage1_5 thiết_bị
Ghi Giai đoạn 1.5 stage1_5 vào các sector sau MBR nếu thiết_bị là một ổ đĩa,
hoặc vào vùng của trình khởi động nếu thiết_bị là một phân vùng FFS hoặc phân
vùng ReiserFS. In con số các sector chiếm bởi stage1_5, nếu thành công. Thông
thường không cần chạy lệnh này trực tiếp.
find tên_tập_tin
Tìm tên tập tin tên_tập_tin trong tất cả các phân vùng và in danh sách các thiết bi
chứa tập tin. Tên tập tin tên_tập_tin nên là một tên tập tin tuyệt đối như
/boot/grub/stage1.
halt --no-apm
Tắt máy tính. Nếu tuỳ chọn --no-apm được chỉ định, không thực hiện lời gọi APM
BIOS; nếu không, máy tính dùng APM khi tắt.
help --all [mẫu ...]
Hiển thị thông tin về các lệnh được cài sẵn. Nếu không chỉ định mẫu, lệnh này sẽ
cho ra miêu tả ngắn của hầu hết các lệnh có sẵn. Nếu chỉ định tuỳ chọn --all, các
miêu tả ngắn cho các lệnh hiếm dùng cũng được trình bày. Nếu chỉ định mẫu, nó
sẽ trình bày thông tin dài hơn về mỗi lệnh khớp với các mẫu đó.
initrd tập_tin ...
Nạp đĩa RAM ban đầu cho hình ảnh khởi động theo định dạng Linux và thiết lập
các thông số thích hợp cho vùng thiết lập Linux trong bộ nhớ.
install
Đã được đề cập ở trên.
ioprobe ổ_đĩa
Dò tìm cổng I/O dùng cho ổ đĩa ổ_đĩa. Lệnh này sẽ liệt kê các cổng I/O trên màn
hình.
kernel [--type=loại] [--no-mem-option] tập_tin ...
Nạp hình ảnh khởi động (Multiboot a.out hoặc ELF, Linux zImage hoặc bzImage,
FreeBSD a.out, NetBSD a.out, v.v...) từ tập_tin. Phần còn lại của dòng được
chuyển nguyên văn như dòng lệnh nhân. Bất cứ mô-đun nào cũng có thể được nạp
sau khi dùng lệnh này. Lệnh này cũng chấp nhận tuỳ chọn --type để chỉ định cụ thể
loại nhân của tập_tin. Đối số loại phải là một trong các thứ sau: netbsd, freebsd,
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 19
GVHD: NGUYỄN TẤN KHÔI
openbsd, linux, biglinux, và multiboot. Tuy nhiên, chỉ cần xác định loại nhân khi nạp
nhân NetBSD ELF vì GRUB có thể tự động xác định loạ i nhân trong các trường
hợp khác một cách khá an toàn. Tuỳ chọn --no-mem-option chỉ hiệu quả trên Linux.
Nếu chỉ định tuỳ chọn này, GRUB không chuyển tuỳ chọn mem= đến nhân.
lock
Ngăn cản người dùng thông thường thi hành các đề mục thực đơn một cách tuỳ ý.
Để lệnh này thực sự có tác dụng phải dùng kèm với lệnh password. Lệnh này được
dùng trong thực đơn, như ở thí dụ sau:
title DDe^` mu.c na`y ddu+o+.c ba?o ve^.
lock
root (hd0,a)
kernel /no-security-os
makeactive
Thiết lập phân vùng chủ động (active) trên đĩa root cho thiết bị root của GRUB.
Lệnh này chỉ giới hạn (do chỉ có ý nghĩa) cho các phân vùng PC sơ cấp trên đĩa
cứng.
map từ_ổ_đĩa đến_ổ_đĩa
Ánh xạ ổ đĩa từ_ổ_ đĩa đến ổ đĩa đến_ổ_đĩa. Điều này cần thiết khi nạp chuỗi một
số hệ điều hành, thí dụ như DOS, nếu hệ điều hành đó nằm ở ổ đĩa không phải là
ổ đĩa thứ nhất. Thí dụ:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
Thí dụ này chuyển đổi trật tự giữa ổ cúng thứ nhất và ổ cứng thứ hai.
md5crypt
Nhắc nhập mật khẩu và mã hoá nó ở dạng MD5. Mật khẩu được mã hoá có thể
dùng với lệnh password.
module tập_tin ...
Tải mô-đun khởi động tập_tin cho hình ảnh khởi động định dạng Multiboot .
Phần còn lại của dòng được chuyển như là dòng lệnh mô-đun, giống như lệnh
kernel. Hình ảnh nhân Multiboot phải được nạp trước khi nạp bất kì mô-đun nào.
modulenounzip tập_tin ...
Giống như module, ngoại trừ việc giải nén tự động bị bất hoạt.
pause thông_điệp ...
In thông_điệp, rồi chờ cho đến khi một phím được ấn. Lưu ý rằng nếu đặt
(mã ASCII 7) trong thông điệp thì loa sẽ phát ra âm thanh bíp chuẩn, có ích khi
nhắc người dùng thay đổi đĩa mềm.
quit
Thoát shell grub. Lệnh này chỉ dùng được trong shell grub.
reboot
Khởi động lại máy tính.
root thiết_bị [hdbias]
Thiết lập thiết bị root hiện tại sang thiết bị thiết_bị, sau đó gán (mount) nó để lấy
thông tin về kích thước phân vùng (để chuyển nhãn phân vùng trong ES:ESI, được
dùng bởi một số trình khởi động theo kiểu nạp chuỗi), loại ổ đĩa BSD (để khởi
động nhân BSD dùng định dạng nguyên thuỷ của chúng), và xác định chính xác
phân vùng PC nơi đặt các tiểu phân vùng BSD. Thông số tuỳ chọn hdbias là một
số cho nhân BSD biết con số ổ đĩa BIOS là bao nhiêu trên các controller trước ổ
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 20
GVHD: NGUYỄN TẤN KHÔI
đĩa hiện tại. Thí dụ, nếu có một đĩa IDE và một đĩa SCSI, và phân vùng root của
FreeBSD trên đĩa SCSI, thì dùng 1 cho hdbias.
rootnoverify thiết_bị [hdbias]
Tương tự như root, nhưng không gán (mount) phân vùng. Điều này hữu ích khi hệ
điều hành nằm ngoài khu vực trên đĩa mà GRUB có thể đọc, nhưng vẫn muốn
thiết lập thiết bị root đúng. Lưu ý rằng các mục đề cập ở phần lệnh root bên trên có
được do gán sẽ không làm việc chính xác.
savedefault
Lưu đề mục hiện tại làm đề mục mặc định
Với cấu hình này GRUB sẽ chọn đề mục được khởi động trước đây làm đề
mục mặc định. Dùng lệnh savedefault ở một hoặc một vài đề mục và không
dùng ở một số đề mục khác sẽ tạo thực đơn cho phép thay đổi mặc định ở
một vài hệ thống và không bao giờ thiết lập mặc định được cho các hệ điều
hành kia.
setup
Đã được dề cập ở trên.
IV. Một số ứng dụng cụ thể và vấn đề
thường gặp
1.1 Tạo đĩa CD khởi động với GRUB
• Nếu bạn đã có đĩa mềm khởi động với GRUB
o Đặt đĩa vào ổ đĩa và thực hiện lệnh
dd if=/dev/fd0 of=boot.img bs=1024 count=1440
• Nếu bạn không có ổ đĩa mềm
o bạn cần tạo một ổ đĩa mềm ảo (hình ảnh ổ đĩa):
o dd if=/dev/zero of=boot.img bs=1024 count=1440
o mke2fs -F boot.img
o mount -o loop boot.img mnt
o mkdir -p mnt/boot/grub
o Các tập tin tối thiểu cần có để GRUB làm việc gồm stage1, stage2, menu.lst.
Định vị các tập tin này trong hệ thông của bạn, thường chúng có trong
/boot/grub hoặc /usr/local/share/grub/i386-pc. Chép chúng vào tập tin hình ảnh:
o cp /đường-dẫn/stage1 mnt/boot/grub
o cp /đường-dẫn/stage2 mnt/boot/grub
cp /đường-dẫn/menu.lst mnt/boot/grub
o Biên tập menu.lst (nếu cần thiết):
o cd mnt/boot/grub
vi menu.lst
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 21
GVHD: NGUYỄN TẤN KHÔI
o Tháo gán và chạy grub:
o umount mnt
grub
Trong shell grub, chạy các lệnh:
device (fd0) boot.img
root (fd0)
setup (fd0)
quit
• Dùng tập tin hình ảnh tạo đĩa CD khởi động:
• mkdir -p /tmp/boot
• mv boot.img /tmp/boot
• cd /tmp
mkisofs -b boot/boot.img -c boot/boot.catalog -o boot.iso -r boot
Tập tin được tạo ra là /tmp/boot.iso, bạn dùng nó để ghi vào đĩa CD.
1.2 Khởi động nhiều bản Windows cài đặt trên một đĩa cứng
title windows
hide (hd0,1)
unhide (hd0,0)
root (hd0,0)
makeactive
chainloader +1
title windows_2
hide (hd0,0)
unhide (hd0,1)
root (hd0,1)
makeactive
chainloader +1
1.3 Khởi động ổ CD
GRUB chưa hỗ trợ khởi động ổ CD, do đó nếu muốn tử GRUB khởi động một CD thì
phải nhờ một trình khởi động trung gian.
sbminst -t us -d /dev/fd0 (tạo đĩa mềm khởi động Smart Boot Manager)
dd if=/dev/fd0 of=/boot/sbm.img bs=1k count=18
cp /path/to/syslinux-2.04/memdisk/memdisk /boot (tìm gói syslinux và lấy tập tin memdisk trong
đó)
Thêm đề mục vào menu.lst:
title cdrom
kernel (hd1,6)/boot/memdisk
initrd (hd1,6)/boot/sbm.img
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 22
GVHD: NGUYỄN TẤN KHÔI
V. Cơ chế an toàn và bảo mật GRUB
Dùng tính năng mật khẩu của GRUB để chỉ cho phép người quản trị dùng các hoạt động
tương tác (như biên tập đề mục thực đơn và vào giao diện dòng lệnh). Để sử dụng tính
năng này, cần chạy lệnh password trong tập tin cấu hình, như sau:
password --md5 PASSWORD
Khi đó GRUB không cho phép điều khiển tương tác nào ( và ), cho đến khi gõ
phím và nhập đúng mật khẩu. Tuỳ chọn --md5 cho GRUB biết rằng PASSWORD ở
định dạng MD5. Nếu không sử dụng tuỳ chọn này, GRUB cho rằng PASSWORD ở dạng
văn bản thuần tuý. Mật khẩu có thể được mã hoá bằng lệnh md5crypt. Thí dụ chạy shell
grub và nhập mật khẩu:
grub> md5crypt
Password: **********
Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.
Sau đó cắt và dán mật khẩu đã được mã hoá vào tập tin cấu hình. Ngoài ra cũng có thể
chỉ định đối số tuỳ chọn cho lệnh password, thí dụ:
password PASSWORD /boot/grub/menu-admin.lst
Khi đó GRUB sẽ nạp /boot/grub/menu-admin.lst làm tập tin cấu hình khi nhập đúng mật
khẩu. Nếu muốn chỉ có người quản trị mới có quyền chạy một số đề mục thực đơn nào
đó, chẳng hạn như khởi động một hệ điều hành không bảo mật như DOS, có thể dùng
lệnh lock; lệnh này luôn luôn dừng lại cho đến khi nhập đúng mật khẩu. Thí dụ:
title Kho+?i ddo^.ng DOS
lock
rootnoverify (hd0,1)
makeactive
chainload +1
Cũng có thể dùng lệnh password thay cho lock. Trong trường hợp này tiến trình khởi động
sẽ yêu cầu mật khẩu và dừng lại cho đến khi mật khẩu được nhập chính xác. Vì lệnh
password nhận đối số PASSWORD của chính nó nên sẽ có lợi nếu dùng một mật khẩu
khác với mật khẩu cho các đề mục khác.
Nên sử dụng lệnh lock/password ngay sau title vì các lệnh trong đề mục thực đơn được
thực thi theo thứ tự.
grub-md5-crypt là script gọi shell grub để mã hoá một chuỗi kí tự ở dạng MD5. Mật
khẩu do chương trình này mã hoá có thể được dùng với lệnh password.
grub-md5-crypt nhận các tuỳ chọn sau:
--help
In tóm tắt các tuỳ chọn dòng lệnh và thoát
--version
In thông tin phiên bản và thoát
--grub-shell=tập_tin
Dùng tập_tin làm shell grub
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 23
GVHD: NGUYỄN TẤN KHÔI
VI. [Grub 2]
1. [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.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 24
GVHD: NGUYỄN TẤN KHÔI
2. [Cài đặt / Nâng cấp]
2.1 [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:
2.2 [Cài đặt (Ubuntu 9.04+)]
• 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
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 25
GVHD: NGUYỄN TẤN KHÔI
3. [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.
3.1 [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/ :
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 26
GVHD: NGUYỄN TẤN KHÔI
#
# 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 ###
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 27
GVHD: NGUYỄN TẤN KHÔI
### 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 ###
3.2 [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=""
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 28
GVHD: NGUYỄN TẤN KHÔI
# 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
o Thiết đặt lựa chọn khởi động mặc định. Giá trị có thể là con số hoặc từ
"saved"
o 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, ...
o 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ờ.
o 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
• GRUB_TIMEOUT=5
o 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.
o 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ờ).
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 29
GVHD: NGUYỄN TẤN KHÔI
• GRUB_HIDDEN_TIMEOUT=0
o 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 )
o 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.
o 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.
o 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.
• GRUB_HIDDEN_MENU_QUIET=true
o true - Không hiển thị thời gian đếm ngược. Màn hình hoàn toàn trống.
o 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`
o 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
o 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"
o 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ó.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 30
GVHD: NGUYỄN TẤN KHÔI
• #GRUB_TERMINAL=console
o 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
o 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
o 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
o 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.
3.3 [/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
o 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
o Chỉnh hình nền, màu chữ và chủ đề.
• 10_hurd
o Định vị hurd kernels (hiện tại không dùng).
• 10_linux
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 31
GVHD: NGUYỄN TẤN KHÔI
o Đị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+
o 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
o 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
o 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.
4. [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.
4.1 [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.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 32
GVHD: NGUYỄN TẤN KHÔI
• 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
4.2 [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ị vẫn bắt đầu đếm từ 0 như trước đây
• Tuy nhiên với Grub 2, chỉ số các phân vùng bắt đầu từ 1
• Ví dụ:
o phân vùng đầu tiên trên đĩa cứng đầu tiên: (hd0,1)
o phân vùng thứ 5 trên đĩa cứng thứ 3: (hd2,5)
#!/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
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 33
GVHD: NGUYỄN TẤN KHÔI
• 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
o 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"
•
o 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.
4.3 [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.
o 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.
o 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.
o Để 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.
o 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.
o 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:
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 34
GVHD: NGUYỄN TẤN KHÔI
GRUB_DISABLE_LINUX_RECOVERY=true
•
o 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.
o 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.
o 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.
VII. [Chủ đề ]
1. [Ở 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.
2. [Hình Splash]
Đây là một dự án thuộc Google Summer of Code của Colin Bennett nhằm tạo ra
một hệ thống menu đồ hoạ tuỳ biến cao cho GNU GRUB bootloader.
3. [Ả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ẽ
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 35
GVHD: NGUYỄN TẤN KHÔI
được chạy sau cùng, cũng là cái được hiển thị cho bạn xem.
4. [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.
5. [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ế.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 36
GVHD: NGUYỄN TẤN KHÔI
6. [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.
Danh sách lệnh:
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 37
GVHD: NGUYỄN TẤN KHÔI
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 38
GVHD: NGUYỄN TẤN KHÔI
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 39
GVHD: NGUYỄN TẤN KHÔI
7. [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 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.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 40
GVHD: NGUYỄN TẤN KHÔI
$ 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.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 41
GVHD: NGUYỄN TẤN KHÔI
VIII. [Triển khai ứng dụng]
Dùng trình soạn thảo nano mở file /etc/default/grub
Nội dung file grub như hình bên dưới:
Các tham số đã được giới thiệu trong phần lí thuyết
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 42
GVHD: NGUYỄN TẤN KHÔI
Ban đầu bảng mục chọn của GRUB không hiển thị.
Chỉnh sửa file /etc/default/grub:
-Đặt dấu # trước dòng GRUB_HIDDEN_TIMEOUT để cho GRUB nhận ra đây chỉ là
dòng chú thích, vô hiệu hoá hiệu lực của dòng này
-Dòng GRUB_TIMEOUT sửa lại từ 10 thành 7 để bảng mục chọn GRUB chỉ hiển thị 7
giây để người dùng chọn hệ điều hành khởi động trước khi hệ điều hành chọn mặc định
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 43
GVHD: NGUYỄN TẤN KHÔI
Khi chỉnh sửa xong file grub thì sử dụng lệnh sudo update-grub để cập nhật thay đổi.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 44
GVHD: NGUYỄN TẤN KHÔI
Khởi động lại máy, lúc này bảng mục chọn GRUB sẽ được hiển thị
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 45
GVHD: NGUYỄN TẤN KHÔI
Hiển thị các file và thư mục trong /etc/grub.d
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 46
GVHD: NGUYỄN TẤN KHÔI
Sao lưu file 05_debian_theme trong /etc/grub.d trước khi tiến hành chỉnh sửa file này để
có thể tạo một ảnh nền trong GRUB
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 47
GVHD: NGUYỄN TẤN KHÔI
-Tải một ảnh nền bất kì từ trên Internet về máy hoặc có thể sử dụng hình ảnh nào đó.
-Chẳng hạn hình được lấy từ Internet như bên dưới
-File này được lưu trong máy.
-Trong ví dụ này thì được lưu tại /home/trungdn/Pictures/download.png
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 48
GVHD: NGUYỄN TẤN KHÔI
-Sau khi đã sao lưu file 05_debian_theme thực hiện lần lượt các bước sau:
+Dùng trình soạn thảo nano để mở file 05_debian_theme để tiến hành chỉnh sửa nội dung
+Nội dung file được hiển thị như hình bên dưới
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 49
GVHD: NGUYỄN TẤN KHÔI
Chỉnh sửa file này:
+Dòng WALLPAPER được chỉnh sửa như hình bên dưới
+Đường dẫn ban đầu được thay thành “/home/trungdn/Pictures/download.png”
+Sau khi chỉnh sửa thì lưu lại thay đổi (Ctrl + O) và thoát (Ctrl +X)
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 50
GVHD: NGUYỄN TẤN KHÔI
Màn hình sau khi thoát
Tiến hành cập nhật GRUB:
+ Lưu lại sự thay đổi
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 51
GVHD: NGUYỄN TẤN KHÔI
+Khởi động lại máy để xem kết quả
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 52
GVHD: NGUYỄN TẤN KHÔI
- Sau khi khởi động lại máy kết quả được hiển thị như hình bên dưới
- Nền đen ban đầu đã được thay thế bằng hình ảnh.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 53
GVHD: NGUYỄN TẤN KHÔI
+ Tiến hành loại bỏ mục chọn:
-Hiển thị danh sách /etc/grub.d
-Loại bỏ thuộc tính thực thi (x) của file 20_memtest86+ để loại bỏ mục chọn này
trong GRUB
-Khi loại bỏ thuộc tính này thì file từ màu xanh lá sẽ chuyển sang màu trắng như
hình bên dưới
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 54
GVHD: NGUYỄN TẤN KHÔI
Cập nhật GRUB
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 55
GVHD: NGUYỄN TẤN KHÔI
Khởi động lại:
+Lúc này mục chọn không còn xuất hiện dòng memtest86 nữa do chúng ta đã loại
bỏ thuộc tính thực thi của file này
+Kết quả như hình bên dưới
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 56
GVHD: NGUYỄN TẤN KHÔI
Giờ ta tiến hành bổ sung thêm mục chọn , để chạy song song hai hệ điều hành
+Trong ví dụ hệ điều hành thứ hai là Linux Mint
+Chúng ta sẽ khởi động hệ điều hành này dựa trên file ISO Live CD của nó
Các thao tác lần lượt:
-Tạo thư mục tạm /tmp/iso và /tmp/hdd
-Kết nối file iso đến thư mục /tmp/iso thông qua lệnh mount
-Kết nối phân vùng thứ năm (sda5) đến thư mục /tmp/hdd
-File linuxmint.iso đã có sẵn trong /dev/sda5, nếu chưa có sẵn thì bạn phải sao chép hoặc
đồng bộ (dùng lệnh rsync)
-Tiến hành ngắt kết nối đến hai thư mục trên
-Các thao tác như hình bên dưới
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 57
GVHD: NGUYỄN TẤN KHÔI
Sau khi đã có file iso trên phân vùng 5, ta tiến hành dùng nano để chỉnh sửa file
/etc/grub.d/40_custom để bổ sung thêm mục chọn cho bảng GRUB
-Dùng lệnh loopback để chỉ đường dẫn file iso
-Chỉ rõ vị trí file vmlinuz trong file iso
-Chỉ rõ vị trí file initrd.lz trong file iso (nếu Ubuntu là file initrd.gz)
-Sao lưu và thoát
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 58
GVHD: NGUYỄN TẤN KHÔI
-Cập nhật thay đổi GRUB
-Khởi động lại
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 59
GVHD: NGUYỄN TẤN KHÔI
+Sau khi khởi động lại thì trong GRUB lúc này đã xuất hiện mục chọn “Install
Linux Mint” mà chúng ta đã cài đặt
Lưu ý:
-Chúng ta có thể thay đổi chuỗi “Install Linux Mint” trong /etc/grub.d/40_custom
bằng cách sửa chuỗi ngay sau menuentry
-Tuy chuỗi là “Install Linux Mint” nhưng đây là Linux Mint LiveCD không cần
cài đặt
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 60
GVHD: NGUYỄN TẤN KHÔI
Một số hình ảnh trong Linux Mint
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 61
GVHD: NGUYỄN TẤN KHÔI
IX. [Tài liệu tham khảo]
1. Nơi tải GRUB xuống ( tp://alpha.gnu.org/gnu/grub/ )
2. Tài liệu hướng dẫn cách sử dụng GRUB ( Biên soạn bởi: Lâm Vĩnh Niên )
3.Giáo Trình Iinux căn bản ( Trung tâm phát triển công nghệ thông tin )
4. Giáo trình Linux Nâng Cao ( Học viện Bưu Chính Viễn Thông )
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 62
GVHD: NGUYỄN TẤN KHÔI
MỤC LỤC
I. Giới thiệu về GRUB .............................................................................. 2
1. Tổng quát............................................................................................................... 2
2. Tính năng............................................................................................................... 2
II. Cài đặt GRUB ..................................................................................... 3
1. Nơi tải GRUB xuống............................................................................................. 3
2. Cài đặt GRUB trong môi trường Linux ............................................................. 3
III. Sử dụng GRUB (File cấu hình) ......................................................... 3
1. Chuẩn bị các tập tin cần thiết .............................................................................. 3
2. Thuật ngữ dùng trong GRUB.............................................................................. 4
2.1 Xác định thiết bị .................................................................................... 4
2.2 Xác định tập tin ..................................................................................... 5
3. Các tập tin hình ảnh của GRUB.......................................................................... 6
4. Cơ chế khởi động dùng trong GRUB.................................................................. 6
5. Cài GRUB trong môi trường nguyên thuỷ của GRUB ..................................... 7
5.1 Cài GRUB dùng lệnh setup ................................................................... 7
6. Cài GRUB dùng lệnh install ................................................................................ 7
7. Cài GRUB trong môi trường hệ điều hành giống Unix..................................... 8
7.1 Cài GRUB dùng lệnh grub-install ......................................................... 8
8. Cài GRUB trong shell grub.................................................................................. 9
9. Khởi động hệ thống với GRUB.......................................................................... 11
9.1 Khởi động hệ điều hành trực tiếp ........................................................ 11
9.2 Tải trình nạp khởi động khác............................................................... 11
10. Cấu hình........................................................................................................... 12
10.1 Phân tích thí dụ về một tập tin cấu hình: ......................................... 12
10.2 Đặc điểm của tập tin cấu hình: ........................................................ 13
11. Giao diện người dùng của GRUB.................................................................. 13
12. Giao diện dòng lệnh ........................................................................................ 13
13. Giao diện thực đơn.......................................................................................... 14
14. Biên tập một đề mục trong thực đơn ............................................................ 14
15. Giao diện thực đơn ẩn .................................................................................... 15
16. Một số lệnh trong GRUB................................................................................ 15
16.1 Các lệnh chỉ dùng cho thực đơn ...................................................... 15
17. Các lệnh dùng ở dòng lệnh và đề mục thực đơn .......................................... 17
IV. Một số ứng dụng cụ thể và vấn đề thường gặp.............................. 20
1.1 Tạo đĩa CD khởi động với GRUB....................................................... 20
1.2 Khởi động nhiều bản Windows cài đặt trên một đĩa cứng .................. 21
1.3 Khởi động ổ CD .................................................................................. 21
V. Cơ chế an toàn và bảo mật GRUB..................................................... 22
VI. Grub 2................................................................................................ 23
1. Từ Ubuntu-VN .................................................................................................... 23
2. Cài đặt / Nâng cấp............................................................................................... 24
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 63
GVHD: NGUYỄN TẤN KHÔI
2.1 Cài đặt (Ubuntu 9.10) .......................................................................... 24
2.2 Cài đặt (Ubuntu 9.04+)........................................................................ 24
3. Hệ thống thư mục và tập tin của Grub 2 .......................................................... 25
3.1 grub.cfg (/boot/grub/grub.cfg)............................................................. 25
3.2 grub (/etc/default/grub)........................................................................ 27
3.3 /etc/grub.d/ (thư mục) .......................................................................... 30
4. Thêm mục lựa chọn vào Grub 2 ........................................................................ 31
4.1 Tự động thiết lập.................................................................................. 31
4.2 Người dùng tự thiết lập........................................................................ 32
4.3 Gỡ bỏ mục lựa chọn trong Grub 2....................................................... 33
VII. Chủ đề ........................................................................................... 34
1. Ở phiên bản GRUB 2 đã hỗ trợ hiển thị theo chủ đề ...................................... 34
2. Hình Splash.......................................................................................................... 34
3. Ảnh và màu nền .................................................................................................. 34
4. Sao chép và chỉnh sửa màu mặc định ............................................................... 35
5. Tạo một tập tin chủ đề mới ................................................................................ 35
6. Câu lệnh ............................................................................................................... 36
7. Phục hồi Grub 2 bằng đĩa LiveCD .................................................................... 39
VIII. Triển khai ứng dụng ..................................................................... 41
IX. Tài liệu tham khảo............................................................................ 61
Các file đính kèm theo tài liệu này:
- Tìm hiểu và cấu hình GRUB trên LINUX.pdf