summaryrefslogtreecommitdiff
path: root/BOOTING.TXT
blob: 4765690866411740b21d05b5d5232c7ebf9fdab7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
Sun Oct  1 23:00:46 CDT 2006

NOTE:  If you are interested in booting your system using PXE, a USB stick,
or a mini-ISO (which may then be used to start network (NFS) installations)
see Eric Hameleers' helpful page at this location:

  http://slackware.com:/~alien

Since this is the 'BOOTING' file, pointing out the alternate installers
would be the on-topic thing to do here, but I'll also note that everything
else there is also pretty good, except that part where Alien BOB tries to
get people to gang up on me and get all of this stuff included.  Shame,
shame!  ;-)  I'm trying to cobble together an operating system here, not
bundle every application on the planet!  We're already at six ISO images,
and DVD5 is looking small!  OK, just kidding.  (mostly ;-)  Eric's done a
massive amount of work on Slackware gratis, and we should all thank him
for the more complete and pleasant Slackware we now enjoy.  :-)

All that said, most of this file after this is about 10 years old and I'm
not sure how much (if any) of it still pertains to modern Linux.  In most
cases Slackware on a DVD (or the first disc) should just boot automatically
from the primary DVD drive.  Or, if you're booting from CD the first one
is the bootable one.  Sometimes you need to go into the machine's BIOS and
make some adjustments to make the system boot from optical media (be
careful in there!)

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
Syslinux "boot:" prompt on the bootdisk:

  mount noinitrd ro root=/dev/hda2

If you installed using the Slackware CDROM, you should boot from this CDROM
again and then load the kernel you used while installing, with additional
parameters to make it mount your hard drive's root partition.  Let's assume
your root Linux partition is on /dev/hda2 and you used the 'sata.i' kernel.
To boot the system, you'd enter this command at the "boot: " prompt:

  sata.i root=/dev/hda2 noinitrd ro


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
/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 disk change 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 instruction 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 recognized 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:

        Linux 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 (1.3.x and 2.0.x) kernels

  load_ramdisk=1
  --------------
                  This option tells the kernel that you wish to load
                  a ramdisk.  With new Linux kernels, a size does not
                  need to be specified -- the kernel will dynamically
                  allocate the needed memory as the kernel is loaded.

  prompt_ramdisk=1
  ----------------

                  This option tells the kernel that you wish to be prompted
                  to insert the ramdisk before the kernel tries to load it.
                  Useful when loading the ramdisk from floppy disk.

  vga=mode
  --------
        mode      -3  the user is asked to specify the VGA mode
                 ask  equal to -3
                  -2  80x50 extended VGA mode
            extended  equal to -2
                  -1  80x25 normal mode
              normal  equal to -1
                   0  as if "0" was entered at the boot prompt
                   .
                   .
                   n  as if the number "n" was entered at the boot prompt

  ro
  --
        "ro" forces the root device to be mounted read-only (Not for UMSDOS!)

  rw
  --
        "rw" forces the root device to be mounted read/write.

------------------------------------------------------------------------------

Parameters recognized only by the kernel:
=========================================

  mem=number
  ----------
        number     End of physical RAM, this is recognized by kernels
                   of 0.99.15 and higher and is useful if the exact
                   installed RAM size cannot be determined automatically.

  root=device
  -----------
        device     May be a symbolic device name such as "/dev/hda2"
                   or the numeric device number (highbyte=major, lowbyte=minor)
                   Recognized symbolic devices (with their partitions) are:
                   "hda", "hdb", "sda", "sdb", "sdc", "sdd", "sde",
                   "fd", "xda", "xdb"
                   But NOTE: old kernels < 1.1.47 have xda=0xC00, xdb=0xC40
                             newer kernels have        xda=0xD00, xdb=0xD40
        example:
        root=302
        root=/dev/hda2

!!      NOTE:   Older kernels ( below Linux 1.0.5 ) have a little bug in
!!              (init/main.c), but it is of little concern:
!!               The last part of the symbolic device name ("hda2") is
!!               passed as option parameter to  init, so init will
!!               say "illegal option", but continue without errors.
!!
!!              Of greater concern is the too-small static buffer
!!              "command_line" (80 bytes, in init/main.c).   It is
!!              preferable to set it to 512 and recompile the kernel.
!!
!!              This bug is fixed with Linux 1.0.5, the "command_line"
!!              is now 256 by default and (if needed ) can easily be changed
!!              with   #define COMMAND_LINE_SIZE xxxx  in init/main.c  (to a
!!              maximum size of 2047).


  no387
  -----
        "no387" disables use of the hardware math coprocessor.

  since 1.1.47 (or perhaps earlier) the following options are no more
  passed to init:

  ro,rw,no387
  -----------


  the following are new:


  debug  sets console_loglevel = 10
  -----

  no-hlt
  ------
         disables check of HLT instruction at startup.
         If you have a clone 486, this option is *very* useful.

------------------------------------------------------------------------------

Option Parameters recognized by "init":
=======================================

  single
  ------
        Enter "single user mode" on boot


  auto
  ----

  ro,rw,no387   (forwarded from kernels < 1.1.47).   (see !!comment!! above)
  -----------


------------------------------------------------------------------------------



Configuration of ethernet cards:
================================

  ether=irq,base_addr,mem_start,mem_end,dev_name
  ---------------------------------------------
        irq        number, IRQ-number (3..15)
        base_addr  number, IO-base (0x280,...)
        mem_start  number, shared mem start
        mem_end    number, shared mem end
        dev_name   string,
                        eth0..3     all configured ethernetcards
                        dl0         D-Link DE600 pocket adaptor
                        atp0        AT-LAN-TEC (RealTek) pocket adaptor
                        plip0..2    parallel IP (PLIP)
                        sl0..3      serial IP (SLIP)
        example:
                ether=10,0x280,0xc8000,0xcbfff,eth0

  related files: net/inet/eth.c, drivers/net/Space.c

------------------------------------------------------------------------------

Reserving I/O port space:
=========================

  reserve=port1,num1,...,port5,num5
  ---------------------------------

        portn     first IOport-address in range
        numn      number of addresses in this range to reserve
                  (there will be bits set to "1" in "ioport_register")

  related files:  kernel/ioport.c


------------------------------------------------------------------------------

Setting hard disk parameters for the root device:
=================================================

  hd=cyl,head,sect
  ---------------
         # NOTE: if you have two drives, you must put
         #       two hd= params into the commandline
         #       the first for drive 1, the second for drive 2
         #       eg.
         #       loadlin zimage hd=1001,15,17 hd=989,15,56 root=/dev/hdb2 ro
         #       (this example from my machine however is not needed,
         #       you need it only, if Linux can't get the drive params properly
         #       from the BIOS).
  related files: drivers/block/hd.c
  config:        CONFIG_BLK_DEV_HD

------------------------------------------------------------------------------

Setting the IRQ for the bus-mouse:
==================================

  bmouse=irq
  ----------
  related files: drivers/char/busmouse.c
  config:        CONFIG_BUSMOUSE



------------------------------------------------------------------------------

Parameters for SCSI controllers:
================================

  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



  related files: drivers/scsi/seagate.c, t128.c, g_NCR5380.c, aha152x.c

  config:        CONFIG_SCSI_SEAGATE, CONFIG_SCSI_T128,
                 CONFIG_SCSI_GENERIC_NCR5380, CONFIG_SCSI_AHA152X


------------------------------------------------------------------------------

Parameters for SCSI Tapes:
=========================

  st=buffer_size,write_threshould,max_buffers

     buffer_size       Size of tape buffer in Kbyte (i.e. ST_BLOCK_SIZE)
     write_threshould  Number of Kbytes to buffer before write.
                       (must be < buffer_size)
     max_buffers       Number of buffers to reserve

  related files: drivers/scsi/st.c
  config:        CONFIG_CHR_DEV_ST

------------------------------------------------------------------------------

Parameter for XT hard disk controller (DTC 5150X):
==================================================

  xd=type,irq,iobase,dma
  ----------------------

  related files: drivers/block/xd.c
  config:        CONFIG_BLK_DEV_XD

------------------------------------------------------------------------------
Parameter for Sony CDU-31/33a CDROM driver:
===========================================

  cdu31a=iobase,irq,PAS
  ---------------------

  related files: drivers/block/cdu31a.c
                 include/linux/cdu31a.h
  config:        CONFIG_CDU31A

  WARNING -    All autoprobes have been removed from the driver.
               You MUST configure the CDU31A via a LILO config
               at boot time or in lilo.conf.  I have the
               following in my lilo.conf:
 
                 append="cdu31a=0x1f88,0,PAS"
 
               The first number is the I/O base address of the
               card.  The second is the interrupt (0 means none).
               The third should be "PAS" if on a Pro-Audio
               spectrum, or nothing if on something else.
 

------------------------------------------------------------------------------
Parameter for Mitsumi CDROM driver:
===================================

  mcd=port,irq
  ------------

  related files: drivers/block/mcd.c
  config:        CONFIG_MCD


------------------------------------------------------------------------------

Parameter for sound cards:
==========================

  sound=0x0TTPPPID, ..
  ----------------
     all values are embedded in one longint, the above format
     shows a hex number, each place is a hex-digit

     TT         Supported card type.
                This is the index into the list of configured cards
                If all cards are configured (which normally is not the case)
                the following order is kept:
                        Roland MPU-401
                        Gravis Ultrasound
                        ProAudio Spectrum
                        SoundBlaster
                        SoundBlaster 16
                        SB16 MPU-401 (SB16-MIDI port)
                        AdLib

     PPP        Port Address

     I          IRQ

     D          DMA Channel


  related files: drivers/sound/dev_table.h,dev_table.c
  config:        CONFIG_SOUND

------------------------------------------------------------------------------

Parameter for IDE-style CD-ROM device driver (Kotobuki/Matsushita/Panasonic):
=============================================================================

  sbpcd=sbport,SoundBlaster
  ------------------------
  sbpcd=LMport,LaserMate
  ----------------------
  sbpcd=SpeaFXport,SPEA
  ----------------------

        sbport     soundblaster base port +0x10 (i.e 0x230 = 0x220+0x10)
        LMport     MPU-type port at 0x300 or equivalent
        SpeaFXport base port on SpeaFX card

  related files: drivers/block/sbpcd.c
  config:        CONFIG_SBPCD



------------------------------------------------------------------------------