HowTo:PostInstall:Baselayout2

De Luispa

Introducción

Tal como se describe en la guía de migración, Baselayout proporciona un conjunto básico de archivos que necesita cualquier sistema para funcionar correctamente, tal como /etc/hosts. También proporciona la disposición básica del sistema de archivos usado por Gentoo (por ejemplo, los directorios /etc, /var, /usr, /home).

Por otro lado, OpenRC es un sistema de arranque (rc system) gestionado por dependencias que trabaja con cualquier init proporcionado por el sistema, normalmente /sbin/init. Sin embargo, no es un reemplazo para /sbin/init. El init por defecto usado por Gentoo Linux es sys-apps/sysvinit, mientras que Gentoo/FreeBSD usa el init de FreeBSD provisto por sys-freebsd/freebsd-sbin.

La razón por la que voy a migrar a Baselayout 2 + OpenRC es por dos motivos, el primero es evitar las limitaciones de baselayout 1 que lo han hecho obsoleto y la versión 2 es la de futuro.

Instalación de paquetes

Tras leer la documentación de la guía de migración he observado que no falta la documentación paso a paso y además no está especificado qué hacer para un sistema de 64bits. En mi caso he tenido que realizar lo siguiente:


  • Preparo el fichero package.keywords.
# Ultimas versiones para Baselayout 2 + OpenRC
=sys-fs/cryptsetup-1.0.6-r2                            ~amd64
=sys-fs/udev-141                                       ~amd64
=sys-apps/sysvinit-2.86-r12                            ~amd64
=sys-apps/openrc-0.4.3-r3                              ~amd64
=sys-apps/baselayout-2.0.1                             ~amd64


  • Realizo la instalación de cryptsetup (no hago todo de golpe, voy uno a uno)
Código:
# emerge -v cryptsetup
# emerge -v cryptsetup

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] sys-fs/cryptsetup-1.0.6-r2 [1.0.5-r1] USE="nls -dynamic (-selinux)" 397 kB
:
  • Ejecuto etc-update

Nota: En mi caso no utilizo filesystems encriptados así que no se modifica o necesita hacer nada adicional

# etc-update
  • Una vez que termina, hacer la instalación de udev
Código:
# emerge -v udev
# emerge -v udev

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] sys-fs/cryptsetup-1.0.6-r2 [1.0.5-r1] USE="nls -dynamic (-selinux)" 397 kB
:
  • Ejecuto etc-update

Nota: En mi caso los cambios son triviales y los acepto

# etc-update


Nota: Es muy importante que recompiles HAL en este punto

  • Una vez que termina, recompilar hal
Código:
# emerge -v hal
bolica ~ # emerge -v hal



  • Una vez que termina, hacer la instalación de sysvinit
Código:
# emerge -v sysvinit
bolica ~ # emerge -v sysvinit

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] sys-apps/sysvinit-2.86-r12 [2.86-r10] USE="(-ibm) (-selinux) -static" 0 kB

Total: 1 package (1 upgrade), Size of downloads: 0 kB
  • Ejecuto etc-update

Nota: Acepto los cambios en el inittab, dado que no lo he modificado respecto al original

# etc-update
  • A continuación ejecuto la instalación de baselayout2 + openrc
Código:
# emerge -v openrc
bolica ~ # emerge -v openrc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] sys-apps/baselayout-2.0.1 [1.12.11.1] USE="-build (-bootstrap%) (-static%) (-unicode%*)" 23 kB
[ebuild  N    ] sys-apps/openrc-0.4.3-r3  USE="ncurses pam unicode -debug" 143 kB
 :
 :
 * /etc/conf.d/rc is no longer used for configuration.
 * Please migrate your settings to /etc/rc.conf as applicable
 * and delete /etc/conf.d/rc
 * Auto-adding 'termencoding' service to your boot runlevel
 * Auto-adding 'bootmisc' service to your boot runlevel
 * Auto-adding 'fsck' service to your boot runlevel
 * Auto-adding 'hostname' service to your boot runlevel
 * Auto-adding 'hwclock' service to your boot runlevel
 * Auto-adding 'localmount' service to your boot runlevel
 * Auto-adding 'mtab' service to your boot runlevel
 * Auto-adding 'net.lo' service to your boot runlevel
 * Auto-adding 'procfs' service to your boot runlevel
 * Auto-adding 'root' service to your boot runlevel
 * Auto-adding 'swap' service to your boot runlevel
 * Auto-adding 'sysctl' service to your boot runlevel
 * Auto-adding 'termencoding' service to your boot runlevel
 * Auto-adding 'urandom' service to your boot runlevel
 * Auto-adding 'device-mapper' service to your boot runlevel
 * Add on services (such as RAID/dmcrypt/LVM/etc...) are now stand alone
 * init.d scripts.  If you use such a thing, make sure you have the
 * required init.d scripts added to your boot runlevel.
 * Converting your /etc/modules.autoload.d/ files to /etc/conf.d/modules
 * Auto adding udev init script to the sysinit runlevel
 * You should now update all files in /etc, using etc-update
 * or equivalent before restarting any services or this host.
 * 
 * Please read the migration guide available at:
 * http://www.gentoo.org/doc/en/openrc-migration.xml
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

 * IMPORTANT: 15 config files in '/etc' need updating.
 * See the CONFIGURATION FILES section of the emerge
 * man page to learn how to update config files.


