Çekirdek Komut satırına geçirilen parametreler çekirdek için anlamlı olması gerekmez: çekirdek parametreleri dokümantasyon diyor
Çekirdek, çekirdek komut satırından parametreleri “-” ye kadar ayrıştırır; bir parametreyi tanımıyorsa ve bir '.' içermiyorsa, parametre init'e aktarılır: '=' ile parametreler init ortamına gider, diğerleri init'e komut satırı bağımsız değişkenleri olarak iletilir. “-” den sonraki her şey başlangıca bir argüman olarak aktarılır.
Bu, çekirdek parametreleri için geçerli değildir init
ve root
bunlar çekirdek parametreleri tarafından ele alınır. Ayrıca göründükleri için kullanıcı alanı tarafından da kullanılabilirler /proc/cmdline
. (Böylece, örneğin systemd quiet
, çıktısını azaltmak için çekirdek parametresini dikkate alır .)
Çekirdek bir initramfs ile önyüklendiğinde, root
parametre doğrudan çekirdek tarafından kullanılmaz ve init
parametre yalnızca rdinit
başarısız olursa kullanılır . init
başlangıç işlenir ve kernel_init
aşağıdaki gibi çalışır:
- “ramdisk yürütme komutu” (
rdinit
çekirdek komut satırında verilen değer /init
) veya erişilebilir olan bir çekirdek varsa, çekirdek bunu çalıştırmayı dener;
- bu başarısız olursa ve bir "yürütme komutu" (
init
çekirdek komut satırında verilen değer ) varsa, çekirdek bunu çalıştırmayı dener ve yapamazsa panik yapar;
- son çare olarak, çekirdek çalıştırmayı dener
/sbin/init
, /etc/init
, /bin/init
ve /bin/sh
; bunların hiçbiri çalıştırılamazsa panik yapar .
Bir initramfs olduğunda, bunların hepsi orada olur ve hedef birim çekirdek tarafından monte edilmez. Çekirdek ilk programı çalıştırdıktan sonra ne olur init
(genellikle, /init
initramfs içindeki komut dosyası) çekirdeğe değil, programa bağlıdır. Aktarılmayan bağımsız değişkenler , dosya sistemi takılıysa init
kullanılabilir ./proc/cmdline
/proc
ld-linux.so
ELF veya özyineleme çok derin komut dosyası bulamazsa veya herhangi bir şey çalıştırılamazsa ne olur?