Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Linux: cómo actualizar y reconstruir el CD de instalación de CentOS 4
P: Encontré su página de actualización de Fedora Core 2. ¿Cómo crear un nuevo CD de instalación para CentOS 4 que ya contenga actualizaciones?
R: Al igual que Fedora Core 2, CentOS proporciona todas las herramientas necesarias para realizar esta tarea. Por consistencia, dividimos nuestro procedimiento en los siguientes 5 pasos. (Este procedimiento asume CentOS 4.1, ya que esta es la última versión al momento de escribir este artículo).
Dado que el controlador RAID DAC960 de CentOS 4 parece tener el mismo problema que Fedora Core 2, también hemos incluido una corrección de unidad DAC en nuestro programa.
Paso 1: Preparación
Este programa no es adecuado para principiantes. Si encuentra esta documentación confusa, es mejor pedirle ayuda a un usuario experimentado de Linux.
En primer lugar, se requiere un entorno de construcción adecuado.
Necesita una computadora con CentOS 4 instalado y 10 GB de espacio libre en el disco duro.
Debe ser superusuario (root) para continuar desde aquí. Supongamos que el comando se ejecuta desde el shell bash.
Los siguientes paquetes (y cualquier paquete requerido por estos) también deben instalarse desde el CD de instalación:
anaconda-10.1.1.19-1 anaconda-help-10.1.0-1 anaconda-runtime-10.1.1.19-1
Encuentre una ubicación en su disco duro con el espacio necesario y escriba el siguiente comando:
export PYTHONPATH=/usr/lib/anaconda export PATH="$PATH:/usr/lib/anaconda-runtime" export BUILDBASE='pwd' mkdir -p $BUILDBASE/linux/i386/SRPMS export ARCH=i386
Estos comandos crearán un área de preparación para usar y establecer algunas variables de entorno convenientes.
A continuación, descargue los cuatro ISO de instalación desde el sitio web de CentOS al directorio $BUILDBASE/linux.
Después de descargar el archivo ISO, debemos extraer su contenido en nuestro directorio de trabajo. Puedes hacer esto con el siguiente comando. (Debe ponerlos en un script y ejecutarlo).
#!/bin/bash for iso in CentOS-4.1-i386-bin1of4.iso CentOS-4.1-i386-bin2of4.iso CentOS-4.1-i386-bin3of4.iso CentOS-4.1-i386-bin4of4.iso; do mount -o loop $BUILDBASE/linux/$iso /mnt ; cd /mnt ; tar -cf - * | ( cd $BUILDBASE/linux/i386/ ; tar -xpf - ) ; cd $BUILDBASE ; umount /mnt done
Si todo va bien, puede borrar el archivo ISO de instalación. (¡Es posible que necesite espacio!)
Paso 2: Reparación de DAC960
Los siguientes pasos solo son necesarios si está intentando solucionar problemas de arranque con el controlador RAID DAC960. (El CD de instalación lanzado por CentOS tiene un error que impide que CentOS 4 se instale en algunas computadoras).
Si desea omitir este paso, continúe con el paso 3.
Primero, recupere la última actualización de la fuente del kernel de CentOS 4 del sitio espejo de CentOS. (Al momento de escribir esta página: kernel-2.6.9-11.EL.src.rpm)
Instale el RPM escribiendo:
rpm -i kernel-2.6.9-11.EL.src.rpm
Vaya al directorio /usr/src/redhat/SOURCES y modifique las siguientes líneas en el archivo kernel-2.6.9-i586.config:
# CONFIG_X86_UP_APIC is not set
cambiarlo a:
CONFIG_X86_UP_APIC=y
A continuación, agregue la siguiente línea debajo de esta línea y guarde el archivo:
CONFIG_X86_UP_IOAPIC=y
Vaya al directorio /usr/src/redhat y reconstruya todos los RPM del kernel escribiendo:
rpmbuild -ba --target=i586 SPECS/kernel-2.6.spec
Esto llevará un tiempo, pero si todo va bien, debería haber un nuevo conjunto de RPM del núcleo en este directorio:
/usr/src/redhat/RPMS/i586
Reemplace el kernel en el directorio $BUILDBASE/linux/i386/CentOS/RPMS con la actualización correspondiente en el directorio /usr/src/redhat/RPMS/i586. Para hacer esto, escriba el siguiente comando:
cp /usr/src/redhat/RPMS/i586/kernel-2.6.9-11.EL.i586.rpm $BUILDBASE/linux/i586/CentOS/RPMS/.
Paso 3: actualizaciones adicionales
Si es necesario en este punto, puede descargar las actualizaciones disponibles de los espejos de CentOS y reemplazar cada paquete RPM en el directorio $BUILDBASE/linux/i386/CentOS/RPMS con sus actualizaciones.
Paso 4: construir
Primero, necesitamos regenerar el archivo hdlist. Haga esto con el siguiente comando:
genhdlist $BUILDBASE/linux/i386
A continuación, cree nuestro archivo de pedido de paquetes emitiendo el siguiente comando:
pkgorder $BUILDBASE/linux/i386 i386 | tee $BUILDBASE/linux/pkgfile.'date +%Y-%m-%d'
Ahora, actualice el archivo de instalación ingresando el siguiente comando:
buildinstall --comp dist-4.1 --pkgorder $BUILDBASE/linux/pkgfile.'date +%Y-%m-%d' --version 4.1 --product 'CentOS' --release 'CentOS 4.1' $BUILDBASE/linux/i386
Paso 5: Crea el CD
Ahora que hemos terminado de construir, es hora de dividir los archivos en sus CD y crear una nueva ISO. El siguiente comando dividirá y recreará el archivo hdlist para cada CD:
RELEASE="CentOS 4.1 with updates to $(date '+%Y-%M-%d %H:%m')" rm -rf $BUILDBASE/linux/i386-disc[1-8] splittree.py --arch=i386 --total-discs=8 --bin-discs=4 --src-discs=4 --release-string="$RELEASE" --pkgorderfile=$BUILDBASE/linux/pkgfile.'date +%Y-%m-%d' --distdir=$BUILDBASE/linux/i386 --srcdir=$BUILDBASE/linux/i386/SRPMS --productpath=CentOS rm -f $BUILDBASE/i386-disc1/CentOS/base/hdlist* genhdlist --withnumbers --fileorder $BUILDBASE/fedora/pkgfile.'date +%Y-%m-%d' $BUILDBASE/linux/i386-disc[1234]
Finalmente, cree un script bash y ejecútelo usando los comandos que se enumeran a continuación. ¡Esto creará una imagen ISO nueva y modificada que puede usar para instalar CentOS Linux!
(Debe ejecutar el siguiente script desde el directorio $BUILDBASE/linux).
#!/bin/sh myname="Joe Blow <joe@joe.blow>" bootimg="isolinux/isolinux.bin" bootcat="isolinux/boot.cat" distname="CentOS" distvers="4.1" mkisopts="-R -J -T" bootopts="-no-emul-boot -boot-load-size 4 -boot-info-table" mydate="$(date '+%d %b %Y')" mkisofs $mkisopts $bootopts -V "CentOS $distver ($distname) UPDATED Disk 1" -A "CentOS $distver ($distname) update created on $mydate" -P "$myname" -p "$myname" -b "$bootimg" -c "$bootcat" -x lost+found -o "$distname"-i386-disc1.iso i386-disc1 for i in 2 3 4 ; do mkisofs $mkisopts -V "CentOS $distver ($distname) UPDATED Disk $i" -A "CentOS $distver ($distname) update created on $mydate" -P "$myname" -p "$myname" -x lost+found -o "$distname"-i386-disc${i}.iso i386-disc${i} done