imported>Aaditya |
|
(145 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
| [https://wiki.gentoo.org/wiki/OpenRC OpenRC] is an init system maintained by the Gentoo developers.
| | {{Out of date|OpenRC is no longer supported --Frede H. 08:41, 25 September 2020 (CEST)}} |
| OpenRC is a dependency based init system that works with the system provided init program, normally [http://savannah.nongnu.org/projects/sysvinit sysvinit]. It is not a replacement for sysvinit.
| |
|
| |
|
| It can be used as an alternative to [http://www.freedesktop.org/wiki/Software/systemd/ systemd], for users that like more control over their system and do not want all the features that systemd provides and automatically activates.
| | __TOC__ |
|
| |
|
| == Installation == | | ==Unsupported on Manjaro== |
| | {{Important|Manjaro does no longer support OpenRC}} |
| | ==Replacement== |
| | {{Important|If you are looking for OpenRC capable Arch have a look at [https://artixlinux.org Artix Linux]}} |
|
| |
|
| === Method A === | | ==What is OpenRC== |
| | [https://wiki.gentoo.org/wiki/OpenRC OpenRC] is a dependency based [https://en.wikipedia.org/wiki/Init init] system maintained by the Gentoo developers, that works with the system provided init program, normally [http://savannah.nongnu.org/projects/sysvinit sysvinit]. It is not a replacement for sysvinit. |
|
| |
|
| OpenRC is available in the the Manjaro repositories (you may need to wait for your mirror to sync). It can be installed as:
| | It is an alternative to [http://www.freedesktop.org/wiki/Software/systemd/ systemd] for users that like more control over their system, and do not want all the features that systemd provides and automatically activates. |
|
| |
|
| Install the ''openrc-base'' package group:
| |
| sudo pacman -S openrc-base
| |
|
| |
| The output of the above command looks like the following:
| |
|
| |
| $ sudo pacman -S openrc-base
| |
| :: There are 10 members in group openrc-base:
| |
| :: Repository community
| |
| 1) cronie-openrc 2) cryptsetup-openrc 3) dbus-openrc
| |
| 4) device-mapper-openrc 5) dhcpcd-openrc 6) glibc-openrc
| |
| 7) inetutils-openrc 8) lvm2-openrc 9) mdadm-openrc 10) openrc-core
| |
|
| |
| Enter a selection (default=all):
| |
| resolving dependencies...
| |
| looking for inter-conflicts...
| |
| :: openrc-core and systemd-sysvcompat are in conflict. Remove systemd-sysvcompat? [y/N] y
| |
|
| |
| Packages (12): systemd-sysvcompat-212-3 [removal] sysvinit-2.88-15
| |
| cronie-openrc-20140614-1 cryptsetup-openrc-20140614-1
| |
| dbus-openrc-20140614-1 device-mapper-openrc-20140614-1
| |
| dhcpcd-openrc-20140614-1 glibc-openrc-20140614-1
| |
| inetutils-openrc-20140614-1 lvm2-openrc-20140614-1
| |
| mdadm-openrc-20140614-1 openrc-core-0.12.4-16
| |
|
| |
| Total Download Size: 0.22 MiB
| |
| Total Installed Size: 1.19 MiB
| |
|
| |
| :: Proceed with installation? [Y/n]
| |
|
| |
| === Method B (Deprecated) ===
| |
|
| |
| OpenRC is currently available from the [https://aur.archlinux.org/packages/?O=0&K=openrc AUR], and from a binary repository courtesy Archbang and artoo.
| |
|
| |
| '''Note-'''
| |
| This binary repo is now mostly outdated.
| |
|
| |
| To use the binary repos, add the following near the end of the ''/etc/pacman.conf'' file:
| |
|
| |
| [openrc]
| |
| SigLevel = Optional TrustAll
| |
| Server = http://archbang.org/repos/$repo/$arch
| |
|
| |
| [aur-nosystemd]
| |
| SigLevel = Optional TrustAll
| |
| Server = http://archbang.org/repos/$repo/$arch
| |
|
| |
| And then run '''sudo pacman -Syu''' to synchronise the reposotories.
| |
|
| |
| The main package to install is ''openrc-base''. It installs a binary init sysvinit (sysvinit), and the OpenRC base scripts and configuration.
| |
| (When installing from the AUR the package is [https://aur.archlinux.org/packages/openrc-core/ openrc-core] rather than openrc-base. You may also need to install [https://aur.archlinux.org/packages/sysvinit/ sysvinit] manually if the build fails.)
| |
|
| |
| To install the ''openrc-base'' package, use:
| |
|
| |
| sudo pacman -S openrc-base
| |
|
| |
| This package conflicts with ''systemd-sysvcompat'', which will be removed. The output looks like:
| |
|
| |
| $ sudo pacman -S openrc-base
| |
| resolving dependencies...
| |
| looking for inter-conflicts...
| |
| :: openrc-base and systemd-sysvcompat are in conflict. Remove systemd-sysvcompat? [y/N] y
| |
|
| |
| Packages (3): systemd-sysvcompat-212-3 [removal] sysvinit-2.88-15
| |
| openrc-base-0.12.4-12
| |
|
| |
| Total Download Size: 0.24 MiB
| |
| Total Installed Size: 0.96 MiB
| |
| Net Upgrade Size: 0.95 MiB
| |
|
| |
| :: Proceed with installation? [Y/n]
| |
|
| |
| === Common ===
| |
|
| |
| After installing the ''openrc-base'' package, OpenRC should boot by default instead of systemd. Note that it will boot to a command line, as the service for a graphical display manager has not yet been installed.
| |
|
| |
| On installing the ''openrc-base'' package, you may get messages like:
| |
|
| |
| run 'rc-update add cronie default'
| |
| run 'rc-update add dhcpcd default'
| |
|
| |
| Running these commands adds the services to the specified runlevels. For example if you run:
| |
|
| |
| sudo rc-update add cronie default
| |
|
| |
| Then the cronie service would be added to the default runelevel and would automatically be started at boot.
| |
|
| |
| === Additional packages ===
| |
|
| |
| ==== Display Manager ====
| |
|
| |
| To boot to a graphical display manager, install the '''displaymanager-openrc''' package, and edit the ''/etc/conf.d/xdm'' file to specify your display manager. For example, to use '''lightdm''', change the line
| |
|
| |
| DISPLAYMANAGER="xdm"
| |
| to
| |
| DISPLAYMANAGER="lightdm"
| |
|
| |
| '''Note:'''
| |
|
| |
| ''lightdm'' and a ''lightdm-greeter'' should be installed and configured to use lightdm as display manager.
| |
|
| |
| An alternative to ''lightdm'' that I find simpler is [https://wiki.archlinux.org/index.php/LXDM LXDM]. However the version in the repos does not automatically start a ck-session on login; alternative [https://aur.archlinux.org/packages/lxdm-consolekit/ lxdm-consolekit] from the [[AUR]] can be used.
| |
|
| |
| ==== Audio (ALSA) ====
| |
|
| |
| The '''alsa-utils-openrc''' package can be installed. After installing it run:
| |
|
| |
| sudo rc-update add alsasound default
| |
|
| |
| to automatically start Alsa at boot.
| |
|
| |
| ==== Network Manager ====
| |
|
| |
| By default ''dhcpcd'' is enabled via [http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4&chap=3 netifrc]. However if you use Wifi to connect, or need a graphical network applet, then '''networkmanager-openrc''' can be installed.
| |
|
| |
| The ''networkmanager-openrc'' replaces the normal networkmanager package in the repos. Also, it requires ''consolekit'' and ''polkit-consolekit'', which replaces the normal polkit from the repos.
| |
|
| |
| If ''networkmanager-openrc'' from the AB repos doesnt work for you and conlicts with existing packages, try out [https://aur.archlinux.org/packages/networkmanager-openrc/ networkmanager-openrc] from the AUR.
| |
|
| |
| ==== Consolekit ====
| |
|
| |
| You may also wish to install '''consolekit-openrc''', which supports multi-user setups, mounting of partitions by unauthorised users, etc. See the [https://wiki.gentoo.org/wiki/ConsoleKit Gentoo-Wiki] for more details.
| |
|
| |
| Only caveat of installing consolekit is that it requires ''polkit-consolekit'', which conflicts with the normal polkit; so if you boot to systemd you wont be able to mount partitions if you are not in the storage group.
| |
|
| |
| However using the command line, or as root user, one can mount any partition or perform most functions that are made available to the normal user via polkit. See the [https://wiki.archlinux.org/index.php/Polkit Arch-wiki] for more details.
| |
|
| |
| Consolekit also allows a normal (non-root) user to shutdown or restart the system if the desktop environment supports it.
| |
|
| |
| ==== openrc-desktop ====
| |
|
| |
| The ''openrc-desktop'' package can be used to install most of the above desktop related packages in one go. For example,
| |
|
| |
| $ sudo pacman -S openrc-desktop
| |
| :: There are 6 members in group openrc-desktop:
| |
| :: Repository community
| |
| 1) acpid-openrc 2) alsa-utils-openrc 3) avahi-openrc 4) consolekit-openrc
| |
| 5) displaymanager-openrc 6) gpm-openrc
| |
|
| |
| Enter a selection (default=all):
| |
| resolving dependencies...
| |
| looking for inter-conflicts...
| |
|
| |
| Packages (6): acpid-openrc-20140614-1 alsa-utils-openrc-20140614-1
| |
| avahi-openrc-20140614-1 consolekit-openrc-20140614-1
| |
| displaymanager-openrc-20140614-1 gpm-openrc-20140614-1
| |
|
| |
| Total Installed Size: 0.12 MiB
| |
| Net Upgrade Size: 0.00 MiB
| |
|
| |
| :: Proceed with installation? [Y/n]
| |
|
| |
| ==== Others ====
| |
|
| |
| For acpi support '''acpid-openrc''' can be installed and enabled.
| |
|
| |
| For running the ''ps'' command, the '''procps-ng-nosystemd / procps-ng-eudev''' package can be installed.
| |
| To suspend and hibernate via the command line, '''pm-utils''' can be installed. You may also need the '''upower-nosystemd-pm-utils / upower-eudev-pm-utils''' package if suspend and hibernate does not work. Also see the [[Using_OpenRC,_an_alternative_to_systemd#Troubleshooting | troubleshooting]] section for enabling swap.
| |
|
| |
| == Configuration ==
| |
|
| |
| === Adding or Removing services ===
| |
|
| |
| Services can be added to startup with:
| |
|
| |
| sudo rc-update add <service> default
| |
|
| |
| A service can be removed from startup with:
| |
|
| |
| sudo rc-update del <service> default
| |
|
| |
| === Check running services ===
| |
|
| |
| To check what services are running, one can type:
| |
|
| |
| rc-status
| |
|
| |
| === Start / stop / restart services ===
| |
|
| |
| To start / stop / restart services ''immediately'', the '''rc-service''' command can be used. For example:
| |
|
| |
| sudo rc-service networkmanager restart
| |
|
| |
| === Using Consolekit ===
| |
|
| |
| Additionally, if not already done, [https://wiki.gentoo.org/wiki/ConsoleKit consolekit] can be installed to perform root actions like shutting down or restarting system as non-root user from your Desktop Environment.
| |
|
| |
| Consolekit can be installed in the following way:
| |
|
| |
| sudo pacman -S consolekit-openrc
| |
|
| |
| The output looks like the following:
| |
|
| |
| $ sudo pacman -S consolekit-openrc
| |
| [sudo] password for aaditya:
| |
| resolving dependencies...
| |
| looking for inter-conflicts...
| |
| :: polkit-consolekit and polkit are in conflict. Remove polkit? [y/N] y
| |
|
| |
| Packages (5): consolekit-0.4.6-4 js185-1.0.0-2 polkit-0.112-2 [removal]
| |
| polkit-consolekit-0.112-2 consolekit-openrc-20140614-1
| |
|
| |
| Total Download Size: 1.90 MiB
| |
| Total Installed Size: 10.67 MiB
| |
| Net Upgrade Size: 9.08 MiB
| |
|
| |
| :: Proceed with installation? [Y/n]
| |
|
| |
| To check that consolekit is running and a ck-session was started, the following command can be used:
| |
|
| |
| ck-list-sessions
| |
|
| |
| The output looks like the following:
| |
|
| |
| Session1:
| |
| unix-user = '1000'
| |
| realname = 'Aaditya Bagga'
| |
| seat = 'Seat1'
| |
| session-type = ''
| |
| active = TRUE
| |
| x11-display = ':0'
| |
| x11-display-device = '/dev/tty7'
| |
| display-device = ''
| |
| remote-host-name = ''
| |
| is-local = TRUE
| |
| on-since = '2014-06-15T13:29:58.652929Z'
| |
| login-session-id = ''
| |
|
| |
| If you are not getting similar output, then maybe a ck-session is not being started by your display manager. Have a look at the [[Openrc#Display_Manager | Display Manager]] section for more info.
| |
|
| |
| If you start a graphical session from the command line, [http://bbs.archbang.org/viewtopic.php?pid=1394#p1394 this forum post] may be of some help.
| |
|
| |
| == Replacing systemd with eudev (advanced users) ==
| |
|
| |
| With OpenRC being used as init system, the role of systemd is reduced to that of a [https://wiki.archlinux.org/index.php/Udev udev] provider, and for compatibility reasons.
| |
|
| |
| [http://www.gentoo.org/proj/en/eudev/ eudev], developed by the Gentoo folks, can be used as replacement. Note that removing systemd could cause incompatibilities with existing software, hence its advertised as being for advanced / minimalistic users.
| |
|
| |
| Step 1) Install ''eudev-openrc''
| |
| sudo pacman -S eudev-openrc
| |
|
| |
| The output looks like the following:
| |
|
| |
| $ sudo pacman -S eudev-openrc
| |
| resolving dependencies...
| |
| looking for inter-conflicts...
| |
| :: eudev and systemd are in conflict. Remove systemd? [y/N] y
| |
| :: eudev and libsystemd are in conflict. Remove libsystemd? [y/N] y
| |
|
| |
| Packages (4): eudev-1.7-3 libsystemd-212-3 [removal] systemd-212-3 [removal]
| |
| eudev-openrc-20140614-1
| |
|
| |
| Total Download Size: 0.83 MiB
| |
| Total Installed Size: 6.46 MiB
| |
| Net Upgrade Size: -10.81 MiB
| |
|
| |
| :: Proceed with installation? [Y/n]
| |
|
| |
| Step 2) Install ''dbus-eudev / dbus-nosystemd'' ('''Only required if using the Archbang repo''')
| |
| sudo pacman -S dbus-eudev
| |
|
| |
| The output looks like the following:
| |
|
| |
| $ sudo pacman -S dbus-eudev
| |
| [sudo] password for aaditya:
| |
| resolving dependencies...
| |
| looking for inter-conflicts...
| |
| :: dbus-eudev and dbus are in conflict (dbus-core). Remove dbus? [y/N] y
| |
|
| |
| Packages (3): dbus-1.8.2-1 [removal] libdbus-1.8.4-1 dbus-eudev-1.8.4-1
| |
|
| |
| Total Download Size: 0.52 MiB
| |
| Total Installed Size: 1.85 MiB
| |
| Net Upgrade Size: 0.10 MiB
| |
|
| |
| :: Proceed with installation? [Y/n]
| |
|
| |
| After the above steps systemd would be uninstalled and replaced by eudev and its counterparts.
| |
|
| |
| Note the optional dependencies for ''eudev'':
| |
|
| |
| Optional dependencies for eudev
| |
| eudev-openrc: eudev postmount script [pending]
| |
| dbus-eudev: dbus without systemd
| |
| upower-pm-utils-eudev: upower without systemd
| |
| udisks2-eudev: udisks2 without systemd
| |
| libpulse-eudev: libpulse without systemd
| |
| cups-eudev: cups without systemd
| |
| procps-ng-eudev: procps-ng without systemd
| |
|
| |
| These can be installed to get required functionalities. I installed the upower-pm-utils-eudev, udisks2-eudev, and procps-ng-eudev packages.
| |
|
| |
| After uninstalling systemd, I could not login to my xfce4-session, as it was complied for systemd. Hence I had to install [https://aur.archlinux.org/packages/xfce4-session-consolekit/ xfce4-session-consolekit] from the AUR to get it working.
| |
|
| |
| I also had to downgrade ''xfce4-power-manager'' to version 1.2.0-5 to get it working.
| |
|
| |
| === Possible issues ===
| |
|
| |
| I had to rebuild [https://aur.archlinux.org/packages/gvfs-nosystemd/ gvfs] as my unmounted partitions were not being displayed.
| |
|
| |
| Also had to rebuild [https://aur.archlinux.org/packages/xmms/ xmms] as it was not working.
| |
|
| |
| Had to install ''libpulse-eudev / libpulse-nosystemd'' in order to get VLC Player to work (Not required with current packages from the repo).
| |
|
| |
| == Troubleshooting ==
| |
|
| |
| When booting, you may get errors like:
| |
|
| |
| tmpfiles: ignoring invalid entry on line 32 of `/usr/lib/tmpfiles.d//legacy.conf'
| |
| tmpfiles: ignoring invalid entry on line 33 of `/usr/lib/tmpfiles.d//legacy.conf'
| |
| tmpfiles: ignoring invalid entry on line 34 of `/usr/lib/tmpfiles.d//legacy.conf'
| |
| tmpfiles: ignoring invalid entry on line 11 of `/usr/lib/tmpfiles.d//systemd-nologin.conf'
| |
| tmpfiles: ignoring invalid entry on line 18 of `/usr/lib/tmpfiles.d//x11.conf'
| |
|
| |
| To correct, I removed the lines referenced in the above files. These errors have been fixed by the developers on [https://github.com/OpenRC/openrc/issues/17 github], and should be available in the next release.
| |
|
| |
| The boot logs for OpenRC are stored in ''/var/log/rc.log''
| |
|
| |
| If you were using systemd on a '''GPT''' partitioned hard disk, then you may need to enable swap via ''/etc/fstab''. This is so because systemd handled swap automatically on GPT partitions, and gave error if it was mounted via fstab.
| |
|
| |
| I added the following entry to my ''/etc/fstab''
| |
|
| |
| # /dev/sda10
| |
| UUID=0c3e9434-bc5c-461c-a5e4-4e9fe5f9a149 swap swap sw 0 0
| |
|
| |
| Also, systemd used to set a ''tmpfs'' by default; to set it manually via ''/etc/fstab'', I added the following lines:
| |
|
| |
| tmpfs /tmp tmpfs nodev,nosuid 0 0
| |
|
| |
| See the [https://wiki.archlinux.org/index.php/Fstab#tmpfs Arch Wiki] for more details.
| |
|
| |
| For OpenRC, the '''modules to be loaded at boot''' are specified in ''/etc/conf.d/modules'' rather than being present in individual files in ''/etc/modules-load.d''
| |
|
| |
| The required modules can be manually moved over.
| |
| My ''/etc/conf.d/modules'' file looks like the following
| |
|
| |
| # You can define a list modules for a specific kernel version,
| |
| # a released kernel version, a main kernel version or just a list.
| |
| # The most specific versioned variable will take precedence.
| |
| #modules_2_6_23_gentoo_r5="ieee1394 ohci1394"
| |
| #modules_2_6_23="tun ieee1394"
| |
| #modules_2_6="tun"
| |
| #modules_2="ipv6"
| |
| #modules="ohci1394"
| |
|
| |
| # You can give modules a different name when they load - the new name
| |
| # will also be used to pick arguments below.
| |
| #modules="dummy:dummy1"
| |
|
| |
| # Give the modules some arguments if needed, per version if necessary.
| |
| # Again, the most specific versioned variable will take precedence.
| |
| #module_ieee1394_args="debug"
| |
| #module_ieee1394_args_2_6_23_gentoo_r5="debug2"
| |
| #module_ieee1394_args_2_6_23="debug3"
| |
| #module_ieee1394_args_2_6="debug4"
| |
| #module_ieee1394_args_2="debug5"
| |
|
| |
| # You should consult your kernel documentation and configuration
| |
| # for a list of modules and their options.
| |
|
| |
| modules="vboxdrv"
| |
|
| |
| If your hostname is being displayed as '''localhost''' even if there a different hostname in ''/etc/hostname'', then you probably need to change your hostname in ''/etc/conf.d/hostname''
| |
|
| |
|
| == Further Reading == | | == Further Reading == |
|
| |
|
| [https://wiki.archlinux.org/index.php/Openrc The Arch Wiki] | | * [https://wiki.archlinux.org/index.php/Openrc The Arch Wiki] |
| | | * [http://blog.notfoss.com/posts/openrc-on-arch-linux/ OpenRC on Arch Linux] |
| [http://blog.notfoss.com/posts/openrc-on-arch-linux/ OpenRC on Arch Linux] | | * [http://systemd-free.org/ systemd-free.org] |
| | | * [https://wiki.gentoo.org/wiki/Handbook:X86/Working/Initscripts Initscripts] |
| [http://abchk1234.wordpress.com/2014/06/03/using-openrc-on-arch-archbang-manjaro-linux/ Using OpenRC on Arch / Archbang / Manjaro Linux] | | * [https://wiki.gentoo.org/wiki//etc/local.d /etc/local.d] |
| | |
| == Support ==
| |
| | |
| Following is a link to this page's forum counterpart where you can post any related feedback: [https://forum.manjaro.org/index.php?topic=14080.0]
| |
|
| |
|
|
| |
|
| [[Category:Contents Page]] | | [[Category:Obsolete]] |