Muchas son las veces que hemos tenido que reparar un sistema desde un LiveCD, y en algรบn punto del proceso nos hemos visto faltos de alguna herramienta y al querer instalarla, el SO del LiveCD nos dice que se ha quedado sin espacio y ajo y agua (a joderse y aguantarse).
Pues manos a la obra. Usaremos el SystemRescueCD, que ofrece un entorno bastante completo basado en Gentoo.
En nuestro ejemplo (instalarse un Linux desde cero siguiendo el libro Linux From Scratch) nos faltan los programas Bison y Makeinfo, asรญ que vamos a crear una nueva imagen ISO de este disco pero con las nuevas herramientas.
Aunque se usa un administrador de paquetes (como el apt-get de Debian), en vez de bajarse paquetes se descarga el cรณdigo fuente para compilarlo en tu mรกquina.
Para el proceso se va a necesitar una particiรณn Linux (ext4 por ejemplo) con al menos 1.5G libres, aunque se aconseja mรกs. Si no querรฉis toquetear vuestras particiones, haced uso de una mรกquina virtual. Eso sรญ, es aconsejable que la particiรณn tenga varios gigas ya que durante los procesos de compilaciรณn, instalaciรณn, sincronizaciรณn de repositoriosโฆ se necesita espacio temporal; aconsejo usar una particiรณn de 8G + swap de 2G (con 4G+1G deberรญa bastar, pero asรญ aseguramos, si falta RAM/swap el proceso serรก aรบn mรกs lento).
Suponiendo que habรฉis creado una mรกquina virtual con un disco de 10G, la iniciรกis diciรฉndole que arranque desde el SystemRescueCd reciรฉn bajado. Una vez dentro particionamos con fdisk (si habรฉis iniciado la sesiรณn grรกfica podรฉis hacerlo con gparted, pero el propรณsito de este post es enseรฑar el uso de herramientas bรกsicas). fdisk es un comando interactivo:
- con la opciรณn ยซnยป creamos una nueva particiรณn
- con la opciรณn ยซtยป cambiamos el tipo de sistema de ficheros que irรก en la particiรณn
- con la opciรณn ยซwยป escribimos en el disco
- con la opcion ยซqยป salimos sin escribir los cambios
Cuando usamos la opciรณn ยซnยป nos darรก varias opciones, todo el tiempo usaremos default, excepto a la hora de establecer el รบltimo sector en la primera particiรณn, que tendremos que escribir ยซ+8Gยป, indicรกndole asรญ al programa que queremos que nuestra particiรณn ocupe 8GB.
A la hora de crear la segunda particiรณn usaremos las opciones por defecto ya que el resto del espacio serรก ocupado. Ademรกs para indicarle a fdisk que la segunda particiรณn serรก de tipo swap, hay que usar la opciรณn ยซtยป (el hexcode para swap es 82). La interfaz tiene esta pinta:
% fdisk /dev/sda Orden (m para obtener ayuda):
Una vez terminado todo, usamos la opciรณn ยซwยป para escribir los cambios en el disco y salir.
Ahora toca formatear las particiones. Empezaremos por la swap para asรญ hacer uso de ella inmediatamente:
% mkswap /dev/sda2 % swapon /dev/sda2
Ya tenemos formateada la particiรณn swap, y con el comando swapon hemos empezado a usarla. Ahora formateamos en ext4 la primera particiรณn:
% mkfs.ext4 /dev/sda1
Podemos empezar a seguir los pasos descritos en http://www.sysresccd.org/Sysresccd-manual-en_How_to_personalize_SystemRescueCd, aquรญ los traduzco/describo con alguna que otra anotaciรณn.
Montamos la particiรณn en su sitio (el LiveCD ya viene preparado con una carpeta /mnt/custom donde deberรก montarse la particiรณn en la que haremos los cambios oportunos). Ademรกs despuรฉs de montar deberemos extraer los archivos del disco, esto se consigue con un script que ya viene preparado. El script tardarรก un poco (ya que vuelca cientos de megas de memoria), si querรฉis comprobar que efectivamente estรก funcionando, pasaros a otra terminal (con Alt+F4 por ejemplo) y haced un df -h.
% mount /dev/sda2 /mnt/custom % /usr/sbin/sysresccd-custom extract
Si ahora navegas dentro de /mnt/custom/customcd, veras varias carpetas. En /mnt/custom/customcd/files se encuentra el sistema de ficheros raรญz. Ahora toca chrootear el futuro nuevo sistema. Aquรญ voy a poner los comandos, para mรกs informaciรณn sobre chroot podรฉis mirar este tutorial que escribรญ hace un mes
% mount -o bind /proc /mnt/custom/customcd/files/proc % mount -o bind /dev /mnt/custom/customcd/files/dev % mount -o bind /sys /mnt/custom/customcd/files/sys % chroot /mnt/custom/customcd/files /bin/bash # gcc-config $(gcc-config -c)
Ya estamos en el sistema chrooteado, lo que serรก el sistema del LiveCD una vez lo booteemos. Instalaremos los paquetes que faltan (bison y texinfo) usando el comando emerge (que maneja la paqueterรญa de portage de gentoo).
Primero sincronizamos el รกrbol de portage (el equivalente a apt-get update)
# emerge-webrsync
NOTA: usamos este comando en vez de ยซemerge โsyncยป por ser mรกs rรกpido, ya que descarga un paquete tar de la web. Es necesario este paso, porque si no emerge lo harรก automรกticamente con emerge โsync, haciรฉndose mรกs lento.
Despuรฉs de sincronizar el portage tree ya podemos proceder a instalar los paquetes:
# emerge sys-devel/bison # emerge sys-devel/texinfo
Salimos de chroot:# exit
Desmontamos ยซ/procยป para que los nuevos paquetes instalados se almacenen en el squashfs. Tambiรฉn desmontamos ยซ/devยป y ยซ/sysยป para que no se nos olvide luego
% umount /mnt/custom/customcd/files/proc
% umount /mnt/custom/customcd/files/dev
% umount /mnt/custom/customcd/files/sys
Como ya tenemos el nuevo squash file system preparado, lo creamos con el siguiente comando
% /usr/sbin/sysresccd-custom squashfs
Si queremos agregar algรบn archivo en la imagen ISO pero queremos que estรฉ fuera del squashfs, debemos meterlo en la carpeta ยซ/mnt/custom/customcd/isorootยป
% cp -a my-files /mnt/custom/customcd/isoroot
Llegรณ el momento glorioso, ยกya podemos generar la nueva imagen ISO con nuestro sistema customizado!
% /usr/sbin/sysresccd-custom isogen my_srcd
ยซmy_srcdยป es el nombre que le damos al volumen, podรฉis llamadlo como querรกis. La imagen queda guardada en ยซ/mnt/custom/customcd/isofileยป, ademรกs tambiรฉn se genera un archivo .md5 ๐
Si estรกis trabajando en un disco virtual, queda el paso crucial: extraer la imagen ISO del sistema virtual. Hay diversas formas de hacerlo, yo os explicarรฉ una sencilla (en VirtualBox) para no tener que instalar ยซguest additionsยป ni nada por el estilo.
Usaremos el cliente de para obtener el archivo a travรฉs de un tรบnel ssh. Para ello primero debemos configurar el sistema invitado con una contraseรฑa de root. El servidor ssh se inicia automรกticamente, aรบn asi lo reiniciamos por si acaso.
% passwd
% /etc/init.d/sshd restart
Nos toca configurar el port forwarding de la mรกquina virtual. En VirtualBox se hace de la siguiente manera:
- Accedรฉis a la configuraciรณn de la mรกquina virtual
- En el apartado de red tenรฉis ya configurado un adaptador en NAT
- Buscad la opciรณn de reenvรญo de puertos
- Agregรกis una nueva regla, con los รบnicos parรกmetros de ยซpuerto anfitrionยป y ยซpuerto invitadoยป
- anfitriรณn=3022 e invitado=22
Con esto hemos conseguido que el puerto 3022 de nuestro PC sea el 22 de la mรกquina virtual. Iniciamos el cliente de Filezilla:
- En el parรกmetro servidor escribimos: sftp://localhost
- En el parรกmetro nombre de usuario escribimos: root
- En el parรกmetro contraseรฑa metemos la que usamos en ยซpasswdยป
- En el parรกmetro puerto escribimos: 3022
- Click en ยซConexiรณn rรกpidaยป
Si todo ha ido bien a la izquierda podremos navegar en nuestro PC y a la derecha en la mรกquina virtual. Basta con acceder (en la mรกquina virtual) a la carpeta ยซ/mnt/custom/customcd/isofileยป y arrastrar la imagen ISO al lugar que deseamos en nuestro PC.
ยกEnhorabuena! Si todo ha ido bien ya tienes listo tu imagen ISO con un SystemRescueCD personalizado y listo para bootear desde un CD, USBโฆ
Que buena guรญa, algo complicada pero muy รบtil.
Buen aporte.
Luego con un poco mรกs de tiempo, y sin tanta molestia en los ojos, lo leerรฉ a fondo. Parece muy รบtil, y por demรกs interesante..
Hola woqer, muy buen post!
llevo algunos aรฑos con LFS y me he creado mi propia iso que te puede servir, tiene todo lo necesario para compilar ya que es un LFS. ๐ espero te sea de utilidad
http://vegnux.org.ve/files/isos/neonatox-06.2rc6.linux-i686-xfce4.iso