Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.


[ << ] [ < ] [ Về đầu ] [ > ] [ >> ]


10. Cấu hình Bootloader

Nội dung:

10.a. Chọn lựa

Giới thiệu

Kernel của bạn đã được cấu hình, biên dịch và các tập tin cấu hình cần thiết đã sẵn sàng. Giờ là lúc để cài đặt chương trình để khởi động kernel khi bạn khởi động hệ thống. Chương trình đó gọi là bootloader. Với x86, Gentoo Linux cung cấp GRUBLILO. Nhưng trước khi bắt đầu cài đặt một trong hai bootloader, chúng tôi sẽ cho bạn biết cách cấu hình framebuffer (dĩ nhiên giả định rằng bạn muốn có framebuffer). Với framebuffer, bạn có thể chạy lệnh Linux với một số tính năng đồ hoạ (giới hạn) (như bootsplash).

Tùy chọn: Framebuffer

Nếu bạn đã cấu hình kernel hỗ trợ framebuffer (hoặc dùng cấu hình mặc định của genkernel), bạn có thể kích hoạt nó bằng cách thêm lệnh vga và/hoặc video vào tập tin cấu hình bootloader.

Trước hết bạn cần biết loại framebuffer đang dùng. Nếu bạn dùng kernel của Gentoo (vd, gentoo-sources), bạn có thể chọn vesafb-tng (Driver VESA, mặc định cho những kernel này). Nếu bạn rơi vào trường hợp này, bạn đang dùng vesafb-tng và không cần đặt lệnh vga. Nếu không, bạn đang dùng vesafb và cần đặt vga.

Lệnh vga điều khiển độ phân giải và số lượng màu của framebuffer vesafb. Như đề cập trong /usr/src/linux/Documentation/fb/vesafb.txt (nằm trong gói kernel source), bạn cần truyền số VESA tương ứng với độ phân giải và số lượng màu bạn chọn.

Bảng sau liệt kê nhưng độ phân giải và số lượng màu kèm theo con số cần truyền cùng với lệnh vga.

640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B

Lệnh video điều khiển các tùy chọn framebuffer. Nó cần framebuffer driver (vesafb cho kernel 2.6, vesa cho kernel 2.4) theo sau bởi những lệnh bạn muốn bật. Mọi biến được liệt kê trong /usr/src/linux/Documentation/fb/vesafb.txt, nhưng chúng tôi sẽ liệt kê ba tùy chọn thường dùng nhất:

Lệnh Mô tả
ywrap Giả định card màn hình của bạn "wrap memory" (vd, tiếp tục ở đầu khi nó tiến đến cuối)
mtrr Thiết lập thanh ghi MTRR
mode (chỉ với vesafb-tng)
Thiết lập độ phân giải, số lượng màu và refresh rate. Ví dụ, 1024x768-32@85 cho độ phân giải 1024x768, 32 bit màu và refresh rate 85 Hz.

Kết quả của lệnh là những cái giống như vga=0x318 video=vesafb:mtrr,ywrap hoặc video=vesafb:mtrr,ywrap,1024x768-32@85. Hãy nhớ (hoặc ghi ra) giá trị của bạn; bạn sẽ cần nó chốc nữa.

Giờ hãy tiếp tục cài đặt GRUB hoặc LILO.

10.b. Mặc định: Dùng GRUB

Thuật ngữ của GRUB

Phần quan trọng nhất để có thể dùng GRUB là làm quen với cách GRUB đặt tên cho các ổ cứng và các phân vùng ổ đĩa. Phân vùng Linux của bạn /dev/hda1 được gọi là (hd0,0) trong GRUB. Chú ý dấu ngoặc vòng quanh hd0,0 - chúng bắt buộc phải có.

Ổ cứng được đếm từ không thay vì "a" và các phân vùng được đếm từ không thay vì một. Chú ý rằng với các thiết bị hd, chỉ có ổ cứng là được đếm, không có các thiết bị atapi-ide như cdrom hay cd-burner. Ngoài ra, các thiết bị scsi cũng dùng theo cùng cách đặt tên như vậy. (Bình thường chúng có số lớn hơn số các ổ ide trừ khi cấu hình bios để khởi động từ thiết bị scsi.) Khi bạn yêu cầu BIOS khởi động từ một ổ cứng khác (ví dụ, ổ slave), ổ cứng đó được xem là hd0.

