Các tham số được truyền trên dòng lệnh kernel không phải có ý nghĩa đối với kernel: tài liệu tham số kernel nói
Nhân phân tích cú pháp các tham số từ dòng lệnh kernel lên đến - -; nếu nó không nhận ra một tham số và nó không chứa '.', tham số được truyền cho init: tham số với '=' đi vào môi trường init, các tham số khác được truyền dưới dạng đối số dòng lệnh cho init. Tất cả mọi thứ sau khi - - được thông qua như là một đối số cho init.
Điều này không áp dụng cho initvà rootđó thực sự là các tham số kernel và được xử lý bởi kernel. Chúng cũng có thể được tác động bởi không gian người dùng, vì chúng xuất hiện trong /proc/cmdline. (Vì vậy, ví dụ systemd đưa quiettham số kernel vào tài khoản để giảm đầu ra của nó.)
Khi kernel được khởi động với initramfs, roottham số không được kernel sử dụng trực tiếp và inittham số chỉ được sử dụng nếu rdinitthất bại. initkhởi động được xử lý kernel_init, hoạt động như sau:
- nếu có một lệnh ramdisk của người Viking thực hiện lệnh (hoặc giá trị được đưa ra
rdinittrên dòng lệnh kernel hoặc /init) có thể truy cập được, thì kernel sẽ cố chạy nó;
- nếu điều đó không thành công và có một lệnh thực thi của người Viking, (giá trị được đưa ra
inittrên dòng lệnh kernel), kernel cố gắng chạy nó và hoảng loạn nếu không thể;
- như một phương sách cuối cùng, hạt nhân cố gắng chạy
/sbin/init, /etc/init, /bin/init, và /bin/sh; nếu không ai trong số họ có thể chạy, nó hoảng loạn .
Khi có initramfs, tất cả điều này xảy ra ở đó và âm lượng đích không được gắn bởi kernel. Điều gì xảy ra sau khi kernel chạy initchương trình đầu tiên (thông thường, /inittập lệnh trong initramfs) tùy thuộc vào chương trình, không phải kernel. Các đối số không được chuyển đến initvẫn khả dụng /proc/cmdlinenếu /prochệ thống tệp được gắn kết.
ld-linux.soELF hoặc tập lệnh quá sâu hoặc bất cứ điều gì không thể được thực thi?