7. Boot Bios

The BIOS is the initial program, on the system boards ROM's. DOS uses it to access the hardware, Linux doesn't use it, except to boot-strap-load the kernel. Press Del For setup

Note that the SVGA comes with it's own ROM, which becomes a part of the BIOS. Ditto for SCSI cards and optionally, network cards that boot over the network (without a primary disk).

7.1 BIOS SETUP
7.2 BIOS settings
7.3 BIOS detects disks
7.4 BIOS BOGUS disk geometry
7.5 BIOS IDE HDD Block Mode = Disabled
7.6 BIOS Shadow and cache
7.7 BIOS Clocks + TIMEZONE

7.1

BIOS SETUP

Different manufacturers' BIOS's have different menus, with special options that only they offer. But they are all reassuringly simple and familiar. Albeit clumsy and with no HELP-TEXT.

Design Bugs permitting, BIOS's are clever programs that can detect a serial UART at any standard IO_PORT address. BIOS's are dumb programs, you can tell them things that aren't strictly true.

The BIOS can tell you that the disks are installed and talking sense.

If you have a monochrome display, there is an F5-color key somewhere. eg SHIFT-F2 The opening menu offers you categories of things to configure such as:

Standard CMOS
BIOS features
CHIPSET features
POWER MANAGEMENT

PASSWORD
IDE HDD AUTO DETECT

save + exit
abandon + exit
load BIOS defaults
load SETUP defaults

load BIOS defaults means take pre-defined "safe" values from the ROM-BIOS. The BIOS should do this automatically, when it detects a CMOS checksum error (never booted before). Running this is like taking the battery away from the CMOS memory.

load SETUP defaults means revert to values as previously saved (is as now).

Standard CMOS

DATE = 
TIME = 
A: = 3.5"
B: = ABSENT 5.25"
C: = 1.2 GB 2240 cylinders (etc)
VIDEO = VGA

BIOS features

BOOT_SEQ = A: then C:
shadow ZONE = disabled
CPU Internal cache = enabled
EIDE Block mode disabled
(Linux take control of blocking)

CHIPSET features

Auto configuration 
(use to get better defaults then disable)
DRAM WAIT STATE = 1 WS
ISA Bus clock = CLKI / 4 (-?- 10 MHz)
VIRUS - detect and prevent write
to fdisk or boot sectors OFF
(else the system will HALT when you run fdisk)

POWER MANAGEMENT

detect system activity = watch keyboard mouse ...
spin down EIDE after 2 minutes idle
switch CPU into 1/2 speed 
VIDEO OFF = blank_screen -or- monitor SYNC blank 

I use spin down, and it is sometimes irritating as it takes a handful of seconds to come back. If this is a code page for the X11 SVGA driver or a swap page for an application, the screen may appear to 'freeze' during this time, but you will hear the disks spinning up. Hopefully this won't be followed by the other disks also spinning up!

Locate and run the hdparm(8) so that you have 20 minutes before spin-down. Less causes excessive wear and tear on your drives.

I dont configure the range of screen-off power saving into BIOS, as I prefer to do it through Linux. The X11 documentation suggests that a screen-blanking screen saver is semi-useless, you should get the monitor into standby mode, where it burns a lot less enery as well as less phosphor.

7.2

BIOS settings

The Motherboard manual tells you exactly how to set the dip-switches and jumpers. It also lists all of the options you will be presented with during the 'press DEL to run SETUP' stage. Note that "Load BIOS defaults", means lose all existing config, and revert to the most cautious settings possible. Do that once, then think hard - the safe options will reduce the speed of your system. However pushing options to their limits may cause 'intermittent' failures (eg memory parity errors).

In addition, overclocking CPU's can cause them to deteriorate, until they become marginal and fail. ie they get older sooner.

Remember to disable VIRUS protection before running fdisk or lilo, as they both write to the boot sector, and the circuitry that the BIOS controls would halt the machine. Similarly disable BIOS multi-blocking, so that Linux feels free to reconfigure it.

7.3

BIOS detects disks

I have a VLB multi function EIDE x 2 UART x 2 PARALLEL. You may have these on the mother-board, saving a PCI slot.

In the same way as detecting serial UART chips, BIOS can detect IDE controller card chips. The system BIOS will probably only be aware of the FIRST IDE controller of the pair (and the first two disks). The Linux kernel will detect the second EIDE (and the other two disks). DOS won't use the second EIDE controller until you get the DOS device drivers loaded (the IDE controller -or-just- the cdrom controller). LILO can't be loaded from the second EIDE controller, because BIOS can't see it.

Newer BIOS's have newer abilities.

BIOS detects disk (geometry)

