nien at gmail dot comsetup
installgrub-install
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.
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.
Ngoài ra, phiên bản mới nhất của GRUB cũng có thể được tải về qua CVS với kho là
:pserver:anoncvs@subversions.gnu.org:/cvsroot/grub
và mô-đun là
grub,
không cần password cho anoncvs. Do đó có thể làm như sau:
cvs -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/grub login Password: <ENTER> cvs -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/grub co grub cvs -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/grub logout
Một số hệ điều hành cung cấp GRUB dưới dạng đóng gói riêng, chẳng hạn như dạng rpm (có thể tìm thấy trong các bản phân phối Red Hat, SUSE...), dạng deb (trong bản phân phối Debian).
Cần phân biệt 2 bước của cài đặt GRUB: (i) cài đặt trong môi trường hệ điều hành để có thể sử dụng được GRUB và, (ii) cài đặt GRUB để GRUB làm trình khởi động máy tính. Bước 2 sẽ được đề cập trong chương Sử dụng GRUB.
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.gzSau đó:
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.
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. Để cài đặt GRUB trong môi trường nguyên thuỷ của GRUB, cần tạo đĩa mềm khởi động GRUB. Cài đặt GRUB trong môi trường hệ điều hành giống Unix dùng công cụ grub-install hoặc shell grub, tuy nhiên chúng có thể thăm dò sai BIOS.
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.
(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, ví dụ ổ đĩa cứng IDE sơ cấp được đánh số 0, còn ổ đĩa cứng IDE thứ cấp được đánh số 1. Thứ tự này tương đối tương đương với cách nhân Linux sắp xếp các thiết bị theo chữ cái (a tương ứng với 0, b tương ứng với 1, v.v...). Cũng có thể thiết lập thiết-bị ở dạng thập lục phân hoặc thập phân, thí 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(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(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.
/ làm dấu phân cách thư mục. Ví dụ:
(hd0,0)/boot/grub/menu.lstcó 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.
[offset]+độ-dài[,offset]+độ-dài]...
Thí dụ
0+100,200+1,300+300GRUB đọ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.
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+1227có 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.stage1
stage2
e2fs_stage1_5
fat_stage1_5
ffs_stage1_5
jfs_stage1_5
minix_stage1_5
reiserfs_stage1_5
vstafs_stage1_5
xfs_stage1_5
nbrub
pxebrub
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 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.
stage1 và stage2 từ thư mục hình ảnh vào block thứ nhất và thứ hai trên đĩa mềm. Quá trình này sẽ phá huỷ dữ liệu hiện đang lưu trữ trên đĩa mềm.
Các lệnh để thực hiện điều này trên một hệ điều hành giống UNIX:
# cd /usr/share/grub/i386-pc # dd if=stage1 of=/dev/fd0 bs=512 count=1 1+0 records in 1+0 records out # dd if=stage2 of=/dev/fd0 bs=512 seek=1 153+1 records in 153+1 records out #
setupstage1 của GRUB theo cách này sẽ xoá sector khởi động đang được một hệ điều hành sử dụng. Hiện tại GRUB có thể trực tiếp khởi động GNU Mach, Linux, FreeBSD, NetBSD, và OpenBSD, vì vậy dùng GRUB trên sector khởi động thường là an toàn. Nhưng nói chung nên sao lưu sector đầu tiên của phân vùng sắp cài stage1 của GRUB. Điều này không quan trọng lắm nến cài GRUB vào sector đầu tiên của đĩa cứng, vì dễ dàng khôi phục nó (chẳng hạn như chạy fdisk /mbr trong DOS).
Để cài GRUB trong môi trường nguyên thuỷ, vốn là điều được khuyên, cần tạo đĩa khởi động GRUB và khởi động lại máy tính với đĩa khởi động đó. Một khi đã được khởi động, GRUB sẽ trình bày giao diện dòng lệnh.
Đầu tiên, định thiết bị root cho thư mục khởi động:
grub> root (hd0,0)Có thể dùng lệnh find nếu không chắc phân vùng nào thực sự chứa các tập tin này:
grub> find /boot/grub/stage1Cần lưu ý là thiết bị root của GRUB không nhất thiết là phân vùng root của hệ điều hành (nếu cần xác định phân vùng root cho hệ điều hành, thêm thông số đó vào lệnh
kernel).
Một 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ờ có thể khởi động GRUB mà không cần đĩa mềm GRUB.
Nói 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 đó.)
Nếu có chỉ định, các tuỳ chọn --force-lba và --stage2 được chuyển vào lệnh install.
Thí dụ về cài GRUB lên đĩa cứng với /boot được gán trên phân vùng riêng biệt:
setup (hd0) (hd2,0)Xuất hiện các thông báo:
Checking "/boot/grub/stage1" no
Checking "/grub/stage1" yes
Checking "/grub/stage2" yes
Checking "/grub/stage1_5" yes
Running "embed/grub/e2fs_stage1_5 (hd0)" 22 sectors are embedded
Running "install /grub/stage1 d (hd0) (hd0)1+22 p (hd2,0)/grub/stage2 /grub/menu.lst”
Lưu ý: stage1.5 đã được nhúng và (/boot)/grub/stage2 đã thay đổi (cập nhật vị trí tương ứng của stage2 và menu.lst).
installinstall [--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.
Nói ngắn gọn, lệnh này sẽ thực hiện một cài đặt đầy đủ với giả định Giai đoạn 2 hay 1.5 đã có tại vị trí cài đặt cuối cùng.
Đi vào chi tiết hơn, nó sẽ tải tập_tin_stage1, xác nhận rằng nó là Giai đoạn 1 đúng số phiên bản của GRUB, cài đặt một danh sách khối để nạp tập_tin_stage2 làm Giai đoạn 2 (nghĩa là tập_tin_stage2 sẽ trao cho Giai đoạn 1 vị trí của Giai đoạn 2). Nếu có tuỳ chọn d, Giai đoạn 1 luôn luôn tìm đĩa thực tế đã cài tập_tin_stage2 hơn là dùng ổ đĩa khởi động. Giai đoạn 2 sẽ được nạp tại địa chỉ địa_chỉ, phải là 0x8000 đối với Giai đoạn 2 thực, và 0x2000 đối với Giai đoạn 1.5. Nếu địa_chỉ không được chỉ định, GRUB sẽ xác định địa chỉ tự động. Sau đó nó viết Giai đoạn 1 đã hoàn chỉnh vào khối đầu tiên của thiết bị thiết_bị_đích. Nếu tuỳ chọn p hoặc tập_tin_cấu_hình được chỉ định, nó sẽ đọc khối đầu tiên của stage2, thay đổi nó bằng giá trị của phân vùng mà ở đó tập_tin_stage2 được tìm thấy (đối với p) hoặc đặt chuỗi tập_tin_cấu_hình vào vùng cho stage2 biết nơi tìm tập tin cấu hình lúc khởi động. Cũng như vậy, nếu tập_tin_cấu_hình_thực được chỉ định và tập_tin_stage2 là Giai đoạn 1.5, thì tập_tin_cấu_hình được vá bằng tên tập tin cấu hình tập_tin_cấu_hình_thực. Để dễ hiểu hơn cho trường hợp nhúng Giai đoạn 1.5: tập_tin_stage2 là vị trí nhúng stage1_5, tập_tin_cấu_hình là vị trí của stage2 (theo lô-gic, stage2 là tập tin cấu hình cho stage1_5), tập_tin_cấu_hình_thực là vị trí của menu.lst. Lệnh install không phát sinh sector bitmap cho stage2, tức là tham số tập_tin_cấu_hình, mà nó cần viết chuỗi tập_tin_cấu_hình và tập_tin_cấu_hình_thực (không ở dạng block bitmap mà ở dạng tên tập tin thuần tuý) tương ứng vào stage1_5 và stage2. stage2 nằm trên hệ thống tập tin, vì vậy tuỳ chọn --stage2 giúp cho việc viết được an toàn hơn.
Lệnh này giữ lại DOS BPB (và đối với đĩa cứng là bảng phân vùng) của sector sẽ được cài Giai đoạn 1.
Lưu ý:
Một số BIOS không trả về bitmap hỗ trợ LBA đúng ngay cả chúng thực sự có hỗ trợ; vì vậy GRUB cung cấp giải pháp để bỏ qua bitmap sai, đó là tuỳ chọn --force-lba. Đừng dùng tuỳ chọn này nếu BIOS không hỗ trợ LBA (chế độ LBA dùng firmware để vượt qua giới hạn 1024 cylinder của BIOS).
Phải chỉ định tuỳ chọn --stage2 trong shell grub nếu không thể tháo gán hệ thống tập tin nơi chứa tập tin stage2. Đối số là tên tập tin trong hệ điều hành.
Thí dụ về sử dụng lệnh install:
root (hd0,1) embed /boot/grub/reiserfs_stage1_5 (hd0) # hoặc e2fs_stage1_5(và lưu ý số sector)
install /boot/grub/stage1 (hd0) (hd0)1+<số sector có từ lệnh embed> p /boot/grub/stage2 /boot/grub/menu.lst
(hoặc dùng setup (hd0) )
grub-installdevice.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_đặtThí dụ: cài GRUB vào MBR của ổ đĩa IDE thứ nhất trong Linux:
# grub-install /dev/hdaNếu đây cũng là ổ đĩa BIOS thứ nhất:
# grub-install '(hd0)'Các thí 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. Thí dụ:
# mke2fs /dev/fd0 # mount -t ext2 /dev/fd0 /mnt # grub-install --root-directory=/mnt '(fd0)' # umount /mntMộ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/hdaNhư 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
--version
--force-lba
--root-directory=thư_mục
/boot:
grub-install --root-directory=/boot 'hd0'
--grub-shell=tập_tin
grub-install --grub-shell="grub –read-only" /dev/fd0
--recheck
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.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.
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à:
grub, nếu có thể, các ổ đĩa mà GRUB có thể sẽ viết dữ liệu lên.
grub nếu ổ đĩa bắt buộc phải gán với cờ đọc-viết.
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 # Du`ng /usr/sbin/grub ne^'u o+? he^. tho^'ng cu~. /sbin/grub --batch <<EOT 1>/dev/null 2>/dev/null root (hd0,0) setup (hd0) quit EOTCác tuỳ chọn của lệnh
grub:
--help
--version
--verbose
--device-map=tập_tin
--no-floppy
--device-map được chỉ định.
--probe-second-floppy
--config-file=tập_tin
/boot/grub/menu.lst.
--boot-drive=ổ_đĩa
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
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
--no-curses
--batch
--no-config-file --no-curses.
--read-only
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 quitVà 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.confThí 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
--device-map, shell grub tạo tập tin ánh xạ thiết bị, thường là /boot/grub/device.map, nếu chưa có tập tin này. Nếu tập tin này đã tồn tại, shell grub đọc nó để ánh xạ các ổ đĩa BIOS theo các thiết bị hệ điều hành. Tập tin này gồm các dòng:
thiết_bị tập_tinthiết_bị là một ổ đĩa, cú pháp dùng theo cú pháp của GRUB; tập_tin là một tập tin thiết bị của hệ điều hành.
Lý do shell grub cung cấp tập tin ánh xạ thiết bị là vì nó không thể đoán ánh xạ giữa ổ đĩa BIOS và thiết bị hệ điều hành một cách chính xác trong một số môi trường; thí dụ như khi thay đổi trình tự khởi động giữa IDE và SCSI trong BIOS, shell grub sẽ nhầm lẫn thứ tự của chúng.
Vì vậy hãy điều chỉnh lại tập tin này nếu shell grub nhầm lẫn. Bạn có thể thêm chú thích trong tập tin này, nếu cần, vì shell grub xem các dòng bắt đầu bằng kí tự # là dòng chú thích.
Sau khi thay đổi nội dung tập tin device.map cần cài lại GRUB.
root.
kernel, có thể gắn thêm các thông số cho nhân.
initrd hoặc các mô-đun bằng lệnh module hoặc modulenounzip.
boot.rootnoverify
grub> rootnoverify (hd0,0)
makeactive
grub> makeactive
chainloader
grub> chainloader +1
+1 biểu thị GRUB đọc một sector kể từ nơi bắt đầu của phân vùng.
bootfind /vmlinuz (hoặc tương tự).
grub> kernel /vmlinuz root=/dev/hda1Nếu cần chỉ định các tham số cho nhân, gắn chúng vào lệnh trên. Thí dụ để thiết lập
vga là ext:
grub> kernel /vmlinux root=/dev/hda1 vga=extCần lưu ý là phân vùng root ở đây phải theo cách gọi của Linux vì nó được chuyển vào nhân Linux.
initrd sau lệnh kernel
grub> initrd /initrd
boot.mem= cho nhân để bắt nó dùng ít bộ nhớ hơn hiện có, thì cũng cần phải chỉ định cùng một kích thước bộ nhớ cho GRUB. Để GRUB biết được kích thước này, chạy lệnh uppermem trước khi tải nhân.
/boot/loader. Xem thí dụ:
grub> root (hd0,a) grub> kernel /boot/loader grub> bootPhiên bản FreeBSD 5.x dùng mặc định hệ thống tập tin UFS2 mà hiện tại GRUB chưa hỗ trợ, vì vậy phải dùng cách nạp chuỗi:
grub> rootnoverify (hd0,1) grub> chainloader +1 grub> boot
root.
kernel. Nên gắn tuỳ chọn --type=netbsd nếu muốn tải nhân ELF:
grub> kernel --type=netbsd /netbsd-elf
boot.map, thí dụ để chuyển đổi đĩa cúng thứ nhất và thứ hai:
grub> map (hd0) (hd1) grub> map (hd1) (hd0)Cần lưu ý là cách này chỉ hiệu quả khi DOS hay Windows dùng BIOS để truy cập ổ đĩa được chuyển đổi. Nếu hệ điều hành đó dùng trình điều khiển đặc biệt cho ổ đĩa đó, cách này có thể không hoạt động. Một vấn đề khác là khi cài nhiều hơn một bản của hệ điều hành DOS/Windows trên một đĩa cứng các hệ điều hành này có thể lẫn lộn nếu có nhiều hơn một phân vùng sơ cấp cho DOS/Windows. Dĩ nhiên nên tránh những trường hợp như thế này, nhưng GRUB đưa ra một giải pháp khi muốn làm như vậybằng kĩ thuật che/khử che phân vùng. Nếu GRUB che một phân vùng DOS hay Windows, DOS hay Windows sẽ bỏ qua phân vùng đó. Nếu GRUB khử che một phân vùng DOS hay Windows, DOS hay Windows sẽ nhận diện được phân vùng đó. Vì vậy nếu DOS hay Windows được cài ở phân vùng thứ nhất và thứ hai của đĩa cứng thứ nhất, để khởi động bản hệ điều hành trên phân vùng thứ nhất:
grub> unhide (hd0,0) grub> hide (hd0,1) grub> rootnoverify (hd0,0) grub> chainloader +1 grub> makeactive grub> boot
Để có thể sử dụng giao diện thực đơn cần phải có tập tin cấu hình menu.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ày. 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ó.
title).
# # Ta^.p tin ca^'u hi`nh thu+.c ddo+n ma^~u #Đâ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 ma(.c ddi.nh, kho+?i ddo^.ng dde^` mu.c thu+' nha^'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.
# Tu+. ddo^.ng kho+?i ddo^.ng sau 30 gia^y timeout 30GRUB sẽ khởi động tự động sau 30 giây, trừ khi bị ngắt bởi một nhấn phím.
# Quay la.i dde^` mu.c thu+' hai fallback 1Nế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ứ hai. Ở 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.
Đối số cho lệnh title được dùng để trình bày một tựa/miêu tả ngắn cho đề mục.
# DDe^? kho+?i ddo^.ng GNU/Linux title GNU/Linux kernel (hd1,0)/vmlinuz root=/dev/hdb1Khởi động GNU/Linux từ đĩa cứng thứ hai.
# DDe^? kho+?i ddo^.ng FreeBSD title FreeBSD root (hd0,2,a) kernel /boot/loaderKhởi động nhân FreeBSD tải từ phân vùng
a trên PC slice thứ ba của đĩa cứng thứ nhất.
# DDe^? kho+?i ddo^.ng OS/2 title OS/2 root (hd0,1) makeactive # na.p chuo^~i tri`nh kho+?i ddo^.ng OS/2 tu+` sector thu+' nha^'t chainloader +1 # Na.p chuo^~i mo^.t ta^.p tin cu. the^? #chainloader /boot/chain.os2Khởi động OS/2 dùng cách nạp chuỗi.
# DDe^? kho+?i ddo^.ng Windows NT hoa(.c Windows95 title Thu+.c ddo+n kho+?i ddo^.ng Windows NT / Windows 95 root (hd0,0) makeactive chainloader +1 # DDe^? na.p DOS ne^'u co' ca`i Windows NT # chainload /bootsect.dosKhởi động Windows bằng cách nạp chuỗi.
# DDe^? kho+?i ddo^.ng mo^.t he^. ddie^`u ha`nh tre^n ddi~a me^`m title floppy pause Ga`i ddi~a me^`m va`o o^? ddi~a root (fd0) chainloader +1Khởi động một hệ điều hành từ đĩa mềm.
# DDe^? ca`i GRUB va`o ddi~a cu+'ng title Ca`i GRUB va`o ddi~a cu+'ng root (hd0,0) setup (hd0)Cài (cài lại) GRUB vào đĩa cứng.
# Thay ddo^?i ma`u sa('c.
title Thay ddo^?i ma`u sa('c
color light-green/brown blink-red/blue
Thay đổi màu sắc của thực đơn.
# Ta?i mo^.t thu+.c ddo+n kha'c title Thu+.c ddo+n bo^? sung configfile (hd0,4)/boot/grub/control.lstTải thực đơn bổ sung.
# ở đầu dòng cho biết đây chỉ là lời bình
configfile, thí dụ:
grub> configfile (fd0)/boot/grub/menu.lst
password trong tập tin cấu hình, như sau:
password --md5 PASSWORDKhi đó 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ẩu. Tuỳ chọn
--md5 cho GRUB biết rằng PASSWORD ở định dạng MD5. Nếu không sử dụng tuỳ chọn này, GRUB cho rằng PASSWORD ở dạng văn bản thuần tuý.
Mật khẩu có thể được mã hoá bằng lệnh md5crypt. Thí dụ chạy shell grub và nhập mật khẩu:
grub> md5crypt Password: ********** Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.Sau đó cắt và dán mật khẩu đã được mã hoá vào tập tin cấu hình. Ngoài ra cũng có thể chỉ định đối số tuỳ chọn cho lệnh
password, thí dụ:
password PASSWORD /boot/grub/menu-admin.lstKhi đó GRUB sẽ nạp
/boot/grub/menu-admin.lst làm tập tin cấu hình khi nhập đúng mật khẩu.
Nếu muốn chỉ có người quản trị mới có quyền chạy một số đề mục thực đơn nào đó, chẳng hạn như khởi động một hệ điều hành không bảo mật như DOS, có thể dùng lệnh lock; lệnh này luôn luôn dừng lại cho đến khi nhập đúng mật khẩu. Thí dụ:
title Kho+?i ddo^.ng DOS lock rootnoverify (hd0,1) makeactive chainload +1Cũng có thể dùng lệnh
password thay cho lock. Trong trường hợp này tiến trình khởi động sẽ yêu cầu mật khẩu và dừng lại cho đến khi mật khẩu được nhập chính xác. Vì lệnh password nhận đối số PASSWORD của chính nó nên sẽ có lợi nếu dùng một mật khẩu khác với mật khẩu cho các đề mục khác.
Nên sử dụng lệnh lock/password ngay sau title vì các lệnh trong đề mục thực đơn được thực thi theo thứ tự.
grub-md5-crypt là script gọi shell grub để mã hoá một chuỗi kí tự ở dạng MD5. Mật khẩu do chương trình này mã hoá có thể được dùng với lệnh password.
grub-md5-crypt nhận các tuỳ chọn sau:
--help
--version
--grub-shell=tập_tin
Di chuyển con trỏ và biên tập văn bản trên một dòng có thể được thực hiện nhờ một phần các chức năng có sẵn trong shell Bash:
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
Về cơ bản, giao diện thực đơn cung cấp danh sách các đề mục khởi động cho người dùng lựa chọn. Dùng các phím mũi tên để chọn đề mục, rồi ấn phím <RET> để chạy nó. Có thể quy định thời gian chờ để khởi động đề mục mặc định (hoặc đề mục đầu tiên nếu không thiết lập), thời gian này sẽ bị ngắt bằng cách nhấn phím bất kì.
Từ giao diện thực đơn có thể vào giao diện dòng lệnh bằng cách ấn <c> (khi đó sẽ giống như trường hợp không có tập tin cấu hình nhưng vẫn có thể quaylại giao diện thực đơn bằng phím <ESC>) hoặc có thể biên tập bất cứ đề mục khởi động nào bằng cách ấn phím <e>.
Nếu giao diện thực đơn được bảo vệ bằng mật khẩu, ấn <RET> rồi <p> và nhập mật khẩu để chọn đề mục.
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 <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 đó.
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.
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.
default. Có thể thiết lập nhiều hơn một fallback.
tiền_cảnh/hậu_cảnh. tiền_cảnh và hậu_cảnh là các tên màu tượng trưng. Tê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:
# Thie^'t la^.p ma`u ma(.c ddi.nh. color light-gray/blue black/light-gray # Thay ddo^?i ma`u. title OS-BS like color magenta/blue black/magenta
grub> device (fd0) /floppy-image grub> device (hd0) /dev/sd0Lệnh này chỉ dùng được ở shell grub.
--md5] mật_khẩu [tập_tin_cấu_hình_mới]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.
grub> setkey capslock control grub> setkey control capslockMộ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. Bảng sau đây miêu tả các kí tự tương ứng với các kí hiệu đó:
exclam
!
at
@
numbersign
#
dollar
$
percent
%
caret
^
ampersand
&
asterisk
*
parenleft
(
parenright
)
minus
-
underscore
_
equal
=
plus
+
bracketleft
[
braceleft
{
bracketright
]
braceright
}
semicolon
;
colon
:
quote
'
doublequote
"
backquote
`
tilde
~
backslash
\
bar
|
comma
,
less
<
period
.
greater
>
slash
/
question
?
space
help để xem thông tin về các lệnh này.
grub> cat /etc/fstab
--force] tập_tin--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).
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ả.
/boot/grub/stage1.
--no-apm--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.
--all [mẫu ...]--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 đó.
--type=loại] [--no-mem-option] tập_tin ...--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.
password.
Lệnh này được dùng trong thực đơn, như ở thí dụ sau:
title DDe^` mu.c na`y ddu+o+.c ba?o ve^. lock root (hd0,a) kernel /no-security-os
grub> map (hd0) (hd1) grub> map (hd1) (hd0)Thí dụ này chuyển đổi trật tự giữa ổ cúng thứ nhất và ổ cứng thứ hai.
password.
kernel. Hình ảnh nhân Multiboot phải được nạp trước khi nạp bất kì mô-đun nào.
module, ngoại trừ việc giải nén tự động bị bất hoạt.
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 ổ đĩ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.
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.
default saved timeout 10 title GNU/Linux root (hd0,0) kernel /boot/vmlinuz root=/dev/sda1 vga=ext initrd /boot/initrd savedefault title FreeBSD root (hd0,a) kernel /boot/loader savedefault
Với cấu hình này GRUB sẽ chọn đề mục được khởi động trước đây làm đề mục mặc định.
Dùng lệnh savedefault ở một hoặc một vài đề mục và không dùng ở một số đề mục khác sẽ tạo thực đơn cho phép thay đổi mặc định ở một vài hệ thống và không bao giờ thiết lập mặc định được cho các hệ điều hành kia.
mke2fs /dev/fd0).
/mnt.
/mnt/boot/grub, chỉ cần chép stage1, stage2 và menu.lst. Có thể không cần *stage1_5.
/sbin/grub --batch --device-map=/dev/null <<EOF device (fd0) /dev/fd0 root (fd0) setup (fd0) quit EOFGRUB và thực đơn của nó tải từ đĩa mềm nhanh hơn nhiều so với Linux, FreeBSD, hay OpenBSD khởi động từ đĩa mềm.
mount /dev/fd0 /mnt/floppy cp /path/to/bzImage /mnt/floppy/boot umount /dev/fd0
grub> root (fd0) grub> kernel /boot/bzImage root=/dev/hda5 grub> boot
dd if=/dev/fd0 of=boot.img bs=1024 count=1440
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
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
menu.lst (nếu cần thiết, có thể xem thí dụ bên dưới):
cd mnt/boot/grub vi menu.lst
grub:
umount mnt grubTrong shell grub, chạy các lệnh:
device (fd0) boot.img root (fd0) setup (fd0) quit
mkdir -p /tmp/grubcd/boot mv boot.img /tmp/grubcd/boot cd /tmp/grubcd mkisofs -b boot/boot.img -c boot/boot.catalog -o boot.iso -r .Lưu ý có dấu
. ở cuối lệnh trên, chỉ thư mục hiện tại (cũng có thể dùng một thư mục khác với điều kiện thư mục này phải chứa boot/boot.img; và có thể loại trừ thư mục khởi động khỏi tập tin hình ảnh với tuỳ chọn -x). Tập tin được tạo ra là /tmp/grubcd/boot.iso, bạn dùng nó để ghi vào đĩa CD.Thí dụ về tập tin menu.lst:
default 0
timeout 10
title hd0_MBR
root (hd0)
chainloader +1
title hd0_MBR_noverify
root (hd0)
chainloader +1
title hd00
root (hd0,0)
chainloader +1
title hd00_noverify
root (hd0,0)
chainloader +1
title floppy
root (fd1)
chainloader +1
title Windows map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) makeactive chainloader +1Cũng có thể dùng lệnh
map sau cùng:
title Windows rootnoverify (hd1,0) makeactive chainloader +1 map (hd0) (hd1) map (hd1) (hd0)Việc ánh xạ là cho BIOS, GRUB vẫn xem đĩa đầu tiên là
hd0, đĩa thứ 2 là hd1.
Thí dụ cho khởi động Windows từ phân vùng thứ hai trên đĩa cứng thứ hai:
title Windows map (hd0) (hd1) map (hd1) (hd0) chainloader (hd1,1)+1
title windows hide (hd0,1) unhide (hd0,0) root (hd0,0) makeactive chainloader +1 title windows_2 hide (hd0,0) unhide (hd0,1) root (hd0,1) makeactive chainloader +1
/boot, ở /dev/hda2).
/mnt/floppy):
dd if=/dev/hda2 of=/mnt/floppy/bootsect.lnx bs=512 count=1Tên của tập tin
bootsect.lnx phải theo quy định 8.3 để ntldr có thể nhận diện được.
bootsect.lnx vào thư mục gốc trên đĩa C:
C:\boot.ini, nếu cần, bằng Windows Explorer hoặc bằng dòng lệnh (C:\attrib -s -r c:\boot.ini, và sau khi thực hiện xong C:\attrib +s +r c:\boot.ini). Mở tập tin boot.ini bằng một trình biên tập, chẳng hạn như Notepad, thêm dòng c:\bootsect.lnx="Linux" vào tập tin đó. Thí dụ như:
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
c:\bootsect.lnx="Linux"
Mỗi khi thay đổi sector khởi động dùng để tạo bootsect.lnx, cần phải cập nhật bản mới của tập tin này.
sbminst -t us -d /dev/fd0 (tạo đĩa mềm khởi động Smart Boot Manager)
dd if=/dev/fd0 of=/boot/sbm.img bs=1k count=18
cp /path/to/syslinux-2.04/memdisk/memdisk /boot (tìm gói syslinux và lấy tập tin memdisk trong đó)
Thêm đề mục vào menu.lst:
title cdrom
kernel (hd1,6)/boot/memdisk
initrd (hd1,6)/boot/sbm.img
1 = single user mode (có thể gõ single)
2 = Multiuser mode
3 = Full Multiuser mode
5 = X11
Ấn <Enter> để thoát chế độ hiệu chỉnh.
mkdir /mnt/grub mount /dev/hda11 /mnt/grub mkdir /mnt/grub/grub cp -fR /boot/grub/ /mnt/grub/grub/
grub> root (hd0,10) grub> setup (hd0) grub> quit
convert -geometry 640x480 -colors 14 image.jpg image.xpm
gzip image.xpm
/boot/grub và điều chỉnh lại tập tin menu.lst.
dd if=/dev/hda1 of=/tmp/sect6 bs=512 count=1 skip=6 sẽ giúp lấy lại sector khởi động đó.
Thực chất sector khởi động của phân vùng FAT32 gồm toàn bộ 3 sector (trong đó phần lớn là không có gì ngoài zero). Có thể phục hổi sector khởi động của FAT, FAT 16, FAT 32 bằng lệnh SYS đi kèm theo các phiên bản của các hệ điều hành DOS/Windows.
password trong tập tin thực đơn. Có thể bạn cần phải tìm cách khởi động hệ điều hành để biên tập tập tin đó, chẳng hạn như khởi động từ đĩa cứu nguy.
stage1 và stage2 trong /boot/grub.
Điều này tuỳ thuộc vào BIOS và hệ điều hành. Về BIOS, dĩa cứng có thể được truy cập ở chế độ LBA hay không. Về hệ điều hành, một số hệ điều hành (như DOS) không thể truy cập ổ cứng lớn; ít nhất là GNU/Linux và GNU/Hurd có thể khởi động từ đĩa cứng như vậy.
stage2 ở phân vùng vượt quá 1024 cylinder?
Có thể, nếu BIOS hỗ trợ chế độ LBA.
Không có khái niệm tháo cài đặt một trình khởi động. Tất cả những gì bạn cần làm là cài một trình khởi động khác lên đĩa cứng đó, chẳng hạn như chạy lệnh fdisk /mbr trên DOS/Windows, hoặc chạy lệnh /sbin/lilo trên GNU/Linux.