24.6. Configurando la consola serie

Contribuido por Kazutaka YOKOTA. Basado en un documento de Bill Paul.

24.6.1. Introducción

FreeBSD tiene la habilidad de arrancar en un sistema con solo una terminal tonta como consola. Tal configuración podría ser útil para dos clases de gente: administradores de sistema que quieran instalar FreeBSD en máquinas que no tienen teclado o monitor conectado, y desarrolladores que quieran corregir errores en el kernel o controladores de dispositivos.

Como se describe en Capítulo 12, FreeBSD emplea un sistema de arranque de tres estados. Los primeros dos estados se encuentran en el código del bloque de arranque el cual es almacenado al principio del slice en el disco de arranque. El bloque de arranque entonces cargará y ejecutará el cargador de arranque (/boot/loader) como la tercera etapa de código.

Para poder configurar la consola serie debe configurar el código del bloque de arranque, el código del cargador de arranque y el kernel.

24.6.2. Configuracióm de consola serie, versión breve

Esta sección asume que está usando la configuración por omisión y solo quiere una rápida revisión de la configuración de la consola serie.

  1. Conecte el cable serie a COM1 y la terminal controladora.

  2. Para ver todos los mensajes de arranque en la consola serie escriba el siguiente comando mientras está firmado como superusuario:

    # echo 'console="comconsole"' >> /boot/loader.conf
    
  3. Edite /etc/ttys y cambie dialup a vt100 para la entrada ttyd0. De otra manera una contraseña no será requerida para conectar por medio de la consola serie, resultando en un agujero de seguridad potencial.

  4. Reinicie el sistema para ver si los cambios tuvieron efecto.

Si una configuración diferente es requerida, una explicación mas detallada existe en Sección 24.6.3.

