1. Trang chủ
  2. » Tất cả

Bien dch nhan linux

43 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

() Biên dịch nhân Linux Tác giả Hoàng Ngọc Diêu – 1 – Mục lục 1 Tổng quan về nhân Linux trên phương diện biên dịch lại 3 1 1 Nhân Linux và việc biên dịch lại nhân 3 1 2 Tóm tắt các bước biên dịch (dàn[.]

Biên dịch nhân Linux Tác giả: Hoàng Ngọc Diêu Mục lục Tổng quan nhân Linux phương diện biên dịch lại Tại cần biên dịch lại nhân Linux? Cấu trúc quy ước số hiệu phiên nhân Linux Đòi hỏi tối thiểu việc biên dịch lại nhân Linux Xác định cấu hình (hardware) máy Các bước chuẩn bị Chỉnh cấu hình biên dịch nhân Linux 1.1 1.2 4.1 4.2 6.1 6.2 6.3 6.4 6.5 7.1 7.1.1 7.1.2 7.2 7.2.1 7.2.2 8.1 8.2 8.3 8.3.1 Nhân Linux việc biên dịch lại nhân Tóm tắt bước biên dịch (dành cho thiếu kiên nhẫn) Đòi hỏi cho nhân Linux 2.4.x Đòi hỏi cho nhân Linux 2.6.x Tạo đĩa mềm khởi động cho nhân dùng Tải mã nguồn Kiểm tra thực tính mã nguồn Xả nén mã nguồn Dùng "config" thích hợp? Thành phần cấu hình biên dịch nhân Linux Thành phần cấu hình biên dịch nhân Linux phiên 2.4.x Thành phần cấu hình nhân Linux cho loạt nhân 2.6.x Điều chỉnh cấu hình biên dịch nhân Linux Các cơng cụ để xác lập cấu hình Một số điểm cần ý giai đoạn hình thành cấu hình biên dịch nhân Các bước biên dịch Bước tạo dependency, dọn dẹp tạo nhân Bước tạo modules cài modules Tách rời mã nguồn hồ sơ output loạt nhân 2.6.x "make help", tiện ích loạt nhân 2.6.x –1– 3 10 11 12 14 14 14 14 17 18 19 20 22 22 24 25 26 8.3.2 Tách rời mã nguồn output files 27 Cài đặt nhân 27 10 Khởi động lại máy chỉnh lý gặp trục trặc 35 Vá biên dịch nhân 37 9.1 9.1.1 9.1.2 9.2 9.2.1 9.2.2 9.2.3 10.1 10.2 11 11.1 11.2 Cài đặt với "make install" Đối với GRUB Đối với LILO Các bước cài đặt tay Tạo initrd Copy nhân System.map Chỉnh cấu hình bootloader config Bị treo khởi động vào linux Bị treo trình nhân load Các điểm quan trọng trước vá Tải, xả vá –2– 28 28 29 31 31 32 33 35 36 37 38 Tổng quan nhân Linux phương diện biên dịch lại 1.1 Nhân Linux việc biên dịch lại nhân Nhân Linux "nhân đại" có tính module cao Từ kernel phiên 2.6.x trở đi, có nhiều chức mở rộng Với tinh thần "biên dịch nhân", yếu tố yếu quan trọng cần ghi nhận tính phân (modularity) nhân Linux Đối với người dùng bình thường, modularity cho phép chọn lựa cách biên dịch drivers nhân theo dạng modules hay theo dạng biên dịch trực tiếp vào nhân Thông thường, xác lập cấu hình cho nhân có ba chọn lựa: Y, M N Có "driver" khơng thể biên dịch module phải load and link trực tiếp nhân khởi động Cũng có "driver" cho phép chọn module tải sau nhân khởi động Điểm yếu cần nắm bắt giới hạn chủ đề "Biên dịch nhân Linux" hiểu rõ phải chọn M (cho module), Y (cho biên dịch trực tiếp) N (không dùng) drivers • Biên dịch trực tiếp vào kernel có nghĩa "drivers" dù có dùng hay khơng tải lên nhân khởi động tất nhiên chiếm phần nhớ Lợi điểm chọn lựa "drivers" biên dịch vào nhân khơng cịn phải quan ngại đến tính trung thực nhân driver Các hệ thống làm việc địi hỏi tính bảo mật cao không dùng modules mà biên dịch thẳng vào nhânkernel để tránh trường hợp modules không tin cậy "bị" cài vào nhân lúc q trình hoạt động máy Lợi điểm chọn lựa tính hiệu xuấtxuất (rất nhỏ), cần driver có sẵn khơng cần ứng tải • Biên dịch modules cho nhân có nghĩa cần dùng "drivers" ứng tải Lợi điểm chọn lựa bật khía cạnh xử dụng nhớ tài nguyên máy Với lựa chọn này, bạn tạo nên nhân nhỏ dễ dàng di chuyển cho nhiều mục đích khác Lợi điểm khả biên dịch lại modules (cần cập nhật chẳng hạn) Tất nhiên để thực chuyện phải thoả mãn tất địi hỏi tính phụ thuộc cho hệ thống 1.2 Tóm tắt bước biên dịch (dành cho thiếu kiên nhẫn) Biên dịch nhân Linux đơn giản hiểu rõ quy trình bước thực Sau lệnh cần thiết, giả định bạn có trọn công cụ cần thiết để biên dịch: –3– Chuyển vào thư mục /usr/src, nơi thông thường chứa mã nguồn để biên dịch nhân: $ cd /usr/src phiên kernel cần biên dịch, ví dụ tải mã nguồn nén dạng bz2) $ wget http://www.kernel.org/pub/linux/kern >.tar.bz2 ( Xác thực chữ ký thực tính mã nguồn: $ gpg verify .tar.bz2.sign .tar.bz2 Xả nén gói chứa mã nguồn: $ bzip2 -dc .tar.bz2 | tar xvf - Nếu muốn dùng giao diện đồ họa để điều chỉnh chọn lựa cho cấu hình nhân dùng lệnh: $ make xconfig Tập họp lệnh dùng để tạo file phụ thuộc file bao gồm (include), dọn dẹp objects không cần thiết biên dịch nhân dạng nén: $ make dep clean bzImage Biên dịch modules chọn lựa lệnh: $ make modules Chchuyển sang chế độ super user cho lệnh tiếp theo: $ su Cài modules vào thư mục /lib/modules/ với quyền super user: # make modules_install Cài đặt nhân file cần thiết vào thư mục /boot: # make install Bước thứ 10 thay loạt thao tác tay (chi tiết phần 9.2) phân phối Linux khơng có sẵn số cơng cụ thuộc gói mkinitrd (chỉ có RedHat dựa RedHat) distribution –4– Lưu ý: loạt nhân 2.6.x, bạn dùng bước Tuy nhiên bước "make dep" không cần thiết Bài viết bao gồm cho phiên 2.4.x 2.6.x nên có số chi tiết không cần thiết cho kernel 2.6.x Tuy vậy, chi tiết không ảnh hưởng đến thành cơng quy trình biên dịch nhân Tại cần biên dịch lại nhân Linux? Đối với người dùng quen với hệ điều hành "đóng" khái niệm biên dịch lại nhân khái niệm lạ lẫm Điều dễ hiểu kernel hệ điều hành "đóng" hiển nhiên "đóng" người dùng bình thường khơng thể có hội tiếp cận với mã nguồn nhân để biên dịch lại nhân muốn Trong đó, mã nguồn nhân Linux hoàn toàn "mở" điều kiện thuận lợi cho vấn đề biên dịch lại nhân Câu hỏi đặt lại cần phải biên dịch lại nhân Linux ? Câu trả lời ngắn: không cần không cần cần cần :) Câu trả lời dài: có vô số lý khiến cho người dùng cần phải biên dịch lại nhân Linux Sau số trường hợp thường gặp nhất: a tái biên dịch kernel để chữa lỗi nhân Nếu lỗi thuộc lõi nhân phải vá nguồn nhân biên dịch lại để sửa chữa lỗi công bố b biên dịch lại nhân để nâng cao hiệu nhân Theo mặc định, phân phối Linux thường kèm phiên nhân biên dịch với hầu hết thành phần có sẵn để đáp ứng rộng rãi cấu hình phần cứng (có thể diện máy) Đây điểm lợi tổng quát lúc khởi điểm Tuy nhiên, sau cài thành cơng nắm máy có thiết bị (sound card, graphic card, network cards, SCSI card ) biết rõ cần thành phần cho cấu hình máy khơng có lý phải bao gồm trọn thứ không cần thiết không dùng Đối với nhân 2.4.x, mức độ nâng cao hiệu không rõ rệt (ngoại trừ dùng phương pháp test load để đo) Tuy nhiên, từ phiên 2.6.x trở đi, việc biên dịch lại điều chỉnh "driver" cho nhân tạo hiệu xuất rõ rệt, việc điều chỉnh "thời biểu" (scheduling) công tác mà hệ thống phải đảm nhiệm c biên dịch lại nhân để loại bỏ "drivers" khơng dùng gây "hiểu lầm" cho nhân, tạo trường hợp máy có triệu chứng hoạt động thiếu ổn định hay gây lỗi d biên dịch lại nhân để thử nghiệm chức module vừa tạo Trường hợp không nhiều trường hợp nằm lý phổ biến –5– Cấu trúc quy ước số hiệu phiên nhân Linux Phiên nhân Linux có quy ước đơn giản dễ nhớ Vấn đề cần nắm rõ trước chọn phiên nhân Linux để vá biên dịch Phiên nhân Linux bao gồm ba nhóm số tách dấu chấm Ví dụ: 2.4.26 Số thứ nhất: số hiệu phiên Số thứ nhì: định cho tình trạng phiên Nếu số số chẵn, định cho phiên ổn định (stable), dùng cho mơi trường production Nếu số số lẻ, định cho phiên khơng ổn định, thường dùng mơi trường phát triển (development) Các kernel thuộc dạng thường có nhiều lỗi khơng ổn định Nếu dùng phiên để tìm lỗi thơng báo cho nhóm phát triển nhân Linux điều tốt Không nên dùng phiên phát triển cho môi trường production Số thứ ba: 26 định cho số hiệu phát hành phiên nhân Linux Một phiên ổn định nhân Linux có nhiều số hiệu phát hành khác Đây quy ước chung cho dạng nhân Linux "vanilla" có nghĩa ứng dụng cho phiên nhân từ http://www.kernel.org, phiên nhân điều chỉnh phân phối có điểm dị biệt Có nhiều Linux xử dụng số hiệu cho phiên nhân họ điều chỉnh Ví dụ RedHat có cập nhật phụ cho kernel như: 2.4.20-8 chẳng hạn Điều cần nắm nên xử dụng phiên ổn định (stable) nhân Linux (số chẵn giữa) cho môi trường production dùng phiên thử nghiệm nhân Linux (số lẻ) cho mơi trường thử nghiệm phát triển Địi hỏi tối thiểu việc biên dịch lại nhân Linux Trước bắt tay vào việc biên dịch lại nhân Linux, điều cần thiết phải có đủ chỗ chứa đĩa Ít phải đủ chỗ chứa cho mã nguồn (trước sau xả nén), chỗ chứa để cài kernel modules sau biên dịch Địi hỏi quan trọng khác phải có công cụ cần thiết phiên Không thể biên dịch nhân không thoả mãn yêu cầu Phiên cho công cụ với phiên nhân khác Nên nhớ, nhóm phát triển nhân yêu cầu bạn phải có phiên công cụ để đảm bảo việc biên dịch nhân thành cơng extra-version development –6– 4.1 Địi hỏi cho nhân Linux 2.4.x Công cụ Phiên tối thiểu Cách xác định phiên Gnu C 2.91.66 Gnu make 3.77 make –version binutils 2.9.1.0.25 ld -v util-linux 2.10o modutils 2.4.2 insmod -V e2fsprogs 1.19 tune2fs reiserfsprogs 3.x.0b reiserfsck 2>&1| grep reiserfsprogs pcmcia-cs 3.1.21 cardmgr -V PPP 2.4.0 isdn4k-utils 3.1pre1 gcc version fdformat pppd version version isdnctrl 2>&1| grep version Tham khảo thêm chi tiết công cụ địa để tải công cụ cho (ít phải phiên cung cấp hơn) hồ sơ Documentation/changes mã nguồn nhân mà bạn dự tính biên dịch –7– 4.2 Địi hỏi cho nhân Linux 2.6.x Cơng cụ Phiên tối thiểu Cách xác định phiên Gnu C 2.95.3 gcc Gnu make 3.78 make binutils 2.12 util-linux 2.10o module-init-tools 0.9.10 depmod -V e2fsprogs 1.29 tune2fs jfsutils 1.1.3 fsck.jfs -V reiserfsprogs 3.6.3 reiserfsck -V 2>&1| grep reiserfsprogs xfsprogs 2.1.0 xfs_db -V pcmcia-cs 3.1.21 cardmgr -V quota-tools 3.09 quota -V PPP 2.4.0 isdn4k-utils 3.1pre1 isdnctrl 2>&1| grep version nfs-utils 1.0.5 showmount –version procps 3.1.13 ps oprofile 0.5.3 oprofiled version version ld -v fdformat pppd version version version version Tham khảo thêm chi tiết công cụ địa để tải cơng cụ cho (ít phải phiên cung cấp hơn) hồ sơ Documentation/changes mã nguồn nhân bạn dự tính biên dịch Nếu phiên cơng cụ máy cũ phiên đưa trên, bạn cần phải tải phiên (đã biên dịch) từ website phân phối bạn dùng Bạn chọn cách tải mã nguồn công cụ biên dịch lại Cách thời gian nhiều thích hợp cho quen thuộc với vấn đề biên dịch mã nguồn Linux Lợi điểm cách bạn tạo cho cơng cụ "sạch" biên dịch theo ý, thích hợp với môi trường máy (và vừa đủ) Đối với phần cứng IA64, bạn cần phiên GCC cho 64bit, nên tham khảo chi tiết http://gcc.gnu.org/install/specific.html (nếu bạn may mắn có IA64 để thử) –8–

Ngày đăng: 04/02/2023, 11:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w