İnit

Sistemi başlatmak için herhangi bir servis yöneticisi kullanmak zorunda değilsiniz. Bunun yerine kendiniz bir betik yardımı ile başlatabilirsiniz.

Bunun için /sbin/init dosyası oluşturmalı ve içine açılışta çalışacak komutları yazmalısınız.

Bu dosyada sırası ile yapılması gereken işlemler şu şekildedir:

  • Gereken çekirdek modülleri yüklenir.

  • Dosya sistemi bağlanır.

  • Gereken servisler başlatılır (dbus network-manager lightdm gibi)

  • /dev/tty* ile giriş yapılması için getty çalıştırılır.

Modüllerin yüklenmesi

Varsa systemd-udev veya eudev gibi araçlar kullanılır.

# systemd-udevd için
/lib/systemd/systemd-udevd &
udevadm trigger -c add
udevadm settle
# eudev için
udevd &
udevadm trigger -c add
udevadm settle

Bunun dışında elle yüklemek mümkündür.

find /sys/ -name modalias | xargs sort -u | xargs -n 1 modprobe

Dosya sisteminin bağlanması

Basitçe şu şekilde bağlayabilirsiniz.

mount -a

Veya /etc/fstab dosyasını okuyup gerekli işlemleri gerçekleştirebilirsiniz.

Servislerin başlatılması

Servisler arkada çalıştırılacağı için init betiğinizi blocklamaması gerekmektedir. Örneğin şu şekilde çalıştırabiliriniz.

dbus-daemon --system &
NetworkManager &
lightdm &

Not: Çıktıları bir dosyaya yönlendirmek hata ayıklamak ve karmaşayı engellemek için daha iyi olabilir.

Getty başlatılması

Sisteme giriş yapılabilmesi için /dev/tty* için getty başlatılması gerekmektedir.

# Örnğin /dev/tty1 için
/sbin/getty 115200 tty1 &

Not: Oturumdan çıkıldığında getty kapanacağı için tekrar başlatmanız gerekebilir.

Dikkat edilmesi gerekenler

  • İnit pid 1 olarak çalıştığı için asla kapatılmamalıdır. Kapanmayı engellemek için exec sleep inf kullanabilirsiniz.

  • reboot / poweroff / shutdown komutları servis yöneticilerine ait olduğu için (sysvinit gibi) özel init ile çalışmaz. Bu komutlara -f parametresi ekleyebilir veya /proc/sysrq-trigger kullanabilirsiniz.

  • Özel yazılmış initte servis başlat durdur yeniden başlat gibi özellikler bulunmadığı için elle kontrol sağlamalısınız.