0166c5c6b4
hd essentially wired the FreeBSD drive number to 0 without changing the BIOS drive number. Now the numbers can be specified independently. Replaced the BOOT_HD compile time flag with with BOOT_HD_BIAS. Defining the new flag as 1 should give the same behaviour as defining the old flag as anything. I haven't tested defining these flags.
156 lines
7.7 KiB
Plaintext
156 lines
7.7 KiB
Plaintext
|
|
SERIAL CONSOLE USAGE NOTES
|
|
Written by
|
|
Bill Paul <wpaul@ctr.columbia.edu>
|
|
|
|
The FreeBSD boot block can now be used to boot FreeBSD on a system with
|
|
only a dumb terminal on a serial port (COM1) as a console. This feature
|
|
is provided for the benefit of people who wish to install FreeBSD on
|
|
dedicated file/compute/terminal server machines that have no keyboard
|
|
(or monitor) attached, just as is possible with Sun workstations and
|
|
servers. People who don't need this extra functionality shouldn't notice
|
|
the changes at all (unless I've screwed something up horribly).
|
|
|
|
Note that 'options COMCONSOLE' can still be used to force the kernel to
|
|
boot in 'serial console' mode regardless of what boot options you use.
|
|
|
|
To boot FreeBSD in serial console mode, you must do the following:
|
|
|
|
- UNPLUG YOUR KEYBOARD. Most PC systems probe for the keyboard during the
|
|
Power-On Self-Test (POST) and will generate an error if the keyboard
|
|
isn't detected. Additionally, many machines will pause the boot process
|
|
and wait for you to reattach the keyboard and press a key before
|
|
proceeding any further. If your computer complains about the lack of a
|
|
keyboard but boots anyway, then you don't have to do anything special.
|
|
(One machine with a PHOENIX BIOS that I have here merely says 'Keyboard
|
|
failed' then continues to boot normally.) If your machine complains
|
|
loudly about the lack of a keyboard and won't continue to boot until you
|
|
plug it back in, you'll have to go into your CMOS configuration menu and
|
|
change the 'Keyboard' setting to 'Not installed' in order to bypass the
|
|
keyboard probe.
|
|
|
|
NOTE #1:
|
|
Setting the keyboard to 'Not installed' in the CMOS configuration
|
|
does *NOT* mean that you won't be able to use your keyboard. All this
|
|
does is tell the BIOS not to probe for a keyboard at power-on so that
|
|
it won't bitch and moan if the keyboard isn't plugged in. You can leave the
|
|
keyboard plugged in even with this flag set to 'Not installed' and the
|
|
keyboard will still work. I repeat: changing the CMOS 'keyboard' setting
|
|
to 'Not installed' only disables the BIOS's keyboard probe; it does
|
|
*NOT* actually disable the keyboard.
|
|
|
|
NOTE #2:
|
|
If your system has a PS/2 mouse, chances are very good that you will
|
|
need to unplug your mouse as well as your keyboard. This is because
|
|
PS/2 mice share some hardware with the keyboard, and leaving the mouse
|
|
plugged in can fool the keyboard probe into thinking the keyboard is
|
|
still there. I have access to a Gateway 2000 Pentium 90Mhz system with
|
|
an AMI BIOS that behaves this way. In general this is not a problem
|
|
since the mouse isn't much good without the keyboard anyway.
|
|
|
|
- PLUG A DUMB TERMINAL INTO COM1. If you don't have a dumb terminal, you
|
|
can use an old PC/XT with a modem program, or the serial port on
|
|
another UNIX box. If you don't have a COM1, get one. At this time,
|
|
there is no way to select a port other than COM1 without recompiling
|
|
both the kernel and the boot blocks. If you're already using COM1 for
|
|
another device, you'll have to temporarily remove that device and
|
|
install a new boot block and kernel once you get FreeBSD up and running.
|
|
(It is assumed that COM1 will be available on a file/compute/terminal
|
|
server anyway; if you really need COM1 for something else (and you can't
|
|
switch that something else to COM2), then you probably shouldn't even
|
|
be bothering with all this in the first place.)
|
|
|
|
NOTE #1:
|
|
The serial port settings are hardcoded to 9600 baud, 8 bits, no parity,
|
|
1 stop bit.
|
|
|
|
NOTE #2:
|
|
In addition to a serial cable, you will need a null modem adapter
|
|
in order to connect the terminal to the PC's serial port. If you don't
|
|
have one, go to Radio Shack and buy one: they're cheap.
|
|
|
|
- BOOT THE MACHINE. The boot block will probe for a keyboard on your
|
|
system. If it fails to find one, you'll see a prompt appear on the
|
|
terminal that looks something like this:
|
|
|
|
No keyboard found.
|
|
|
|
>> FreeBSD BOOT @ 0x10000: 640/7168 k of memory
|
|
Usage: [[[0:][fd](0,a)]/kernel][-abcCdhrsv]
|
|
Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1
|
|
Use ? for file list or press Enter for defaults
|
|
Boot:
|
|
|
|
This is identical to the prompt that normally appears on the VGA console,
|
|
except for the 'No keyboard found' message that indicates a keyboard
|
|
couldn't be detected. (If a keyboard is detected, the boot prompt will
|
|
appear on the VGA display as usual.)
|
|
|
|
From here you can boot the system (or let it autoboot by itself) just
|
|
like you can from the VGA console and the kernel will automatically
|
|
use COM1 as the console device. No recompilation or 'options COMCONSOLE'
|
|
is required. This is done by passing a special flag to the kernel in
|
|
the 'boothowto' word. (The curious can refer to <sys/reboot.h> and the
|
|
sio driver sources for details.)
|
|
|
|
- You will notice that there's a new boot flag: -h. You can use this to
|
|
force the kernel to switch console devices. For instance, if you boot
|
|
from the VGA console, you can use -h to force the kernel to use the
|
|
serial port as its console device. Alternatively, if you boot from
|
|
the serial port, you can use the -h to force the kernel to use the VGA
|
|
display as the console instead. (Can you say 'toggle' boys and girls?
|
|
I knew you could. :)
|
|
|
|
|
|
Should you wish to force booting off a serial console no matter if
|
|
there's a keyboard connected or not, you can also uncomment the line
|
|
with the ``FORCE_COMCONSOLE'' definition in the Makefile. Remake and
|
|
reinstall your bootblocks, and finally relabel your disk (disklabel -B)
|
|
to pick up those boot blocks.
|
|
|
|
|
|
CAVEATS:
|
|
|
|
- The idea here is to allow people to set up dedicated servers that require
|
|
no graphics hardware or attached keyboards. Unfortunately, while (most?)
|
|
every system will let you boot without a keyboard, there are quite a few
|
|
that will not let you boot without a graphics adapter. Machines with
|
|
AMI BIOSes can be configured to boot with no graphics adapter installed
|
|
simply by changing the 'graphics adapter' setting in the CMOS configuration
|
|
to 'Not installed.' However, many machines do not support this option
|
|
and will refuse to boot if you have no display hardware in the system. With
|
|
these machines, you'll have to leave some kind of graphics card plugged in,
|
|
(even if it's just a junky mono board) although you won't have to attach
|
|
a monitor into it. You might also try installing an AMI BIOS. :)
|
|
|
|
- Using a port other than COM1 as the console requires some recompiling.
|
|
Again, it's usually assumed that COM1 will be available for use as a
|
|
console device on a dedicated file/compute/terminal server, so hopefully
|
|
you'll never need to do this. But if you feel you must change the console
|
|
to a different port, here's how:
|
|
|
|
o Get the kerndist kernel source package.
|
|
o Edit /sys/i386/boot/biosboot/Makefile and set COMCONSOLE to the
|
|
address of the port you want to use (0x3F8, 0x2F8, 0x3E8 or
|
|
0x2E8). Only COM1 through COM4 can be used; multiport serial
|
|
cards will not work. No interrupt setting is needed.
|
|
o Create a custom kernel configuration file and add the following
|
|
lines:
|
|
|
|
options "CONADDR=0x3F8"
|
|
options "CONUNIT=0"
|
|
|
|
Set CONADDR to the same address that you selected for COMCONSOLE
|
|
in the bootbios Makefile. Set CONUNIT to the unit number of the
|
|
serial port that this address corresponds to (0 = sio0, 1 = sio1,
|
|
etc). This implies that the serial port you want to use must be
|
|
configured into the kernel in the normal way first. I'm not
|
|
going to list all the possible combinations here; just use your
|
|
head and you should be okay.
|
|
o Recompile both the boot blocks and the kernel.
|
|
o Install the boot blocks with the disklabel command and boot
|
|
from the new kernel.
|
|
|
|
|
|
$Id: README.serial,v 1.3 1995/04/20 23:15:07 joerg Exp $
|