Aviso: NO HACER REBOOT

Terminar la migración

  • Ejecuto etc-update y detecta 15 ficheros a cambiar. Los examino despacio y los proceso los 15.
 /etc/conf.d/bootmisc               Acepto la nueva versión
 /etc/conf.d/consolefont            Lo adapto a mi configuración
 /etc/init.d/consolefont            Acepto la nueva versión
 /etc/conf.d/hostname               Lo adapto a mi configuración
 /etc/hosts                         Lo adapto a mi configuración
 /etc/conf.d/hwclock                Lo adapto a mi configuración
 /etc/conf.d/keymaps                Lo adapto a mi configuración
 /etc/init.d/keymaps                Acepto la nueva versión
 /etc/conf.d/modules                Acepto la nueva versión
 /etc/profile                       Lo adapto a mi configuración
 /etc/protocols                     Acepto la nueva versión
 /etc/rc.conf                       Acepto la nueva versión
 /etc/sysctl.conf                   Lo adapto a mi configuración
 /etc/conf.d/urandom                Acepto la nueva versión
       
  • Verifico el fichero timezone
Fichero: /etc/timezone
Europe/Madrid
  • Compruebo como me ha migrado desde /etc/modules.autoload.d/kernel-2.6 a /etc/conf.d/modules y añadido lo siguiente
Fichero: /etc/timezone
### START: Auto-converted from kernel-2.6

# /etc/modules.autoload.d/kernel-2.6:  kernel modules to load when system boots.
#
# Note that this file is for 2.6 kernels.
#
# Add the names of modules that you'd like to load when the system
# starts into this file, one per line.  Comments begin with # and
# are ignored.  Read man modules.autoload for additional details.

# For example:
# aic7xxx


# Driver tarjeta LAN Realtek 8111D
# r8168

# Para las pruebas de VMWare
modules_2_6="${modules_2_6} fuse"
module_fuse_args_2_6=""

modules_2_6="${modules_2_6} parport"
module_parport_args_2_6=""

modules_2_6="${modules_2_6} parport_pc"
module_parport_pc_args_2_6=""


# iptables: Filtrado por physdev
modules_2_6="${modules_2_6} xt_physdev"
module_xt_physdev_args_2_6=""


# Para VirtualBox
modules_2_6="${modules_2_6} vboxdrv"
module_vboxdrv_args_2_6=""

modules_2_6="${modules_2_6} vboxnetflt"
module_vboxnetflt_args_2_6=""



# Para poder montar imagenes ISO 
# Un ejemplo: mount -o loop -t iso9660 /data/virtualbox/systemrescuecd-x86-1.1.6.iso /mnt/cdrom
modules_2_6="${modules_2_6} loop"
module_loop_args_2_6=""


# Para poder trabajar con otros tipos de filesystems
modules_2_6="${modules_2_6} ntfs"
module_ntfs_args_2_6=""

# jfs
# xfs


# Para tunel GRE
modules_2_6="${modules_2_6} ip_gre"
module_ip_gre_args_2_6=""


# Para tunel IPSec OPENVPN
modules_2_6="${modules_2_6} tun"
module_tun_args_2_6=""


### END: Auto-converted from kernel-2.6


  • Verifico los servicios que arrancarán en fase boot. Los principales están presentes: root, procfs, mtab, swap y fsck
 #  ls -l /etc/runlevels/boot/
