Difference between pages "Desktop Environments and Window Managers" and "OpenRC, an alternative to systemd"
(Difference between pages)
→Using Consolekit: add deprecation warning
imported>Verityproductions |
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. | |||
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. | |||
: | |||
== 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 [https://forum.manjaro.org/index.php?topic=21386.0 forums]. | ||
</ | |||
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. | |||
For more information about consolekit, have a look at the [[Openrc#Consolekit | 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 [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. | |||
''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 [https://wiki.gentoo.org/wiki/ConsoleKit 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 [[Openrc#Using_Consolekit | 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 [https://wiki.archlinux.org/index.php/Acpid 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 [[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]] |