Cómos


Nota Inicial:


Hace poco que me enteré de este nuevo init: InitNG que podrá reemplazar a la clásica herramienta SysVinit de nuestro sistema GNU/Linux con la gran ventaja de cargar los procesos que se ejecutan en el arranque en forma paralela y asincrónica. Incluso existe una Live-CD polaca que ya integró este fantástico Init: http://home.gna.org/pingwinek/index.html

Comparándolo con el antiguo init me he ahorrado más de 15 segundos en el arranque y funciona perfectamente, sin ningún cuelgue ni nada.
Es más podremos sólo probarlo si queremos agregando un simple parámetro en nuestro cargador de arranque (GRUB, Lilo) =)

I.- Instalando:

El primer paso será instalarlo, en este caso en Debian, tenemos un repositorio con paquetes precompilados; bastará añadir al “/etc/apt/sources.list”:

deb http://debian.space-based.de/debs/ experimental main
deb-src http://debian.space-based.de/debs/ experimental main

Y a continuación hacemos:

#aptitude update

#aptitude install initng-ifiles

La herramienta configurará y detectará automáticamente nuestros scripts de arranque y los guardará con un formato propio (archivos con extensión .i) y creará un directorio para cada demonio, agrupando los scripts en
3 directorios principales: “net”, “system” y “daemon”.
El directorio principal de configuración de InitNG se encuentra en /etc/initng.

Por último nos queda modificar nuestro cargador de arranque:

(a) Si usamos GRUB:

Agregamos en la línea del kernel: “init=/sbin/initng”

Por ejemplo mi línea quedaría así:

title Elive GNU/Linux kernel 2.6.16
root (hd0,3)
kernel /boot/vmlinuz-2.6.16.5 root=/dev/hda4 init=/sbin/initng vga=0x317
initrd /boot/initrd.img-2.6.16.5

(b) O si usamos Lilo:

Agregamos esta nueva línea: append = “init=/sbin/initng”
Un ejemplo:

image = /boot/vmlinuz-2.6.16.5
root = /dev/hda4
label = Elive GNU/Linux kernel 2.6.16 linux-initng
append = "init=/sbin/initng"

Nos queda reiniciar y disfrutar de un veloz arranque !!!

(La primera vez quizás irá lento, pero en el segundo arranque sentirás la diferencia)

II.- Herramientas de InitNG:

ngc —> Herramienta de control de Init (Equivalente a telinit)
ng-update —> Herramienta de configuracion de los niveles de arranque.
gen_system_runlevel.sh —> Script generador de niveles.
install_service —> Instalar servicios initng’s (.ii )


III.- Algunos comandos adicionales:

*** Agregar un servicio:

#ng-update add DIRECTORIO/SERVICIO default

*En DIRECTORIO se coloca el respectivo directorio en el que se encuentra el servicio. (net, system, daemon)

*** Eliminar un servicio:

#ng-update del DIRECTORIO/SERVICIO default

*** Crear todos los scripts de inicio para todos los niveles:

#gen_system_runlevel -all

*** Iniciar/Detener/Reiniciar un servicio

#ngc -u/-d/-r SERVICIO


Más información
:

man initng


IV.- Posibles problemas:

Si no detectara adecuadamente un servicio necesario, lo que debemos hacer es ir al directorio de ejecución que usamos por defecto, en Debian tendríamos que mirar en: “/etc/rc.2.d/”, ahí se encuentran todos los scripts que se cargan por defecto en un inicio normal del sistema
; por ejemplo yo uso el administrador de sesión gráfico entrance pero no me lo añadió de forma automática, por lo tuve que ver en /etc/initng/daemon/, encontré ahí el archivo: “entranced.i” y lo añadí al inicio con el comando:

ng-update add daemon/entranced default


Notas Finales:

En la web principal del proyecto existen también paquetes para Fedora, ebuilds para Gentoo y por supuesto el código fuente)
Enfin, las posibilidades de este Init son muchas, existe además un GUI para Gtk: http://www.initng.org/attachment/wiki/initng-conf-gtk/initng_conf_gtk_in_action.png de configuración de niveles, así como muchos
plugins adaptables a nuestro init. Más en la web principal del proyecto.


Referencias:

http://bulma.net/body.phtml?nIdNoticia=2288
http://www.initng.org/

Tenemos ante nosotros una herramienta gráfica que nos “personaliza” la carga del sistema; un proyecto de Spock para el gensplash de Gentoo y que hace uso del framebuffer mostrando una imagen de fondo en las tty (verbose mode) como también una en primer plano (silent mode).

Similar al conocido Bootsplash pero que éste ya no continúa en desarrollo.

Este tuto lo he escrito sobre un sistema Elive, una excelente distro basada en Debian, así que servirá para todo sistema “Debian-based” (y con un poco de suerte para cualquier sistema GNU/linux).

Primero hay que comprobar o instalar las herramientas necesarias para una correcta compilación:

(Nosotros utilizaremos el método por menus en consola (ncurses)).

#aptitude install kernel-package libncurses-dev gcc yaird initramfs-tools

Ahora, nos descargamos las fuentes de la última versión estable del kernel:
(En este momento es la 2.6.16.5)

http://www.kernel.org

Esperamos que descargue, (son casi 39 MB :-P ), así que los de conexión lenta no desesperen. xD

