Đề tài 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. 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

pdf63 trang | Chia sẻ: tuandn | Lượt xem: 1864 | Lượt tải: 1download
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