2.11 2006-02-16
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.

0x3010x3030x3050x3070x3100x3130x3160x3190x3110x3140x3170x31A0x3120x3150x3180x31B
640x480 800x600 1024x768 1280x1024
256
32k
64k
16M

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:

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.
Lệnh Mô tả

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.

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

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

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

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

Giờ chúng ta có thể cài đặt GRUB bằng 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.

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.

# grub
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é? :-)

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

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.

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.

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

# 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ó).

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

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.

# /sbin/lilo
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.

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.

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