24.6.3. Configuración de la consola serie

  1. Prepare un cable serie.

    Necesitará ya sea un cable null-modem o un cable serie estándar y un adaptador null-modem. Vea Sección 24.2.2 para una discusión sobre cables serie.

  2. Desconecte su teclado.

    La mayoría de sistemas PC buscan el teclado durante la autoprueba de encendido (POST) y generarán un error si el teclado no es detectado. Algunas máquinas se quejan fuerte sobre la falta de un teclado y no continuarán arrancando hasta que este contectado.

    Si su computadora se queja con este error, pero arranca de todos modos, entonces no tiene que hacer nada especial. (Algunas máquinas con BIOS Phoenix instalado solo mostrarán “Keyboard failed” y continuarán arrancando normalmente.)

    Si su computadora se niega a arrancar sin un teclado conectado, entonces tendrá que configurar el BIOS para que ignore este error (si es posible). Consulte el manual de su tarjeta madre para los detalles de como hacer esto.

    Sugerencia: Poniendo el teclado como “No instalado” en el BIOS no significa que no podá usar su teclado. Todo lo que hace es decirle al BIOS que no busque un teclado al momento de encender, asi no se quejará si el teclado no se encuentra conectado. Puede dejar el teclado conectado incluso si esta bandera está puesta a “No instalado” y el teclado todaía funcionará.

    Nota: Si su sistema tiene un ratón PS/2® es muy probable que también tenga que desconectar su ratón junto con el teclado. Esto se debe a que los ratones PS/2 comparten algún hardware con el teclado y dejandolo conectado puede ocasionar que el sistema piense que el teclado sigue conectado. Se dice que un sistema Gateway 2000 Pentium 90 MHz con un AMI BIOS se comporta de esta manera. En general, esto no representa un problema puesto que el ratón no es muy útil sin el teclado de todas maneras.

  3. Conecte una terminal tonta a COM1 (sio0).

    Si no tiene una terminal tonta, puede utilizar una PC/XT vieja con un programa de modem, o el puerto serie en otro equipo UNIX®. Si no tiene un COM1 (sio0), consiga uno. En este momento, no existe manera de seleccionar un puerto diferente a COM1 para los bloques de arranque sin recompilar los bloques de arranque. Si ya está utilizando COM1 para otro dispositivo, necesitará remover temporalmente ese dispositivo e instalar un nuevo bloque de arranque y kernel una vez que tenga a FreeBSD arriba y funcionando. (Se asume que COM1 estará disponible en un fichero/computadora/servidor de terminales de todas maneras; si realmente necesita COM1 para algo más (y no puede cambiar ese algo a COM2 (sio1)), entonces probablemente no debería de molestarse con todo esto en primer lugar.)

  4. Asegúrese de que el fichero de configuración de su kernel tenga las banderas apropiadas activadas para COM1 (sio0).

    Las banderas relevantes son:

    0x10

    Habilita el soporte de consola para esta unidad. Las otras banderas de consola son ignoradas a menos que ésta está activada. Actualmente, al menos una unidad puede tener soporte de consola; la primera (en orden de configuración) con esta bandera activada es preferida. Esta opción por si sola no hará del puerto serie una consola. Active la siguiente bandera o utilice la opción -h descrita abajo, junto con esta bandera.

    0x20

    Obliga a esta unidad a ser la consola (a menos que exista otra consola de mayor prioridad), sin importar la opción -h discutida abajo. Esta bandera reemplaza la opción COMCONSOLE en las versiones 2.X de FreeBSD. La bandera 0x20 debe ser utilizada junto con la bandera 0x10.

    0x40

    Reserva esta unidad (en conjunto con 0x10) y hace esta unidad no disponible para acceso normal. No debería activar esta bandera en la unidad de puerto serie la cual desee utilizar como la consola serie. El único uso de esta bandera es designar la unidad para corección de errore remota del kernel. Revise “El manual del desarrollador” para mayor información sobre corrección de errores remotamente.

    Nota: En FreeBSD 4.0 o posterior la semántica de la bandera 0x40 es ligeramente diferente y existe otra bandera para especificar un puerto serie para corrección de errores remotamente.

    Ejemplo:

    device sio0 at isa? port IO_COM1 flags 0x10 irq 4
    

    Vea la página de manual sio(4) para más detalles.

    Si las banderas no fueron activadas, necesita correr UserConfig (en una consola diferente) o recompilar el kernel.

  5. Cree boot.config en el directorio raíz de la partición a del disco de arranque.

    Este fichero instruirá al código del bloque de arranque como le gustaría arrancar el sistema. Para activar la consola serie, necesita una o más de las siguientes opciones-- si quiere opciones múltiples inclúyalas todas en la misma línea:

    -h

    Cambia entre consola interna y serie. Puede usar esto para cambiar los dispositivos de consola. Por ejemplo, si arranca desde la consola interna (video), puede utilizar -h para dirigir el cargador de arranque y el kernel a que usen el puerto serie como su dispositivo de consola. Alternativamente, si arranca desde el puerto serie, puede utilizar -h para decirle al cargador de arranque y al kernel que usen el video como consola.

    -D

    Cambia entre configuración de consola simple y dual. En la configuración simple la consola será ya sea la consola interna (video) o el puerto serie, dependiendo del estado de la opción -h de arriba. En la configuración de consola dual, el video y el puerto serie se convertirán en la consola al mismo tiempo, sin importar del estado de la opción -h. De todas maneras, note que la configuración de consola dual toma efecto solamente mientras el bloque de arranca está corriendo. Una vez que el cargador de arranque toma el control, la consola especificada por la opción -h se convierte en la única consola.

    -P

    Hace que el bloque de arranque busque el teclado. Si no se encuentra un teclado, la opción -D y -h son activadas automátivamente.

    Nota: Debido a problemas de espacio en la versión actual del bloque de arranque, la opción -P es capaz de detectar unicamente teclados extendidos. Teclados con menos de 101 teclas (y carentes de teclas F11 y F12) no pueden ser detectados. Algunos teclados en laptops puede que no sean correctamente encontrados debido a esta limitación. Si este es el caso con su sistema, debe abandonar el uso de la opción -P. Desafortunádamente no hay una solución para este problema.

    Utilice ya sea la opción -P para seleccionar la consola automáticamente, o la opción -h para activar la consola serie.

    Puede incluir otras opciones descritas en boot(8) también.

    Las opciones, excepto por -P, serán pasadas al cargador de arranque (/boot/loader). El cargador de arranque determinará si el video interno o el puerto serie debería convertirse en la consola examinando el estado de la opción -h solamente. Esto significa que si especifica la opción -D pero no la opción -h en /boot.config, puede utilizar el puerto serie como consola solamente durante el bloque de arranque; el cargador de arranque usará el video interno como consola.

  6. Arranque la máquina.

    Cuando inicia su equipo FreeBSD, los bloques de arranque mostrarán los contenidos de /boot.config a la consola. Por ejemplo:

    /boot.config: -P
    Keyboard: no
    

    La segunda línea aparece solamente si pone -P en /boot.config e indica la presencia/ausencia del teclado. Estos mensajes van a la consola serie o a la interna, o a ambas, dependiendo de la opción en /boot.config.

    Opciones Mensaje va a
    ninguna consola interna
    -h consola serie
    -D consola serie e interna
    -Dh consola serie e interna
    -P, teclado presente consola interna
    -P, teclado ausente consola serie

    Despues de los mensajes de arriba, existirá una pausa pequeña antes que los bloques de arranque continuen cargando el cargador de arranque y antes de que cualquier mensaje posterior sea impreso en la consola. Bajo ciertas circunstancias, no necesita interrumpir los bloques de arranque, pero tal vez quiera hacerlo para asegurarse que las cosas están configuradas corréctamente.

    Presione cualquier tecla, diferente a Enter, en la consola para interrumpir el proceso de arranque. Los bloques de arranque entonces esperarán una entrada para determinar como continuar. Debe ver algo como esto:

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/boot/loader
    boot:
    

    Verifique que el mensaje de arriba aparece en la consola serie o en la interna o en ambas, de acuerdo a las opciones que puso en /boot.config. Si el mensaje aparece en la consola correcta, presione Enter para continuar el proceso de arranque.

    Si quiere usar la consola serie pero no ve el prompt en la terminal serie, algo está mal con su configuración. Mientras tanto, entre -h y presione Enter/Return (si es posible) para decirle al bloque de arranque (y entonces al cargador de arranque y al kernel) que elija el puerto serie como consola. Una vez que el sistema arranque, regrese y revise que fué lo que estuvo mal.

