spacer

Sysresccd-manual-es Como personalizar SystemRescueCd

History


Introducción

Ser capaz de hacer una versión personalizada de SystemRescueCd era una característica pedida frecuentemente. Ahora es posible hacer tu propia versión de SystemRescueCD.

Esto significa que podrás añadir archivos a la imagen comprimida sysrcd.dat, que será el sistema de archivos de SystemRescueCD. Por ejemplo, puedes añadir scripts que hagan el backup completo de un servidor, o un programa binario que necesites. También es posible añadir archivos de datos, para tener todo en el CDRom (datos y archivos de sistema que te permitan restaurar la información). Por ahora, no es posible cambiar el kernel. Si necesitas que una opción del kernel esté desabilitada, por favor contacta con nosotros.

El objetivo es producir una nueva imagen ISO, con un sysrcd.dat actualizado. Para poder hacer tu propia versión de SysRescueCD, necesitarás una versión reciente de este CDRom, y una partición con acceso read-write (lectura-escritura) desde linux, con al menos 500 MB. Si haces una versión muy grande de este CDRom, puede que necesites mucho más espacio.

Ten en cuenta que esta operación requiere una gran cantidad de memoria (tanto RAM como espacio en el disco duro). Si no tienes 128 MB de RAM, y al menos 300 MB libres en tu disco duro, fallará. Puedes crear una partición swap para evitar problemas con el paso cloop en el script.

Uso

Toda la personalización es procesada desde el sistema CDRom con un script. esto significa que tienes que grabar la versión oficial, arrancar tu ordenador con desde esta versión oficial de SystemRescueCd, y luego podrás hacer tu propia versión. El script necesita ser ejecutado desde el sistema CDRom, porque es más fácil de usar de esta manera. Estoy seguro de que todos los programas están instalados. Si este script estuviera diseñado para ejecutarse desde cualquier sistema con linux instalado, tendrías que instalar varios programas más, como un módulo para el kernel, y sería mucho más complicado.

Aquí están las instrucciones a seguir para hacer tu propia imagen ISO. Asumimos que la partición /dev/hda1 está formateada para linux (ext2, ext3, reiserfs, reiser4, xfs, jfs, ...), y que tiene al menos 500 MB libres. Tiene que ser un espacio linux, porque otros sistemas de archivos como FAT o NTFS no soportan links simbólicos y permisos de archivos. Si solo tienes una partición FAT disponible, puedes crear un sistema de archivos linux virtual dentro de la partición FAT:

mount /dev/hda1 /mnt/fat
cd /mnt/fat
dd if=/dev/zero of=fsimage bs=1M count=500
mke2fs -F -q -N 50000 fsimage
mount -t ext2 -o loop fsimage /mnt/custom

Si usas la opción de arranque "cdcache", la disco original de SystemRescueCd debe estar montado cuando ejecutes el primer paso (extraer) del script.

Procedimiento

Este procedimiento creará un nuevo directorio "customcd" en la raíz de esta partición. Todos los archivos de otros directorios no serán afectados por este script. Si tienes una versión antigua de este CDRom personalizado en este directorio, por favor haz una copia de seguridad. ¡Puede que se pierdan todos los archivos de "/dev/hda1/customcd/"! Ten en cuenta que debes mantener el nombre "/mnt/custom" que hemos usado en este ejemplo. No puedes simplemente usar "/mnt/another-name".

  • Paso-01: Montar la partición
mount /dev/hda1 /mnt/custom

Si no quieres que el directorio principal temporal sea reescrito en la raíz de /mnt/custom, puedes elegir otro directorio. Por ejemplo, si el espacio libre es una carpeta compartida NFS, puedes probar esto:

mount -o loop /mnt/nfs/usr/dir1/dir2 /mnt/custom
  • Paso-02: Extraer los archivos actuales desde la imagen cloop:
/usr/sbin/sysresccd-custom extract

Si no hay ningún error, todos los archivos de la imagen cloop deberían haber sido copiados a /mnt/custom/customcd/files/

  • Paso-03: Personalizar archivos (opcional)

Puedes personalizar los archivos que acabas de extraer. Puedes hacer esto desde el SystemRescueCd, pero también es posible reiniciar el ordenador y hacerlo desde cualquier otro sistema con linux instalado. Si decides reiniciar, tendrás que reiniciar el SystemRescueCd, y montar la partición de nuevo (sigue el paso-01 otra vez). Todos los cambios tienen que hacerse en el siguiente directorio: (Este es el root del nuevo sistema de archivos)

/mnt/custom/customcd/files/
  • Paso-04: Crear la nueva imagen cloop

