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.
Trong những năm gần đây hệ điều hành LINUX từng bước được đưa
vào sửdụng tại Việt Nam. nhiều tổchức, công ty và các dựán tin học đã
chọn LINUX là môi trường đểphát triển các ứng dụng của mình. Chính vì
thếnhu cầu tìm hiểu hệ điều hành này đang trởnên rất quan trọng và cần
thiết.
Việc tìm hiểu và cấu hình trong môi trường bộtải khởi động GRUB-2
Hệ Điều Hành nhưLINUX(UBUNTU 10.10) là công việc rất khó khăn.
GRUB là trình khởi động máy tính – nó có nhiệm vụtải nhân và khởi động
hệthống Linux cũng nhưmột sốhệ điều hành khác: FreeBSD, NetBSD,
OpenBSD, GNU HURD, DOS, Windows 95, 98, Me, NT, 2000 và XP .Nó
có trách nhiệm chuyển tải và kiểm soát tới một phần mềm hệ điều hành hạt
nhân (chẳng hạn nhưLinux hay GNU Hurd hạt nhân).
Do đó việc tìm hiểu và cấu hình Grubtrên ubuntu 10.10là rất quang
trọng trong linh hoạt và thuận tiện cho việc khởi động Hệ Điều Hành Linux
bởi nó đặc biệt hữu ích cho multiboot, hệthống phân vùng và nó thực sựlà
bộnạp lớn nhất đểkhởi động Linux và thực tếbất kỳhệ điều hành nguồn
mởnào khác
63 trang |
Chia sẻ: tuandn | Lượt xem: 2259 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài 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
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 1
GVHD: NGUYỄN TẤN KHÔI
[LỜI NÓI ĐẦU]
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.
Trong những năm gần đây hệ điều hành LINUX từng bước được đưa
vào sử dụng tại Việt Nam. nhiều tổ chức, công ty và các dự án tin học đã
chọn LINUX là môi trường để phát triển các ứng dụng của mình. Chính vì
thế nhu cầu tìm hiểu hệ điều hành này đang trở nên rất quan trọng và cần
thiết.
Việc tìm hiểu và cấu hình trong môi trường bộ tải khởi động GRUB-2
Hệ Điều Hành như LINUX(UBUNTU 10.10) là công việc rất khó khăn.
GRUB là trình khởi động máy tính – nó có nhiệm vụ tải nhân và khởi động
hệ thống Linux cũng như một số hệ điều hành khác: FreeBSD, NetBSD,
OpenBSD, GNU HURD, DOS, Windows 95, 98, Me, NT, 2000 và XP .Nó
có trách nhiệm chuyển tải và kiểm soát tới một phần mềm hệ điều hành hạt
nhân (chẳng hạn như Linux hay GNU Hurd hạt nhân)..
Do đó việc tìm hiểu và cấu hình Grub trên ubuntu 10.10 là rất quang
trọng trong linh hoạt và thuận tiện cho việc khởi động Hệ Điều Hành Linux
bởi nó đặc biệt hữu ích cho multiboot, hệ thống phân vùng và nó thực sự là
bộ nạp lớn nhất để khởi động Linux và thực tế bất kỳ hệ điều hành nguồn
mở nào khác
Đây là lần đầu tiên em đi vào nghiên cứu đề tài của hệ điều hành
LINUX(Tìm hiểu và cấu hình GRUB trên Linux) và quỹ thời gian có hạn
nên đề tài sẽ không tránh khỏi những thiếu sót. Rất mong nhận được sự đóng
góp ý kiến của thầy cô và bạn bè.
Em xin chân thành cảm ơn sự hướng dẫn của thầy Nguyễn Tấn Khôi
và các bạn bè đã giúp đỡ em hoàn thành đề tài này.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 2
GVHD: NGUYỄN TẤN KHÔI
I. Giới thiệu về GRUB
1. Tổng quát
GRUB là trình khởi động máy tính – nó có nhiệm vụ tải nhân và khởi động hệ
thống Linux cũng như một số hệ điều hành khác: FreeBSD, NetBSD, OpenBSD,
GNU HURD, DOS, Windows 95, 98, Me, NT, 2000 và XP...
Năm 1995, Erich Boley thiết kế GRUB. Năm 1999, Gordon Matzigkeit và
Yoshinori K. Okuji kế thừa GRUB thành gói phần mềm GNU chính thức.
2. Tính năng
• GRUB hỗ trợ nhiều hệ điều hành – bằng cách khởi động trực tiếp nhân hệ điều
hành hoặc bằng cách nạp chuỗi (chain-loading).
• GRUB hỗ trợ nhiều hệ thống tập tin: BSD FFS, DOS FAT16 và FAT32, Minix fs,
Linux ext2fs và ext3fs, ReiserFS, JSF, XFS, và VSTa fs.
• GRUB cung cấp giao diện dòng lệnh linh hoạt lẫn giao diện thực đơn, đồng thời
cũng hỗ trợ tập tin cấu hình.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 3
GVHD: NGUYỄN TẤN KHÔI
II. Cài đặt GRUB
1. Nơi tải GRUB xuống
GRUB có sẵn ở ftp://alpha.gnu.org/gnu/grub hoặc các mirror của nó. Tên gói
GRUB có dạng grub-version.tar.gz, thí dụ grub-0.93.tar.gz.
2. Cài đặt GRUB trong môi trường Linux
Cần phân biệt 2 bước của cài đặt GRUB:
- Cài đặt trong môi trường hệ điều hành để có thể sử dụng được GRUB
- Cài đặt GRUB để GRUB làm trình khởi động máy tính.
Sau khi tải về một thư mục thích hợp, giải nén bằng lệnh
tar xzvf grub-0.93.tar.gz
Sau đó:
cd grub-0.93.tar.gz
./configure
(Để liệt kê các tuỳ chọn khi biên dịch:
./configure --help | more
)
Tiếp theo:
make
make install
Quá trình này sẽ cài đặt shell grub, chương trình kiểm tra multiboot mbchk, các
hình ảnh GRUB (thông thường được cài vào thư mục /usr/share/grub/i386-pc), tài liệu
hướng dẫn sử dụng và trang man của GRUB.
III. Sử dụng GRUB (File cấu hình)
1. Chuẩn bị các tập tin cần thiết
Có hai cách cài đặt GRUB làm trình khởi động máy tính: dùng môi trường nguyên
thuỷ của GRUB (cách này được khuyên dùng) hoặc dùng môi trường hệ điều hành
giống Unix.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 4
GVHD: NGUYỄN TẤN KHÔI
Trước khi cài GRUB làm trình khởi động cần chép các tập tin stage1, stage2 và
*stage1_5 từ thư mục /usr/share/grub/i386-pc (thư mục hình ảnh) vào thư mục /boot/grub
(thư mục khởi động). Trong số các tập tin *stage1_5 có thể chỉ cần chép tập tin thích
hợp với hệ thống tập tin của /boot/grub, chẳng hạn chép tập tin e2fs_stage1_5 nếu thư
mục này nằm trên ext2 hoặc ext3. Ngoải ra có thể chép tập tin splash.xpm.gz vào thư
mục /boot/grub.
2. Thuật ngữ dùng trong GRUB
2.1 Xác định thiết bị
(thiết-bị[,số-thứ-tự-phân-vùng][,chữ-cái-tiểu-phân-vùng-bsd])
• [ ]: thông số tuỳ chọn
• thiết-bị: fd (ổ đĩa mềm) hoặc hd (ổ đĩa cứng, GRUB không phân biệt IDE hay SCSI
hay RAID) theo sau bởi một con số biểu thị số của thiết bị theo BIOS và bắt đầu
với 0 hoặc a . Ví dụ:
• (hd0)
• (0x80)
(128)
là tương đương nhau.
• số-thứ-tự-phân-vùng: là số thứ tự của phân vùng trên ổ đĩa, cũng bắt đầu với 0,
phân vùng mở rộng bắt đầu bằng 4, bất kể số phân vùng sơ cấp thực có trên ổ đĩa.
• chữ-cái-tiểu-phân-vùng-bsd: đại diện cho tiểu phân vùng của BSD, như a hay e.
Cú pháp tắt gọi tiểu phân vùng BSD là (thiết-bị[,chữ-cái-tiểu-phân-vùng-bsd]), trong
trường hợp này GRUB sẽ tìm phân vùng PC đầu tiên chứa nhãn đĩa BSD, rồi tìm
tiểu phân vùng đưọc yêu cầu.
Thí dụ:
• (hd0): toàn bộ ổ đĩa thứ nhất (hoặc MBR khi cài đặt GRUB)
• (hd0,0): phân vùng thứ nhất trên ổ đĩa cứng thứ nhất (hoặc sector khởi động của
phân vùng này khi cài GRUB)
• (hd0,4): phân vùng mở rộng thứ nhất trên ổ đĩa cứng thứ nhất
• (hd1,a): phân vùng BSD a trên ổ đĩa cứng thứ hai; nếu cần xác định cụ thể số PC
slice nào được dùng, sử dụng cú pháp như (hd1,0,a), nếu bỏ trống số PC slice,
GRUB tìm PC slice đầu tiên có phân vùng BSD a
• (fd0): ổ đĩa mềm thứ nhất
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 5
GVHD: NGUYỄN TẤN KHÔI
Ở hệ thống có 2 đĩa cứng IDE và 2 đĩa cứng SCSI, trình tự khởi động trong BIOS được
thiết lập là "IDE trước SCSI", GRUB sẽ dùng các nhãn sau:
• (hd0) Đĩa cứng IDE thứ nhất
• (hd1) Đĩa cứng IDE thứ hai
• (hd2) Đĩa cứng SCSI thứ nhất
• (hd3) Đĩa cứng SCSI thứ hai
Ngoài ra còn có thiết bị ổ đĩa mạng (nd) nếu khi cài đặt GRUB có bật tính năng hỗ trợ
mạng. Có thể dùng chức năng hoàn thành dòng lệnh của GRUB, ví dụ gõ root ( rồi
, GRUB sẽ liệt kê các ổ đĩa, phân vùng, hay tên tập tin.
2.2 Xác định tập tin
Có 2 cách xác định tập tin, bằng tên tập tin tuyệt đối hoặc bằng danh sách khối.
• Tên tập tin tuyệt đối của GRUB giống với tên tập tin tuyệt đối Unix, dùng / làm
dấu phân cách thư mục. Ví dụ:
(hd0,0)/boot/grub/menu.lst
có nghĩa là tập tin (hd0,0)/boot/grub/menu.lst nằm ở phân vùng đầu tiên của ổ đĩa
cứng thứ nhất. Nếu bỏ qua tên thiết bị trong tên tập tin tuyệt đối, GRUB dùng
thiết bị root ngầm định. Thí dụ nếu đã thiết lập thiết bị root, chẳng hạn như (hd1,0),
bằng lệnh root thì /boot/kernel có nghĩa là (hd0,1)/boot/kernel.
• Danh sách khối (block list) dùng để xác định tập tin không xuất hiện trong hệ
thống tập tin, chẳng hạn như một trình nạp chuỗi (chainloader). Cú pháp:
[offset]+độ-dài[,offset]+độ-dài]...
Thí dụ
0+100,200+1,300+300
GRUB đọc các khối 0 đến 99, khối 200 và khối 300 đến 599.
Nếu bỏ qua offset, GRUB sẽ lấy offset là 0.
Cũng như trong cú pháp tên tập tin, nếu danh sách khối không chứa tên
thiết bị thì GRUB sẽ dùng thiết bị root của GRUB. Thí dụ +1 khi thiết bị
root là (hd0,1) tương ứng với (hd0,1)+1.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 6
GVHD: NGUYỄN TẤN KHÔI
Lệnh blocklist liệt kê danh sách khối của tập tin, ví dụ:
grub> blocklist (hd1,0)/vmlinuz
(hd1,0)1322144+96,1322248+1227
có nghĩa là tập tin vmlinux, nằm ở phân vùng thứ nhất của đĩa cứng thứ hai, chiếm
96 khối kể từ khối 1322144 và 1227 khối kể từ khối 1322248 – có thể thấy rằng
tập tin này hơi bị phân mảnh.
3. Các tập tin hình ảnh của GRUB
GRUB bao gồm một số hình ảnh: 2 giai đoạn chính, các giai đoạn tuỳ chọn gọi là Giai
đoạn 1.5, và 2 hình ảnh khởi động mạng.
stage1
Giai đoạn 1, là một hình ảnh chính dùng đề khởi động GRUB, kích thước 512
byte.
stage2
Giai đoạn 2, là hình ảnh cốt lõi của GRUB.
e2fs_stage1_5
fat_stage1_5
ffs_stage1_5
jfs_stage1_5
minix_stage1_5
reiserfs_stage1_5
vstafs_stage1_5
xfs_stage1_5
Tất cả các hình ảnh này được gọi là Giai đoạn 1.5.
nbrub
pxebrub
Là các hình ảnh khởi động mạng.
4. Cơ chế khởi động dùng trong GRUB
Trên sector thứ nhất của đĩa cứng chứa, ngoài bảng phân vùng, một đoạn mã thực thi
được là giai đoạn đầu tiên của quá trình khởi động máy tính, hoặc đoạn mã IPL (initial
program load). Đoạn mã chuẩn này là cái mà lệnh fdisk /mbr trên DOS tạo ra. Khi thiết lập
trong BIOS quy định khởi động từ đĩa cứng đó, BIOS sẽ trao quyền điều khiển cho IPL
hoặc đoạn mã giai đoạn một. Khi đoạn mã chuẩn được nạp, nó sẽ quyết định phân vùng
nào là chủ động (active) và trao quyền điều khiển cho đoạn mã thực thi được nằm ở trong
hoặc gần sector thứ nhất của phân vùng chủ động. Những gì xảy ra tiếp theo phụ thuộc
vào hệ điều hành. Ở các hệ điều hành DOS cũ, phần cốt lõi thi hành được của hệ điều
hành nằm ngay tại vị trí đầu tiên của đĩa và được khởi động trực tiếp từ giai đoạn một.
Trong các trường hợp điển hình hơn, một chương trình khởi động giai đoạn hai sẽ được
nạp và đến lượt nó sẽ biết nơi nào để tìm nhân hoặc các thành phần cốt lõi của hệ điều
hành và khởi động chúng. Khi GRUB hoặc một trình khởi động được cài đặt, đoạn mã
của trình khởi động đó sẽ thay thế đoạn mã IPL chuẩn. Nó phải vừa vặn trong 512 byte
và còn phải chia sẻ chung với bảng phân vùng. Khác biệt chính giữa một trình khởi động
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 7
GVHD: NGUYỄN TẤN KHÔI
và đoạn mã IPL chuẩn là quyền điều khiển sẽ đi đâu tiếp sau đó. Trong trường hợp của
GRUB, quyền điều khiển sẽ được trao cho trình Giai đoạn 2 (hoặc Giai đoạn 1.5).
Giai đoạn 1 được cài vào MBR hoặc vào sector khởi động của phân vùng, còn
Giai đoạn 2 được đặt trên một hệ thống tập tin. Giai đoạn 1.5 có thể được cài trong
một hệ thống tập tin (chẳng hạn như ở phân vùng /boot), trong vùng khởi động của
FFS hoặc ReiserFS, và trong các sector ngay sau MBR vì Giai đoạn 1.5 đủ nhỏ và
các sector ngay sau MBR thường không được sử dụng. Kích thước của vùng này
là số sector cho mỗi head trừ đi 1. Giai đoạn 1.5 hoặc Giai đoạn 2 có thể được đặt
ở bất cứ nơi đâu, và Giai đoạn 2 có thể nạp tập tin cấu hình từ bất cứ nơi đâu trên
đĩa cứng (tập tin cấu hình không cần phải được đặt trong một hệ thống tập tin).
Vì vậy tất cả công việc mà Giai đoạn 1 phải làm là tải Giai đoạn 2 hoặc Giai đoạn
1.5. Giai đoạn 1 mã hoá vị trí của Giai đoạn 2 (hay Giai đoạn 1.5) ở dạng danh
sách khối, nên nó không hiểu bất cứ cấu trúc hệ thống tập tin nào. Vì GRUB hỗ
trợ cả chế độ CHS lẫn LBA nên Giai đoạn 1 trong GRUB, sau khi thăm dò thông
số và chế độ truy cập của đĩa cứng, chỉ tải sector đầu tiên của Giai đoạn 2 (hoặc
Giai đoạn 1.5) và Giai đoạn 2 tự nó tải phần còn lại (tức là tải từ địa chỉ bắt đầu
của nó cộng thêm 512 byte).
Giai đoạn 1.5 là cầu nối giữa stage1 và stage2, nghĩa là Giai đoạn 1.5 được Giai đoạn
1 nạp và Giai đoạn 1.5 nạp Giai đoạn 2. stage1 không hiểu bất kì hệ thông tập tin
nào nhưng *_stage1_5 hiểu một hệ thống tập tin (chẳng hạn e2fs_stage1_5 hiểu ext2fs.
Giai đoạn 1.5 cho phép Giai đoạn 2 có thể được nạp từ một hệ thống tập tin bằng
đường dẫn thông thường mà không cần phải dùng danh sách khối. Vì vậy có thể
an toàn di chuyển vị trí của stage2 đến một nơi khác (chẳng hạn như khi giải phân
mảnh hệ thống tập tin), ngay cả sau khi GRUB đã được cài đặt. Gai đoạn 1 nạp
Giai đoạn 1.5 vào bộ nhớ nếu cần. Một số phần cứng cần bước trung gian để nạp
Giai đoạn 2, chẳng hạn như khi phân vùng /boot nằm ở vị trí quá 1024 cylinder đầu
của ổ cứng hoặc khi sử dụng chế độ LBA.
5. Cài GRUB trong môi trường nguyên thuỷ của GRUB
5.1 Cài GRUB dùng lệnh setup
setup [--force-lba] [--stage2=tập_tin_stage2_hđh] [--prefix=thư_mục] thiết_bị_cài_đặt
[thiết_bị_hình_ảnh]
6. Cài GRUB dùng lệnh install
install [--force-lba] [--stage2=tập_tin_stage2_hđh] tập_tin_stage1 [d] thiết_bị_đích
tập_tin_stage2 [địa_chỉ] [p] [tập_tin_cấu_hình] [tập_tin_cấu_hình_thực]
Chi tiết 2 lệnh trên tham khảo tại:
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 8
GVHD: NGUYỄN TẤN KHÔI
7. Cài GRUB trong môi trường hệ điều hành giống Unix
7.1 Cài GRUB dùng lệnh grub-install
Cách này hoàn toàn không được khuyến khích, vì có thể máy tính sẽ không thể khởi động
được với GRUB. Thí dụ, hầu hết các hệ điều hành không cho GRUB biết cách ánh xạ
chính xác ổ đĩa BIOS sang thiết bị của hệ điều hành, GRUB chỉ đoán cách ánh xạ. Trong
hầu hết các trường hợp thì quá trình này thành công, nhưng không luôn luôn như vậy. Do
đó GRUB cung cấp tập tin ánh xạ do người dùng định nghĩa device.map; nếu tập tin này
cho thấy ánh xạ sai bạn cần phải sửa nó lại. Nếu không may phải cài đặt GRUB trong
môi trường hệ điều hành giống UNIX, gọi lệnh grub-install với tư cách siêu người dùng
(root). Cách sử dụng rất dễ dàng, bạn chỉ cần chỉ định một đối số về nơi cài đặt GRUB.
Đối số có thể là tập tin thiết bị hay ổ đĩa/phân vùng theo GRUB. Cú pháp:
grub-install thiết_bị_cài_đặt
Thí dụ: cài GRUB vào MBR của ổ đĩa IDE thứ nhất trong Linux:
# grub-install /dev/hda
Nếu đây cũng là ổ đĩa BIOS thứ nhất:
# grub-install 'hd(0)'
Một thí dụ khác là khi có một phân vùng khởi động được gán tại /boot. Vì GRUB là một
trình nạp khởi động, nó không biết gì về các điểm gán, nên cần chạy lệnh grub-install như
sau:
# grub-install --root-directory=/boot /dev/hda
Như trên đã nói, việc đoán ổ đĩa BIOS trong hệ điều hành giống UNIX là khá khó khăn.
Vì vậy, sau khi cài đặt, grub-install sẽ nhắc người dùng kiểm ra xem nó có đoán đúng các
ánh xạ không. Cần cẩn thận, vì nếu kết quả xuất ra sai máy tính rất có thể bạn sẽ gặp rắc
rối khi khởi động lại máy tính.
Các tuỳ chọn của lệnh grub-install
--help
In tóm tắt về các tuỳ chọn dòng lệnh và thoát.
--version
In số phiên bản của GRUB và thoát.
--force-lba
Bắt buộc GRUB dùng chế độ LBA. Chỉ dùng tuỳ chọn này nếu BIOS không hoạt
động ở chế độ LBA mặc dù nó hỗ trợ chế độ LBA.
--grub-shell=tập_tin
Dùng tập_tin làm shell grub. Bạn có thể thêm các tuỳ chọn tuỳ ý vào tập_tin sau
tên tập tin, thí dụ:
grub-install --grub-shell="grub –read-only" /dev/fd0
--recheck
Kiểm tra lại ánh xạ thiết bị, ngay cả khi /boot/grub/device.map đã tồn tại. Nên dùng
tuỳ chọn này mỗi khi thêm/tháo một đĩa vào/ra khỏi máy tính.
Lưu ý rằng grub-install thực chất là một Bourne shell script và chức năng thực sự do shell
grub thực hiện. Vì vậy có thể chạy grub trực tiếp để cài GRUB, mà không cần grub-install.
Nhưng không nên làm như vậy trừ khi bạn rất quen thuộc với các yếu tố nội tại của
GRUB. Việc cài một trình nạp khởi động trong một hệ điều hành đang chạy là cực kỳ
nguy hiểm.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 9
GVHD: NGUYỄN TẤN KHÔI
8. Cài GRUB trong shell grub
Cách này dùng lệnh grub trong môi trường hệ điều hành.
Cần lưu ý là shell grub là trình mô phỏng – nó thay thế các lời gọi BIOS bằng các
lời gọi hệ thống UNIX và các hàm libc, nó không chạy dưới môi trường nguyên
thuỷ, vì vậy đôi khi nó hoạt động không chính xác, nhất là trong việc ánh xạ giữa
các ổ đĩa BIOS và các thiết bị hệ điều hành.
Quá trình cài đặt dùng shell grub tương tự như ở Giai đoạn 2 nguyên thuỷ. Bạn
cần cẩn thận về buffer cache. grub dùng thiết bị thô thay vì hệ thống tập tin mà hệ
điều hành đang sử dụng, vì vậy có khả năng cache inconsistency nào đó gây hư
hỏng hệ thống tập tin. Lời khuyên là:
• tháo gán trước khi chạy grub, nếu có thể, các ổ đĩa mà GRUB có thể sẽ viết dữ liệu
lên.
• gán ở chế độ chỉ-đọc nếu không thể tháo gán ổ đĩa nhưng có thể gán với cờ chỉ-
đọc.
• chắc chắn rằng không có bất kì hoạt động đĩa nào trong khi chạy lệnh grub nếu ổ
đĩa bắt buộc phải gán với cờ đọc-viết.
• khởi động lại hệ điều hành càng sớm càng tốt. Điều này có thể không cần thiết
nếu các bước trên đã được tuân thủ, nhưng khởi động lại là cách an toàn nhất.
Sau khi hoàn tất cài đặt, việc nhập lệnh quit là rất quan trọng vì quit làm cho buffer cache
trở nên consistent; đừng ấn .
Nếu muốn cài GRUB không tương tác, chỉ định tuỳ chọn --batch ở dòng lệnh. Một
thí dụ đơn giản:
#!/bin/sh
# Du`ng /usr/sbin/grub ne^'u o+? he^. tho^'ng cu~.
/sbin/grub --batch /dev/null 2>/dev/null
root (hd0,0)
setup (hd0)
quit
EOT
Các tuỳ chọn của lệnh grub:
--help
In tóm tắt về các tuỳ chọn dòng lệnh và thoát.
--version
In số phiên bản của GRUB và thoát.
--verbose
In các thông điệp verbose nhằm mục đích gỡ lỗi.
--device-map=tập_tin
Dùng tập tin ánh xạ thiết bị tập_tin.
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 10
GVHD: NGUYỄN TẤN KHÔI
--no-floppy
Không thăm dò ổ đĩa mềm. Tuỳ chọn này không có tác dụng nếu tuỳ chọn --device-
map được chỉ định.
--probe-second-floppy
Thăm dò ổ đĩa mềm thứ hai. Shell grub không thăm dò nó nếu tuỳ chọn này
không được chỉ định vì đôi khi nó cần thời gian lâu. Shell grub bỏ qua tuỳ chọn
này nếu đã chỉ đinh tập tin ánh xạ thiết bị.
--config-file=tập_tin
Đọc tập tin cấu hình tập_tin thay vì /boot/grub/menu.lst.
--boot-drive=ổ_đĩa
Thiết lập ổ đĩa khởi động stage2 là ổ_đĩa. Đối số này là một số nguyên (thập thân,
bát phân hay thập lục phân).
--install-partition=phân_vùng
Thiết lập phân vùng khởi động stage2 là phân_vùng. Đối số này là một số nguyên
(thập thân, bát phân hay thập lục phân).
--no-config-file
Không dùng tập tin cấu hình.
--no-curses
Không dùng giao diện curses.
--batch
Tuỳ chọn này có cùng ý nghĩa như --no-config-file --no-curses.
--read-only
Không viết vào bất cứ đĩa nào.
Có thể cài GRUB theo một tập tin có sẵn chứa các thông số cần thiết cho lệnh grub. Thí
dụ có tập tin /etc/grub.conf như sau:
root (hd0,4)
install /grub/stage1 d (hd0) /grub/stage2 0x8000 (hd0,4)/grub/menu.lst
quit
Và bạn vừa hiệu chỉnh tập tin device.map, bây giờ bạn phải cài lại GRUB:
grub --batch --device-map=/boot/grub/device.map </etc/grub.conf
Thí dụ bạn có tập tin /etc/grubfd.conf dùng để cài GRUB vào đĩa mềm:
#
# /etc/grubfd.conf – ta.o ddi~a me^`m kho+?i ddo^.ng
#
# DDe^? ca`i grub va`o ddi~a me^`m, nha^.p le^.nh sau:
# grep -v ^# /etc/grubfd.conf | grub --batch
#
root (fd0)
install /boot/grub/stage1 d (fd0) (fd0)/boot/grub/stage2 0x8000 p (fd0)/boot/grub/menu.lst
quit
Bạn dùng lệnh sau để cài GRUB vào đĩa mềm (đã được chú thích trong tập tin đó):
grep -v ^# /etc/grubfd.conf | grub –batch
TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 11
GVHD: NGUYỄN TẤN KHÔI
9. Khởi động hệ thống với GRUB
GRUB có 2 cách khác nhau để khởi động hệ thống. Một cách là nạp hệ điều hành trực
tiếp, cách kia là nạp chuỗi một trình nạp khởi động khác, trình nạp khởi động này sẽ nạp
hệ điều hành. Nói chung thì cách thứ nhất được ưa chuộng hơn vì không phải cài hay duy
trì trình khởi động khác. Tuy nhiên đôi khi vẫn cần dùng cách thứ hai vì GRUB không hỗ
trợ mọi hệ điều hành về bản chất, đặc biệt là các hệ điều hành thuộc sở hữu độc quyển.
9.1 Khởi động hệ điều hành trực tiếp
Nói chung GRUB có thể khởi động Linux, FreeBSD, NetBSD, OpenBSD, GNU HURD
theo các bước sau:
• Quy định thiết bị root của GRUB là ổ đĩa nơi giữ các hình ảnh hệ điều hành bằng
lệnh root.
• Tải hệ điều hành bằng lệnh kernel, có thể gắn thêm các thông số cho nhân.
• Nếu cần, tải initrd bằng lệnh initrd hoặc các mô-đun bằng lệnh module hoặc
modulenounzip.
• Chạy lệnh boot.
9.2 Tải trình nạp khởi động khác
Để khởi động các hệ điều hành không được hỗ trợ, GRUB nạp chuỗi một trình nạp khỏi
động cho hệ điều hành đó. Thông thường, trình khởi động được đặt ở sector khởi động
của phân vùng cài đặt hệ điều hành.
• Thiết lập thiết bị root của GRUB đến phân vùng hệ điều hành bằng lệnh
rootnoverify
grub> rootnoverify hd(0,0)
• Thiết lập cờ active trong phần vùng bằng lệnh makeactive
grub> make