Sunday, 26. August 2007, 14:23:24
Kinh nghiệm update kernel từ các kernel cũ lên kernel 2.6.x, còn tại sao phải update thì tùy trường hợp người sử dụng cần chứ không phải nhất thiết. Nhưng hình như nghe nói: Kernel 2.6.x có performance tốt hơn các kernel trước đó nếu được config tốt
Các bước tiến hànhBước 1: Download các file sau về, ở đây để tiện mình sẽ nói rõ các phiên bản mà mình đang sử dụng để khi trình bày các câu lệnh sẽ rõ ràng hơn
linux-2.6.16.17.tar.bz2
module-init-tools-3.2.2.tar.gz
modutils-2.4.27-1.src.rpm
Bước 2: Tiến hành cài đặt
module-init-tools, mục đích là nâng cấp depmod [/sbin/depmod]: dịch mô hình cũ
/etc/modules.conf sang
/etc/modprobe.conf
#tar -xzvf module-init-tools-3.2.2.tar.gz -C /root
#cd linux-2.6.16.17
#./configure --prefix=/sbin
#make
#make install
#./generate-modprobe.conf /etc/modprobe.conf
Bước 3: Tiến hành cài đặt
modutils, bước này rất quan trọng, nếu bạn không thực hiện bước này việc nâng cấp kernel của RH8, RH9 lên kernel 2.6.x sẽ có vấn đề.
#rpm -Uvh modutils-2.4.27-1.src.rpm
(phần option -Uvh có thể thây thế bằng -i)
#rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec
(-bb: binary package)
#rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.27-1.src.rpm
Bước 4: Tiến hành cài đặt và cấu hình kernel. Lưu ý là không sử dụng thư mục
/usr/src/linux, mà thay vào đó ta có thể tạo thư mục
/home/src/kernel
#mkdir -p /home/src/kernel
#tar -xjvf linux-2.6.16.17.tar.bz2 -C /home/src/kernel
#cd /home/src/kernel/linux-2.6.16.17
(nếu phiên bản kernel của bạn có bản patch mới thì thực hiện vào lúc này). Vì bản kernel của mình đã khá mới nên chưa cần patch, nếu bạn nào cần thì patch, theo câu lệnh dưới.
#tar -xjvf ../patch-2.6.xx.bz2 | patch -p1
Bước 5: Nếu bản kernel trước bạn đã biên dịch khá kĩ thì có thể kế thừa trong kernel mới bằng cách chép file .config của kernel cũ vào thư mục của kernel mới. Và lệnh
#make oldconfig sẽ giúp cho bạn khá nhiều việc

.
Còn nếu không thì ta vẫn sử dụng 2 lệnh cũ:
#make xconfig với giao diện đồ họa hoặc
#make menuconfig(thường thì mình vẫn dùng cái này) để tạo file
.config.
Sau đó bạn phải kiểm tra lại file .config, chỉnh lại các giá trị mặc định giá trị
CONFIG_EXT3_FS=y
CONFIG_SCSI_BUSLOGIC=y
CONFIG_BLK_DEV_SD=y
Bước 6: Tiến hành biên dịch kernel
#make dep --> sẽ chuẩn bị các dependencies cần thiết
#make clean --> sẽ dọn dẹp .o files
#make bzImage --> sẽ bắt đầu thật sự compile kernel.
# make modules --> sẽ biên dịch các modules
#make modules_install
(sẽ cài các modules vào thư mục /lib/modules/2.6.16.17)
#make install --> chú ý: tham khảo bước 7
Bước 7: Bước này sẽ giúp bạn hiểu rõ hơn câu lệnh
#make install, đặt trường hợp gặp sự cố trong quá trình sử dụng lệnh này, chúng ta có thể troubleshoot được.
copy new kernel to /boot
#cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.16.17
copy System.map to /boot
#cp System.map /boot/System.map-2.6.16.17
copy .config to /boot
#copy .config /boot/config-2.6.16.17
make ramdisk
#mkinitrd /boot/initrd-2.6.16.17.img 2.6.16.17
Bước 8: Sau khi tiến hành xong bước: make install thì có thể nói kernel đã ok. Giờ chỉnh sửa bootloader nữa là xong.
8a : Nếu đang sử dụng [b]lilo[/b]: chỉnh sửa file /etc/lilo.conf
image=/boot/vmlinuz-2.6.16.17
label=new kernel
initrd=/boot/initrd-2.6.16.17.img
read-only
append="hda=ide-scsi root=LABEL=/root"
thực thi lệnh : /sbin/lilo -vt
8b: Nếu đang sử dụng Grub: chỉnh sửa file : /etc/grub.conf
title new kernel 2.6.16.17
root (hd0,0)
kernel /vmlinuz-2.6.16.17 ro root=LABEL=/
initrd /initrd-2.6.16.17.img
Viết thì viết cho đủ vậy thui. Chứ khi mình đánh xong lệnh
#make install thì grub.conf cũng tự động add luôn cho mình. Chi tiết về các modules trong kernel mình có upload lên một file. Các bạn có thể tham khảo thêm.
Sau khi cài đặt xong, start lại máy có ok không. Nếu tốt thì chúng ta bắt đầu start các services cần thiết lên (có một số service đặc biệt yêu cầu một số module nào đó trong kernel). Lúc đó ta dùng lệnh
#lsmod để xem các module mà Kernel đã load. Điều này rất cần thiết cho việc tinh chỉnh lại Kernel của chúng ta, để nó hoạt động hiệu quả hơn.
Download file :
Understanding the Linux Kernel
Thi Tiến Lực