1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tìm hiểu và cấu hình GRUB trên LINUX

63 693 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu và cấu hình grub trên linux
Người hướng dẫn GVHD: Nguyễn Tấn Khôi
Trường học Trường Đại Học
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đề tài
Thành phố Việt Nam
Định dạng
Số trang 63
Dung lượng 1,87 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu và cấu hình GRUB trên LINUX

Trang 1

[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

Trang 2

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

Trang 3

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

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

Trang 4

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ư

• 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

Trang 5

Ở 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

<TAB>, 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

Trang 6

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

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

Trang 7

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: http://vnoss.org/docs/?id=2

Trang 8

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:

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

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

Trang 9

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 cachẹ 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ế độ đọ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 <C-c>

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

# Dùng /usr/sbin/grub nếu ở hệ thống cũ

/sbin/grub batch <<EOT 1>/dev/null 2>/dev/null

Trang 10

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ứ haị 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âụ 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/menụlst

boot-drive=ổ_đĩa

Thiết lập ổ đĩa khởi động stage2 là ổ_đĩạ Đố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)

Không viết vào bất cứ đĩa nàọ

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/menụlst

quit

Và bạn vừa hiệu chỉnh tập tin devicẹmap, bây giờ bạn phải cài lại GRUB:

grub batch device-map=/boot/grub/devicẹ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 – tạo đĩa mềm khởi động

#

# Để cài grub vào đĩa mềm, nhập lệ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/menụ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

Trang 11

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

Trang 12

10 Cấu hình

Ở giao diện dòng lệnh cần phải gõ vài lệnh để khởi động hệ điều hành GRUB cũng cung

cấp giao diện thực đơn mà chỉ cần chọn một đề mục là mọi thứ được thực hiện để khởi

động hệ điều hành

Để có thể sử dụng giao diện thực đơn cần phải có tập tin cấu hình menụlst ở thư

mục khởi động Khi hệ thống được khởi động, GRUB đọc nội dung của tập tin cấu

hình Không cần phải cài GRUB lại mỗi khi thay đổi nội dung tập tin nàỵ Tập tin

này mặc định nằm ở thư mục /boot/grub, nhưng có thể đặt ở bất cứ nơi đâu cũng như

có thể đặt bất cứ tên gì cho nó

10.1 Phân tích thí dụ về một tập tin cấu hình:

Tập tin này bắt đầu bằng các thiết lập chung, các tuỳ chọn liên hệ đến giao diện thực đơn

Các lệnh này có thể được đặt trước bất cứ đề mục nào (bắt đầu với lệnh title)

Đây là các dòng bình luận GRUB bỏ qua các dùng bắt đầu với kí tự # và các dòng trống

# Theo mặc định, khởi động đề mục thứ nhất

default 0

Đề mục thứ nhất (lưu ý là đếm bắt đầu từ 0 chứ không phải 1) sẽ là lựa chọn mặc định

# Tự động khởi động sau 30 giây

timeout 30

GRUB sẽ khởi động tự động sau 30 giây, trừ khi bị ngắt bởi một nhấn phím

# Quay lại đề mục thứ hai

fallback 1

Nếu vì bất cứ lí do nào mà đề mục mặc định không hoạt động, quay lại đề mục thứ haị Ở

phần định nghĩa cho hệ điều hành, mỗi đề mục bắt đầu bằng một lệnh đặc biệt title

Không có lệnh boot ở cuối đề mục vì nó sẽ tự động thực hiện nếu GRUB nạp thành công

các lệnh khác

Trang 13

10.2 Đặc điểm của tập tin cấu hình:

• các lệnh đặc thù cho thực đơn phải được dùng trước các lệnh khác

• tập tin phải ở định dạng văn bản thuần tuý

• # ở đầu dòng cho biết đây chỉ là lời bình

• các tuỳ chọn cách nhau bằng khoảng trắng

• số có thể ở dạng thập phân hoặc thập lục phân Số thập lục phân phải khởi đầu

bằng 0x, và phân biệt chữ hoa-thường

Nếu quá trình cài GRUB đã không quy định tập tin cấu hình, vẫn có thể tải tập tin cấu

hình trong môi trường GRUB bằng lệnh configfile, thí dụ:

grub> configfile (fd0)/boot/grub/menu.lst

11 Giao diện người dùng của GRUB

GRUB có cả giao diện thực đơn đơn giản để chọn các đề mục được thiết lập sẵn từ tập tin

cấu hình lẫn giao diện dòng lệnh linh hoạt cao để thực hiện bất cứ các tổ hợp lệnh khởi

động nào theo ý muốn

12 Giao diện dòng lệnh

Giao diện dòng lệnh cung cấp một dấu nhắc và sau nó là vùng văn bản có thể biên tập

được giống một dòng lệnh trong Unix hoặc DOS Mỗi dòng lệnh được thi hành ngay lập

tức sau khi nó được nhập vào Các lệnh này là một phần của các dòng lệnh có thể dùng

trong tập tin cấu hình, với cùng một cú pháp Dùng giao diện dòng lệnh có thể khởi động

các hệ điều hành không có trong thực đơn GRUB

Trang 14

Khi gõ các lệnh một cách tương tác, nếu con trỏ ở trong hoặc trước từ đầu tiên trong dòng

