home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BURKS 2
/
BURKS_AUG97.ISO
/
LINUX
/
BOOTING.TXT
(
.txt
)
next >
Wrap
Text File
|
1997-04-19
|
19KB
|
515 lines
Fri Jun 28 18:55:07 PDT 1996
This file contains some helpful (hopefully! :^) information on what to do if
your Linux system won't boot properly.
Section 1: What to do if after the installation process, the machine will
not boot.
This problem is not uncommon. The reason for it is that the kernel your system
tries to boot after installation is not the same as the one used to install (the
bootdisk kernel). Typically the kernel that is installed to your hard drive
will contain more device drivers, and sometimes one of them won't like some
piece of hardware in your machine.
There are a couple of approaches that can be used to deal with this situation.
Perhaps the simplest solution is to open up the machine and pull any cards that
aren't crucial, and then try to reboot the system. If this is successful, then
follow the instructions in the FAQ.TXT for building and installing a kernel
that is customized for your hardware.
Another approach (that doesn't involve opening the machine) is to try to use the
bootdisk you installed with to kickstart the system. To do this, boot the disk
and then use the "mount" option to have the kernel boot the root partition on
your hard drive rather that a root/install disk. Let's assume your root Linux
partition is on /dev/hda2. To boot the system, you'd use this command at the
LILO prompt on the bootdisk:
mount root=/dev/hda2
Section 2: Trying to get the kernel to detect hardware.
The first thing you should do is make sure you're using a kernel that supports
the hardware you're trying to use. If it doesn't, you've got a few options for
how to add the support. You can compile a custom kernel of your own, or you
can look for an appropriate pre-compiled kernel in the /kernels directory.
Another approach is to try loading a kernel module to add the extra support you
need. This is usually the fastest and easiest way to get a device working, so
you might want to try it first. Use 'vi' (or some other editor) to edit the
file /etc/rc.d/rc.modules. Look for a module that supports the hardware you
want to get working, remove the '#' from the beginning of the line, and fill in
any extra parameters that the module might require.
If you install a new kernel, be sure to reinstall LILO afterwards (if you use
it). For more details on installing a kernel, see the FAQ.TXT.
There are a number of extra parameters that can be used on the LILO bootdisk
prompt, with Loadlin, or in your /etc/lilo.conf. These flags help tell the
kernel which I/O port, IRQ, and so forth, that a particular piece of hardware
uses, so that if the kernel doesn't see a peripheral while autoscanning you
should be able to force detection by telling the kernel exactly where to look.
To use an extra flag with a bootdisk, put the flags after the standard command
used to boot the system. So, to boot /dev/hda2 and try to force detection of
a Mitsumi CD-ROM drive with Mitsumi interface card, you might use something
like this at the LILO prompt:
mount root=/dev/hda2 mcd=0x300,11
To use a parameter with Loadlin, just add it to the end of the boot command
in a similar fashion:
loadlin vmlinuz root=/dev/hda2 mcd=0x300,11
Or, you can enclose the parameters in an append="" and add the line to your
/etc/lilo.conf. Don't forget to reinstall lilo after editing the i
/etc/lilo.conf. To do this, just type "lilo" as root.
Here's how the line you'd add to your /etc/lilo.conf looks:
append="mcd=0x300,11"
Here is a list of known kernel parameters from the Loadlin documentation:
LOADLIN 1.5 ((C) 1994 lermen@elserv.ffm.fgan.de)
and
Linux version: 0.99.14, 0.99.15, 1.0, 1.1.47
This is a list of command line parameters recognized and interpreted by:
========================================================================
1. LOADLIN
ramdisk=size (size in Kbytes)
or
ramdisk=size,no (same as above, but diskchange prompt disabled)
e.g.: ramdisk=1440,no
vga=mode
2. The Linux kernel
mem=number (for > 0.99.15, number = end of physical memory in bytes)
root=device
ro
rw
no387
debug sets console_loglevel = 10
no-hlt disables check of HLT isntruction at startup
3. init
single
auto
ro,rw,no387 (forwarded from the kernel)
4. Some drivers
reserve=port1,num1,...,port5,num5 #reserves 80x86 ioports
ether=irq,base_addr,mem_start,mem_end,dev_name
hd=cyl,head,sect # for 2 drives you need this twice
# first relates to drive 0
bmouse=irq
max_scsi_luns=n # (n should be between 1 and 8)
st0x=base_address,irq # SEAGATE controller ST01/ST02
tmc8xx=base_address,irq # Future Domain TMC-885,TMC-950
t128=address,irq # Trantor T128/T128F/T228
ncr5380=port,irq,dma # Generic NCR5380 driver
aha152x=portbase,irq,scsiid,reconnect # Adaptec AHA-152x driver
cdu31a=portbase,irq,PAS # Sony CDU-31a. Third parameter
# should be "PAS" if on a Pro-Audio Spectrum, or
# nothing if on something else.
xd=type,irq,iobase,dma
mcd=port,irq
sound=0x0TTPPPID, ..
sbpcd=sbport,SoundBlaster
sbpcd=LMport,LaserMate
sbpcd=SpeaFXport,SPEA
5. Environment
All parameters of format name=xxxx which are not recogized by
the kernel or a driver are put onto the environment.
LOADLIN itself always puts BOOT_IMAGE=imagefile onto the environ-
ment. The user may put additional values onto the environment in
order to allow /etc/rc to behave differently for a given condition.
==============================================================================
Following are detailed descriptions:
Parameters recognized by LOADLIN:
=================================
root=device
-----------
device may be a symbolic device name such as "/dev/hda2"
or the numeric device number (hex)
(highbyte=major, lowbyte=minor)
recognized symbolic devices (with their partitions) are:
"hda", "hdb", "sda", "sdb", "sdc", "sdd", "sde",
"fd", "xda", "xdb"
There is a problem:
Linus interprets the number following "/dev/hda" as a HEX number,
The device names in /dev of the Slackware distribution, however,
are numbered /dev/hda1 .. hda9 .. hda10 .. hda16,
instead of /dev/hda1 .. hda9 .. hdaa .. hdaf as Linus would have done.
So, starting with version 1.3 of LOADLIN, I interpret the root device
myself and pass the device numerically in the boot sector.
My naming convention is a compromise which I hope will result in
fewer irritations:
If the number following "/dev/hda, hdb, sda ..."
starts with 0, 0x or a..f, it is interpreted as a HEX number.
If it starts with 1..9 it is interpreted as a decimal number.
If none is appropriate, the string is passed to the command line.
(some later kernel versions may have other device names).
Examples:
root=302
root=0x201
root=/dev/hda2
root=/dev/sdaa same as root=/dev/sda10 or /dev/sda0xa
Ramdisk size option (used with 1.2.x kernels)
ramdisk=size
------------
size number of Kbytes for the RAMDISK device.
The image for the ramdisk is loaded by the
kernel at startup from a floppy drive, if
root=/dev/fdx is also given.
After loading the image, the kernel then makes
the ramdisk the root device (NOT the floppy).
In addition to this, LOADLIN prompts for inserting
the ramdisk image into the floppy drive if it no
longer needs the drive (i.e. after loading the kernel).
Ramdisk options for new