Tìm hiểu và cấu hình GRUB trên Linux
I. Tổng quát về GRUB
1. Giới thiệu
VD: UbuntuUbuntu, FreeBSD, NetBSD, OpenBSD,GNU HURD, DOS, Windows 95, 98, Me, NT, 2000 và XP...
GRUB được viết bởi Erich Boleyn vào năm 1995 để khởi động hệ thống GNU Mach, vì không thể sử dụng những trình khởi động khác. Sau đó vào năm 1999 Gordon Matzigkeit và Yoshinori K. Okuji chuyển GRUB thành một gói chương trình GNU, đưa chương trình này thành một phần mềm mã nguồn mở.
2. Tính năng
- Một trong các tính năng quan trọng của GRUB đó là tính mềm dẻo. GRUB có thể hiểu các hệ thống tập tin và định dạng thực thi của nhân => bạn có thể nạp HĐH theo cách ưa thích.
- 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.
II. Cài đặt
Bạn có thể tải GRUB tại đây.
Ở đây tôi sử dụng grub_1.94.tar.gz. Như tên file thì ở đây tôi sử dụng phiên bản 1.94
Cách cài đặt:
Mở cửa sổ Terminal lên (trong Ubuntu là CTR + ALT + T) và thực thi các câu lệnh sau. Bạn có thể tham khảo cách dùng, ý nghĩa các câu lệnh trong linux tại đây.
cd /Downloads //Di chuyển đến thư mục đặt file grub_1.9.4.tar.gz
tar -xzvf grub_1.9.4.tar.gz // Giải nén
cd grub_1.9.4
./configure // Kiểm tra hệ thống.
./configure --help | more // Để xem các tùy chọn khi biên dịch
make install // Tiến hành cài đặt
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).III. Sử dụng GRUB
Có 2 cách để cài đặt GRUB làm trình khởi động cho máy tính:
- Dùng môi trường nguyên thủy của grub ( khuyên dùng) : cần tạo đĩa mềm khởi đông grub.
- Cài đặt trong mội trường HĐH giống Unix : sử dụng grub-install hoặc shell grub. Tuy nhiên cách này có thể khiến chúng ta thăm dò sai BIOS.
Như đã nói ở trên, để cài đặt grub trong môi trường nguyên thủy thì chúng ta cần phải tạo ổ đĩa mềm khởi động.
Thực chất đây là quá trình sao chép các tập tin stage1 và stage2 từ thư mục hình ảnh vào block thứ nhất, thứ hai trên đĩa mềm. Quá trình này sẽ phá hủy dữ liệu đang đươc lưu trữ trên đĩa mềm.
Đoạn code thực hiện việc tạo ổ đĩa mềm khởi động như sau:
cd /usr/share/grub/i386-pc
dd if=stage1 of=/dev/fd0 bs=512 count=1
dd if=stage2 of=/dev/fd0 bs=512 seek=1
a) Cài GRUB sử dụng lệnh setup. Sau khi cài đặt ổ đĩa mềm và khởi động lại máy tính với đĩa khởi động đó. Ta sẽ có giao diện dòng lệnh.
// Định thiết bị root cho thư mục khởi động
grub>root (hd0,0)
// Dùng lệnh find nếu bạn không chắc chắn phân vùng nào chứa các tập tin này
grub>find /boot/grub/stega1
// Khi đã thiết lập thiết bị root chính xác. Chạy lệnh setup
grub>setup (hd0)
// Lệnh này sẽ cài GRUB lên MBR của ổ đĩa thứ nhất.
// Nếu muốn cài GRUB vào sector khởi động của một phân vùng thay vì vào MBR, chỉ định phân vùng muốn cài GRUB:
grub> setup (hd0,0)
// Nếu cài GRUB vào phân vùng hoặc ổ đĩa không phải là ổ đĩa đầu tiên, cần nạp chuỗi GRUB từ một trình khởi động khác.
Bây giờ bạn hoàn toàn có thể khởi động GRUB mà không cần đĩa mềm.Thông tin thêm về 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]
Lệnh này dùng để cài đặt GRUB tự động. setup không truy cập trực tiếp vào đĩa cứng mà gọi embed và install để thực hiện công việc. Trước hết nó kiểm tra xem có một tập tin stage1.5 hay không và có thể nhúng (embed) vào một nơi an toàn hay không, Sau đó, setup sử dụng install, một lệnh linh hoạt hơn, ở hậu trường và cài GRUB vào thiết bị thiết_bị_cài_đặt. Nếu chỉ định thiết_bị_hình_ảnh, nó sẽ tìm các hình ảnh GRUB trong thiết bị thiết_bị_hình_ảnh, nếu không nó sẽ dùng thiết bị root hiện tại được thiết lập bằng lệnh root. Nếu thiết_bị_cài_đặt là một đĩa cứng, nó sẽ nhúng Giai đoạn 1.5 nếu có thể. Tuỳ chọn --prefix chỉ định thư mục đặt các hình ảnh GRUB. Nếu không được chỉ định, GRUB sẽ tự động tìm chúng trong /boot/grub và /grub (dĩ nhiên là trong thiết bị root đã được quy định bởi lệnh root trước đó.)
b) Cài GRUB sử 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]
Lệnh này khá phức tạp, và không nên dùng nếu không quen thuộc với GRUB – thay vào đó nên dùng setup.
2. Cài GRUB trong môi trường HĐH giống Unix.
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
Ví 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)'
Ví dụ trên giả định rằng dùng các hình ảnh GRUB ở thư mục root. Nếu muốn GRUB dùng hình ảnh ở thư mục không phải là thư mục root, cần chỉ định tuỳ chọn --root-directory. Cách dùng điển hình là tạo đĩa mềm khởi động GRUB với một hệ thống tập tin.
mke2fs /dev/fd0
mount -t ext2 /dev/fd0 /mnt
grub-install --root-directory=/mnt '(fd0)'
umount /mnt
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
Bạn có thể gõ grub-install --help để xem thêm các tùy chọn.3) Cấu hình grub
GRUB có một giao diện trình đơn để từ đó người dùng có thể chọn một mục (một hệ điều hành) bằng các phím mũi tên rồi nhấn <Enter> để khởi động. Để dùng được trình đơn đó, bạn cần một tập tin cấu hình ‘menu.lst’ nằm trong thư mục khởi động /boot.
Thông thường tập tin này được tạo ra khi cài đặt.
Ví dụ:
Chú thích:
Các dòng bắt đầu bằng kí tự # là những dòng chú thích. Có thể thêm, bớt tùy ý mà không lo ảnh hưởng đến công việc của chương trình. Ngoài ra grub cũng bỏ qua các dòng trống.
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, 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.
chainloader [
--force
] tập_tinNạ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. map ổ_đĩa_nguồn ổ_đĩa_đích
Ánh xạ ổ đĩa ổ_đĩa_nguồn đến ổ đĩa ổ_đĩa_đích. Đ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.
Ví dụ:rootnoverify thiết_bị [hdbias]
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
mục đích: chuyển đổi trật tự giữa ổ cúng thứ nhất và ổ cứng thứ hai.
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.
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.
Ngoài ra còn một số lệnh như cmp, configfile, displayapm, displaymem,find, savedefault ... bạn có thể tìm hiểu thêm.
IV. Một số ứng dụng
1. Tạo đĩa CD khởi động với GRUB
Nếu máy tính của bạn không có ổ đĩa mềm hoặc vì lí nào đó bạn muốn khởi động máy bằng ổ đĩa CD, bạn có thể tạo một đĩa CD khởi động với GRUB.
- Nếu bạn đã có đĩa mềm khởi động với GRUB
- Đặt đĩa vào ổ đĩa và thực hiện lệnh
dd if=/dev/fd0 of=boot.img bs=1024 count=1440
ode
- Đặt đĩa vào ổ đĩa và thực hiện lệnh
- Nếu bạn không có ổ đĩa mềm
- bạn cần tạo một ổ đĩa mềm ảo (hình ảnh ổ đĩa):
dd if=/dev/zero of=boot.img bs=1024 count=1440 mke2fs -F boot.img mount -o loop boot.img mnt mkdir -p mnt/boot/grub
- 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:cp /đường-dẫn/stage1 mnt/boot/grub cp /đường-dẫn/stage2 mnt/boot/grub cp /đường-dẫn/menu.lst mnt/boot/grub
- Biên tập
menu.lst
(nếu cần thiết):cd mnt/boot/grub vi menu.lst
- Tháo gán và chạy
grub
:
Trong shell grub, chạy các lệnh:umount mnt grub
device (fd0) boot.img root (fd0) setup (fd0) quit
- bạn cần tạo một ổ đĩa mềm ảo (hình ảnh ổ đĩa):
- Dùng tập tin hình ảnh tạo đĩa CD khởi động:
Tập tin được tạo ra là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
/tmp/boot.iso
, bạn dùng nó để ghi vào đĩa CD.
- Chép nhân Linux vào đĩa mềm:
mount /dev/fd0 /mnt/floppy cp /path/to/bzImage /mnt/floppy/boot umount /dev/fd0
- Trong môi trường GRUB:
grub> root (fd0) grub> kernel /boot/bzImage root=/dev/hda5 grub> boot
Trong bài viết tiếp theo, tôi sẽ hướng dẫn các bạn cách thay đổi menu boot với grub2.
Nguồn tham khảo: vnoss
Tìm hiểu và cấu hình GRUB trên Linux
Reviewed by Unknown
on
16:47
Rating:
Không có nhận xét nào: