Tải bản đầy đủ (.pdf) (11 trang)

Tài liệu Biên dịch bộ nhân – kernel trên nền tảng Debian Etch pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (547.53 KB, 11 trang )

Biên dịch bộ nhân – kernel trên nền tảng Debian Etch

Mỗi 1 nguồn phân phối - distribution đều có công cụ riêng biệt để xây
dựng, tạo nhân từ các nguồn tương ứng.
Trong bài viết sau, chúng tôi sẽ giới thiệu với các bạn phương pháp này trên
hệ thống Debian Etch, cụ thể là phương pháp biên dịch kernel tùy chỉnh sử
dụng bộ nhân nguyên bản tại đây, và từ đó ứng dụng lên hệ thống. Đồng
thời, bài viết cũng chỉ ra phương pháp áp dụng các bản vá đối với các phiên
bản kernel khác nhau.
Lưu ý sơ bộ
Chúng ta sẽ thực hiện 2 cách biên dịch phổ biến, cách đầu tiên các bạn sẽ có
gói *.deb sau khi hoàn thành. Cách thứ 2 là cách “truyền thông”, và kết quả
thu được sẽ sử dụng trên tất cả các sản phẩm của Linux, nhưng không phải
là gói *.deb như cách thứ nhất.
Xây dựng gói kernel *.deb
Cài đặt các gói yêu cầu để biên dịch kernel:
Trước tiên, chúng ta cần cập nhật package database:
apt-get update
Và cài đặt các gói cần thiết như sau:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-
essential
Tải bộ mã nguồn của kernel:
Bước tiếp theo, chúng ta phải tải bộ kernel tương ứng về thư mục /usr/src.
Truy cập /> và chọn bộ kernel cần biên dịch, ví dụ
linux-2.6.21.3.tar.bz2 (toàn bộ nguồn kernel 2.6 tại đây):
cd /usr/src
wget
Giải nén các gói vừa tải về và tạo liên kết động tới thư mục nguồn:
tar xjf linux-2.6.21.3.tar.bz2
ln -s linux-2.6.21.3 linux
cd /usr/src/linux


Áp dụng các bản vá vào nguồn kernel (theo lựa chọn)
Đôi khi, các bạn sẽ cần hệ thống driver mới nhất dành cho phần cứng, nhưng
lại không được hỗ trợ bởi kernel mặc định, hoặc tính năng hỗ trợ công nghệ
ảo hóa nhưng lại chưa được tích hợp vào bộ kernel này. Trong những trường
hợp này, bạn cần áp dụng những bản vá thích hợp (thường có sẵn trên các
nguồn cung cấp).
Giả sử chúng ta đã tải những bản patch cần thiết (trong bài viết này là
patch.bz2) về thư mục /usr/src. Tại thư mục /usr/src/, gõ lệnh sau:
bzip2 -dc /usr/src/patch.bz2 | patch -p1 dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1
Câu lệnh đầu tiên chỉ là kiểm tra, nếu kết quả trả về không báo lỗi nào thì
tiếp tục thực thi câu lệnh thứ 2. Không nên tiếp tục chạy câu lệnh 2 nếu câu
lệnh 1 có lỗi.
Bên cạnh đó, chúng ta cũng có thể áp dụng phương pháp prepatche vào bộ
nguồn của kernel. Ví dụ, nếu bạn cần các tính năng chỉ có trong phiên bản
kernel 2.6.22-rc3, nhưng bộ nguồn đầy đủ vẫn chưa được công bố. Thay vào
đó, bản patch-2.6.22-rc3.bz2 đã có sẵn, và bạn có thể áp dụng bản vá đó vào
bản kernel 2.6.21, nhưng không phải bộ kernel bản 2.6.21.1 hoặc 2.6.21.2…
Các bạn có thể tham khảo thêm tại đây
.
Phương pháp prepatch tương đương với phiên bản alpha dành cho Linux,
chúng tồn tại trong các thư mục kiểm tra để lưu trữ.
Do đó, nếu muốn biên dịch bộ kernel 2.6.22-rc3, bạn phải tải mã nguồn của
kernel 2.6.21. Sử dụng câu lệnh sau để áp ụng bản vá 2.6.22-rc3 vào kernel
2.6.21:
cd /usr/src
wget />rc3.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 dry-run
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1

Thiết lập, tùy chỉnh kernel
Để làm việc này, copy file thiết lập sẵn có tới /usr/src/linux:
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
sau đó chạy lệnh sau:
make menuconfig
để hiển thị bảng thiết lập. Chọn Load an Alternate Configuration File >
.config:


Sau đó tùy chọn các tính năng sẵn có và đi kèm trong menu, lựa chọn và
quyết định khi cảm thấy phù hợp với nhu cầu. Khi hoàn thành, chọn Exit và
Yes khi được hỏi Do you wish to save your new kernel configuration?

Xây dựng kernel
Để làm việc này, chúng ta sẽ sử dụng 2 câu lệnh sau:
make-kpkg clean
fakeroot make-kpkg initrd append-to-version=-custom kernel_image
kernel_headers
Sau cú pháp append-to-version= bạn có thể viết bất cứ chuỗi ký tự nào để
nhận diện bộ kernel này, nhưng phải bắt đầu bằng – và không có khoảng
trống trong chuỗi.
Quá trình này sẽ diễn ra khá lâu, có thể lên đến hàng giờ tùy thuộc vào
những yêu cầu thiết lập và tốc độ xử lý của hệ thống.
Cài đặt bộ kernel mới
Quá trình xây dựng và biên dịch kết thúc, sẽ có 2 gói .deb trong thư mục
/usr/src:
cd /usr/src
ls -l
Trong cuộc kiểm tra này, chúng ta thu được 2 gói linux-image-2.6.21.3-

custom_2.6.21.3-custom-10.00.Custom_i386.deb (chứa file gốc nguyên bản)
và linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
(chứa file cần thiết để người sử dụng tự biên dịch sau này). Cài đặt các gói
này như sau:
dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-
10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-
10.00.Custom_i386.deb
Nếu muốn sử dụng trên hệ thống Debian Etch khác thì người dùng chỉ việc
copy và lưu trữ trực tiếp, không cần phải biên dịch lại lần nữa.
Đồng thời, file cấu hình GRUB bootloader /boot/grub/menu.lst cũng được
điều chỉnh tự động, ramdisk dành cho bộ kernel mới cũng đã được tạo trong
/boot. Sau đó khởi động lại hệ thống:
shutdown -r now
Khi bảng thông báo khởi động xuất hiện, lựa chọn bộ kernel mới (mặc định):

Nếu tất cả mọi bước đều được thực hiện tốt, bảng thông báo sẽ xuất hiện với
bộ kernel mới. Bạn có thể kiểm tra lại việc sử dụng bộ kernel mới bằng lệnh
sau:
uname -r
kết quả thu được sẽ có dạng như sau:d
2.6.21.3-custom
Nếu hệ thống không hoạt động, hãy khởi động lại lần nữa và chọn bộ kernel
cũ và thử biên dịch lại bộ kernel đó. Và cũng đừng quên xóa bỏ thành phần
khởi động của bộ kernel không hoạt động trong danh sách
/boot/grub/menu.lst.
Xây dựng bộ kernel theo cách “truyền thống”
Trong phần tiếp theo, chúng ta sẽ miêu tả cách làm khác để thu được bộ
kernel, và có thể được sử dụng trên bất kỳ hệ thống Linux nào.
Cài đặt các gói yêu cầu để biên dịch kernel:

Việc trước tiên là cập nhật package database:
apt-get update
và cài đặt gói cần thiết như sau:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-
essential
Tải bộ nguồn kernel
Tương tự như trên, tải bản kernel tới thư mục /usr/src. Truy
cập /> và lựa chọn bản kernel muốn cài đặt (ví dụ linux-
2.6.21.3.tar.bz2 hoặc
cd /usr/src
wget
Giải nén gói mã nguồn và tạo liên kết động tới thư mục nguồn kernel như
sau:
tar xjf linux-2.6.21.3.tar.bz2
ln -s linux-2.6.21.3 linux
cd /usr/src/linux
Áp dụng các bản vá vào nguồn kernel (theo lựa chọn)
Về cơ bản, trình tự và cách làm tương tự như phương pháp bên trên. Tại thư
mục /usr/src/linux, gõ lệnh sau:
bzip2 -dc /usr/src/patch.bz2 | patch -p1 dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1
Nếu muốn biên dịch bộ kernel 2.6.22-rc3, bạn cần tải bản mã nguồn của
kernel 2.6.21. Bạn có thể sử dụng câu lệnh sau để thực hiện bản vá 2.6.22-
rc3 vào kernel 2.6.21:
cd /usr/src
wget />rc3.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 dry-run
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1
Sau đó áp dụng các bước như trên để biên dịch và tạo kernel.

Tìm hiểu về bước Post-Installation
Một khi bộ kernel mới được cài đặt, nhưng chúng ta vẫn cần ramdisk đối với
kernel tương ứng (nếu không thì hệ thống sẽ không khởi động được), và
chúng ta phải điều chỉnh GRUB bootloader về sự thay đổi nhân kernel này:
Trước tiên, gõ lệnh sau:
depmod 2.6.21.3
apt-get install yaird
Tạo ramdisk bằng cú pháp sau:
mkinitrd.yaird -o /boot/initrd.img-2.6.21.3 2.6.21.3
Việc thiết lập, tùy chỉnh GRUB khá đơn giản trên hệ thống Debian Etch:
update-grub
câu lệnh trên sẽ tự động cập nhật kernel và ramdisk mới vào danh sách
/boot/grub/menu.lst
Sau đó, khởi động lại hệ thống:
shutdown -r now
Trên đây là 1 số phương pháp cơ bản để xây dựng, biên dịch bộ nhân kernel
Linux trên hệ thống Debian Etch.
Chúc các bạn thành công!

×