Điều gì xảy ra sau khi tải hình ảnh hạt nhân linux vào RAM


9

Tôi chỉ muốn biết luồng hoạt động xảy ra sau khi tải hình ảnh hạt nhân linux vào RAM sau quá trình khởi động.


2
Bạn không nên biết điều đó. Những gì bạn nên muốn là tìm hiểu nó.
alex

Câu trả lời:


15

Kể từ Linux 2.6:

Hạt nhân

Sau khi được tải vào RAM, kernel thực hiện các chức năng sau.

setup():

  1. Xây dựng bảng trong RAM mô tả bố cục của bộ nhớ vật lý.
  2. Đặt độ trễ và tốc độ lặp lại của bàn phím.
  3. Khởi tạo thẻ bộ điều hợp video.
  4. Khởi tạo bộ điều khiển đĩa với các tham số đĩa cứng.
  5. Kiểm tra xe buýt IBM Micro Channel.
  6. Kiểm tra các thiết bị trỏ PS / 2 (chuột bus).
  7. Kiểm tra hỗ trợ Quản lý năng lượng nâng cao (APM).
  8. Nếu được hỗ trợ, hãy tạo một bảng trong RAM mô tả các đĩa cứng khả dụng.
  9. Nếu hình ảnh kernel đã được tải thấp RAM, hãy di chuyển nó lên cao.
  10. Đặt chân A20 (hack tương thích cho bộ vi xử lý 8088 cổ đại).
  11. Thiết lập Bảng mô tả ngắt tạm thời (IDT) và Bảng mô tả toàn cầu tạm thời (GDT).
  12. Đặt lại đơn vị dấu phẩy động (FPU).
  13. Lập trình lại bộ điều khiển ngắt lập trình (PIC).
  14. Chuyển từ chế độ thực sang chế độ bảo vệ.

startup_32():

  1. Khởi tạo các thanh ghi phân đoạn và một ngăn xếp tạm thời.
  2. Xóa tất cả các bit trong thanh eflagsghi.
  3. Điền vào vùng dữ liệu chưa được khởi tạo bằng số không.
  4. Gọi decompress_kernel()để giải nén hình ảnh hạt nhân.

startup_32() (cùng tên, chức năng khác):

  1. Khởi tạo các thanh ghi phân đoạn cuối cùng.
  2. Điền vào bssđoạn có số không.
  3. Khởi tạo bảng trang tạm thời.
  4. Kích hoạt phân trang.
  5. Thiết lập ngăn xếp chế độ hạt nhân cho quá trình 0.
  6. Một lần nữa, xóa tất cả các bit trong thanh eflagsghi.
  7. Điền IDT bằng các trình xử lý ngắt null.
  8. Khởi tạo khung trang đầu tiên với các tham số hệ thống.
  9. Xác định mô hình của bộ xử lý.
  10. Khởi tạo các thanh ghi với địa chỉ của GDT và IDT.

start_kernel(): Gần như mọi thành phần kernel được khởi tạo bởi hàm này, đây chỉ là một số ít.

  • Người lập kế hoạch
  • Vùng nhớ
  • Phân bổ hệ thống Buddy
  • IDT
  • SoftIRQ
  • Ngày và giờ
  • Phân bổ phiến
  • Tạo quy trình 1 ( /sbin/init)

"Danh sách" đầy đủ có sẵn trong các nguồn tại linux / init / main.c

Trong đó

Ban đầu bắt đầu tất cả quá trình người dùng cần thiết để đưa hệ thống về trạng thái mong muốn, thói quen này phụ thuộc rất nhiều vào phân phối và runlevel được gọi.

Nhập runlevelvào bảng điều khiển, điều này cung cấp cho bạn runlevel hiện tại của hệ thống của bạn.

Hãy xem /etc/rcX.d/(hoặc /etc/rc.d/rcX.d/), thay thế X bằng runlevel của bạn.
Đây là các liên kết tượng trưng theo thứ tự ưu tiên thực hiện. S01....có nghĩa là, tập lệnh này được bắt đầu từ rất sớm, trong khi S99....chạy ở phần cuối của quá trình khởi động. Các KXX....liên kết tượng trưng làm tương tự nhưng đối với chuỗi tắt máy.

Nói chung, các tập lệnh này xử lý đĩa, mạng, ghi nhật ký, điều khiển thiết bị, trình điều khiển đặc biệt, môi trường và nhiều trình tự cần thiết khác.


LXR là một giao diện đẹp để đọc nguồn nhân Linux. Danh sách đẹp, mặc dù hãy cẩn thận rằng rất nhiều trong số đó phụ thuộc vào kiến ​​trúc (đây là phiên bản PC).
Gilles 'SO- ngừng trở nên xấu xa'

1
  • Kernel kiểm soát hệ thống H / W ngay khi bạn thấy "Giải nén Linux ..".
  • Kernel kiểm tra và thiết lập các thanh ghi BIOS của card đồ họa và định dạng đầu ra màn hình.
  • Kernel sau đó đọc các cài đặt BIOS và khởi chạy các giao diện phần cứng cơ bản.
  • Tiếp theo các trình điều khiển trong kernel khởi tạo phần cứng.
  • Sau đó, kiểm tra Kernel cho các partitons
  • Sau đó, nó gắn kết hệ thống tập tin gốc
  • Sau đó, kernel khởi động init, khởi động hệ thống chính với tất cả các chương trình và cấu hình của nó.

0

Bộ tải khởi động nhảy đến điểm nhập ảnh qua dòng lệnh kernel (nếu có) và kernel xử lý phần còn lại.

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.