2009-06-19 40 views
6

Có hạt nhân nào cần lấy từ bộ nạp khởi động hay không. Thường thì hạt nhân có khả năng đưa hệ thống lên từ đầu, vậy tại sao nó lại yêu cầu bất cứ thứ gì từ bộ tải khởi động? Tôi đã thấy thông báo khởi động từ hạt nhân như thế này.Đối số hạt nhân

"Fetching vars from bootloader... OK" 

Vậy điều gì chính xác được các biến được truyền? Các biến được truyền từ bộ nạp khởi động như thế nào? Là thông qua ngăn xếp?

+0

Điều này có nên trên máy chủ không? –

Trả lời

2

Hạt nhân chấp nhận cái gọi là tùy chọn dòng lệnh, dựa trên văn bản. Điều này rất hữu ích, bởi vì bạn có thể làm rất nhiều thứ mà không phải biên dịch kernel của bạn. Đối với các đối số đi qua, nó phụ thuộc vào kiến ​​trúc. Trên ARM nó được thực hiện thông qua một con trỏ đến một vị trí trong bộ nhớ, hoặc một vị trí cố định trong bộ nhớ.

Dưới đây là cách thực hiện trên ARM. Thông thường hạt nhân không có khả năng khởi động máy từ đầu. Có thể là từ bios, nhưng sau đó nó không phải là từ đầu. Nó cần một số khởi tạo, đây là công việc của bộ nạp khởi động.

2

Có một số parametres mà hạt nhân Linux chấp nhận từ bộ nạp khởi động, trong đó những gì tôi có thể nhớ bây giờ là thông số vga. Ví dụ:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318 

Hãy xem một số thông số chung.

0

Linux chấp nhận các biến từ trình tải khởi động để cho phép các tùy chọn nhất định được sử dụng. Tôi biết rằng một trong những điều bạn có thể làm là làm cho nó để bạn không phải đăng nhập (chế độ phục hồi) và có một số tùy chọn khác. Nó chủ yếu chỉ cho phép sửa chữa được thực hiện nếu có một vấn đề với một cái gì đó hoặc để thay đổi mật khẩu. Đây là cách Ubuntu Live-CD khởi động Linux nếu bạn chọn sử dụng tùy chọn khác.

2

Đối với hạt nhân Linux, có một vài điều mà bộ nạp khởi động phải báo cho hạt nhân. Nó bao gồm những thứ như dòng lệnh hạt nhân (như một số người khác đã được đề cập), trong bộ nhớ, initrd đã được tải và kích cỡ của nó, nếu initrd đang được sử dụng (hạt nhân không thể tự nạp nó; thường khi sử dụng initrd , các mô-đun cần thiết để thiết lập các thiết bị lưu trữ nằm trong initrd và nó cũng có thể phải thực hiện một số thiết lập khá phức tạp trước khi có thể truy cập bộ nhớ) và một số tỷ lệ và kết thúc khác nhau.

Xem Documentation/x86/boot.txt (liên kết đến phiên bản 2.6.30) để biết thêm chi tiết về kiến ​​trúc x86 truyền thống (cả 32 bit và 64 bit), bao gồm cách các biến này được chuyển đến mã thiết lập hạt nhân.

1

Trình tải khởi động không sử dụng ngăn xếp để chuyển đối số cho hạt nhân. Ít nhất trong trường hợp của Linux, có một cấu trúc bộ nhớ khá phức tạp mà bộ tải khởi động điền vào trong đó hạt nhân biết cách phân tích cú pháp. Đây là cách bộ tải khởi động trỏ hạt nhân đến dòng lệnh của nó. Xem Documentaion/x86/boot.txt để biết thêm thông tin.

0

Thông thường các tham số được gọi là tham số dòng lệnh, được chuyển đến mô-đun hạt nhân từ bộ nạp khởi động. Trình tải khởi động sử dụng nhiều ngắt BIOS để phát hiện,

memory 
HDD 
Processor 
Keyboard 
Screen 
Mouse 
ETC... 

và tất cả chi tiết về phần mềm độc hại sẽ được phát hiện lúc khởi động, ở chế độ thực, sau đó chuyển thông số này cho Kernel.

Các vấn đề liên quan