total 0
lrwxrwxrwx 1 root root 21 feb  8 18:43 alsasound -> /etc/init.d/alsasound
lrwxrwxrwx 1 root root 20 jun 10 19:46 bootmisc -> /etc/init.d/bootmisc
lrwxrwxrwx 1 root root 23 feb  7 01:09 consolefont -> /etc/init.d/consolefont
lrwxrwxrwx 1 root root 25 jun 10 19:46 device-mapper -> /etc/init.d/device-mapper
lrwxrwxrwx 1 root root 16 jun 10 19:46 fsck -> /etc/init.d/fsck
lrwxrwxrwx 1 root root 20 jun 10 19:46 hostname -> /etc/init.d/hostname
lrwxrwxrwx 1 root root 19 jun 10 19:46 hwclock -> /etc/init.d/hwclock
lrwxrwxrwx 1 root root 20 feb 28 17:11 iptables -> /etc/init.d/iptables
lrwxrwxrwx 1 root root 19 feb  7 01:09 keymaps -> /etc/init.d/keymaps
lrwxrwxrwx 1 root root 22 jun 10 19:46 localmount -> /etc/init.d/localmount
lrwxrwxrwx 1 root root 19 feb  7 01:09 modules -> /etc/init.d/modules
lrwxrwxrwx 1 root root 16 jun 10 19:46 mtab -> /etc/init.d/mtab
lrwxrwxrwx 1 root root 18 jun 10 19:46 net.lo -> /etc/init.d/net.lo
lrwxrwxrwx 1 root root 18 jun 10 19:46 procfs -> /etc/init.d/procfs
lrwxrwxrwx 1 root root 16 jun 10 19:46 root -> /etc/init.d/root
lrwxrwxrwx 1 root root 16 jun 10 19:46 swap -> /etc/init.d/swap
lrwxrwxrwx 1 root root 18 jun 10 19:46 sysctl -> /etc/init.d/sysctl
lrwxrwxrwx 1 root root 24 jun 10 19:46 termencoding -> /etc/init.d/termencoding
lrwxrwxrwx 1 root root 19 jun 10 19:46 urandom -> /etc/init.d/urandom


  • Verifico que el proceso de migración (es automático durante la instalación de openrc) añade udev a sysinit correctamente
#  ls -l /etc/runlevels/sysinit
total 0
lrwxrwxrwx 1 root root 17 jun 10 19:46 devfs -> /etc/init.d/devfs
lrwxrwxrwx 1 root root 17 jun 10 19:46 dmesg -> /etc/init.d/dmesg
lrwxrwxrwx 1 root root 16 jun 10 19:46 udev -> /etc/init.d/udev


  • Verifico que el proceso de migración detectó que uso net.eth0 y net.eth1 y ha creado los links
bolica init.d # ls -al net*
lrwxrwxrwx 1 root root     6 feb  7 01:06 net.eth0 -> net.lo
lrwxrwxrwx 1 root root     6 feb  7 17:51 net.eth1 -> net.lo
-rwxr-xr-x 1 root root 15179 jun 10 19:46 net.lo
  • Compruebo la configuración de la red. Se cambia la sintaxis de /etc/conf.d/net. Hay un ejemplo en /usr/share/doc/openrc/net.example. Edito el fichero /etc/conf.d/net y lo adapto a la nueva sintaxis.
  • Verifico que se ha creado el fichero /etc/91xsession
XSESSION=Gnome
  • La variable EDITOR ya no se encuentra en /etc/rc.conf. Ambas variables EDITOR y PAGER, se configuran por defecto en /etc/profile. Cambie esto según su conveniencia en su archivo ~/.bashrc (o equivalente) o cree el archivo /etc/env.d/99editor y configure el valor por defecto del sistema allí. En mi caso lo he dejado en el /etc/profile
  • Establezco la variable rc_logger a "YES" en el /etc/rc.conf, de modo que se registre (log) todo el arranque en /var/log/rc.log.
/etc/rc.conf
  rc_logger="YES"

Rearranque

  • Una vez termiando todo lo anterior realizo un rearranque del equipo.


Conclusiones

El equipo rearranca correctamente, puedo verificar que aparentemente ha arrancado todo consultando el fichero /var/log/rc.log. Lo único que me ha sorprendido es que el proceso de arranque silencioso con fbsplash ya no muestra la barra de progreso, pero al final todo acaba funcionando. Lo investigaré...




Enlaces y Créditos

[1] http://wiki.luispa.com/ Página principal de LuisPa.
[2] http://www.gentoo.org/doc/es/openrc-migration.xml Guía de migración a Baselayout 2 + OpenRC.


Volver a la página de Role como Estación de trabajo

--Luis 19:25 10 jun 2009 (CEST)