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 GRUB và LILO. 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.
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
là (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 vì (hd0,0) là
/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.