Giả sử bạn có ổ cứng /dev/hda, ổ cdrom /dev/hdb, cd-burner /dev/hdc, một ổ cứng phụ /dev/hdd và không có ổ cứng SCSI, /dev/hdd7(hd1,6). Nó có vẻ phức tạp, và thực sự là nó phức tạp. Nhưng bạn sẽ thấy, GRUB cung cấp tính năng tab completion nhờ đó bạn có thể dễ dàng tìm ra các ổ đĩa và phân vùng ổ đĩa.

Sau khi đã làm quen với điều này, đã đến lúc cài đặt GRUB.

Cài đặt GRUB

Để cài đặt GRUB, trước hết hãy emerge nó:

Mã 2.1: Cài đặt GRUB

# emerge grub

Mặc dù GRUB đã nằm trên hệ thống, chúng ta vẫn cần tạo tập tin cấu hình cho nó và đặt GRUB vào MBR để GRUB có thể tự động khởi động với kernel vừa tạo. Hãy tạo /boot/grub/grub.conf bằng nano (hoặc bằng trình soạn thảo khác nếu muốn):

Mã 2.2: Tạo /boot/grub/grub.conf

# nano -w /boot/grub/grub.conf

Giờ chúng ta sẽ viết grub.conf. Dưới đây là hai grub.conf mẫu dành cho cách phân vùng ví dụ của tài liệu này. Chỉ có grub.conf đầu tiên được ghi chú đầy đủ. Hãy kiểm tra để đảm bảo bạn ghi đúng tên kernel image của bạn, và nếu có thể initrd image của bạn.

  • grub.conf đầu tiên dành cho những người không dùng genkernel để tạo kernel
  • grub.conf thứ hai dành cho những người dùng genkernel để tạo kernel

Ghi chú: Nếu hệ tập tin gốc của bạn là JFS, bạn phải thêm "ro" vào dòng kernel vì JFS cần replay log của nó trước khi được phép mount dạng đọc-ghi.

Mã 2.3: grub.conf cho người dùng không dùng genkernel

# Dùng cái nào để khởi động mặc định.
# 0 là cái đầu tiên, 1 là cái thứ hai...
default 0
# Chờ bao nhiêu giây trước khi khởi động bằng cái mặc định.
timeout 30
# splash-image
# Bỏ dòng này nếu bạn không có card đồ họa
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.12-r10
# Phân vùng chứa kernel image (hoặc hệ điều hành)
root (hd0,0)
kernel /kernel-2.6.12-gentoo-r10 root=/dev/hda3

# Bốn dòng kế chỉ được dùng nếu bạn khởi động kép với Windows.
# Trong trường hợp này, giả định Windows nằm trên /dev/hda6.
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Mã 2.4: grub.conf cho người dùng genkernel

default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.12-r10
root (hd0,0)
kernel /kernel-genkernel-x86-2.6.12-gentoo-r10 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /initramfs-genkernel-x86-2.6.12-gentoo-r10

# Chỉ khi bạn khởi động kép với Windows
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Ghi chú: Cần có udev ở cuối dòng kernel để khắc phục một số lỗi trong vài phiên bản genkernel nếu bạn dùng udev lần đầu tiên.

Ghi chú: Nếu bạn dùng cách phân vùng khác và/hoặc kernel image khác, hãy điều chỉnh lại cho thích hợp. Tuy nhiên hãy nhớ dùng quy ước ghi ổ đĩa/phân vùng của GRUB (như (hd0,0)) và đường dẫn tính theo mountpoint, không phải theo thư mục gốc. Nói cách khác, (hd0,0)/grub/splash.xpm.gz thực sự là /boot/grub/splash.xpm.gz(hd0,0)/boot.