Lo descomprimimos en “/usr/src”, borramos el enlace antiguo al viejo kernel (si es que lo teníamos) y creamos uno nuevo para el que acabamos de descomprimir:

#tar xvjf linux-2.6.16.5.tar.bz2
#rm linux
#ln -s linux-2.6.16.5 linux

Necesitamos el parche fbsplash ; así que lo descargamos de aquí:
http://dev.gentoo.org/~spock/projects/gensplash/
(La última versión del parche al momento de crear este tutorial es la fbsplash-0.9.2-r5-2.6.16.patch)

Nos dirigimos al directorio del nuevo kernel y le aplicamos el parche:

#cd linux
#patch -p1 < /ruta_donde_se_encuentra_el_parche/fbsplash-0.9.1-2.6.10-rc3-bk6.patch

Ahora sólo debemos configurar el núcleo al “estilo Debian”, para los que antes ya hicieron lo de la configuración, no les demandará demasiado tiempo; para los que no, si gustan pueden partir de una configuración conocida de un kernel anterior, copiando el archivo “config” al directorio del kernel actual =):

#cp /boot/config-version-arquitecturag .config

#make menúconfig

Hay que tener cuidado y no olvidarnos de seleccionar las opciones que depende fbsplash (si no tampoco este tuto no tendría sentido alguno xD):

-> Device Drivers
-> Graphics Support
-> Console display driver support
[*] Framebuffer Console support
[*] Video mode selection support

-> Device Drivers
-> Graphics Support
[*] Support for the framebuffer splash

-> Device Drivers
-> Block devices
<*>RAM disk support
(8192) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support

NOTA:
Los siguientes comandos pertenecen a una compilación al estilo Debian; por mi parte a mi me gusta hacerlo al “modo clásico” (make && make modules_install, etc.); si ustedes
desean hacerlo así en
http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?part=1&chap=7 tienen una excelente muestra de cómo hacerlo ;-)

Seguimos. Luego de configurar de acuerdo a las exigencias de nuestro equipo =), tecleamos:

#make-kpkg  clean

Y el poderoso comando de compilación:
(Este comando sustituye a las clásicas órdenes make dep, make clean, make bzImage y make modules)

#make-kpkg --append-to-version .XXX kernel_image kernel_headers

En XXX pongan lo que quieran; algo que diferencie este nuevo kernel de otros, se permiten: caracteres alfanuméricos, el guión (-),
el más (+) y el punto (.); no coloquen nombres tipo “-i386″, “-k7″, etc. para evitar futuros conflictos con los kernels precompilados de debian. =)

Lo del kernel_headers es opcional, pero es recomendable ya que muchos programas necesitan de estas cabeceras ;-)

Existen muchos otros parámetros, para mucha más info: “man make-kpkg” (ya está en español en la mayoría de los casos)

Esperamos apróximadamente 1 hora de compilación (dependiendo de nuestro equipo), y tendremos dos paquetes .deb
en “/usr/src” listos para usar =)

Vale; entonces intalamos:

#dpkg -i linux-headers-2.6.16.5.fbsplash.deb linux-image-2.6.16.5.fbsplash.deb


Necesitamos ahora las splashutils para trabajar con las imágenes, podemos descargar las sources de aquí:

http://dev.gentoo.org/~spock/projects/splashutils/current/

Pero existe un repositorio .deb de los splashutils de parte de Jean-Damien Durand , sólo debes agregar esta línea a tu “/etc/apt/sources.list“:

http://jdurand.home.cern.ch/jdurand/splashutils/ binary/

Y hacemos:

#aptitude-update && aptitude install splashutils

Ya casi tenemos todo listo; ahora necesitamos un theme, en http://www.bootsplash.de/files/themes/ encontramos muchos. :-D
Descomprimimos el tema en “/etc/bootsplash/themes” y utilizamos la herramienta “bootsplash2fbsplash” para convertir el theme a gensplash:

#cd /etc/bootsplash/themes
#bootsplash2fbsplash “mitema”

Se nos creará el tema respectivo en “/etc/splash“.

Y creamos la imagen initramfs de nuestro respectivo theme:

#splash_geninitramfs -v -g /boot/initrd.img-2.6.16.5.fbsplash -r 1024x768 mi_tema

Y por último, nos queda añadir una entrada a “/boot/grub/menu.lst” de nuestro respectivo kernel y con los parámetros adecuados para que se cargue al inicio junto con nuestro tema de genplash:

Las líneas en mi caso quedarían mas o menos así:

title Elive GNU/Linux kernel 2.6.16.5 with fbsplash
root (hd0,3)
kernel /boot/vmlinuz-2.6.16.5.fbsplash root=/dev/hda4 splash=silent,fadein,theme:tu_tema_actual quiet CONSOLE=/dev/tty1 vga=791
initrd /boot/initrd.img-2.6.16.5.fbsplash

Queda reinciar y si todo lo hemos hecho correctamente, ya tendreamos un guapo arranque con nuestro theme gracias al framebuffer y el fbsplash :-D

Enlaces:

http://es.gentoo-wiki.com/HOWTO_fbsplash
http://jdurand.home.cern.ch/jdurand/fbsplash.html
http://newbiedoc.sourceforge.net/system/kernel-pkg.html