Bitacoreando

31/10/2003

Instalación Kickstart de Red Hat 9 COMO

OK. Lo he vencido :-)

Por fin pude hacer una instalación kickstart de Red Hat 9. Esta forma es una de las posibles combinaciones y es un poco lenta al principio, porque requiere dos diskettes y no un CD que es mucho más rápido. Lo que quise hacer fue una instalación kickstart basada en floppies, con instalación del sistema operativo por NFS.

  1. Crear un árbol de imágenes ISO disponible por NFS para que de ahí se haga la instalción.

    Utilicé una caja Red Hat 7.3 como mi servidor de NFS. Ahí metí uni por uno los CD’s de RH 9 y luego utilicé dd para sacar una copia fiel del disco:

         dd if=/dev/cdrom of=RHL9_disc1.iso bs=1M count = 700
    

    –NOTA — Eduardo Moreno me dice que es mejor usar readcd de la distribución de cdrecord porque es más eficiente para poder sacar las imágenes ISO. A mi dd me funcionó muy bien.

    – NOTA 2 — el -count=700 quiere decirle a dd que trate de leer 700 Mb. Eso es mayor a lo que mide un CD tradicional, y dd va a marcar un error al final, pero en mi experiencia, no se corrompe la imágen iso. Otra vez, si prefieres, usa el readcd

    OK. ya que contamos con los ISOS, lo que sigue es exportarlos por NFS. los pasos son los siguientes:

         #echo '/ruta/a/los/isos *(ro)' >>/etc/exports/    # exporta el arbol /ruta/a/los/isos en modo de sólo lectura a quien sea.
         #service portmap start
         #service nfslock start
         #service nfs start
    

    O si ya está corriendo el NFS:

         # service nfs reload
    
  2. Crear una imagen modificada del disco de inicio

    Para tener acceso a la imágen del disco de inicio, te propongo que en la misma máquina donde estás almacenando los ISOS, hagas lo siguiente:

          #cd
          #mkdir rh1
          #mount /ruta/a/los/isos/RHL9_disc1.iso rh1/ -o loop
          #cp rh1/images/{bootdisk,drvnet}.img .  #necesitamos las imágenes para inicio y los drivers de red.
          #umount rh1/
          #mount bootdisk.img rh1/ -o loop # para no hacer otro directorio :-)       #vi rh1/syslinux.cfg
    

    Ahora la idea es modificar dos cosas: Uno es el archivo de configuración del sistema de arranque, que es syslinux, y sólo para estar seguros que todo va bien, poner nuestra firma el una pantalla de mensaje.

    En syslinux.cfg, hay que hacer las siguientes entradas:

    	default ks
    	timeout 5   < --- para que no se tarde mucho en iniciar
    	display snake.msg
    

    y en la entrada de label ks:

    	append ks=nfs:dir.ip.del_server.nfs:/ruta/a/los/isos/ks.cfg dd initrd=initrd.img
    

    explicación:

    	nfs:dir.ip.del_server.nfs:/ruta/a/los/isos/ks.cfg
    	se buscará el archivo kickstart en el servidor nfs con direccion IP tal
    	en la ruta mostrada, y su nombre es ks.cfg
    

    Es posible tener muchos archivos de kickstart diferentes, para diferentes equipos.

    La razón de que se necesite la dirección IP es para evitar problemas. El instalador se configura por DHCP para poder usar servicios NFS (entre otros); En mi red, por ejemplo, casi todas las máquinas son linux y como son estaciones de trabajo y a veces probamos aplicaciones que requieren DNS para funcionar correctamente, asignamos nuestros propios dominios de prueba (tipo aplicacion.cliente o aplicacion.desarrollador), a nosotros nos ha servido bastante bien el poner direcciones fijas y no poner un servidor linux con DHCP, así que le dejamos la chamba de asignar direcciones IP dinámicas a un router inalámbrico que nos conecta a infinitum.

    Resulta que ese router inalámbrico no es configurable y que para no hacerles el cuento largo, aunque asigna correctamente las direcciones internas de mi red, no asigna el DNS interno de nuestra red por lo cual, el instalador no encuentra dominios privados tan fácil.

    Si tu tienes control sobre el servidor DHCP, puedes reescribir la entrada de ks asignando un nombre de máquina en lugar de IP.

    Ahora editamos el archivo snake.msg, sólo por diversión, para poner una línea como

    		INSTALACION PERSONALIZADA KICKSTART POR NFS

    abajo de la viborita :-)

    Ahora, se desmonta la imágen que estabamos usando:

    	#umount rh1
    

    Por último, etiquetas dos diskettes y copias las dos imágenes que sacamos del CD hace rato, cada una en un diskette diferente

    	#dd if=bootdisk.img of=/dev/fdo bs=1440k
    	#dd if=drvnet.img of=/dev/fdo bs=1440k
    

  3. on del archivo kickstart

    Aquí la cosa se pone un poco complicada, porque hay una gran cantidad de información que tomar en cuenta. Como mencioné anteriormente, yo estoy uitilizando una caja RH 7.3 como servidor principal.

    Aunque el archivo ks.cfg no tiene mucha ciencia, es medio latoso hacerlo totalmente a mano; existe una utilería llamada ksconfig, que sirve para poder llenar interactivamente los datos necesarios, pero el formato y las opciones que cada versión del instalador (anaconda) requiere han cambiado. De hecho, encontré que aún utilizando el ksconfig que viene con RHL9, anaconda truena porque genera un archivo inválido!.

    Por lo tanto, utilizar el ksconfig de RH7.3 ciegamente era prácticamente una receta para el fracaso. Mi solución fué usar el ksconfig de otra caja RH9 y luego editarlo cuidadosamente a mano, siguiendo la documentación de Red Hat para la versión 9. SUPONGO que si se usa el ksconfig de RH7.3 igual puede hacer parte de la chamba, pero igual habrá que revisar línea por línea para asegurarse que no truene.

    — La documentación de Red Hat para las opciones de configuración de los archivos kickstart está aquí

    — El ksconfig viene en el RPM redhat-config-kickstart

    Mi archivo kickstart se ve así:

    -----------------------------------------
    #Generated by Kickstart Configurator
    
    #System  language
    lang en_US
    #Language modules to install
    langsupport es_ES --default=en_US
    #System keyboard
    keyboard es
    #System mouse
    mouse genericwheelps/2
    #Sytem timezone
    timezone America/Mexico_City
    #Root password
    rootpw 123456
    #Reboot after installation
    reboot
    #Use text mode install
    text
    #Install Red Hat Linux instead of upgrade
    install
    #Use NFS installation Media
    nfs --server=192.168.2.201 --dir=/var/isos
    #System bootloader configuration
    bootloader --location=mbr --md5pass=$1$BKfIUfY3$aQ.QexnAPrjhTpDZ74yO0.
    #Partition clearing information
    clearpart --linux
    #Disk partitioning information
    part /boot --fstype ext3 --size 100 --noformat
    part / --fstype ext3 --size 1100 --grow --noformat
    part swap --fstype swap --size 512
    #System authorization infomation
    auth  --useshadow  --enablemd5
    #Network information
    network --bootproto=static --ip=192.168.2.200 --netmask=255.255.255.0 --gateway=192.168.2.1 --nameserver=192.168.2.41 --device=eth0
    #Firewall configuration
    firewall --disabled
    #XWindows configuration information
    xconfig --depth=24 --resolution=1024x768 --startxonboot --card="ATI Mach64 3D RAGE II" --videoram=4096 --hsync=30-61 --vsync=50-120 --defaultdesktop=KDE
    #Package install information
    %packages --resolvedeps
    @ X Window System
    @ KDE Desktop Environment
    @ Editors
    @ Graphical Internet
    @ Text-based Internet
    @ Office/Productivity
    @ Sound and Video
    @ Graphics
    @ Games and Entertainment
    @ SQL Database Server
    @ Kernel Development
    @ Administration Tools
    @ Printing Support
    %pre
    %post --nochroot --interpreter=/mnt/sysimage/bin/bash
    #!/mnt/sysimage/bin/bash
    mkdir -p /root/isos && \
    mount 192.168.2.201:/var/isos /root/isos -o ro  && \
    rpm -Fvh /root/isos/RHL9_updates/*rpm
    
    -----------------------------------------
    
  4. Notas sobre mi configuración:

    • #Use NFS installation Media
      nfs --server=192.168.2.201 --dir=/var/isos
      

      Este es el corazón de la instalación. Aquí es donde le dices a anaconda que baje los RPMS del servidor NFS que instalaste antes. El mío es el 192.168.2.201 y exporto el directorio /var/isos

    • #XWindows configuration information
      xconfig --depth=24 --resolution=1024x768 --startxonboot --card="ATI Mach64 3D RAGE II" --videoram=4096 --hsync=30-61 --vsync=50-120 --defaultdesktop=KDE
      

      Aquí hice trampa. Anteriormente había instalado manualmente esta caja y me basé en la instalación inicial para hacer mi archivo ks.cfg Se puede hacer la instalación de las X de forma interactiva, pero mi idea era que casi no se tuviera que hacer nada más.

    • #Package install information
      %packages --resolvedeps
      @ X Window System
      .
      .
      .
      

      Aquí también hice trampa, y mas bien modifiqué la lista original de los grupos de paquetes que anaconda hizo la primera vez. Para hacer una lista desde cero, hay que revisar el archivo comps.xml que se encuentra en el disco 1 de Red Hat. Obviamente pon lo que necesites aquí.

    • %post  --interpreter=/bin/bash
      #!/bin/bash
      mkdir -p /root/isos && \
      mount isos:/var/isos /root/isos -o ro  && \
      rpm -Fvh /root/isos/RHL9_updates/*rpm
      

      Esto es interesante. Resulta que bajé todos los updates de Rad Hat 9 y los puse en el mismo directorio de donde exporto las imágenes ISO. La instalación kickstart te permite ejecutar scripts al final de la instalación. Ahora, dado que no has inicializado tu máquina, todavía estas bajo la instalación del CD, es por eso que el intérprete de mi script no es /bin/bash sino que quiero usar el que acaba de llegar al disco. El caso es que lo que estoy dicéndole a la máquina que haga, es básicamente

      Aquí es donde el kickstart realmente puede ayudarte. Pones scripts que den de alta la máquina en el DNS de tu red (si es que no usas algún mecanismo mas automatizado), que den de alta servidores de DNS secundarios (modificando el /mnt/sysimage/etc/resolv.conf), ajustar el firewall, prender y apagar servicios (con checkconfig), ponerle nombre a la máquina (cambiar el /mnt/sysimage/etcy/sysconfig/hostname, etc., etc.

      Para efectos de mi estudio para ser RHCE, lo que quiero es que jale. Lo demás es vanidad.

  5. Proceso de inicialización
    El proceso es muy sencillo: Pones el disquete de boot en la disquetera, prendes tu máquina, deberás de ver una viborita y la línea que escribiste antes. Depués de eso, te va a pedir el diskette de drivers, lo pones, le dices que no vas a usar otros y eso es todo.

Saludos
Rubén

Filed under: Tech stuff — ruben @ 10:01 am

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress