Bueno primero que nada pues espero les sirva este pequeño tutorial, si es que alguien lo lee. Pero eso es otra cuestión. Básicamente como hobby estoy jugando un poco con sistemas “embebidos” y como mi sistema embebido usa una compact flash para lectura y escritura de datos y debido a que estas tarjetitas tienen un tiempo de vida correspondiente al nivel de escritura que se haga, pues me tome un tiempo en hacer un pequeño diseño de que es lo que necesito para mejorar este sistema y llegue a la conclusión de separar la partición etc del sistema base:
Una pequeña recomendación es que siempre es bueno hacer esto sobre una maquina virtual con la ayuda de los snapshots podemos regresar la configuración sin tener que hacer todo de nuevo.
Básicamente creamos un particionado en donde la partición de etc se encuentre separada, algo como esto:
/dev/sda5 on / type ext3
/dev/sda8 on /etc type ext3 (rw,relatime,errors=continue,data=ordered)
/dev/sda1 on /boot type ext3 (ro,nosuid,nodev)
/dev/sda6 on /home type ext3 (rw,noexec,nosuid,nodev)
/dev/sda3 on /var type ext3 (rw)
-
Usamos un live cd (de preferencia alguno de ubuntu) para hacer todo nuestro trabajo.
-
Ejecutamos un Shell e instalamos el debootstrap
apt-get install debootstrap
-
Bueno ahora es necesario que montemos nuestro sistema, por lo cual haremos los siguiente, crearemos una carpeta en mnt llamada grip:
mkdir /mnt/grip
mount /dev/sda5 /mnt/grip
mkdir /mnt/grip/boot
mkdir /mnt/grip/home
mkdir /mnt/grip/var
mkdir /mnt/grip/etc
mount /dev/sda1 /mnt/grip/boot
mount /dev/sda6 /mnt/grip/home
mount /dev/sda7 /mnt/grip/var
mount /dev/sda8 /mnt/grip/etc
-
Ya una vez creada nuestra estructura de archivos pues instalaremos nuestro sistema base para esto les recomiendo seguir el siguiente link:
http://wiki.soekris.info/Installing_Ubuntu_7.04_Server_via_debootstrap -
Es bueno después de haber instalado el grub probar que arranque el sistema base, para esto reiniciamos el sistema quitando el CD.
-
Si por algún motivo al arranque te muestra la Shell de grub, será necesario que entres con un live cd de nuevo al sistema montes por lo menos la partición de boot ya una vez montada la partición corre los siguientes comandos:
-
Si por algún motivo al arranque te muestra la Shell de grub, será necesario que entres con un live cd de nuevo al sistema montes por lo menos la partición de boot ya una vez montada la partición corre los siguientes comandos:
#grub
Una vez dentro de esta Shell ejecutamos
root (hd0,0) - > varía dependiendo del sistema
setup (hd0)
- Bueno una vez que el sistema haya logrado arrancar, bueno parcialmente debido a que la partición en etc no se encuentra activa.
Debido a que la imagen no se distingue mucho el error dice "Enter runlevel:"
-
Insertamos de nuevo nuestro Live CD, y procederemos a un nuevo initramfs.
-
Montamos de nuevo nuestro sistema base “paso 4 (Solo montar ya están creadas las carpetas)”.
-
Montamos nuestro dev
Mount - -bind /dev /mnt/grip/dev
-
Hacemos de Nuevo el CHROOT al sistema base.
-
Una vez dentro del sistema ejecutamos:
cd /usr/share/initramfs-tools/scripts/init-bottom/
-
Con algún editor creamos un script como el siguiente.
#!/bin/sh
# Example frobnication boot script
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
# Begin real processing below this line
log_begin_msg "Starting frobnication"
mount -t ext3 /dev/sda8 ${rootmnt}/etc
log_end_msg
exit 0
-
Cambiamos los permisos de ejecución de este archivo:
chmod +x
-
Procederemos a crear nuestro initramfs en este caso usamos un kernel 2.6.32
mkinitramfs -o /boot/initrd.img-2.6.32-5-686-custom /lib/modules/2.6.32-5-686/
-
Solo para comprobar que el script se encuentra ejecutamos:
mkdir /tmp/init
cd /tmp/init
gunzip –c /boot/initrd.img-2.6.32-5-686-custom | cpio –i –d –H newc –no-absolute-filenames
Nos quedara un sistema de archivos parecidos a este:
ubuntu:/tmp/init# ls
bin conf etc init lib sbin scripts
cd scripts/init-bottom
Tiene que estar el script que creamos.
-
Editamos nuestro archivo en /boot/grub/menu.lst para que tome nuestra nueva imagen de initramfs.
title Debian GNU/Linux, kernel 2.6.32-5-686
root (hd0,0)
kernel /vmlinuz-2.6.32-5-686 root=/dev/sda5 ro
initrd /initrd.img-2.6.32-5-686-custom
-
Reiniciamos y con esto debe de quedar etc montado al arranque en una partición diferente
Espero esto les sirva.
Saludos.