En este paso, todos los archivos de /mnt/custom/customcd/files/ son leídos y colocados dentro de la nueva imagen cloop. La nueva imagen cloop es copiada en \\ "/mnt/custom/customcd/isoroot/sysrcd.dat", pero no tienes que preocuparte por esto.

/usr/sbin/sysresccd-custom cloop 300 20000

Esto crea un cloop para un sistema de archivos que usa 300 MB, y que tiene menos de 20000 archivos. Si el comando se queja de falta de espacio, intenta aumentar estos dos parámetros. Por ejemplo, si tu sistema de archivos contiene 50000 archivos y usa 10 MB, el comando anterior se quejará (no space left on device - no hay espacio en la unidad).

  • Paso-05: Añadir archivos a la imagen ISO (opcional)

Por defecto, solo necesitas la gran imagen cloop y el directorio isolinux. El CDRom puede trabajar solo con esos dos directorios en el disco. En este paso, puedes añadir otros archivos a la imagen ISO, fuera de la imagen cloop. Por ejemplo, puedes poner grandes archivos de copia de seguridad dentro del CDRom, y fuerta la imagen cloop, para evitar sobrecargar la cloop. Si estás interesado en añadir archivos de esta manera, simplemente tienes que copiar los archivos junto con el sysrcd.dat, en esta carpeta: "/mnt/custom/customcd/isoroot".

cp -a my-files /mnt/custom/customcd/isoroot

Puedes añadir scripts autoejecutables en la raíz de este CDRom, fuera de la imagen cloop. Si pones un script autoejecutable allí, puede ser ejecutado en el arranque. Te permite autoejecutar muchas tareas, como hacer un backup. Mira la sección autoejecución para más detalles.

cp autorun /mnt/custom/customcd/isoroot
chmod 755 /mnt/custom/customcd/isoroot/autorun

Por supuesto, necesitas asegurarte de que el tamaño del directorio isoroot no es demasiado grande para tu CDR (normalmente 700 MB). Puedes usar el comando "du /mnt/custom/customcd/" para eso.

  • Paso-06: Selecciona tu keymap (opcional)

En la versión oficial, SystemRescueCd te pregunta por el keymap en el arranque. Si quieres evitar ver este menú y definir un keymap permanente, puedes ejecutar este comando:

/usr/sbin/sysresccd-custom setkmap <your-keymap>

El segundo parámetro es el nombre del número de tu keymap en el menú. Por ejemplo, los usuarios franceses usarán este:

/usr/sbin/sysresccd-custom setkmap fr
  • Paso-07: Crear la nueva imagen ISO

Simplemente tienes que teclear este comando. El segundo parámetro es el nombre del volumen para el CDRom.

/usr/sbin/sysresccd-custom isogen mi_srcd
  • Paso-08: Sincronizar tus discos

Antes de abandonar el sistema y reiniciar, deberías asegurarte de que todos tus discos están desmontados limpiamente. La mejor manera de no perder datos es desmontar todas las particiones montadas, especialmente la temporal (/dev/hda1 en este ejemplo), y luego escribir "sync".

cd / ; umount /mnt/custom ; sync
  • Paso-09: Probar y grabar la imagen ISO

La nueva imagen final ISO está en "/mnt/custom/customcd/isofile/sysresccd-new.iso". Puedes grabarla con cdrecord, Nero, o cualquier otro software de grabación. Si no quieres grabar un CDR, puedes probarla con VMWare. Tienes que decirle a este software que la unidad CDRom a usar es la unidad de archivos virtual de la imagen ISO.

El resultado de tus cambios

Cuando arrancas tu ordenador con tu propia versión de SystemRescueCd, puedes ver todos los archivos en /mnt/cloop. Si tus nuevos archivos pertenecen a un directorio estándar, puedes acceder a ellos sin problemas. Si creaste un nuevo directorio en la raíz del sistema de archivos, aparecerá en /mnt/cloop. Puede que tengas que hacer el link tú mismo.

Autoejecución: scripts que se ejecutan en el arranque

SystemRescueCd 0.2.6 añadió la característica de autoejecución de scripts. Permite ejecutar scripts automáticamente en el arranque del sistema. Cada script autoejecutable puede manejar una tarea. Por ejemplo, puedes crear un script de backup de una base de datos, otro para limpiar el sistema...

Por defecto, los scripts autoejecutables pueden ser copiados en la raíz del CDRom, fuera de la imagen de comprimida cloop (sysrcd.dat), pero puede haber otros orígenes: disquete, partición de disco duro o carpeta compartida en red. El script ha de estar nombrado "autorun" si solo hay uno. Si hay que encadenar varios scripts, puedes nombrarlos "autorun0", "autorun1"... . En este caso, los scripts autoejecutables pueden ser activados con una opción de arranque "autoruns=" dada en la línea de comandos de arranque. Por ejemplo, puedes escribir "fb800 autoruns=2,3,4".

