Baselayout provides a basic set of files that are necessary for all systems to
function properly, such as
OpenRC is a dependency-based rc system that works with whatever init is provided
by the system, normally
Originally Gentoo's rc system was built into baselayout 1 and written entirely in bash. This led to several limitations. For example, certain system calls need to be accessed during boot and this required C-based callouts to be added. These callouts were each statically linked, causing the rc system to bloat over time.
Additionally, as Gentoo expanded to other platforms like Gentoo/FreeBSD and Gentoo Embedded, it became impossible to require a bash-based rc system. This led to a development of baselayout 2, which is written in C and only requires a POSIX-compliant shell. During the development of baselayout 2, it was determined that it was a better fit if baselayout merely provided the base files and filesystem layout for Gentoo and the rc system was broken off into its own package. Thus we have OpenRC.
OpenRC is primarily developed by
Migration to OpenRC is fairly straightforward; it will be pulled in as part
of your regular upgrade process by your package manager. The most important
step actually comes after you install the new
Once you've finished updating your config files, there are a few things to verify prior to rebooting.
Normally, when you want certain kernel modules automatically loaded at boot, you
place them into
An example old style configuration would be:
ivtv cx88_dvb video_br=2
Converting the above example would result in the following:
# Modules autoloaded at boot modules_2_6="ivtv cx88_dvb"# Module parameters module_cx88_dvb_args_2_6="video_br=2"
In the above examples, the modules and their parameters would only be passed to 2.6.x series kernels. The new configuration allows for fine grained control over the modules and parameters based on kernel version.
An in-depth example would be:
# Always load ochi1394 and ieee1394, no matter the kernel version modules="ohci1394 ieee1394"# Only load tun and usbserial for 2.6.x series kernels modules_2_6="tun usbserial"# Only load cx88_dvb for 2.6.23 kernels modules_2_6_23="cx88_dvb"# Only load ivtv for 2.6.23-gentoo-r5 modules_2_6_23_gentoo_r5="ivtv"# For 2.6.23-gentoo-r5, pass video_br=2 to cx88_dvb module_cx88_dvb_args_2_6_23_gentoo_r5="video_br=2"# For 2.6.x series kernels, always pass vendor and product module_usbserial_args_2_6="vendor=0x1410 product=0x2110"# Always pass debug to ieee1394 module_ieee1394_args="debug"
Volume management services for your block storage devices should be automatically migrated for you when you switch to OpenRC and baselayout-2. However, in case they aren't, you'll need to follow the instructions below.
Volume management services for your block storage devices are no longer run by
default. This means that lvm, raid, swap, device-mapper (dm), dm-crypt, evms, and the
like will not be run automatically. If you use these addons, you will have to
add the proper initscript to the
While the OpenRC ebuild will attempt to do this migration for you, you should verify that it migrated all the volume management services properly.
# ls -l /etc/runlevels/boot/
If you know you use mdraid, lvm, and swap but do not see them above, you would run
the following to add initscripts to the
# rc-update add raid boot # rc-update add lvm boot # rc-update add swap boot
Also, make sure your root filesystem is mounted read/write, that your
filesystems are checked for errors, that your mountpoints are available, and
that the
# for x in root fsck mtab procfs ; do rc-update add $x boot ; done
Clock settings have been renamed from
Additionally, the
The XSESSION variable is no longer found in
This variable will NOT be migrated for you by default, so you will need
to edit
The EDITOR variable is no longer found in
Once you've finished updating your config files and initscripts, the last thing to do is reboot. This is necessary because system state information is not preserved during the upgrade, so you'll need to provide it with a fresh boot.