Despues que el cargador de arranque ha cargado y usted se encuentra en la tercera etapa del proceso de arranque todavía puede cambiar entre la consola interna y la consola serie activando las variables de entorno apropiadas en el cargador de arranque. Vea Sección 24.6.6.

24.6.4. Resumen

aquí está el resumen de varias configuraciones discutidas en esta sección y la consola seleccionada eventualmente.

24.6.4.1. Caso 1: Activó las banderas a 0x10 para sio0

device sio0 at isa? port IO_COM1 flags 0x10 irq 4
Opciones en /boot.config Consola durante bloques de arranque Consola durante cargador de arranque Consola en kernel
ninguna interna interna interna
-h serie serie serie
-D serie e interna interna interna
-Dh serie e interna serie serie
-P, teclado presente interna interna interna
-P, teclado ausente serie e interna serie serie

24.6.4.2. Caso 2: Activó las banderas a 0x30 para sio0

device sio0 at isa? port IO_COM1 flags 0x30 irq 4
Opciones en /boot.config Consola durante bloques de arranque Consola durante cargador de arranque Consola en kernel
ninguna interna interna serie
-h serie serie serie
-D serie e interna interna serie
-Dh serie e interna serie serie
-P, teclado presente interna interna serie
-P, teclado ausente serie e interna serie serie

24.6.5. Consejos para la consola serie

24.6.5.1. Configurando un velocidad de puerto serie más rápida

Por omisión, la configuración del puerto serie es: 9600 baud, 8 bits, sin paridad, y 1 bit de parada. Si desea cambiar la velocidad, necesita recompilar al menos los bloques de arranque. Agregue la siguiente línea a /etc/make.conf y compile nuevos bloques de arranque:

BOOT_COMCONSOLE_SPEED=19200

Vea Sección 24.6.5.2 para instrucciones detalladas sonre construir e instalar nuevos bloques de arranque.

Si la consola serie está configurada de alguna otra manera que arrancando con -h, o si la consola serie usada por el kernel es diferente de la usada por los bloques de arranque, entonces también debe agregar la siguiente opción al fichero de configuración del kernel y compilar un nuevo kernel:

options CONSPEED=19200

24.6.5.2. Usando puertos serie para consola diferentes a sio0

Utilizar un puerto serie diferente a sio0 como consola requiere cierta recompilación. Si quiere usar otro puerto serie por la razón que sea, recompile los bloques de arranque, el cargador de arranque y el kernel como sigue.

  1. Consiga las fuentes del kernel. (Vea Capítulo 23)

  2. Edite /etc/make.conf y ponga BOOT_COMCONSOLE_PORT a la dirección del puerto que quiera usar (0x3F8, 0x2F8, 0x3E8 o 0x2E8). Solamente de sio0 hasta sio3 (COM1 hasta COM4) pueden usarse; tarjetas multipuertos serie no funcionarán. No se necesita especificar interrupción.

  3. Cree un fichero personalizado de configuración de kernel y agrege las banderas apropiadas para el puerto serie que desee utilizar. Por ejemplo, si desea hacer de sio1 (COM2) la consola:

    device sio1 at isa? port IO_COM2 flags 0x10 irq 3
    

    o

    device sio1 at isa? port IO_COM2 flags 0x30 irq 3
    

    Las banderas de consola para otros puertos serie no deben activarse.

  4. Recompile e instale los bloques de arranque y el cargador de arranque:

    # cd /sys/boot
    # make clean
    # make
    # make install
    
  5. Reconstruya e instale el kernel.

  6. Escriba los bloques de arranque al disco de arranque con disklabel(8) y arranque desde el nuevo kernel.

