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
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
63 trang |
Chia sẻ: lethao | Lượt xem: 2784 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đồ án 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
lệnh này có thể được dùng trong thực đơn lẫn ở dòng lệnh.
color bình_thường [tô_sáng]
Thay đổi màu thực đơn. Màu bình_thường được dùng cho hầu hết các dòng trong
thực đơn, và màu tô_sáng được dùng để tô sáng dòng mà con trỏ đang chỉ đến.
Nếu không dùng tô_sáng, màu ngược lại của bỉnh_thường được dùng để tô sáng.
Định dạng của một màu là tiền_cảnh/hậu_cảnh. tiền_cảnh và hậu_cảnh là các tên
màu tượng trưng.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 16
GVHD: NGUYỄN TẤN KHÔI
Tên màu tượng trưng phải là một trong các tên sau:
• black
• blue
• green
• cyan
• red
• magenta
• brown
• light-gray
Những tên bên dưới chỉ dùng được cho tiền cảnh.
• dark-gray
• light-blue
• light-green
• light-cyan
• light-red
• light-magenta
• yellow
• white
Nhưng chỉ có 8 tên đầu có thể dùng cho hậu_cả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
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