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, El proceso de arranque en FreeBSD, 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.
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.
Conecte el cable serie a COM1 y la terminal controladora.
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
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.
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, “Configuración de la consola serie”.
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, “Cables y puertos” para una discusión sobre cables serie.
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.
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á.
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.
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.)
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.
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.
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.
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.
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, “Cambiando la consola desde el cargador de arranque”.
aquí está el resumen de varias configuraciones discutidas en esta sección y la consola seleccionada eventualmente.
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 |
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 |
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, “Usando puertos serie para consola diferentes a sio0
” 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
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.
Consiga las fuentes del kernel. (Vea Capítulo 23, Lo último de lo último)
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.
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.
Recompile e instale los bloques de arranque y el cargador de arranque:
#
cd /sys/boot
#
make clean
#
make
#
make install
Reconstruya e instale el kernel.
Escriba los bloques de arranque al disco de arranque con disklabel(8) y arranque desde el nuevo kernel.
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
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.
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.
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.
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.
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, “Usando puertos serie para consola diferentes a sio0
”.
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>.