lệnh, ấn phím <TAB> (hoặc <C-i>) sẽ liệt kê các lệnh có sẵn, và nếu con trỏ ở sau từ đầu

tiên, <TAB> sẽ liệt kê các ổ đĩa, phân vùng, và tên tập tin tuỳ vào tình huống

Lưu ý rằng không thể dùng chức năng hoàn thành dòng lệnh trong hệ thống tập tin

TFTP vì bởi vì TFTP không hỗ trợ liệt kê tên tập tin vì lí do bảo mật

Dùng lệnh help để đọc thông tin về một lệnh, ví dụ để xem thông tin của lệnh root:

help root

13 Giao diện thực đơn

14 Biên tập một đề mục trong thực đơn

Để biên tập một đề mục trên thực đơn, đầu tiên ấn <ESC>, sau đó chọn đề mục cần thay

đổi bằng các phím con trỏ và ấn <e>, khi đó các dòng lệnh cho đề mục đó sẽ xuất hiện

Chọn dòng cần điều chỉnh bằng các phím con trỏ và ấn <e> lần nữa

Trong khi biên tập một đề mục, ấn <RET> để thay thế dòng lệnh cũ bằng dòng

lệnh vừa điều chỉnh, nếu ấn <ESC> mọi thay đổi sẽ được bỏ qua Nếu muốn thêm

một dòng mới vào đề mục khởi động, ấn <o> nếu thêm vào sau dòng hiện tại hoặc

Trang 15

<O> nếu thêm vào trước dòng hiện tại Để xoá một dòng, ấn <d> GRUB không

hỗ trợ huỷ bỏ thao tác vừa làm, nhưng có thề làm điều tương tự như vậy bằng cách

quay trở lại thực đơn chính Sau khi điều chỉnh xong, ấn <b> để khởi động với đề

mục đó

15 Giao diện thực đơn ẩn

Nếu thiết bị cuối câm hoặc GRUB được yêu cần che dấu giao diện thực đơn bằng lệnh

hiddenmenu, GRUB sẽ không hiển thị giao diện thực đơn và tự động khởi động đề mục

mặc định, trừ khi bị ngắt bằng cách ấn phím <ESC> Khi ngắt thời gian chờ và thiết bị

cuối câm, GRUB quay trở lại giao diện dòng lệnh

16 Một số lệnh trong GRUB

16.1 Các lệnh chỉ dùng cho thực đơn

default số

Thiết lập mặc định cho đề mục số số Việc đánh số bắt đầu từ 0, và đề mục số 0 là

mặc định nếu lệnh này không được dùng

Có thể chỉ định saved thay vì một con số Khi đó, đề mục mặc định là đề mục được

lưu bằng lệnh savedefault

fallback số

Nếu đề mục mặc định có lỗi, ngay lập tức chuyển qua đề mục số thay vì chờ

người dùng thao tác Cách đánh số giống như ở lệnh default Có thể thiết lập nhiều

hơn một fallback

hiddenmenu

Không hiển thị thực đơn trên thiết bị đầu cuối và đề mục mặc định sẽ được khởi

động sau khi hết thời gian chờ Người dùng vẫn có thể yêu cầu hiển thị thực đơn

bằng cách ấn <ESC> trước khi thời gian chờ hết

timeout gy

Thiết lập thời gian chờ, tính bằng gy giây, trước khi tự động khởi động vào đề

mục mặc định

title tên

Bắt đầu một đề mục khởi động mới; nội dung của phần còn lại của dòng này, bắt

đầu bằng kí tự đầu tiên không phải là khoảng trắng, được lấy làm tên cho đề mục

đó

III.16.1.1 Các lệnh chung

Các 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

Trang 16

Tên màu tượng trưng phải là một trong các tên sau:

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:

# Thiết lập màu mặc định

color light-gray/blue black/light-gray

# Thay đổi màụ

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

ổ_đĩạ 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 đĩạ

Trang 17

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)

Trang 18

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ớ

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,

Trang 19

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 Đề mục này được bảo vệ

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_ổ_đĩạ Đ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à

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àọ

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 <^G>

(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 ổ

Trang 20

đĩ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

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:

Trang 21

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

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

Trang 22

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 (<e> và <c>), cho đến khi gõ

phím <p> và nhập đúng mật khẩụ 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ẩụ 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ẩụ Thí dụ:

title Khởi độ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:

Trang 23

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

Trang 24

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

Trang 25

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/ :

Trang 26

#

# 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

search fs-uuid set b02e1934-12dd-418a

if font /usr/share/grub/ascii.pff ; then

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 ###

Trang 27

### 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

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

Trang 28

# 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'

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

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ờ)

Trang 29

 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ó

Trang 30

#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:

Trang 31

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")

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

Ngày đăng: 28/04/2013, 20:23

HÌNH ẢNH LIÊN QUAN

Hình trong môi trường GRUB bằng lệnh  configfile , thí dụ: - Tìm hiểu và cấu hình GRUB trên LINUX
Hình trong môi trường GRUB bằng lệnh configfile , thí dụ: (Trang 13)
Hình bên dưới - Tìm hiểu và cấu hình GRUB trên LINUX
Hình b ên dưới (Trang 53)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w