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"
The
With OpenRC, volume management services for your block storage devices are no
longer run automatically at boot. This includes lvm, raid, swap, device-mapper
(dm), dm-crypt, evms, and the like. You must ensure the appropriate initscript
for these services is in 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 don't see root, procfs, mtab, swap, and fsck in the above listing,
perform the following to add them to the
# rc-update add root boot # rc-update add procfs boot # rc-update add mtab boot # rc-update add fsck boot # rc-update add swap boot
If you know you use mdraid and lvm but do not see them above, you would run
the following to add initscripts to the
# rc-update add mdraid boot # rc-update add lvm boot
OpenRC no longer starts
# ls -l /etc/runlevels/sysinit lrwxrwxrwx 1 root root 14 2009-01-29 08:00 /etc/runlevels/sysinit/udev -> \ /etc/init.d/udev
If
# rc-update add udev sysinit
Due to baselayout and OpenRC being broken into two different packages, your net.eth0 initscript may disappear during the upgrade process. To replace this initscript please perform the following:
# cd /etc/init.d # ln -s net.lo net.eth0
If you are missing any other network initscripts, follow the instructions above
to re-add them. Simply replace
Also,
config_eth0=( "192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255" ) routes_eth0=( "default via 192.168.1.100" )
config_eth0="192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255" routes_eth0="default via 192.168.1.100"
Clock settings have been renamed from
Additionally, the
The proper value for this file is the path relative to your timezone from
America/New_York
The XSESSION variable is no longer found in
Here's an example of setting XSESSION for the whole system:
# echo 'XSESSION="Xfce4"' > /etc/env.d/90xsession
The EDITOR variable is no longer found in
Previously, you could log the boot process by using
rc_logger="YES"
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.