Manjaro Difference between pages "Pacman-mirrors" and "OpenRC, an alternative to systemd"

Difference between pages "Pacman-mirrors" and "OpenRC, an alternative to systemd"

From Manjaro
(Difference between pages)
imported>Fhdk
 
imported>Aaditya
 
Line 1: Line 1:
[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.


== Manjaro Pacman-Mirrors ==
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.


A utility for generating and maintaining the systems mirrorlist.
== Installation ==
This article covers current version 4.0.4.
Future enhancements are marked with version 4.1


=== Purpose ===
OpenRC is available from the the Manjaro repositories. It can be installed as:
Manjaro uses pacman for system maintenance, updates and new installs. For pacman to function, a list of servers, or more commonly known as mirrors, with Manjaro software packages is required. As Manjaro has many mirrors all over the world it is feasible to use the mirrors closest to your location.


=== Use ===
sudo pacman -S openrc-base
For most functions, a working internet connection is required. From v4, Pacman-Mirrors will check if network is online. It is doing so by querying [https://manjaro.org https://manjaro.org].The app is run by an ordinary user with superuser rights from the console and when no arguments are given it will display a usage description as if '''-h''' had been given.


$ sudo pacman-mirrors
The output of the above command looks like the following:


Exactly how the app generates the mirrorlist is controlled by supplying arguments on the commandline.  
$ 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]


'''Important'''
After installing the ''openrc-base'' package group, OpenRC should boot by default instead of systemd.
After every change to your mirrorlist it is mandatory to run an update on your pacman database
Note that it will boot to a command line, as the service for a graphical display manager has not yet been installed.


$ sudo pacman -Syy
On installing ''openrc-base'', one may get messages like:


If you fail to do so, the issue/s which had you make change might not be solved.
run 'rc-update add dbus default'
run 'rc-update add cronie default'


=== Available arguments ===
Running these command(s) adds the service(s) to the specified runlevels. For example on running:
<div class="toccolours mw-collapsible mw-collapsed">
All available arguments can be viewed by unfolding this block
<div class="mw-collapsible-content">
<pre>
  -h, --help            show this help message and exit
  -g, --generate        Generate mirrorlist
  -m, --method {rank,random}
                        Generation method
  -b, --branch {stable,testing,unstable}
                        Branch name
  -c, --country COUNTRY [COUNTRY ...]
                        Comma separated list of countries, from which mirrors
                        will be used
  --geoip              Get current country using geolocation. Ignored if
                        '-c/--country' is supplied
  -d, --mirror_dir PATH
                        Mirrors list path
  -o, --output FILE    Output file
  -t, --timeout SECONDS
                        Maximum waiting time for server response
  --no-update          Don't generate mirrorlist if 'NoUpdate = True' in the
                        configuration file
  -i, --interactive    Generate custom mirrorlist
  -v, --version        Print the pacman-mirrors version
  -q, --quiet          Quiet mode - less verbose output
  -f, --fasttrack DIGIT
                        A quick mirrorlist. Overrides -c -i -m --geoip
  -l, --list            List all available countries
  --default            Load default mirror file
</pre>
Available from version 4.1
<pre>
API:
  -a, --api            [--prefix] [--protocols] [--set-branch|--get-branch
                        {-b <branch>}]
  --get-branch          get-branch
  --set-branch          set-branch
  --prefix PREFIX      [--prefix {'$mnt'|'/some/path'}]
  --proto PROTO [PROTO ...]
                        [--proto {all|http https ftp ftps}]
  -n, --no-mirrorlist  no mirrorlist
</pre>
</div>
</div>


=== Defaults ===
sudo rc-update add dbus default
PacmanMirrors has some reasonable defaults


- Ranking mirrors with the fastest mirrors on top
The dbus service would be added to the default runelevel and would automatically be started at boot.
- Using stable branch
- Using all mirrors


The '''-g''' or '''--generate''' argument is only for running pacman-mirrors with all defaults. If you are using other arguments eg.'''-b unstable''' the ''generate'' argument is not needed.
''dbus'' (system message bus) and ''cronie'' (for cron) are some common services that can be enabled.
=== Additional packages ===


=== Country ===
==== Display Manager ====
Instead of pacman-mirrors probing all mirrors in all countries it is possible to supply a list of countries from which to use the mirrors.


$ sudo pacman-mirrors --country Germany,France,Austria
To boot to a graphical display manager, the '''displaymanager-openrc''' package can be installed.


If a supplied country does not offer a mirrorserver the app quits with an error explaining why.
After installing it, the ''/etc/conf.d/xdm'' file needs to be edited to specify the display manager.
<pre>
$ sudo pacman-mirrors --country Antarctica
.: Info Downloading mirrors from repo.manjaro.org
.: Warning Option '-c/--country' : unknown country: 'Antarctica'
.: Info Available countries are:
Australia, Austria, Belarus, Belgium, Brasil, Bulgaria, Canada,
Chile, China, Colombia, Costa_Rica, Czech, Denmark, Ecuador,
France, Germany, Greece, Hungary, Indonesia, Ireland, Italy,
Japan, Netherlands, Philippines, Poland, Portugal, Romania, Russia,
Singapore, South_Africa, Sweden, Spain, Taiwan, Turkey,
United_Kingdom, United_States, Vietnam
</pre>


Another option for the mirrors closest to your location is '''--geoip'''
For example, to use '''lightdm''', change the line:
<pre>$ sudo pacman-mirrors --geoip --quiet
:: Querying servers, this may take some time
=> Testing mirrors in France
:: Writing mirror list
:: Mirrorlist generated and saved to: /etc/pacman.d/mirrorlist
</pre>


=== Branch ===
DISPLAYMANAGER="xdm"
Situations could exist, in which you want a not yet released to stable software, which contains a desired improvement or bugfix. For such situations it is possible to make a temporary switch to ''testing'' or ''unstable'' branch
to
DISPLAYMANAGER="lightdm"


$ sudo pacman-mirrors --branch testing
Finally the '''xdm''' service can be added to default runlevel:


Syncronize your pacman database with the new mirror/branch combination and install whatever software needed from that branch.
sudo rc-update add xdm default


$ sudo pacman -Syy some-software-package-you-need
'''Note:'''


After installation switch back
''lightdm'' and a ''lightdm-greeter'' (like ''lightdm-gtk-greeter'') should be installed to use lightdm as display manager. A guide is available on the [https://forum.manjaro.org/index.php?topic=21386.0 forums].


$ sudo pacman-mirrors --branch stable
An alternative to ''lightdm'' is [https://wiki.archlinux.org/index.php/LXDM LXDM]. However the version in the repository 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.


Syncronize
For more information about consolekit, have a look at the [[Openrc#Consolekit | Consolekit]] section.


$ sudo pacman -Syy
==== Audio (ALSA) ====


In such a situation, where you have pulled software from another branch, you must be prepared for messages from pacman or pamac about newer packages on the system. These messages can safely be ignored and they dissappear when the installed package(s) reaches stable branch
The '''alsa-utils-openrc''' package can be installed. After installing it, run:


===Your personal mirrorlist===
sudo rc-update add alsasound default
If you, for various reasons, have a preference for specific mirrors, it is possible to create a personal mirrorlist. This is done by supplying ''interactive'' argument.


$ sudo pacman-mirrors --interactive
to automatically start ''alsa'' at boot.


Pacman-mirrors will process the available mirrors and present you with a list in which you will select your desired mirrors. The resulting list will be saved to the system and used each time you run pacman-mirrors.
==== Network Manager ====


When you want to reset the list to default run
By default ''dhcpcd'' is enabled via [https://github.com/gentoo/netifrc netifrc]. However if one uses Wifi to connect to the internet, or need a graphical network applet, then '''networkmanager-openrc''' can be installed.


$ sudo pacman-mirrors --country all
''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.


===Fasttrack===
Other alternatives like ''wicd-openrc'' and ''connman-openrc'' are also available.
The following arguments '''-c -i -m --geoip''' will not work in conjunction with '''-f'''.


The smaller number of mirrors you choose for your mirrorlist, the possibility of getting a not so responsive mirror increases, since only the first '''n''' in the list are tested, not all of them. A reasonable number would be between 5 and 10.
==== Consolekit ====


==FAQ==
The '''consolekit-openrc''' package can be installed. Consolekit supports multi-user setups, mounting of partitions by unauthorized users, etc. See the [https://wiki.gentoo.org/wiki/ConsoleKit Gentoo-Wiki] for more details.


===fasttrack===
Consolekit also allows a normal (non-root) user to shutdown or restart the system if the desktop environment supports it.
So, ''pacman-mirrors -f 2'' takes the same time to create /etc/pacman.d/mirrorlist as ''pacman-mirrors -f 20''?


'''No'''. ''pacman-mirrors -f 2'' will approx. be '''10x''' faster than ''pacman-mirrors -f 20'' since only 2 mirrors are probed versus 20 mirrors.
See the [[Openrc#Using_Consolekit | Using Consolekit]] section on how to install it and for more info.


So, ''pacman-mirrors -f [n]'' always ranks '''ALL''' mirrors by response time (the same as ''-g'' does) and additionally takes up-to-date mirrors and writes only '''n''' mirrors to the mirrorlist?
==== openrc-desktop ====


'''No'''. ''pacman-mirrors -f [n]'' ranks on a sorted list with known up-to-date mirrors. Thus it is only the first '''n''' mirrors from this list which are actually probed. If you have a list of 30 mirrors which are up-to-date and use ''-f 5'' only the ''top 5 mirrors'' are probed and then sorted after response time.
The ''openrc-desktop'' package group can be used to install most of the above desktop related packages in one go. For example:


===pacman-mirrors.conf===
$ sudo pacman -S openrc-desktop
'''My branch changes itself'''
:: 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]


When pacman-mirrors is updated it is by convention that pacman replaces your pacman-mirrors.conf. Check if you have some of these files:
==== Others ====


* /etc/pacman-mirrors.conf.pacsave
===== ACPI =====
* /etc/pacman-mirrors.conf.pacnew
* /etc/pacman-mirrors.conf.<date>.backup


You must manually merge changes/additions into your pacman-mirrors.conf.
For handling acpi events, '''acpid-openrc''' can be installed and enabled (see [https://wiki.archlinux.org/index.php/Acpid this] for more details on acpid).


==TL:DR==
===== Logging =====


====Default mirrorlist====
For logging, a logger can be chosen from ''metalog-openrc'', ''syslog-ng-openrc'', and ''rsyslog-openrc'', by installing the package and enabling its respective service.
sudo pacman-mirrors -g
====List available countries====
sudo pacman-mirrors -l
====Mirrors for your country====
sudo pacman-mirrors --geoip
====Mirrors for preferred countries====
sudo pacman-mirrors -c Germany,France,Austria
====Up-to-date mirrors on all branches====
sudo pacman-mirrors -f 5
====Temporarily switch to unstable branch====
sudo pacman-mirrors -b unstable
sudo pacman -Syy
====Switch back to stable branch====
sudo pacman-mirrors -b stable
sudo pacman -Syy
====Having fun handpicking mirrors and protocols====
sudo pacman-mirrors -i --default
====v4.1-dev Permanently switch branch====
sudo pacman-mirrors -a --set-branch -b unstable
====v4.1-dev What branch am I on====
sudo pacman-mirrors -a --get-branch
====v4.1-dev Use specific protocols====
sudo pacman-mirrors -a --protocols https http
====v4.1-dev Use all protocols====
sudo pacman-mirrors -a --protocols all


==Forum posts==
===== Suspend/Hibernate =====
[https://forum.manjaro.org/search?q=pacman-mirrors%20order%3Alatest Pacman-mirrors in the forum]
 
To suspend and hibernate via the command line, '''pm-utils''' can be installed. You may also need the '''upower-pm-utils''' package if suspend and hibernate does not work. See the [[Using_OpenRC,_an_alternative_to_systemd#Troubleshooting | troubleshooting]] section for some issues that one could face.
 
=== Note ===
 
If using [[plymouth]] before, then {{ic|/etc/mkinitcpio.conf}} would need to be edited to remove the '''plymouth''' hook, as plymouth does not work correctly with OpenRC. The hooks line should look like:
 
HOOKS="base udev autodetect modconf block resume filesystems keyboard keymap fsck"
 
After that would need to regenerate the initrd as:
 
sudo mkinitcpio -p linux<version>
 
For example,
 
sudo mkinitcpio -p linux314
 
== Configuration ==
 
=== Adding or Removing services ===
 
Services can be added to startup with:
 
sudo rc-update add <service> <runlevel>
 
For example,
 
sudo rc-update add sshd default
 
runlevel can be skipped if adding services to the current runlevel, ie:
 
sudo rc-update add sshd
 
A service can be removed from startup with:
 
sudo rc-update del <service> <runlevel>
 
=== 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
 
=== Some common services ===
 
To enable printing support, the '''cups-openrc''' package can be installed. For example,
 
$ sudo pacman -S cups-openrc
resolving dependencies...
looking for inter-conflicts...
Packages (1): cups-openrc-20141014-1
Total Installed Size:  0.01 MiB
Net Upgrade Size:      0.00 MiB
:: Proceed with installation? [Y/n]
 
The service for it is ''cupsd''.
 
$ sudo rc-service cupsd start
* Starting cupsd ...                                                                                                      [ ok ]
 
For ssh, the '''openssh-openrc''' package can be installed.
 
The service for it is named ''sshd''.
 
{{Tip | All services present can be listed with the '''{{ic|rc-service --list}}''' command.}}
 
== Using Consolekit (deprecated) ==
 
{{Warning | Consolekit has been depricated in Manjaro in favour of [https://forum.manjaro.org/t/switch-from-consolekit-to-elogind/19412 elogind]}}
 
 
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 polkit-consolekit cgmanager-openrc
 
The output looks like the following:
 
$ sudo pacman -S consolekit-openrc polkit-consolekit cgmanager-openrc
resolving dependencies...
looking for inter-conflicts...
:: polkit-consolekit and polkit are in conflict. Remove polkit? [y/N] y
Packages (9): cgmanager-0.37-2  consolekit-1.0.0-3  libnih-1.0.3-2  openrc-core-0.17-2  polkit-0.112-2 [removal]  cgmanager-openrc-20150911-1
              consolekit-openrc-20150911-1  polkit-consolekit-0.113-1
Total Download Size:    0.92 MiB
Total Installed Size:  4.44 MiB
Net Upgrade Size:      2.84 MiB
:: Proceed with installation? [Y/n]
 
After installing it can be enabled with {{ic|'''sudo rc-update add consolekit'''}} and would be activated after a reboot.
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 any output, then maybe a ck-session is not being started by your display manager.
 
To start a ck-session and X session from the command line following syntax could be used:
 
ck-launch-session <session-name>
 
For example,
 
ck-launch-session startxfce4
 
=== Some gotcha's ===
 
Display managers that are known to work with consolekit are '''lightdm''', '''lxdm''' (via [https://aur.archlinux.org/packages/lxdm-consolekit/ lxdm-consolekit]), '''kdm''' (via [https://aur.archlinux.org/packages/kdebase-workspace-consolekit/ kdebase-workspace-consolekit]), and '''mdm''' (via [https://aur.archlinux.org/packages/mdm-nosystemd/ mdm-nosystemd]). 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.
 
If you use Openbox or another Window Manager along with [https://wiki.archlinux.org/index.php/Oblogout oblogout], then [https://aur.archlinux.org/packages/oblogout-consolekit/ oblogout-consolekit] from the AUR can be used for having a graphical logout interface.
 
== Replacing systemd with eudev ==
 
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 some incompatibilities with existing software.
 
The steps to install eudev are as follows:
 
sudo pacman -S eudev eudev-systemdcompat
 
The output looks like the following:
 
$ sudo pacman -S eudev eudev-systemdcompat
resolving dependencies...
looking for conflicting packages...
:: eudev and libsystemd are in conflict (libgudev-1.0.so). Remove libsystemd? [y/N] y
:: eudev-systemdcompat and systemd are in conflict. Remove systemd? [y/N] y
warning: dependency cycle detected:
warning: eudev-systemdcompat will be installed before its eudev dependency
Packages (4) libsystemd-219-6 [removal]  systemd-219-6 [removal]  eudev-3.0-1  eudev-systemdcompat-219-2
Total Download Size:    0.95 MiB
Total Installed Size:    7.09 MiB
Net Upgrade Size:      -18.78 MiB
:: Proceed with installation? [Y/n]
 
After the above steps systemd would be uninstalled and replaced by eudev and its counterparts.
 
=== Note ===
 
''eudev-systemdcompat'' has been superseded by ''eudev-systemd'' and ''libeudev-systemd'' [https://forum.manjaro.org/t/update-troubles/9046 (link)].
 
== Troubleshooting ==
 
=== Boot logs ===
 
The boot logs for OpenRC are stored in ''/var/log/rc.log''
 
=== Get warning at shutdown ===
 
If at shutdown there is a message like:
 
WARNING: /usr/lib/rc/cache is not writable!
 
Then this directory can be created as:
 
sudo mkdir /usr/lib/rc/cache
 
=== Error about /etc/sysctl.conf not found ===
 
It can be created with:
 
sudo touch /etc/sysctl.conf
 
=== Enable Swap (for GPT partitions) ===
 
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
 
=== Using tmpfs ===
 
systemd used to set a ''tmpfs'' by default; to set it manually via ''/etc/fstab'', the following lines can be added:
 
tmpfs /tmp tmpfs  nodev,nosuid          0  0
 
See the [https://wiki.archlinux.org/index.php/Fstab#tmpfs Arch Wiki] for more details.
 
=== Module auto-loading ===
 
For OpenRC, the '''modules to be loaded at boot''' are specified in ''/etc/conf.d/modules'' rather than being present as individual files in ''/etc/modules-load.d''
 
The required modules can be manually moved over.
An example ''/etc/conf.d/modules'' file looks like the following:
 
# You should consult your kernel documentation and configuration
# for a list of modules and their options.
modules="vboxdrv"
 
=== Setting hostname ===
 
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''
 
=== Setting keymap ===
 
The keymap for the console can be set via editing {{ic|/etc/conf.d/keymaps}}.
 
For X11 (graphical part of the system), it can be set via {{ic|/etc/X11/xorg.conf.d/20-keyboard.conf}}
 
For more information have a look at the [http://wiki.gentoo.org/index.php?title=Keyboard_layout_switching Gentoo wiki] (with the difference that in Arch/Manjaro the keymaps are stored in ''/usr/share/kbd/keymaps'' [https://wiki.archlinux.org/index.php/Keymap]).
 
=== Setting Hardware clock ===
 
Can be done by editing {{ic|/etc/conf.d/hwclock}}
 
=== Shutting down / rebooting ===
 
To shutdown the system, the {{ic|'''poweroff'''}} command can be used.
 
Similarly to reboot, the {{ic|'''reboot'''}} command can be used.
 
=== X does not start from a virtual terminal ===
 
With Xorg-1.16, Arch Linux decided to make X rootless using systemd-logind [https://www.archlinux.org/news/xorg-server-116-is-now-available/].
This means that using {{ic|startx}} from a virtual terminal will possibly not work for users of OpenRC init system.
 
The workaround is to create a file {{ic|/etc/X11/Xwrapper.config}} with the contents:
 
# Xorg.wrap configuation file
needs_root_rights = yes
 
Reference: [https://bbs.archlinux.org/viewtopic.php?pid=1441150#p1441150 Arch forum]
 
=== Input devices not working ===
 
With ''eudev-3.0'', a new '''input''' group was introduced; you could try adding your user to it.
 
sudo gpasswd -a <user> input
 
Reference: https://github.com/gentoo/eudev/issues/107
 
=== MySQL service not working ===
 
Have a look here: https://forum.manjaro.org/t/mariadb-daemon-dont-start-in-openrc/20356
 
=== Pulseaudio does not start / work ===
 
See: https://forum.manjaro.org/t/pulseaudio-and-openrc/5881/1
 
=== Ctrl + Alt + Backspace causes problems with some display managers ===
 
Have a look here: https://forum.manjaro.org/t/ctrl-alt-backspace-doesnt-log-out-zaps-xorg-openrc
 
=== Httpd (Apache) service status says crashed ===
 
If the {{ic|httpd}} process is running but {{ic|rc-status}} shows the service as crashed, try editing ''/etc/init.d/httpd'' and remove the {{ic|start-stop-daemon}} call when starting the service:
 
  # sed 's|start-stop-daemon --start -- ${APACHE2} ${APACHE2_OPTS} -k start|${APACHE2} ${APACHE2_OPTS} -k start|' -i /etc/init.d/httpd
 
Forum link: https://forum.manjaro.org/t/solved-apache-service-httpd-status-status-crashed/19878
 
=== Unable to build ISO using manjaro-tools on OpenRC ===
 
See https://forum.manjaro.org/t/manjaro-tools-14-on-testing-openrc/17156
 
== Further Reading ==
 
[https://wiki.archlinux.org/index.php/Openrc The Arch Wiki]
 
[http://blog.notfoss.com/posts/openrc-on-arch-linux/ OpenRC on Arch Linux]
 
[https://wiki.manjaro.org/index.php?title=Autostart_X_at_Login_-_OpenRC_%26_SystemD Autostart X at Login - OpenRC]
 
[http://systemd-free.org/ systemd-free.org]
 
[https://wiki.gentoo.org/wiki/Handbook:X86/Working/Initscripts Initscripts]
 
[https://wiki.gentoo.org/wiki//etc/local.d /etc/local.d]
 
== Support ==
 
Following is a link where you can post any related feedback: [https://forum.manjaro.org/c/technical-issues-and-assistance/openrc]
 
 
[[Category:Contents Page]]

Revision as of 17:31, 20 May 2017

OpenRC is a dependency based init system maintained by the Gentoo developers, that works with the system provided init program, normally sysvinit. It is not a replacement for sysvinit.

It is an alternative to systemd for users that like more control over their system, and do not want all the features that systemd provides and automatically activates.

Installation

OpenRC is available from the the Manjaro repositories. It can be installed as:

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]

After installing the openrc-base package group, 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 openrc-base, one may get messages like:

run 'rc-update add dbus default'
run 'rc-update add cronie default'

Running these command(s) adds the service(s) to the specified runlevels. For example on running:

sudo rc-update add dbus default

The dbus service would be added to the default runelevel and would automatically be started at boot.

dbus (system message bus) and cronie (for cron) are some common services that can be enabled.

Additional packages

Display Manager

To boot to a graphical display manager, the displaymanager-openrc package can be installed.

After installing it, the /etc/conf.d/xdm file needs to be edited to specify the display manager.

For example, to use lightdm, change the line:

DISPLAYMANAGER="xdm"

to

DISPLAYMANAGER="lightdm"

Finally the xdm service can be added to default runlevel:

sudo rc-update add xdm default

Note:

lightdm and a lightdm-greeter (like lightdm-gtk-greeter) should be installed to use lightdm as display manager. A guide is available on the forums.

An alternative to lightdm is LXDM. However the version in the repository does not automatically start a ck-session on login; alternative lxdm-consolekit from the AUR can be used.

For more information about consolekit, have a look at the Consolekit section.

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 netifrc. However if one uses Wifi to connect to the internet, or need a graphical network applet, then networkmanager-openrc can be installed.

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.

Other alternatives like wicd-openrc and connman-openrc are also available.

Consolekit

The consolekit-openrc package can be installed. Consolekit supports multi-user setups, mounting of partitions by unauthorized users, etc. See the Gentoo-Wiki for more details.

Consolekit also allows a normal (non-root) user to shutdown or restart the system if the desktop environment supports it.

See the Using Consolekit section on how to install it and for more info.

openrc-desktop

The openrc-desktop package group 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

ACPI

For handling acpi events, acpid-openrc can be installed and enabled (see this for more details on acpid).

Logging

For logging, a logger can be chosen from metalog-openrc, syslog-ng-openrc, and rsyslog-openrc, by installing the package and enabling its respective service.

Suspend/Hibernate

To suspend and hibernate via the command line, pm-utils can be installed. You may also need the upower-pm-utils package if suspend and hibernate does not work. See the troubleshooting section for some issues that one could face.

Note

If using plymouth before, then /etc/mkinitcpio.conf would need to be edited to remove the plymouth hook, as plymouth does not work correctly with OpenRC. The hooks line should look like:

HOOKS="base udev autodetect modconf block resume filesystems keyboard keymap fsck"

After that would need to regenerate the initrd as:

sudo mkinitcpio -p linux<version>

For example,

sudo mkinitcpio -p linux314

Configuration

Adding or Removing services

Services can be added to startup with:

sudo rc-update add <service> <runlevel>

For example,

sudo rc-update add sshd default

runlevel can be skipped if adding services to the current runlevel, ie:

sudo rc-update add sshd

A service can be removed from startup with:

sudo rc-update del <service> <runlevel>

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

Some common services

To enable printing support, the cups-openrc package can be installed. For example,

$ sudo pacman -S cups-openrc
resolving dependencies...
looking for inter-conflicts...

Packages (1): cups-openrc-20141014-1

Total Installed Size:   0.01 MiB
Net Upgrade Size:       0.00 MiB

:: Proceed with installation? [Y/n] 

The service for it is cupsd.

$ sudo rc-service cupsd start
* Starting cupsd ...                                                                                                       [ ok ]

For ssh, the openssh-openrc package can be installed.

The service for it is named sshd.



Tip
All services present can be listed with the rc-service --list command.

Using Consolekit (deprecated)

Warning
Consolekit has been depricated in Manjaro in favour of elogind


Additionally, if not already done, 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 polkit-consolekit cgmanager-openrc

The output looks like the following:

$ sudo pacman -S consolekit-openrc polkit-consolekit cgmanager-openrc
resolving dependencies...
looking for inter-conflicts...
:: polkit-consolekit and polkit are in conflict. Remove polkit? [y/N] y

Packages (9): cgmanager-0.37-2  consolekit-1.0.0-3  libnih-1.0.3-2  openrc-core-0.17-2  polkit-0.112-2 [removal]  cgmanager-openrc-20150911-1
              consolekit-openrc-20150911-1  polkit-consolekit-0.113-1

Total Download Size:    0.92 MiB
Total Installed Size:   4.44 MiB
Net Upgrade Size:       2.84 MiB

:: Proceed with installation? [Y/n] 

After installing it can be enabled with sudo rc-update add consolekit and would be activated after a reboot. 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 any output, then maybe a ck-session is not being started by your display manager.

To start a ck-session and X session from the command line following syntax could be used:

ck-launch-session <session-name>

For example,

ck-launch-session startxfce4

Some gotcha's

Display managers that are known to work with consolekit are lightdm, lxdm (via lxdm-consolekit), kdm (via kdebase-workspace-consolekit), and mdm (via mdm-nosystemd). Have a look at the Display Manager section for more info.

If you start a graphical session from the command line, this forum post may be of some help.

If you use Openbox or another Window Manager along with oblogout, then oblogout-consolekit from the AUR can be used for having a graphical logout interface.

Replacing systemd with eudev

With OpenRC being used as init system, the role of systemd is reduced to that of a udev provider, and for compatibility reasons.

eudev, developed by the Gentoo folks, can be used as replacement. Note that removing systemd could cause some incompatibilities with existing software.

The steps to install eudev are as follows:

sudo pacman -S eudev eudev-systemdcompat

The output looks like the following:

$ sudo pacman -S eudev eudev-systemdcompat
resolving dependencies...
looking for conflicting packages...
:: eudev and libsystemd are in conflict (libgudev-1.0.so). Remove libsystemd? [y/N] y
:: eudev-systemdcompat and systemd are in conflict. Remove systemd? [y/N] y
warning: dependency cycle detected:
warning: eudev-systemdcompat will be installed before its eudev dependency

Packages (4) libsystemd-219-6 [removal]  systemd-219-6 [removal]  eudev-3.0-1  eudev-systemdcompat-219-2

Total Download Size:     0.95 MiB
Total Installed Size:    7.09 MiB
Net Upgrade Size:      -18.78 MiB

:: Proceed with installation? [Y/n] 

After the above steps systemd would be uninstalled and replaced by eudev and its counterparts.

Note

eudev-systemdcompat has been superseded by eudev-systemd and libeudev-systemd (link).

Troubleshooting

Boot logs

The boot logs for OpenRC are stored in /var/log/rc.log

Get warning at shutdown

If at shutdown there is a message like:

WARNING: /usr/lib/rc/cache is not writable!

Then this directory can be created as:

sudo mkdir /usr/lib/rc/cache

Error about /etc/sysctl.conf not found

It can be created with:

sudo touch /etc/sysctl.conf

Enable Swap (for GPT partitions)

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

Using tmpfs

systemd used to set a tmpfs by default; to set it manually via /etc/fstab, the following lines can be added:

tmpfs		/tmp		tmpfs   nodev,nosuid          	0  	0

See the Arch Wiki for more details.

Module auto-loading

For OpenRC, the modules to be loaded at boot are specified in /etc/conf.d/modules rather than being present as individual files in /etc/modules-load.d

The required modules can be manually moved over. An example /etc/conf.d/modules file looks like the following:

# You should consult your kernel documentation and configuration
# for a list of modules and their options.

modules="vboxdrv"

Setting hostname

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

Setting keymap

The keymap for the console can be set via editing /etc/conf.d/keymaps.

For X11 (graphical part of the system), it can be set via /etc/X11/xorg.conf.d/20-keyboard.conf

For more information have a look at the Gentoo wiki (with the difference that in Arch/Manjaro the keymaps are stored in /usr/share/kbd/keymaps [1]).

Setting Hardware clock

Can be done by editing /etc/conf.d/hwclock

Shutting down / rebooting

To shutdown the system, the poweroff command can be used.

Similarly to reboot, the reboot command can be used.

X does not start from a virtual terminal

With Xorg-1.16, Arch Linux decided to make X rootless using systemd-logind [2]. This means that using startx from a virtual terminal will possibly not work for users of OpenRC init system.

The workaround is to create a file /etc/X11/Xwrapper.config with the contents:

# Xorg.wrap configuation file
needs_root_rights = yes

Reference: Arch forum

Input devices not working

With eudev-3.0, a new input group was introduced; you could try adding your user to it.

sudo gpasswd -a <user> input

Reference: https://github.com/gentoo/eudev/issues/107

MySQL service not working

Have a look here: https://forum.manjaro.org/t/mariadb-daemon-dont-start-in-openrc/20356

Pulseaudio does not start / work

See: https://forum.manjaro.org/t/pulseaudio-and-openrc/5881/1

Ctrl + Alt + Backspace causes problems with some display managers

Have a look here: https://forum.manjaro.org/t/ctrl-alt-backspace-doesnt-log-out-zaps-xorg-openrc

Httpd (Apache) service status says crashed

If the httpd process is running but rc-status shows the service as crashed, try editing /etc/init.d/httpd and remove the start-stop-daemon call when starting the service:

 # sed 's|start-stop-daemon --start -- ${APACHE2} ${APACHE2_OPTS} -k start|${APACHE2} ${APACHE2_OPTS} -k start|' -i /etc/init.d/httpd

Forum link: https://forum.manjaro.org/t/solved-apache-service-httpd-status-status-crashed/19878

Unable to build ISO using manjaro-tools on OpenRC

See https://forum.manjaro.org/t/manjaro-tools-14-on-testing-openrc/17156

Further Reading

The Arch Wiki

OpenRC on Arch Linux

Autostart X at Login - OpenRC

systemd-free.org

Initscripts

/etc/local.d

Support

Following is a link where you can post any related feedback: [3]

Cookies help us deliver our services. By using our services, you agree to our use of cookies.