Khởi động một nhân Linux mới được biên dịch


7

Tôi đã bắt đầu đọc cuốn sách Trình điều khiển thiết bị Linux cần thiết. Tôi đang theo quy trình biên dịch và khởi động vào kernel mới. Tuy nhiên, tôi không thể khởi động vào kernel mới được biên dịch - Tôi chọn kernel mới trong grub và sau đó ... nhẹ nhàng ... màn hình vẫn giữ nguyên.

Dưới đây là các bước tôi đang thực hiện, như được mô tả trong sách (Tôi đang sử dụng kernel 2.6.24 vì đó là những gì cuốn sách dựa trên):

cd /usr/src/linux-2.6.24 # the base dir of the kernel I downloaded
make clean
cp arch/x86/configs/i386_defconfig .config
make bzImage
cp arch/x86/boot/bzImage /boot/vmlinuz

Cuốn sách nói rằng:

Bạn có thể cần phải thông báo cho bộ tải khởi động của mình về sự xuất hiện của hình ảnh khởi động mới. Nếu bạn đang sử dụng bộ tải khởi động GRUB, nó sẽ tự động tìm ra điều này.

Chà, nó không tự động tìm ra nó trong trường hợp của tôi vì không có tùy chọn nào để chọn kernel này trong GRUB. Vì vậy, tôi đã làm nó bằng tay bằng cách gõ update-grub trong thiết bị đầu cuối. Và điều này cũng không hoạt động. Tuy nhiên, một khi tôi đã thay đổi tên tệp từ vmlinuz thành vmlinuz-2.6.24 và gõ update-grub thì nó đã chọn nó. Vì vậy, trên trang 11 của cuốn sách dường như đã có nhiều điều còn sót lại.

Cuốn sách nói sau đó khởi động lại máy.

Dù sao, bây giờ tôi có thể chọn hạt nhân này trong GRUB nhưng như tôi đã nói ở trên, nó không khởi động đúng cách, màn hình chỉ trống và không bao giờ thay đổi. Vì vậy, tôi đang thiếu một cái gì đó? Tôi đã làm theo các hướng dẫn trong cuốn sách chính xác. Tôi sau khi chi 50 € cho cuốn sách này và bây giờ tôi không thể đi qua trang 11 vì vấn đề này.

Tôi cho rằng thực tế là tôi đang sử dụng Ubuntu trên VirtualBox không phải là vấn đề? Tôi chỉ đi sâu vào quá trình khởi động máy ảo Ubuntu và sau đó chọn kernel mới được biên dịch, tôi không thể thấy đó có thể là một vấn đề.


1
Thực hiện theo các hướng dẫn dành riêng cho distro là cách phù hợp nếu bạn không biết mình sẽ đi đâu. wiki.ubfox.com/KernelTeam/GitKernelBuild hoặc help.ubfox.com/community/Kernel/Compile cho Ubuntu. Gần như không thể gỡ lỗi vấn đề của bạn cho bạn, rất nhiều điều có thể sai (đặc biệt là công cụ initramfs). (Điều này không ngăn chặn bạn từ việc đọc phần còn lại của cuốn sách, đó là một "chi tiết nhỏ", bạn sẽ nhận được nó để làm việc cuối cùng, và chạy vào các vấn đề phức tạp hơn nhiều nếu bạn thực sự bắt đầu mã hạt nhân cảm động.)
Mat

1
BTW, tôi không biết phiên bản kernel nào mà bản cài đặt Ubuntu của bạn đang chạy, nhưng nó có thể không tương thích với 2.6.24. Sử dụng ít nhất cùng một phiên bản (hoặc mới hơn) mà bản phân phối của bạn gửi.
Mat

Ok, tôi có thể biên dịch kernel hiện tại. Tôi hy vọng tôi vẫn có thể sử dụng được cuốn sách đó và tôi đã không vứt đi € 50. Thực sự muốn tìm hiểu về viết trình điều khiển thiết bị.
Jim_CS

2
Như tôi đã nói, việc lấy kernel đầu tiên của bạn để khởi động chỉ là một chi tiết. Tôi không biết cuốn sách đó, nhưng bạn thậm chí không nên tính "sự cố" này với nó - tôi khá chắc chắn về việc viết trình điều khiển thiết bị, không biên dịch kernel đầu tiên của bạn (mà các tác giả có thể cho rằng bạn thực sự quen thuộc với trước khi mua sách của họ). Sử dụng công cụ phân phối của bạn cho đến khi bạn đủ quen thuộc với quy trình để tự gỡ lỗi thiết lập của mình (và biết nên sử dụng tùy chọn cấu hình nào).
Mat

Câu trả lời:


3

Ubuntu có một tập lệnh được nhập từ Debian để cài đặt cho bạn. Sau khi biên dịch kernel, chỉ cần chạy sudo make modules_install installvà kernel của bạn sẽ được cài đặt chính xác.

Chỉnh sửa sau: Đây là tập lệnh mà Ubuntu và Debian sử dụng. Nó được tự động gọi bởi kernel Makefile khi bạn đưa ra các lệnh cài đặt ở trên và thực hiện cài đặt cụ thể distro.


0

Tệp grub.conf của bạn nên có trình mô phỏng nhập cảnh này

title My Linux Kernel
root (hd0,0)
kernel /boot/gentoo-kernel root=/dev/sda1

hạt nhân Ubuntu của bạn có thể có cái gì đó như

initrd /boot/initrd.img

bạn không cần điều này khi biên dịch kernel trên phần cứng của bạn. Điều này có thể gây ra vấn đề của bạn.

Bạn nên nhận xét cho tôi tệp grub.conf của bạn và tôi sẽ xem xét nó. nếu không, cấu hình của bạn có thể bị đổ lỗi.

Nhân cũ hơn cũng có thể không có trình điều khiển bạn cần cho phần cứng mới hơn.

Một hệ thống Ubuntu mới hơn sẽ không quay trở lại phiên bản kernel cũ mà không gặp rắc rối.

bạn có thể thử một phiên bản Ubuntu cũ hơn chạy phiên bản gần phiên bản kernel đó hoặc phiên bản kernel mới nhất từ ​​kernel.org.


0

Mỗi bản phân phối linux có cơ chế và chính sách riêng về triển khai gói. Điều này giống với Kernel. Hầu hết các bản phân phối đang che giấu quá trình biên dịch với các công cụ của họ chủ yếu cung cấp các gói nhị phân.

Nếu bạn muốn biên dịch kernel tùy chỉnh trên một bản phân phối linux cụ thể, bạn phải tuân theo bản phân phối này về cách thực hiện theo cách của họ mà không làm hỏng hệ thống của bạn.

Ubuntu có cách cụ thể của nó, tương tự đối với Achlinux, tương tự đối với Redhat hoặc Gentoo.

Vì vậy, đối với Ubuntu, hãy làm theo tài liệu tại đây https://wiki.ubfox.com/Kernel/BuildYourOwnKernel

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.