GNOME/GNOME without systemd/Gentoo

From Gentoo Wiki
Jump to:navigation Jump to:search
Stock Gentoo GNOME v3.30.2 in Overview Mode on OpenRC

The fully-featured GNOME desktop environment is directly supported in Gentoo for both systemd and OpenRC, as of gnome-base/gnome-3.30 [1].

This article briefly covers a native OpenRC install; for an alternative (OpenRC-based) approach, please see Dantrell's overlays.

Prerequisites

It is assumed that:

  • following completion of the normal "Installing Gentoo" process from the official Handbook, a stock amd64, ~ppc, ~ppc64 or x86 Gentoo system is running, with working internet access etc.
  • at least one 'regular' (non-root) user has already been set up;
  • the kernel and /etc/portage/make.conf file has been prepared for X-server installation (VIDEO_CARDS and INPUT_DEVICES variables set), as described here. While the X-server itself does not have to actually be installed prior to emerging GNOME, this is recommended (since X-related problems are some of the most commonly encountered);
    Note
    A minimal setup for test purposes, which should run on most systems, can be created by building the kernel using genkernel all, and setting VIDEO_CARDS="vesa fbdev" and INPUT_DEVICES="libinput" in /etc/portage/make.conf; for full functionality and higher screen resolution, specify the correct video driver and kernel options, per the guide just cited.
    NB, the vesa driver will not work if running as a guest in VirtualBox with EFI emulation turned on; in this case, instead use the x11-drivers/xf86-video-virtualbox driver, as selected by VIDEO_CARDS="virtualbox" in /etc/portage/make.conf.
  • a UTF-8 locale has been selected (as described here).

Installation

Keywording

At the time of writing (May 2019), official support for GNOME on OpenRC has been stabilized for amd64 and x86 users. Other supported architectures (~ppc and ~ppc64) still require use of the testing branch.

Setting global USE flags

If the bindist USE flag is set in /etc/portage/make.conf, it is recommended to unset it now, to avoid issues with dev-libs/openssl, net-misc/openssh and dependencies later.

If it is desired to install GNOME on Wayland (rather than the default X11), then add wayland egl to the global USE flags, in /etc/portage/make.conf (note that it will still be possible to log in to an old-school GNOME-on-X11 session when needed, even when Wayland is used).

If it is desired to run Xorg without root/suid (which is far more secure) then add elogind to the global USE flags.

Note
Performance notwithstanding, probably the strongest end-user reason to transition to a Wayland-based desktop is security: unlike X11, by default Wayland enforces application isolation at the GUI level. More detail about about X11's vulnerability in this regard (and how to mitigate it, for legacy apps), may be found in the additional mini-guide, here.

To disable GNOME's tracker software (this is optional), add -tracker to the global USE flags in /etc/portage/make.conf.

Then, ensure everything is up-to-date, before proceeding further:

root #emerge --sync
root #emerge --deep --with-bdeps=y --changed-use --update --ask --verbose @world

Setting the GNOME profile, and updating

Important
The version number in the profile should match the current one listed in eselect profile show. Do not blindly set it to another without reading any news for migrations.

To ease installation under OpenRC, select the appropriate profile now (this will ensure appropriate package-specific USE flags, masks etc are set to ensure a painless GNOME emerge):

root #eselect profile set "default/linux/amd64/23.0/desktop/gnome"
root #eselect profile show
Current /etc/portage/make.profile symlink:
  default/linux/amd64/23.0/desktop/gnome
Important
Do not set the .../gnome/systemd profile here: it will not work correctly with OpenRC.

With the desired profile set, re-emerge @world, to pick up the new USE flags, default packages etc.

root #emerge --ask --deep --changed-use --update --verbose @world
Important
Please do not skip this step - the subsequent GNOME emerge will probably fail otherwise.

Emerging GNOME

GNOME itself may now be emerged! Issue:

root #emerge --ask --verbose --keep-going gnome-base/gnome
Note
If desired, it is possible to emerge gnome-base/gnome-light instead, and then add applications later.

Assuming that completes successfully, it is still important to check that the necessary X11 drivers have been properly emerged: often, they will not have been, particularly if it proved necessary to run the emerge step more than once (due to build parallelism errors). To make sure, issue:

root #emerge --ask --verbose --oneshot x11-base/xorg-drivers

Configuration

Once GNOME is emerged, change the DISPLAYMANAGER value in the display-manager configuration file (/etc/conf.d/display-manager), so that the gdm display manager is used:

FILE /etc/conf.d/display-managerSpecify the GNOME display manager, as follows
CHECKVT=7
DISPLAYMANAGER="gdm"

Leave the rest of the file as-is.

Then, set dbus, display-manager, and openrc-settingsd to come up in the default runlevel:

root #rc-update add dbus default
root #rc-update add display-manager default
root #rc-update add openrc-settingsd default

Also, ensure that the sys-auth/elogind service starts up at boot:

root #rc-update add elogind boot

Next, check if the machine has a plugdev group, and, if it does, add any regular users to it:

root #getent group plugdev && gpasswd -a <regular_username> plugdev

To allow the use of direct rendering, issue:

root #getent group video && gpasswd -a <regular_username> video

Finally, start up GNOME!

root #openrc

A GNOME login screen should now be visible (and this will also come up automatically on boot). On some machines, it may be necessary to move the mouse or press a key, for the login screen to appear.

Tip
Even when using a Wayland-based system, it is still possible to use GNOME over X11 for a given session (this may be useful to run applications that do not yet work correctly under Wayland). To do so, simply click on the "cogwheel" icon when logging in, and select GNOME on Xorg from the drop-down menu. To log into a Wayland session instead, use the GNOME "cogwheel" menu item — the setting is persistent between logins. Incidentally, to double-check which graphical platform (X11 or Wayland) is in use when logged in, simply issue (in a graphical terminal):
user $echo "${XDG_SESSION_TYPE}"

Troubleshooting:

  • rebooting the system may be required before elogind works properly, though rc-service display-manager start may suffice
  • check the docs on how to set up Non root Xorg instead of using suid for a more secure system (also has helpful troubleshooting suggestions)


Note
When using a Wayland GNOME session, unported applications (such as www-client/firefox, at the time of writing) will be hosted in a shared, rootless X11 server (the so-called "XWayland" approach). This generally works well, but may not be sufficient for all legacy apps (such as some games and virtualization environments). For such cases, remember that it is always possible to login to a 'old-school' GNOME-on-X11 session, should workflow dictate.

Usage

For more information about the GNOME interface (which is generally self-explanatory), see https://gnome.org. Some additional useful setup tips about GNOME may also be found here.

Removal

To remove GNOME, begin by unmerging it:

root #emerge --deselect gnome-base/gnome

Switch profile; for example:

root #eselect profile set "default/linux/amd64/23.0"
Note
You may require a split-usr profile so check this before blindly following.

Update @world:

root #emerge --ask --update --deep --changed-use @world

Clean dependencies:

root #emerge --ask --depclean

Prevent unnecessary services starting up automatically; e.g.:

root #rc-update del elogind boot
root #rc-update del dbus default
root #rc-update del display-manager default
root #rc-update del openrc-settingsd default

Finally, reboot the system to complete the uninstall (to a textual login, in this case).

See also

External resources

References

  1. Raudsepp, Mart. Gentoo Blogs: "Gentoo GNOME 3.30 for all init systems", March 26th, 2019. Retrieved April 26th 2019.