24.6.5.3. Accesando DDB Debugger desde la línea serie

Si desea entrar al modo kernel debugger desde una consola serie (útil para diagnósticos remotos, !pero también peligroso si genera un BREAK ilegítimo en el puerto serie!) entonces debe compilar con las siguientes opciones:

options BREAK_TO_DEBUGGER
options DDB

24.6.5.4. Obteniendo un prompt de login en la consola serie

Aunque esto no es requerido, tal vez quiera obtener un prompt de login a través de una línea serie, ahora que puede ver los mensajes de arranque y puede entrar a una sesión en modo kernel debug a través de la consola serie. Aquí está como hacerlo.

Abra el fichero /etc/ttys con un editor y localice las líneas:

ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure

ttyd0 hasta ttyd3 corresponde a COM1 hasta COM4. Cambie off a on para el puerto deseado. Si ha cambiado la velocidad del puerto serie, necesita cambiar std.9600 para que concuerde con los parámetros actuales, ej. std.19200.

Tal vez tambien desee cambiar el tipo de terminal de unknown al tipo actual de su terminal serie.

Despues de editar el fichero, debe hacer un kill -HUP 1 para que este cambio surta efecto.

24.6.6. Cambiando la consola desde el cargador de arranque

Secciones anteriores describieron como instalar la consola serie manipulando el bloque de arranque. Esta sección muestra que puede especificar la consola especificando algunos comandos y variables de entorno en el cargador de arranque. Como el cargador de arranque es invocado en la tercera etapa del proceso de arranque, despues del bloque de arranque, las propiedades en el cargador de arranque sobreescribirán las del bloque de arranque.

24.6.6.1. Instalando la consola serie

Puede facilmente especificarle al cargador de arranque y al kernel que utilicen la consola serie escribiendo solamente una línea en /boot/loader.rc:

set console="comconsole"

Esto tendrá efecto sin importar las opciones del bloque de arranque discutidas en la sección previa.

Es mejor que ponga la línea de arriba como la primera línea en /boot/loader.rc para ver los mensajes de arranque en la consola serie tan pronto como sea posible.

De igual manera, puede especificar la consola interna como:

set console="vidconsole"

Si no activa la variable de entorno console, el cargador de arranque, y por consecuencia el kernel, utilizarán cualquier consola que esté indicada por la opción -h en el bloque de arranque.

En versiones 3.2 o posteriores, puede especificar la consola en /boot/loader.conf.local o /boot/loader.conf, en lugar de /boot/loader.rc. En este método su /boot/loader.rc debe verse como:

include /boot/loader.4th
start

Entonces, puede crear /boot/loader.conf.local y ponerle la siguiente línea.

console=comconsole

o

console=vidconsole

Vea loader.conf(5) para mayor información.

Nota: Hasta el momento, el cargador de arranque no tiene una opción equivalente a la opción -P del bloque de arranque, y no existe una manera de seleccionar automáticamente la consola interna y la consola serie basandose en la presencia del teclado.

24.6.6.2. Utilizando un puerto serie para la consola diferente a sio0

Necesita recompilar el cargador de arranque para usar un puerto serie diferente a sio0 para la consola serie. Siga el procedimiento descrito en Sección 24.6.5.2.

24.6.7. Advertencias

La idea aquí es permitir a las personas configurar servidores dedicados que no requieran hardware de gráficos o teclados conectados. Desafortunádamente, mientras la mayoría de los sistemas le permitirán arrancar sin un teclado, existen bastantes que no le permitirán arrancar sin un adaptador de gráficos. Máquinas con BIOS AMI pueden configurarse para arrancar sin adaptadores de gráficos instalados cambiando simplemente la opción “graphics adapter” en la configuración del CMOS a “Not installed.”

De cualquier manera, muchas máquinas no soportan esta opción y se negarán a arrancar si no tiene algún hardware de gráficos instalado en el sistema. Con estas máquinas, debe dejar algún tipo de tarjeta gráfica instalada, (incluso si solamente es una tarjeta mono barata) aunque no tendrá que conectarle un monitor. También puede tratar instalando un BIOS AMI.

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.