Ngoài ra nếu bạn chọn cách phân vùng khác và không cho /boot vào một phân vùng riêng thì cần thiết phải cho tiếp đầu ngữ /boot vào đoạn code mẫu ở trên. Nếu bạn làm theo cách phân vùng được đề nghị trong tài liệu này thì không cần phải làm như vậy, nhưng do có symlink /boot nên vẫn chạy tốt. Nói tóm lại, nếu làm dùng đoạn code mẫu trên, nó sẽ chạy bất kể /boot có phải là một phân vùng riêng hay không.

Nếu bạn cần truyền thêm các tùy chọn bổ sung cho kernel, chỉ cần thêm nó vào đuôi lệnh kernel. Chúng ta đã truyền một tùy chọn (root=/dev/hda3 hoặc real_root=/dev/hda3), nhưng bạn có thể truyền thêm các tùy chọn khác. Trong ví dụ sau chúng tôi dùng lệnh vga và/hoặc video để hỗ trợ framebuffer (đã thảo luận ở trên).

Nếu bạn dùng kernel 2.6.7 hoặc mới hơn và bạn đã cài lại jumper của ổ cứng ví BIOS không thể xử lý ổ cứng lớn, bạn cần thêm hdx=stroke.

Người dùng genkernel nên biết rằng kernel của họ dùng cùng các tùy chọn khởi động như của CD Cài đặt. Ví dụ, nếu bạn có thiết bị SCSI, bạn nên thêm doscsi làm tùy chọn kernel.

Giờ hãy lưu grub.conf lại và thoát. Bạn vẫn cần cài đặt GRUB làm MBR (Master Boot Record) để GRUB tự động được thực hiện khi bạn khởi động hệ thống.

GRUB developer khuyên nên dùng grub-install. Tuy nhiên, nếu vì lý do nào đó grub-install không hoạt động, bạn vẫn có thể cài đặt GRUB bằng tay.

Hãy tiếp tục với Mặc định: Cài GRUB bằng grub-install hoặc Thay thế: Cài GRUB bằng tay.

Mặc định: Cài GRUB bằng grub-install

Để cài đặt GRUB, bạn cần gọi lệnh grub-install. Tuy nhiên, grub-install sẽ không hoạt động nếu bạn nằm trong môi trường chroot. Trước hết chúng ta cần cập nhật /etc/mtab (tập tin chứa thông tin về các hệ tập tin được mount): rất dễ dàng để làm điều này, chỉ cần chép /proc/mounts sang /etc/mtab, loại bỏ dòng rootfs nếu bạn không tạo một phân vùng riêng cho phân vùng khởi động. Lệnh sau sẽ hoạt động trong mọi trường hợp:

Mã 2.5: Cập nhật /etc/mtab

# grep -v rootfs /proc/mounts > /etc/mtab

Giờ chúng ta có thể cài đặt GRUB bằng grub-install:

Mã 2.6: Chạy grub-install

# grub-install /dev/hda

Nếu bạn có thắc mắc về GRUB, vui lòng tham khảo GRUB FAQ hoặc GRUB Manual.

Ghi chú: Khi bạn cài đặt lại kernel, bạn không cần chép tập tin lần nữa. Chỉ cần chạy make install sau khi biên dịch kernel, nó sẽ tự động chép những tập tin cần thiết và điều chỉnh cấu hình GRUB.

Hãy tiếp tục với Khởi động lại hệ thống.

Thay thế: Cài GRUB bằng tay

Để bắt đầu cài đặt GRUB, hãy gõ grub. Bạn sẽ thấy dấu nhắc grub grub>. Giờ bạn có thể gõ các lệnh để cài đặt GRUB vào ổ cứng.

Mã 2.7: Khởi động GRUB shell

# grub

Ghi chú: Nếu hệ thống của bạn không có ổ đĩa mềm, hãy thêm tùy chọn --no-floppy vào lệnh trên để tránh grub dò tìm những ổ đĩa mềm (không hề có).

Trong cấu hình ví dụ, chúng ta muốn cài đặt GRUB để nó đọc thông tin từ partition khởi động /dev/hda1, và cài đặt GRUB boot record và MBR (master boot record) của ổ cứng để chúng ta có thể thấy dấu nhắc grub mỗi lần khởi động máy. Dĩ nhiên, nếu bạn không dùng chính xác cấu hình như ví dụ thì bạn phải điều chỉnh lại các lệnh cho phù hợp.

Tính năng tab completion của GRUB có thể được dùng bên trong GRUB. Ví dụ, nếu bạn gõ "root (" và nhấn TAB, bạn sẽ thấy danh sách các thiết bị (như hd0). Nếu bạn gõ " root (hd0," và nhấn TAB, bạn sẽ thấy danh sách các phân vùng của thiết bị được chọn (như hd0,0).

Bằng cách dùng tab completion, cài đặt GRUB sẽ trở nên không quá khó. Giờ hãy tiếp tục cài đặt GRUB nhé? :-)

Mã 2.8: Cài GRUB vào MBR

grub> root (hd0,0)          (Xác định vị trí phân vùng /boot)
grub> setup (hd0)           (Cài GRUB vào MBR)
grub> quit                  (Thoát GRUB shell)

Ghi chú: Nếu bạn cài GRUB vào một phân vùng khác thay vì MBR, bạn cần thay thế lệnh setup để nó trỏ đến phân vùng bạn chọn. Ví dụ, nếu bạn muốn cài GRUB vào /dev/hda3, vậy hãy dùng setup (hd0,2). Vài người dùng sẽ muốn thực hiện điều này.

Nếu bạn có thắc mắc về GRUB, hãy tham khảo GRUB FAQ hoặc GRUB Manual.

Ghi chú: Khi bạn cài lại kernel, bạn không cần chép lại các tập tin nữa. Chỉ cần chạy make install sau khi biên dịch kernel; nó sẽ tự động chép những tập tin cần thiết và điều chỉnh cấu hình GRUB.

Hãy tiếp tục với Khởi động lại hệ thống.

10.c. Thay thế: Dùng LILO

Cài đặt LILO

LILO, LInuxLOader, là một trong những bootloader đầu tiên cho Linux. Tuy nhiên nó thiếu vài tính năng GRUB có (vì thế nên GRUB trở nên phổ biến hơn). Lý do LILO vẫn được dùng là, trên vài hệ thống, GRUB không hoạt động còn LILO thì hoạt động. Dĩ nhiên, nó còn được dùng vì nhiều người quen LILO và muốn dùng nó. Dù gì đi nữa, Gentoo hỗ trợ cả hai, và bạn có thể chọn LILO nếu thích.

Cài đặt LILO thật dễ dàng, chỉ cần dùng emerge.

Mã 3.1: Cài đặt LILO

# emerge lilo

Cấu hình LILO

Để cấu hình LILO, bạn phải tạo /etc/lilo.conf. Hãy mở trình soạn thảo của bạn (tài liệu này dùng nano cho thống nhất) và tạo tập tin này.

Mã 3.2: Tạo /etc/lilo.conf

# nano -w /etc/lilo.conf

Trong phần trước, chúng tôi yêu cầu bạn nhớ tên kernel-image bạn tạo. Trong ví dụ lilo.conf kế, chúng tôi cũng dùng cách phân vùng cũ đã được giới thiệu trước đây. Có hai phần riêng biệt:

  • Một phần cho những người không dùng genkernel để tạo kernel
  • Một phần cho những người dùng genkernel để tạo kernel

Hãy đảm bảo dùng đúng tên kernel image của bạn và tên initrd image của bạn (nếu có).

Ghi chú: Nếu hệ tập tin gốc của bạn là JFS, bạn phải thêm append="ro" vào dòng kernel vì JFS cần replay log của nó trước khi được phép mount dạng đọc-ghi.

Mã 3.3: Ví dụ /etc/lilo.conf

boot=/dev/hda             # Cài LILO vào MBR
prompt                    # Cho người dùng cơ hội lựa chọn
timeout=50                # Chờ 5 (năm) giây trước khi khởi động mặc định
default=gentoo            # Khi hết hạn chờ, khởi động phần "gentoo"

