Tôi sẽ đi vòng quanh để trả lời câu hỏi thực tế của bạn, nhưng tôi sẽ đi đường vòng để đến đó để bạn có ngữ cảnh tốt hơn.
tldr: Gói bạn cần là chế tạo
hoặc xây dựng cần thiết
. Bạn cần ở trong cùng thư mục với mã nguồn linux của mình và có tệp .config được định cấu hình (có vẻ như bạn đã làm rồi). Sau đó chạy các lệnh đó. Các từ khóa Google có thể trợ giúp là "biên dịch kernel linux"
Cho nên chế tạo
là một hệ thống xây dựng. Nó cho phép bạn chạy một loạt lệnh biên dịch (hoặc thực sự là bất kỳ lệnh nào), theo cách đệ quy thông qua cấu trúc thư mục. Nó sử dụng một hệ thống đơn giản để chỉ biên dịch các chương trình có thay đổi.
Cho phép khai báo "mục tiêu". Theo truyền thống, một mục tiêu là một tên tệp và theo sau nó là các tệp mà nó phụ thuộc vào.
Vì vậy, một ví dụ đơn giản là:
helloworld: helloworld.c helloworld.h
gcc helloworld.c -o helloworld
Điều này sẽ được lưu trữ trong một cuộc gọi tập tin Makefile
và nó báo rằng để xây dựng tệp helloworld (nhị phân đã biên dịch), bạn chạy gcc helloworld.c -o helloworld
và nếu helloworld đã tồn tại, đừng làm bất cứ điều gì trừ khi có những thay đổi đối với helloworld.c hoặc helloworld.h mới hơn tệp helloworld.
Nếu đây là quy tắc duy nhất trong makefile, chạy chế tạo
sẽ gọi quy tắc này (vì nó là quy tắc đầu tiên) và cố gắng xây dựng Chào thế giới
nhưng nó cũng có thể được gọi một cách rõ ràng bằng cách chạy làm helloworld
Tệp tạo tệp thường phức tạp hơn nhiều và có thể trông giống thế này hơn (đây là một ví dụ rất phức tạp và tôi nhận ra rằng tệp tạo tệp hầu như sẽ không bao giờ giống như thế này, nhưng nó rất tốt cho việc giải thích):
xin chào: xin chào.o libhello.o
gcc xin chào.o libhello.o -o xin chào
xin chào.o: xin chào.c xin chào.h
gcc -c xin chào.c -o xin chào.o
libhello.o: libhello.c libhello.h
gcc -c libhello.c -o libhello.o
Vì vậy, nếu bạn chạy chế tạo
hoặc chào hỏi
tệp tạo này sẽ kiểm tra hello.o và libhello.o, nếu chúng không tồn tại, nó sẽ tìm kiếm các mục tiêu đó và do đó tìm ra cách tạo hello.o và libhello.o và SAU ĐÓ tạo tệp nhị phân xin chào như bạn đã yêu cầu ngay từ đầu. Điều này cho phép bạn chỉ định mức độ phụ thuộc tại một thời điểm và tìm ra thứ tự biên dịch mọi thứ để làm cho nó hoạt động (điều này cũng có thể tiết kiệm thời gian biên dịch nếu một trong các thư viện của bạn không thay đổi, bạn không cần biên dịch lại đối tượng đó ).
Bạn có thể chỉ định một mục tiêu mà không có bất kỳ phụ thuộc nào, trong trường hợp này, nó sẽ chỉ chạy nếu tệp mục tiêu không tồn tại. Hơn nữa, mục tiêu của bạn không nhất thiết phải là tệp được tạo theo quy tắc đó. Ví dụ:
dọn dẹp:
rm xin chào *.o
Điều này cho phép bạn chạy Làm sạch
và nó sẽ xóa tệp nhị phân đã biên dịch và các tệp đối tượng. Vì nó không thực sự tạo một tệp có tên dọn dẹp
, mỗi khi bạn chạy Làm sạch
quy tắc này được thực thi và dọn sạch thư mục làm việc của bạn. Đây được gọi là mục tiêu giả mạo và chúng được sử dụng khá thường xuyên. thực hiện cài đặt
là một chương trình mà bạn có thể thấy thường xuyên để cài đặt một chương trình mà bạn đã tạo.
Quay lại câu hỏi ban đầu của bạn
Vì vậy, nhân linux sử dụng make để xây dựng. Nó có một loạt các mục tiêu giả mạo, khi ở thư mục gốc của nguồn Linux, hãy chạy giúp đỡ
để cho bạn thấy các mục tiêu. Thông thường, bạn bắt đầu với một trong những mục tiêu khởi chạy một chương trình để giúp bạn xây dựng một .config
tập tin. Đây sẽ là tạo cấu hình
, tạo menuconfig
, tạo xconfig
, và một số người khác.
chế tạo
sẽ chạy mục tiêu mặc định để biên dịch kernel bằng các tùy chọn được chỉ định trong tệp .config. làm mô-đun
sẽ chỉ biên dịch các bit được đánh dấu là mô-đun trong .config
tập tin. Giữa hai lệnh này, bạn sẽ kết thúc bằng một hạt nhân vmlinuz và một loạt các nhị phân mô-đun hạt nhân. Linux Kernel là gì/làm gì nằm ngoài phạm vi của bài đăng này, nhưng câu chuyện ngắn gọn là nó là phần mềm trung tâm của hệ điều hành (nếu toàn bộ hệ thống là một hạt, thì kernel sẽ là lõi trung tâm, phải không? ). Nó chạy ở mức đặc quyền cao nhất trên bộ xử lý và là phần mềm duy nhất tương tác trực tiếp với bộ nhớ và phần cứng, đồng thời tất cả phần mềm khác trên hệ thống sẽ nói chuyện với nhân để môi giới truy cập vào phần cứng. (có khoảng 20 cảnh báo trong phần mô tả đó, nhưng điều đó bao gồm 80% phổ biến nhất về cách thức hoạt động của mọi thứ).
Nhưng hy vọng rằng điều đó cung cấp cho bạn đủ ngữ cảnh để tìm kiếm thông tin hữu ích hơn, nếu bạn tìm kiếm "biên dịch kernel linux", bạn sẽ tìm được nửa tá tài nguyên ở mọi mức độ phức tạp. Hướng dẫn chính thức là tại linux.org, nhưng nó rất nhanh bị loại bỏ và không hữu ích lắm nếu đây là lần đầu tiên của bạn.
Trong Ubuntu (và hầu hết các bản phân phối), make nằm trong chế tạo
gói, vì vậy nó được cài đặt với Sudo apt cài đặt thực hiện
tuy nhiên, để xây dựng kernel, bạn cũng sẽ cần các chương trình khác, vì vậy bạn thường muốn cài đặt chuỗi công cụ xây dựng và các phụ kiện với Sudo apt cài đặt bản dựng cần thiết
trong đó bao gồm làm.