OpenRC (Türkçe)
OpenRC Gentoo Geliştiricileri tarafından geliştirilen bir hizmet yöneticisidr. OpenRC, bağımlılık temellidir ve sistemin sağladığı başlangıç (init) sistemiyle (genellikle SysVinit) çalışır.
Kurulum
OpenRC ve eşlik eden paketler AUR'da mevcuttur. İnit bileşenlerinin detayları için bakınız Init.
openrcAUR ya da openrc-gitAUR[broken link: package not found] paketini indirin. 0.25 ve sonrası sürümler için, OpenRC kendi init sistmenini /usr/bin/openrc-init
konumununda sağlamaktadır. Opsiyonel olarak, diğer init sistemlerini de seçebilirsiniz, örneğin, busybox.
openrc-init
kullanıldığında, openrc-shutdown
kullanılmalıdır ve shutdown
veya reboot
gibi diğer paketlerden gelen komutlar kullanılmamalıdır, aksi takdirde hatalarla yüzleşebilirsiniz.
Temel hizmet seti dosyaları openrc-arch-services-gitAUR paketinde mevcuttur. Bu paket dışında diğer paketlerde de hizmet dosyları mevcut olabilir; AUR'da aratmanız tavsiye edilir.
initscripts-forkAUR ile uyumluluk sağlamak için, yapılandırma dosyaları /etc/openrc/
konumuna kurulur.
Önyükleme
OpenRC seti ile önyükleyebilmek için çekirdek (kernel) parametrelerinde, init
sistemini ayarlayın:
OpenRC'nin hazır init sistemini kullanmak için, init=/usr/bin/openrc-init
olarak ayarlayın.
SysVinit kullanmak için init=/usr/bin/init-openrc
ayarlayın.
openrc-init
kullanılırken /etc/inittab
dosyasının kullanılmayacağını unutmayın.
Yapılandırma
/etc/openrc/conf.d
dizini, ve /etc/openrc/rc.d
dosyası yapılandırma için kullanılır.
OpenRC yapılandırması hakkında genel bilgiler için bakınız:
systemd'den geçiş yapıyorsanız Init#Configuration bölümündeki yönergeleri takip edebilirsiniz.
Hizmetler
OpenRC hizmetleri kök yetkisi ile rc-update add hizmet ismi runlevel
komutu ile etkinleştirlir. En azından aşşağıdaki hizmetleri etkinleştirmeniz tavsiye edilir:
Hizmet İsmi | Runlevel | Açıklama |
---|---|---|
udev | sysinit | Aygıt takma-çıkarma |
alsa | default | ALSA durumu |
acpid | default | ACPI olayları |
dbus | default | Mesajlaşma veri yolu |
dcron | default | Planlama |
syslog-ng | default | Sistem günlüğü |
init=/usr/bin/openrc-init
kullanıyorsanız,kernel parameterinizde , manuel olarak getty'i etkinleştirmeniz gerekir, yoksa yaptığınız işlemler etkileşimsiz bir TTY ile sonuçlanabilir [1]
Gerekirse, gereken her getty için /etc/openrc/init.d/getty
kısayol bağlantısı oluşturarak yeni bir hizmet oluşturun. Örneğin /dev/tty1
için:
# ln -s /etc/openrc/init.d/agetty{,.tty1} # rc-update add agetty.tty1 default
Ayrıca Gentoo:Systemd#Native services ve Daemons sayfalarına da bakınız.
Ağ
Ağ newnet
ile yapılandırılmalıdır [2], /etc/openrc/conf.d/network
dosyasını değiştirin; hem ip
(iproute2) hem de ifconfig
(net-tools) komutu desteklenmektedir. Aşağıda ip
kullanılarak bir örnek verilmiştir.
ip_eth0="192.168.1.2/24" defaultiproute="via 192.168.1.1" ifup_eth0="ip link set \$int mtu 1500"
Bu ağ hizmeti başlangıç çalışmaseviyesine (runlevel) varsayılan olarak eklenir, böylelikle başka bir değişiklik yapmaya gerek yoktur. Daha fazla bilgi için Network configuration sayfasına bakınız.
Başlangıç Günlüğü
Başlangıç günlüğünü etkinleştirmek için /etc/openrc/rc.conf
dosyasındaki rc_logger="YES"
satırının yorum simgesini kaldırın. Etkinleştrildiğinde, başlangıç günlükleri /var/log/rc.log
konumunda depolanacaktır.
Ana Makine Adı
OpenRC ana makine adını /etc/openrc/conf.d/hostname
dosyasında ayarlar. Bu dosya şöyle görünmektedir:
# Set to the hostname of this machine hostname="myhostname"
Çekirdek (Kernel) Modülleri
OpenRC /etc/modules-load.d
modülü yerine /etc/openrc/conf.d/modules
kullanır. Örneğin:
/etc/openrc/conf.d/modules
# You should consult your kernel documentation and configuration # for a list of modules and their options. modules="vboxdrv acpi_cpufreq"
Yerel Ayarlar
Klavye düzeni /etc/openrc/conf.d/keymaps
ve /etc/openrc/conf.d/consolefont
ile ayarlanabilir. Ayrıca /etc/profile.d/locale.sh
'da kaynağı bulunan /etc/locale.conf
dosyasına da baknız.
Detaylar için Gentoo:Localization/Guide#Keyboard layout for the console ve Locale sayfalarına bakınız.
Kullanım
Bu bölüm systemd ve diğer init sistemlerini birbiriyle kıyaslar.
.service
ve .target
eklentilerini yok sayabilirsiniz, özellikle geçici olarak kernel parametrelerini düzenliyorsanız.
systemd | SysVinit | OpenRC | Açıklama |
---|---|---|---|
systemctl list-units |
rc.d list |
rc-status |
Aktif olan hizmetlerin durumunu listele. |
systemctl --failed |
rc-status --crashed |
Başarısız servisleri listele. | |
systemctl --all |
rc-update -v show |
Mevut tüm servisleri listele. | |
systemctl (start, stop, restart, status) daemon.service |
rc.d (start, stop, restart) daemon |
rc-service daemon (start, stop, restart, status) |
Servis durumunu değiştir. |
systemctl (enable, disable) daemon.service |
chkconfig daemon (on, off) |
rc-update (add, del) daemon |
Servisi aktifleştir veya etkisezleştir. |
systemctl daemon-reload |
chkconfig daemon --add |
Konfigürasyonu oluştur veya etkinleştir. |
İpuçları ve Tüyolar
Sezsiz Başlangıç
OpenRC'den başlangıç mesajlarını saklamak için, /etc/inittab
dosyasını değiştirin ve her komut için --quiet
bayrağını ekleyin. Daha fazla bilgi edinmek için $ openrc -h
komutnu kullanın.
Sorun Giderme
/tmp bağlantısnı kaldırırken hata
Sistemi kapatırken şöyle bir hata mesajı alabilirsiniz
* Unmounting /tmp ... * in use but fuser finds nothing [ !! ]
Bu hata /etc/openrc/conf.d/localmount
dosyasına şunu ekleyerek çözülebilir
no_umounts="/tmp"
IPv6 etkisizileştirilemiyor
/etc/openrc/sysctl.d
dizininde .conf
eklentili dosyanın altına
# Disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1
eklenerek çözülebilir.
Sistem kapatılrıken rootu sadece okunur olarak yeniden bağlama başarısız oluyor
Eğer yukarıdaki durum yaşanırsa, /etc/openrc/init.d/mount-ro
dosyasına
# Flush all pending disk writes now sync; sync
satırından sonra gelen kımsa bunu ekleyin
telinit u
/etc/sysctl.conf bulunamadı
Varsayılan olarak, systctl konfigürasyonunu yüklemek için sysctl --system
çağrılır. Bu /etc/sysctl.conf
dosyasınıda barındırır, ki bu dosya Arch'dan çıkarılmıştır. [3]
Kaybolmuş dosya hatasını önlemek için, şu dosyayı oluşturun:
# touch /etc/sysctl.conf
opentmpfiles-setup etkinleştirlemedi
OpenRC'yi başlatırken şöyle satırlar görebilirsiniz:
* Setting up tmpfiles.d entries ... chattr: Operation not supported while setting flags on /var/log/journal chattr: No such file or directory while trying to stat /var/log/journal/%m chattr: Operation not supported while setting flags on /var/log/journal/remote [ !! ] ERROR: opentmpfiles-setup failed to start
Bu hata /usr/lib/tmpfiles.d/journal-nocow.conf
dosyası yüzünden olmaktadır.Bu seçenekler sadece btrfs günlükleri için geçerlidir
Detaylar için https://github.com/OpenRC/opentmpfiles/issues/2 adresine bakınız
OpenRC (Türkçe)/etc/tmpfiles.d/journal-nocow.conf konumu ve ismiyle bir boş dosya oluşturarak bu sorun çözülebilir.
Systemd ye geri dönme
Systemd'ye dönmek çoğunlukla oldukça kolaydır. OpenRC'ye geçiş yaparken yapılan adımlar, şu sırayla geri yapılabilir:
- Çekirdekteki (kernel)
init=
parametresini kaldırma veya değiştirme. - OpenRC merkezli paketlerin kaldırılması (örneğin dbus-nosystemdAUR[broken link: package not found]'nin dbus ile değiştirilmesi)
Ayrıca bakınız
- Wikipedia:OpenRC (İngilizce)
- Gentoo:OpenRC (İngilizce)
- Arch'ta OpenRC kullanmak hakkında bir forum başlığı (İngilizce)
- Blog: Arch Linux'ta OpenRC[dead link 2024-03-03 ⓘ] (İngilizce)
- Manjaro wiki (İngilizce)