vmlinuz và initrd không tìm thấy sau khi xây dựng kernel?


9

Sau khi định cấu hình và xây dựng kernel bằng make, tại sao tôi không có vmlinuz-<version>-default.imginitrd-<version>.img, nhưng chỉ có một vmlinuxnhị phân lớn (~ 150MB)?


4
Bạn đã quên chạy make bzImage? Ngoài ra, bạn đã tạo ra một hạt nhân nguyên khối? Bạn có đang chạy HĐH giống Debian không? Nếu vậy, và bạn không biên dịch chéo, có nhiều cách dễ dàng hơn để xây dựng kernel.
Alexios

Tôi đã biên dịch nó trong OpenSUSE (tuy nhiên, tôi đã tải xuống nguồn mới nhất từ kernel.org). Sau đó make menuconfig, tôi gõ makevà để nó thực hiện công việc.
Amumu

1
Bạn cần make bzImagetạo kernel bzImage. Nói make helpđể xem một số hướng dẫn ngắn gọn. Kiểm tra Linux Kernel Howto để được hướng dẫn chi tiết. Nếu bạn trả lời mọi make menuconfigcâu hỏi với Y (chứ không phải M khi thích hợp), bạn đã cố gắng đưa mọi trình điều khiển vào kernel đúng. Đây là một ý tưởng rất, rất tệ và hạt nhân sẽ không khởi động được vì nó quá lớn. Các initrdhình ảnh được tạo ra bởi các công cụ khác.
Alexios

Tôi vừa kiểm tra lại cấu hình. Có vẻ như tôi chưa kích hoạt hỗ trợ mô-đun hạt nhân có thể tải. Tôi nghĩ đó là mặc định. Tôi sẽ cố gắng biên dịch lại và sẽ thông báo khi hoàn thành.
Amumu

Rất nhiều ý kiến ​​trên trông giống như câu trả lời tốt cho tôi.
James Youngman

Câu trả lời:


9

Các hình ảnh nén ở dưới arch/xxx/boot/, nơi xxxlà vòm. Ví dụ, cho x86amd64, tôi đã có một hình ảnh nén /usr/src/linux/arch/x86/boot/bzImagecùng với /usr/src/linux/vmlinux.

Nếu bạn vẫn không có hình ảnh, hãy kiểm tra xem đã bzip2được cài đặt và hoạt động chưa (nhưng tôi đoán nếu đó là sự cố, bạn sẽ nhận được thông báo lỗi mô tả, chẳng hạn như "không tìm thấy bzip2").

Ngoài ra, cấu hình kernel cho phép bạn chọn phương thức nén, vì vậy tên tệp thực tế và thuật toán nén có thể khác nhau nếu bạn thay đổi cài đặt kernel đó.

Như những người khác đã đề cập, initrd không được tạo ra bởi quá trình biên dịch linux, mà bởi các công cụ khác. Lưu ý rằng trừ khi, vì một số lý do, bạn cần các tệp bên ngoài (ví dụ: bạn cần mô-đun hoặc udev để xác định hoặc gắn kết /), bạn không cần một initrd để khởi động.


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.