The BIOS display menu for the disk drives allows YOU to tell BIOS what to tell DOS what disks you have (ie disk geometry). With E-IDE, BIOS can now grope disks for their geometry and manufacturers label - by asking them!

If that screen offers an option to "search for disks", it will take a long time if the device is not there. If it comes back quickly with the right answers, then your disk drive is plugged in, not upside down.

Now that your keyboard, screen, memory, UARTS, disk, CD, floppy, BIOS settings ... are all working, you can proceed and boot an OS from the floppy, which will then load an OS onto the disk. Configure it to boot and boot it!

You will soon be running FDISK to create disk partitions, so read up on that now, but first here's some information on the BIOS settings that you have already set.

7.4

BIOS BOGUS disk geometry

Before EIDE, you had to tell BIOS the geometry of the IDE disks, eg 1024/16/63 (cylinders/heads/sectors). With EIDE, the disk can tell BIOS, or you can tell BIOS.

BIOS still has a 1024 reachable cylinder per disk limit, which makes disks bigger than 0.5G tricky. One workaround, is to halve the number of cylinders and double the number of heads (or quadruple), and you program fdisk with the fake geometry (which is now 1024 or less).

Linux does not need this! Once the kernel is loaded, it controls the disks, and can access the full range of addresses. Before the kernel is loaded, BIOS and LILO are still limited to 1024.

Personally I put my boot partition (10 MB) and my DOS partition below 1024 cylinders, and then the Linux stuff upto the line and beyond. I don't use fake geometries, I prefer things to be "as they are".

I don't use any strange DOS software to tell other lies about the disk geometry, any DOS diskette will boot my drive (something to think about, as you do it less frequently ;-)

7.5

BIOS IDE HDD Block Mode = Disabled

The BIOS IDE menus may also offer you options to optimise your EIDE controllers and disks, when using them from DOS without any drivers. These should be disabled so that the DOS driver (in config.sys) or the Linux Kernel can take control of the card without BIOS interfering.

Setting this switch does not disable the facility on the card, it stops BIOS from using the facility. If you are running an intelligent driver, you don't want that.

If IDE HDD Block Mode is "Enabled", BIOS will use it, DOS-without-the-driver will use it, but DOS with the driver WON'T, and Linux won't either! SEE: hdparm(8)

Set it to Disabled.

7.6

BIOS Shadow and cache

BIOS offers the option of shadowing memory zones, and disabling the cache in memory zones.

Those zones are where on-card ROM's appear, and also on-card RAM - possibly used for special IO.

Shadowing, means copying the ROM into RAM, and overlaying the RAM where the ROM was found. You only want that if you spend a lot of time in DOS, disable it, it is a waste of memory for Linux.

Linux does not use the SVGA BIOS, or other ROMS. It has equivalent code built into the kernel. Having shadowing enabled is using up memory pages for no reason (unless you often run DOS). DOSEMU also expects it to be disabled. (usually).

You can leave cache on, but if the on-card memory is actually a special communications buffer for the device (eg network packet data in, or POKE data to this memory location to make the device do something) then disable the cache for those zones, otherwise three reads (of different values) will be optimised by the CPU/board into one read, "assuming memory doesn't change itself".

Disable shadow-ROMS every-where.

Go through your list of cards, disabling cache over device memory pages. Some BIOS's may already disable cache where a DRAM page is not mapped. ie any on-card memory that is detected in the area where cards appear is either shadowed (and cached) or not shadowed, and not cached.

It doesn't make a lot of difference, but you do want ROM's to be cached, so that boot-up is quicker.

7.7

BIOS Clocks + TIMEZONE

When the system boots, Linux read the CMOS clock. After that, Linux maintains it's own timers and clocks. If you adjust the kernel clock, remember to write it back to the CMOS clockC with: clock -uw

The dumb thing to do is to set the PC clock to your local time, so that it makes sense to you and to DOS. You will have to adjust the clocks twice a year, when they go forward and back (spring + fall).

The correct thing to do is to set the PC clock to UST Universal-Standard-Time, ie GMT or Zulu time. You tell Unix that you have a 'local' clock that is different from GMT by a fixed amount, and that summer-time is apparently 1 hour later.

All system utilities are designed to adjust for the local time zone, including ls -l which reports the timestamps on files.

This is set by the Slackware installation setup into /usr/lib/zoneinfo and /var/adm/setup/setup.timeconfig. I selected the GB-EIRE zoneinfo file.

NOTE: If your system CMOS battery loses power (eg whilst installing a card), you have to set the time in the kernel, then get that time written to the hardware clock. (That's earier than rebooting and setting it in the BIOS setup screens).