Linux: cómo actualizar y reconstruir el CD de instalación de RedHat 9

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 RedHat 9

P: Redhat 9 ha estado disponible por un tiempo y hay muchas actualizaciones disponibles. Cada vez que construyo un nuevo sistema, tengo que descargar e instalar todas estas actualizaciones. ¿Hay alguna forma de crear un nuevo CD de instalación que ya contenga la actualización?

R: Sí, RedHat Linux viene con todas las herramientas necesarias para realizar esta tarea. Descomponemos el procedimiento en los siguientes 6 pasos. (Hemos solucionado problemas de instalación con los controladores RAID Redhat 9 y DAC960 mediante este procedimiento).

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 Redhat 9 instalado y 10 GB de espacio libre en el disco duro.

Los siguientes paquetes también deben instalarse desde el CD de instalación:

anaconda-9.0-4
anaconda-images-9.0-3
anaconda-help-9.0-2
anaconda-runtime-9.0-4

Debe ser superusuario (root) para continuar desde aquí. Supongamos que el comando se ejecuta desde el shell bash.

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 RHBASE='pwd'
mkdir -p $RHBASE/redhat/i386
cd $RHBASE/redhat

Estos comandos crearán un área de preparación para usar y establecer algunas variables de entorno convenientes.

A continuación, descargue las seis ISO de instalación del sitio de RedHat en el directorio $RHBASE/redhat.

Después de descargar el archivo ISO, debemos extraer su contenido en nuestro directorio de trabajo. Puedes hacer esto con el siguiente comando.

Para cada uno de los tres CD de instalación, haga lo siguiente:

mount -o loop shrike-i386-disc1.iso /mnt ; cd /mnt ; tar -cf - * | ( cd $RHBASE/redhat/i386/ ; tar -xpf - ) ; cd $RHBASE/redhat ; umount /mnt
mount -o loop shrike-i386-disc2.iso /mnt ; cd /mnt ; tar -cf - * | ( cd $RHBASE/redhat/i386/ ; tar -xpf - ) ; cd $RHBASE/redhat ; umount /mnt
mount -o loop shrike-i386-disc3.iso /mnt ; cd /mnt ; tar -cf - * | ( cd $RHBASE/redhat/i386/ ; tar -xpf - ) ; cd $RHBASE/redhat ; umount /mnt

Para cada uno de los tres CD de origen, haga lo siguiente:

mount -o loop shrike-SRPMS-disc1.iso /mnt ; cd /mnt ; tar -cf - * | ( cd $RHBASE/redhat/i386/ ; tar -xpf - ) ; cd $RHBASE/redhat ; umount /mnt
mount -o loop shrike-SRPMS-disc2.iso /mnt ; cd /mnt ; tar -cf - * | ( cd $RHBASE/redhat/i386/ ; tar -xpf - ) ; cd $RHBASE/redhat ; umount /mnt
mount -o loop shrike-SRPMS-disc3.iso /mnt ; cd /mnt ; tar -cf - * | ( cd $RHBASE/redhat/i386/ ; tar -xpf - ) ; cd $RHBASE/redhat ; umount /mnt

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 distribuido por Redhat tiene un error que no permite instalar Redhat 9 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 RedHat 9 del sitio espejo de RedHat. (Al momento de escribir esta página: kernel-2.4.20-18.9.src.rpm)

Instale el RPM escribiendo:

rpm -i kernel-2.4.20-18.9.src.rpm

Vaya al directorio /usr/src/redhat/SOURCES y modifique la siguiente línea en el archivo kernel-2.4.20-i386-BOOT.config:

# CONFIG_X86_UP_APIC is not set
# CONFIG_X86_UP_IOAPIC is not set

cambiarlos a:

CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y

Vaya al directorio /usr/src/redhat y reconstruya todos los RPM del kernel escribiendo:

rpmbuild -ba SPECS/kernel-2.4.spec

Esto llevará un tiempo, pero si todo va bien, debería haber un nuevo conjunto de RPM del kernel en estos directorios:

/usr/src/redhat/RPMS/i386
/usr/src/redhat/RPMS/i686
/usr/src/redhat/RPMS/athlon

Reemplace el kernel BOOT en el directorio $RHBASE/redhat/i386/RedHat/RPMS con la actualización correspondiente en el directorio /usr/src/redhat/RPMS/i386. Para hacer esto, escriba el siguiente comando:

cp /usr/src/redhat/RPMS/i386/kernel-BOOT-2.4.20-18.9.i386.rpm $RHBASE/redhat/i386/RedHat/RPMS/.

Paso 3: actualizaciones adicionales

Si es necesario en este punto, puede descargar cualquier actualización disponible de los espejos de Redhat y reemplazar cada paquete RPM en el directorio $RHBASE/redhat/i386/RedHat/RPMS con su actualización.

Paso 4: Limpiar

El proceso de creación del CD original deja atrás muchos archivos. Estos archivos deben eliminarse con el siguiente comando:

find $RHBASE/redhat/i386 -name TRANS.TBL -exec rm -f {} ;

Paso 5: construir

Esta es la parte que hemos estado esperando. Si todo va bien, es hora de pasar a la fase de construcción.

Primero, necesitamos regenerar el archivo hdlist. Haga esto con el siguiente comando:

genhdlist $RHBASE/redhat/i386

A continuación, cree nuestro archivo de pedido de paquetes emitiendo el siguiente comando:

pkgorder $RHBASE/redhat/i386 i386 | tee $RHBASE/redhat/pkgorder.txt

Ahora, actualice el archivo de instalación ingresando el siguiente comando:

buildinstall --comp dist-9 --pkgorder $RHBASE/redhat/pkgorder.txt --version 9 --product "Red Hat Linux" --release "Custom build 1.0" $RHBASE/redhat/i386

Paso 6: 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="RedHat 9 (Shrike) with updates to $(date '+%Y-%M-%d %H:%m')"
splitdistro --fileorder $RHBASE/redhat/pkgorder.txt --release "$RELEASE" $RHBASE/redhat i386

rm -f $RHBASE/i386-disc1/RedHat/base/hdlist*
genhdlist --withnumbers --fileorder $RHBASE/redhat/pkgorder.txt $RHBASE/redhat/i386-disc[123]

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 Redhat Linux!

#!/bin/sh

myname="Joe Blow <[email protected]>"
bootimg="isolinux/isolinux.bin"
bootcat="isolinux/boot.cat"
distname="shrike"
distvers="9"
mkisopts="-R -J -T"
bootopts="-no-emul-boot -boot-load-size 4 -boot-info-table"
mydate="$(date '+%d %b %Y')"
mkisofs $mkisopts $bootopts 
-V "RedHat $distver ($distname) UPDATED Disk 1" 
-A "RedHat $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 ; do
mkisofs $mkisopts 
-V "RedHat $distver ($distname) UPDATED Disk $i" 
-A "RedHat $distver ($distname) update created on $mydate" 
-P "$myname" 
-p "$myname" 
-x lost+found 
-o "$distname"-i386-disc${i}.iso 
i386-disc${i}
done

for i in 1 2 3 ; do
mkisofs $mkisopts 
-V "RedHat $distver ($distname) UPDATED Disk $i" 
-A "RedHat $distver ($distname) update created on $mydate" 
-P "$myname" 
-p "$myname" 
-x lost+found 
-o "$distname"-SRPMS-disc${i}.iso 
i386-disc$(( $i + 3 ))
done