Ç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 initve rootbunlar ç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, rootparametre doğrudan çekirdek tarafından kullanılmaz ve initparametre yalnızca rdinitbaşarısız olursa kullanılır . initbaşlangıç işlenir ve kernel_initaş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/initve /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, /initinitramfs 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 initkullanılabilir ./proc/cmdline/proc
ld-linux.soELF veya özyineleme çok derin komut dosyası bulamazsa veya herhangi bir şey çalıştırılamazsa ne olur?