OpenRC¶
Türkmen varsayılan olarak openrc kullanır.
Kurulum¶
ymp kullanarak openrc yüklemek için aşağıdaki komutu kullanabilirsiniz:
$ ymp install openrc
Kaynak koddan derlemek için aşağıdaki adımları izlemelisiniz:
$ git clone https://github.com/OpenRC/openrc
$ cd openrc
$ meson setup build --prefix=/usr
$ ninja -C build install
Basit kullanım¶
Servis etkinleştirip devre dışı hale getirmek için rc-update komutu kullanılır.
# servis etkinleştirmek için
$ rc-update add udhcpc boot
# servisi devre dışı yapmak için
$ rc-update del udhcpc boot
# Burada udhcpc servis adı boot ise runlevel adıdır.
Servisleri başlatıp durdurmak için ise rc-service komutu kullanılır.
$ rc-service udhcpc start
# veya şu şekilde de çalıştırılabilir.
$ /etc/init.d/udhcpc start
Servislerin durmunu öğrenmek için rc-status komutu kullanılır. Ayrıca sistemdeki servislerin sonraki açılışta hangisinin başlatılacağını öğrenmek için ise parametresiz olarak rc-update kullanabilirsiniz.
# şu an hangi servislerin çalıştığını gösterir
$ rc-status
# sonraki açılışta hangi servislerin çalışacağını gösterir
$ rc-update
Sistemi kapatmak veya yeniden başlatmak için openrc-shutdown komutunu kullanabilirsiniz.
# kapatmak için
$ openrc-shutdown -p 0
# yeniden başlatmak için
$ openrc-shutdown -r 0
Docker içinde servis çalıştırma¶
Docker veya farklı bir ortamda sistem başlatılmadığı için servisler normal olarak çalıştırılmayacaktır. Fakat aşağıdaki adımları uygulayarak servis başlatmamız mümkündür.
# Önce /run/openrc dizini oluşturulur
$ mkdir -p /run/openrc
# Ardından boş softlevel dosyası oluşturulur
$ touch /run/openrc/softlevel
Bu işlemden sonra servis başlatmamız mümkün hale gelmektedir. Servisi aşağıdaki komut ile başlatabiliriz.
$ rc-service sshd start
Servis dosyası¶
Openrc servis dosyaları basit birer bash betiğidir. Bu betikler openrc-run komutu ile çalıştırılır ve çeşitli fonksiyonlardan oluşabilir. Servis dosyaları /etc/init.d içerisinde bulunur. Servisleri ayarlamak için ise /etc/conf.d içerisine aynı isimle ayar dosyası oluşturabiliriz.
Çalıştırılacak komut komut parametreleri ve pidfile dosyamızı aşağıdaki gibi belirtebiliriz.
description="Ornek servis"
command=/usr/bin/ornek-servis
command_args=--parametre
pidfile=/run/ornek-servis.pid
Bununla birlikte start, stop, status, reload, start_pre, stop_pre gibi fonksiyonlar da yazabiliriz.
...
start(){
ebegin "Starting ${RC_SVCNAME}"
start-stop-daemon --start --pidfile "/run/servis.pid" --exec /usr/bin/ornek-servis --parametre
}
...
Servis bağımlılıklarını belirtmek için ise depend fonksiyonu kullanılır.
...
depend() {
need localmount
after dbus
}
...
Openrc teorik olarak sysv-init betiklerini de çalıştırabilir. Fakat kesinlikle tavsiye edilmemektedir.