# Người dùng không dùng genkernel
image=/boot/kernel-2.6.12-gentoo-r10
  label=gentoo            # Tên phần này
  read-only               # Thư mục gốc dạng read-only. Đừng sửa!
  root=/dev/hda3          # Vị trí hệ tập tin gốc

# Người dùng genkernel
image=/boot/kernel-genkernel-x86-2.6.12-gentoo-r10
  label=gentoo
  read-only
  root=/dev/ram0
  append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev"
  initrd=/boot/initramfs-genkernel-2.6.12-gentoo-r10

# Hai dòng kế chỉ dung với người dùng khởi động kép với Windows.
# Giả sử Windows nằm trên /dev/hda6.
other=/dev/hda6
  label=windows

Ghi chú: Cần có udev ở cuối dòng kernel để khắc phục một số lỗi trong vài phiên bản genkernel nếu bạn dùng udev lần đầu tiên.

Ghi chú: Nếu bạn dùng cách phân vùng khác và/hoặc kernel image khác, hãy điều chỉnh lại cho thích hợp.

Nếu bạn cần truyền các tùy chọn bổ sung cho kernel, hãy thêm lệnh append vào phần được chọn. Ví dụ, chúng tôi thêm lệnh video để hỗ trợ framebuffer:

Mã 3.4: Dùng append để thêm tùy chọn kernel

image=/boot/kernel-2.6.12-gentoo-r10
  label=gentoo
  read-only
  root=/dev/hda3
  append="video=vesafb:mtrr,ywrap,1024x768-32@85"

Nếu bạn dùng kernel 2.6.7 hoặc mới hơn và bạn đã cài lại jumper của ổ cứng ví BIOS không thể xử lý ổ cứng lớn, bạn cần thêm hdx=stroke.

Người dùng genkernel nên biết rằng kernel của họ dùng cùng các tùy chọn khởi động như của CD Cài đặt. Ví dụ, nếu bạn có thiết bị SCSI, bạn nên thêm doscsi làm tùy chọn kernel.

Giờ hãy lưu tập tin lại và thoát. Để hoàn tất, bạn phải chạy /sbin/lilo để càu LILO vào hệ thống theo những thông số trong /etc/lilo.conf. Nhớ rằng bạn phải chạy lại /sbin/lilo mỗi khi bạn cài đặt kernel mới hoặc thay đổi /etc/lilo.conf.

Mã 3.5: Hoàn tất cài đặt LILO

# /sbin/lilo

Ghi chú: Khi bạn cài lại kernel, bạn không cần chép lại các tập tin nữa. Chỉ cần chạy make install sau khi biên dịch kernel; nó sẽ tự động chép những tập tin cần thiết và điều chỉnh cấu hình LILO.

Bạn có thể tiếp tục với Khởi động lại hệ thống.

10.d. Khởi động lại hệ thống

Hãy thoát khỏi môi trường chroot và unmount toàn bộ các phân vùng. Sau đó gõ lệnh bạn đã đợi từ lâu: reboot.

Mã 4.1: Thoát khỏi chroot, unmount toàn bộ phân vùng và khởi động lại

# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

Nhớ lấy đĩa CD ra, nếu không hệ thống sẽ lại khởi động từ CD lần nữa thay vì phải khởi động hệ thống Gentoo mới của bạn.

Một khi đã khởi động bản cài đặt Gentoo của bạn, hãy hoàn tất việc cài đặt với Hoàn tất cài đặt Gentoo.


[ << ] [ < ] [ Về đầu ] [ > ] [ >> ]


Bản in

View all

Cập nhật 16 Tháng hai 2006

The original version of this document was last updated February 9, 2013

Tóm tắt: Có vài bootloader cho kiến trúc x86. Mỗi cái có cách cấu hình riêng. Chúng tôi sẽ hướng dẫn từng bước việc cấu hình bootloader theo nhu cầu của bạn.

Sven Vermeulen
Author

Roy Marples
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Nguyễn Thái Ngọc Duy
Translator

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.