OpenRC logosu | |
| Yazar | Roy Marples |
|---|---|
| Geliştirici | Gentoo Geliştiricileri |
| İlk yayınlanma | 5 Nisan 2007) |
| Güncel sürüm | 0.64.1 |
| Kod deposu | https://github.com/OpenRC/openrc |
| Programlama dili | C, sh |
| İşletim sistemi | Linux, FreeBSD, NetBSD |
| Boyutu | ~1.6 MB |
| Tür | Init Servisi |
| Lisans | BSD Lisansı |
| Resmî sitesi | Resmî site |
OpenRC, Unix benzeri işletim sistemleri için bağımlılık tabanlı bir başlatma sistemidir. Gentoo projesinde de aktif katkılarda bulunan NetBSD geliştiricisi Roy Marples tarafından oluşturulmuştur. C ve POSIX uyumlu shell dillerinde yazılmıştır, bu sayede BSD ve Linux sistemlerinde kullanılabilmektedir.

OpenRC, aşağıdaki dağıtımların varsayılan başlatma sistemi veya işlem denetleyicisidir:
Aşağıdaki dağıtımlar OpenRC'yi bir başlatma sistemi veya işlem denetleyicisi olarak kullanmayı destekler:
OpenRC, SysVinit'in sistemi ilk ayağa kaldırma (PID 1) görevini devralmak yerine, onun yavaş hizmet yönetim süreci olan "sysv-rc" altyapısının yerini almak üzere tasarlanmıştır. Sistem açılışında SysVinit tarafından tetiklenen OpenRC, init betiklerini ayrıştırarak (script parsing) servislerin bağımlılık sıralamasını ve çalışma seviyelerini (runlevel) yönetir; tüm servisleri başlattıktan sonra ise kendini tamamen kapatır.
0.25 sürümüyle tanıtılan "openrc-init" altyapısı kullanılarak SysVinit'e ihtiyaç duymadan doğrudan kendisi de PID 1 olarak çalışabilir. OpenRC, daemon yönetimi için Debian geliştiricileri tarafından yaratılmış start-stop-daemon yazılımın modifiye edilmiş bir sürümünü kullanmaktadır.
OpenRC'nin init betikleri, geleneksel sysVinit betikleriyle benzerlik gösterse de, betik oluşturmayı kolaylaştıran pek çok özellik sunar. Normal şartlarda bir servisi başlatmak, durdurmak ve durumunu kontrol etmek için ayrı ayrı kod yazmak gerekirken; OpenRC'de geliştiricinin sadece çalıştırılacak programın yolunu (değişken olarak) belirtmesi yeterlidir. Sistem bu değişkeni temel alarak start(), stop() ve status() gibi standart fonksiyonları kendisi otomatik olarak oluşturur. SysVinit sistemlerinde servis bağımlılıklarını belirtmek için kullanılan karmaşık LSB başlıkları (LSB headers) yerine, OpenRC'de çok daha temiz bir yapı sunan depend() fonksiyonu kullanılır.
0.21 sürümüyle birlikte gelen supervise-daemon bileşeni sayesinde OpenRC servis denetim (supervision) yeteneği kazanmıştır. Bu özellik aktif edildiğinde; supervise-daemon ilgili servisi başlatmakla kalmaz, aynı zamanda arka planda sürekli izleyerek çökmesi durumunda otomatik olarak yeniden başlatılmasını sağlar. OpenRC bu kendi yerleşik çözümünün dışında, runit ve s6 gibi diğer popüler üçüncü parti servis denetleyicilerini de resmi olarak desteklemektedir.