Si quieres usar el disquete o la red para los archivos autoejecutables, tendrás que especificar otro parámetro de arranque especial para activarlo. Más acerca de esto en la siguiente sección.

Resumen de reglas

En el arranque, una lista de lugares son comprobados en busca de archivos autoejecutables. Son, en orden:

  • Si el parámetro ar\_source= fue pasado en el arranque, se buscará en el directorio raíz de la unidad montable dada. Esto está principalmente pensado para disquetes:
    • fb800 ar_source=/dev/fd0

pero también puede ser usado con particiones de disco duro:

    • fb800 ar_source=/dev/hda2

para buscar scripts en la 2ª partición del disco duro del primer IDE

    • fb800 ar_source=/dev/sdb6

para mirar en la 6ª partición del segundo disco duro SCSI

y con carpetas compartidas. El sintaxis es:

    • fb800 ar_source=nfs-server:/nfs/exported/directory

para carpetas compartidas NFS:

    • fb800 ar_source=//samba-server/share

para carpetas compartidas SMB (recomendado sin usuario/contraseña)

Las unidades de origen son montadas en /mnt/autorun, permitiendo escribir datos en ellas si la unidad no está protegida contra escritura.

  • el directorio raíz del CDRom
  • el directorio home del superusuario (/root)
  • el directorio /usr/share/sys.autorun

Si se encuentran archivos autoejecutables en algún lugar, son ejecutados y el proceso termina. Los últimos dos lugares requieren que se reconstruya el SystemRescueCd y están pensadas para ser usadas en tests avanzados.

En cada lugar origen, hay dos posibles modos de operación:

  • uno simple: si un shell script llamado "autorun" es encontrado, se ejecuta
  • más flexible : si se encuentran scripts "autorun\#" (\# es un digito del 0 al 9):
    • el parámetro de arranque "autoruns=" NO fue escrito
    • el parámetro de arranque "autoruns=" contiene \# \\

(ej: "fb800 autoruns=0,1,4" - En este ejemplo, solo los scripts autorun0, autorun1 autorun4 serían ejecutados si se encuentran. Otros scripts, como autorun2,autorun3 y autorun 5, serán ignorados).

Los scripts activados/autorizados se ejecutan en orden alfabético. En el momento en que un script devuelve un código que no sea cero, el proceso se detiene y los siguientes scripts no son ejecutados. Puedes evitar la ejecución de cualquier "autorun\#" con un parámetro de arranque "autorun=" sin ningún dígito, por ejemplo: "autoruns=no". Esto no afecta al script "autorun".

Aunque es posible usar tanto los scripts "autorun" como los "autorun\#", esto debería ser evitado probablemente.

El script tiene que ser cualquier script de consola válido. Perl, python, etc no están soportados de momento. Los fines de línea de Windows son traducidos para permitir la ejecución de scripts escritos con un editor MS.

Ejemplos de scripts autoejecutables

#!/bin/bash
(
  ifconfig eth0 | head -n 3
  fdisk -l /dev/hda
) | tee -a /mnt/autorun/report
sync
exit 0

Este script acumulará información acerca de la interfaz de red eth0 y las particiones de disco en un archivo llamado "report" en la primera unidad de disquete. En la secuencia de arranque de la BIOS el CD tiene que estar el primero, el parámetro "ar_source=" tiene que estar correctamente configurado, el disquete tiene que tener permisos de escritura y tanto el CD como el disquete tienen que estar metidos en el momento del arranque.

Si la red se configura automáticamente en el arranque (DHCP), puedes enviar información a través de una carpeta compartida NFS o samba por ejemplo.

No olvides dar el lugar del autorun en el arranque. Digamos que tienes una carpeta compartida NFS /nfs/backup con permisos de escritura en el servidor miservidor, tendrás que especificar:

  • fb800 ar_source=miservidor:/nfs/backup

en la línea de comandos de arranque del SystemRescueCd y poner en el directorio compartido un script "autorun" como este:

#!/bin/bash
date=$(date +%Y%m%d)
cat /dev/hda | gzip > /mnt/autorun/$date.hda.gz && exit 0
echo $date hda backup error
exit 1

Si hay suficiente espacio en la carpeta compartida NFS, este script copiará allí la imagen comprimida de tu primero disco IDE.

Tienes que asegurarte que la resolución de nombres funciona si accedes al servidor NFS usando su nombre en vez de su dirección IP.

spacer