OpenRC¶
Openrc sistem açılışında çalışacak uygulamaları çalışrıran servis yöneticisidir.
Kurulum¶
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
Çalıştırılması¶
Openrc servis yönetiminin çalışması için boot parametrelerine yazılması gerekmektedir. /boot/grub.cfg içindeki linux /vmlinuz init=/usr/sbin/openrc-init root=/dev/sdax olan satırda init=/usr/sbin/openrc-init yazılması gerekmektedir. Artık sistem openrc servis yöneticisi tarafından uygulamalar çalıştırılacak ve sistem hazır hale getirilecek.
Basit kullanım¶
Servis etkinleştirip devre dışı hale getirmek için rc-update komutu kullanılır. Aşağıda udhcpc internet servisi örnek olarak gösterilmiştir. /etc/init.d/ konumunda udhcpc dosyamızın olması gerekmektedir.
# 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
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 Disk İşlemi¶
Kullandığımız servis yöneticisi openrc ise /etc/fstab komunundaki dosyaya bakarak diske erişim sağlamaktadır. Bundan dolayı fstab dosyamızı aşağıdaki gibi yapılandırmalıyız.
Fstab dosyası¶
Bu dosyayı doldurarak açılışta hangi disklerin bağlanacağını ayarlamalıyız. /etc/fstab dosyasını aşağıdakine uygun olarak doldurun.
# <fs> <mountpoint> <type> <opts> <dump/pass>
/dev/sda1 /boot vfat defaults,rw 0 1
/dev/sda2 / ext4 defaults,rw 0 1