Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Dec 2018 22:36:04 +0800
From:      Martin Wilke <miwi@FreeBSD.org>
To:        freebsd-hackers@FreeBSD.org
Cc:        Joe Maloney <jmaloney@ixsystems.com>, ken@ixsystems.com, wblock@FreeBSD.org, kmoore@FreeBSD.org, Marcelo Araujo <araujo@FreeBSD.org>
Subject:   OpenRC on FreeBSD
Message-ID:  <397FBAFF-2575-4AE4-B2BC-2DFDA769040A@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
Hi

I'd like to reopen the discussion for OpenRC on FreeBSD. Basically this =
is the second attempt to get it into FreeBSD.

I've opened a review here with a working patch for CURRENT,
https://reviews.freebsd.org/D18578


To recap the discussion
    * First attempt of RFC in March of 2018: =
https://lists.freebsd.org/pipermail/freebsd-hackers/2018-March/052358.html=

    * Working group at BSDCan: =
https://wiki.freebsd.org/DevSummit/201806/OpenRC

Here some key points:

OpenRC provides additional features for service management without =
requiring kernel changes or replacing pid 1, unlike launchd and other =
solutions.  All rc.d scripts have been converted with a few changes, =
typically changing the shebang and making sure the start function is =
named start(). Most service scripts are simplified, usually needing only =
name, command, and, if required, depends statements.

History:
OpenRC started out as an init system by Roy Marples, developed for the =
Gentoo Alt (FreeBSD) kernel branch. It was more widely adopted into =
Gentoo as baselayout v2, and was then split off as a separate =
BSD-licensed project. It is under active development, portable, and =
remains BSD licensed today.

OpenRC and RC:
Both can coexist and be chosen with a setting in /boot/loader.conf.

OpenRC Features:

Service supervision and service monitoring: any service can be =
supervised. Supervised services that crash are automatically restarted. =
The rc-status command shows how many times a service has restarted.

Device hotplug support and event-driven service management: the hotplug =
feature allows devd to take actions when devices are connected. For =
example, a USB wifi adapter can create additional network services when =
attached. The net-online service can, for example, detect when a network =
connection is restored, and restart ntp.

Network profiles: using stacked runlevels, different profiles can be =
established for different networking settings. For instance, different =
profiles can be used for wired or wireless networking, or for differing =
wireless networks, as well as dependency caching and parallel startup =
speed up booting.

Interactive mode:
The boot process can be run interactively for more effective debugging.

OpenRC uses the term =E2=80=9Crunlevels=E2=80=9D to refer to the context =
in which a script is running. There are only three at present:
sysinit (the OpenRC system is starting), boot (start base services when =
the computer is booting), and default (normal execution).

OpenRC, by default, provides a =E2=80=9Ccolorized=E2=80=9D text boot, =
using ANSI color sequences. This can be disabled.

Ports:
As of July 2017, iXsystems has created OpenRC versions of port service =
scripts for the entire ports tree. These scripts coexist with the rc.d =
versions.

License:
OpenRC is a BSD licensed RC init system written in C. =46rom a user =
perspective, it is very similar to the FreeBSD rc.d init system, making =
it easy to use and learn.

Tested: OpenRC has been used as the init system for TrueOS since October =
2016.

Ken Moore has an OpenRC vs RC.d comparison which can be found here:
http://www.wonkity.com/~wblock/openrc/OpenRC_rc.d.pdf =
<http://www.wonkity.com/~wblock/openrc/OpenRC_rc.d.pdf>;
I look forward to discuss the features and capabilities of OpenRC.

Regards,
Martin




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?397FBAFF-2575-4AE4-B2BC-2DFDA769040A>