So Mar 5 14:51:07 PST 1995 Dieses File enthaelt einige hilfreiche (hoffentlich! :^) Informationen darueber, was zu tun ist, wenn ihr Linux System nicht ordnungsgemaess bootet. Kapitel 1: Was zu tun ist, wenn die Maschine nach dem Installationsprozess nicht booten will. Dieses Problem ist nicht ungewoehnlich. Der Grund dafuer ist, dass der Kernel, den ihr System nach der Installation versucht zu booten, nicht derselbe ist, wie der, den sie zum Installieren benutzen (der bootdisk Kernel). Gewoehnlicherweise enthaelt der installierte Kernel mehr Geraetetreiber und manchmal vertraegt sich einer von ihnen nicht mit einem Teil ihrer Hardware. Es gibt eine Menge von Herangehensweise, wie man dieses Problem bekaempfen kann. Wahrscheinlich die einfachste Loesung ist, ihren Computer zu oeffnen und alle nicht dringend erforderlichen Karten zu entfernen und dann den Computer zu rebooten. Wenn diese Vorgehensweise erfolgreich verlaeuft, folgen sie denn Instruktionen in der SLAKWARE.FAQ zum Aufbau und der Installierung eines an ihre Hardware angepassten Kernels. Eine weitere Moeglichkeit (die nicht der Oeffnung des Computers bedarf) ist, wenn sie versuchen, von der generierten Bootdiskette ihr System hochzufahren. Booten sie von der Diskette (wobei das primaere Bootlaufwerk im BIOS-setup natuerlich ihr Diskettenlaufwerk sein sollte) und nutzen sie dann die "mount" Option, um den Kernel die root-Partition auf ihrer Festplatte statt einer root/Installationsdiskette booten zu lassen. Um das System zu booten, muessen sie dieses Kommando auf dem LILO Prompt der Bootdisk eingeben: mount root=/dev/hda2 Kapitel 2: Versuchen, den Kernel ihre Hardware detecten zu lassen. Das erste, was sie tun sollten, ist, sicherzustellen, dass sie einen Kernel benutzen, der die Hardware unterstuetzt, die sie versuchen, mit diesem Kernel zusammen zu benuetzen. Z.B. benoetigen sie einen Kernel der Q-Serie, um Extraperipherie wie nicht-SCSI CD-ROMs zu benutzen. Wenn sie das bei der Installation uebersehen haben, benutzen sie eine Bootdiskette, die diese Hardware unterstuetzt, um ihr System wie oben beschrieben zu starten. Installieren sie danach den richtigen Kernel aus der Q-Serie oder kompilieren sie sich selbst einen auf ihr System abgestimmten Kernel. Reinstallieren sie LILO danach erneut (sofern sie es benutzen). Fuer weitere Details zur Kernelinstallation, lesen sie die SLAKWARE.FAQ . Es gibt eine Anzahl von Extraparametern, die sie auf dem LILO Bootdisk Prompt, mit Loadlin oder in ihrer /etc/lilo.conf benutzen koennen. Diese Flags helfen dabei, dem Kernel mitzuteilen, welcher I/O-Port, IRQ und so weiter die Teile ihrer Hardware jeweils belegen, so dass, falls der Kernel bei Autoscannen eine Peripherie nicht erkennen kann, sie die Erkennung erzwingen koennen, indem sie dem Kernel konkret sagen, wo sich die Hardware befindet. Um ein Extraflag mit der Bootdisk zu verwenden, schreiben sie die Flags hinter das Standardkommando, dass sie zum Booten ihres Systems benutzen. Falls sie von /dev/hda2 booten und die Erkennung eines Mitsumi CD-ROMs mit Mitsumi Interfacekarte erzwingen wollen, koennen sie in etwa das auf dem LILO Prompt angeben: mount root=/dev/hda2 mcd=0x300,11 Um einen Parameter mit Loadlin zu verwenden, fuegen sie in ans Ende des Bootkommandos in aehnlicher Weise an: loadlin vmlinuz root=/dev/hda2 mcd=0x300,11 Sie koennen aber auch die Parameter in einem append="" einfuegen und diese Zeile ihrer /etc/lilo.conf hinzufuegen. Vergessen sie nicht, danach LILO zu reinstallieren. Um das zu tun, tippen sie einfach "lilo" als root ein. So fuegen sie die Zeile ihrer /etc/lilo.conf zu: append="mcd=0x300,11" Hier ist eine Liste von bekannten Kernelparametern aus der Loadlin Dokumentation: LOADLIN 1.5 ((C) 1994 lermen@elserv.ffm.fgan.de) and Linux version: 0.99.14, 0.99.15, 1.0, 1.1.47 Dies ist eine Liste von bekannten und interpretierten Paramatern von: ===================================================================== 1. LOADLIN ramdisk=size (Groesse in Kbytes) oder ramdisk=size,no (wie oben, aber Laufwerkswechselprompt abgeschaltet) z.B..: ramdisk=1440,no vga=mode 2. Linux kernel mem=number (fuer > 0.99.15, number = Ende des physischen Speichers in Byte) root=device ro rw no387 debug setzt console_loglevel = 10 no-hlt schaltet Ueberpruefung der HLT Instruktion beim Startup ab 3. init single auto ro,rw,no387 (forwarded vom Kernel) 4. einige Treiber reserve=port1,num1,...,port5,num5 #reserviert 80x86 I/O-ports ether=irq,base_addr,mem_start,mem_end,dev_name hd=cyl,head,sect # fuer 2 Laufwerke muessen sie das zweimals tun # das erste Mal bezieht sich auf Laufwerk 0 bmouse=irq max_scsi_luns=n # (n sollte zwischen 1 und 8 sein) 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. Dritter Parameter sollte # "PAS" sein, wenn eine Pro-Audio Spectrum # angeschlossen ist, sonst gar nichts. xd=type,irq,iobase,dma mcd=port,irq sound=0x0TTPPPID, .. sbpcd=sbport,SoundBlaster sbpcd=LMport,LaserMate sbpcd=SpeaFXport,SPEA 5. Environment Alle Parameter im Format name=xxxx, die nicht vom Kernel oder einem Treiber erkannt werden, werden in das Environment getan. LOADLIN packt selbst immer BOOT_IMAGE=imagefile in das Environment. Der Nutzer kann weitere Werte in das Environment eintragen, um /etc/rc anders auf eine vorgegebene Situation zu reagieren. ============================================================================== Es folgen detailierte Beschreibungen: Von LOADLIN unterstuetzte Parameter: root=device ----------- device kann ein symnolischer Geraetename wie "/dev/hda2" oder die numerische Geraetenummer (in Hex) (highbyte=major, lowbyte=minor) sein. erkannte symbolische Geraete (mit ihren Partitionen) sind: "hda", "hdb", "sda", "sdb", "sdc", "sdd", "sde", "fd", "xda", "xdb" Es gibt aber ein Problem: Linus interpretiert die Zahl nach "/dev/hda" als Hexzahl. Die Geraetenamen in /dev in der Slackware-distribution sind jedoch als /dev/hda1 .. hda9 .. hda10 .. hda16 nummeriert und nicht /dev/hda1 .. hda9 .. hdaa .. hdaf, wie es Linus getan haette. Deshalb wird ab der Version 1.3 von LOADLIN, das root-Geraet von mir selbst interpretiert und das Geraet numerisch im Bootsektor festgehalten. Meine Naemenskonvention ist ein Kompromiss, der, wie ich hoffe, in weniger Irritationen muendet: Wenn die Zahl nach "/dev/hda, hdb, sda ..." mit 0, 0x oder a...f beginnt, wird sie als Hexzahl interpretiert. Wenn sie mit 1...9 beginnt, hingegen als Dezimalzahl. Wenn keins von beiden zutrifft, wird der String der Kommandozeile uebergeben (einige spaetere Kernelversionen koennen andere Geraetenamen haben). Beispiele: root=302 root=0x201 root=/dev/hda2 root=/dev/sdaa dasselbe wie root=/dev/sda10 oder /dev/sda0xa ramdisk=size ------------ size die Zahl in Kilobyte der Groesse des RAMDISK Geraets Das Image der Ramdisk wird beim Startup vom Kernel von der Diskette gelesen, wenn root=/dev/fdx ausserdem angegeben ist. Nach dem Laden des Images macht der Kernel die Ramdisk zum root-Geraet (NICHT die Floppy). Zusaetzlich dazu weisst LOADLIN auf die Eingabe des Ramdiskimages ins Diskettenlaufwerk hin, wenn es das Geraet nicht laenger benoetigt. (z.B. nach dem Laden des Kernels). vga=mode -------- mode -3 der Nutzer wird nach dem VGA-mode gefragt ask entspricht -3 -2 80x50 erweiterter VGA-mode extended entspricht -2 -1 80x25 normaler VGA-mode normal entspricht -1 0 als ob "0" im Bootprompt eingeben wurde . . n als ob die Zahl "n" im Bootprompt eingeben wurde ro -- "ro" erzwingt das root-Geraet als schreibgeschutzt zu mouten (Nicht bei UMSDOS!) rw -- "rw" erzwingt das root-Geraet als schreib-/ und lesbar zu mounten. ------------------------------------------------------------------------------ Nur vom Kernel unterstuetzte Parameter: ======================================= mem=number ---------- number Ende des physischen RAMs. Wird erkannt von Kernels ab 0.99.15 und hoeher und ist nuetzlich, falls die installierte RAM-groesse nicht automatisch bestimmt werden kann. root=device ----------- device Kann ein symbolischer Name wie "/dev/hda2" sein, oder die numerische Geraetenummer (highbyte=major, lowbyte=minor) Erkannte symbolische Geraete sind (mit ihren Partitionen): Recognized symbolic devices (with their partitions) are: "hda", "hdb", "sda", "sdb", "sdc", "sdd", "sde", "fd", "xda", "xdb" Hinweis!: alte Kernels < 1.1.47 haben xda=0xC00, xdb=0xC40 neue Kernels haben xda=0xD00, xdb=0xD40 Z.B.: root=302 root=/dev/hda2 no387 ----- "no387" schaltet den (Hardware-)mathematischen Coprozessor ab seit 1.1.47 (oder vielleicht auch schon frueher) werden die folgenden Optionen nicht mehr der init uebergeben: ro,rw,no387 ----------- die folgenden sind neu: debug setzt console_loglevel = 10 ----- no-hlt ------ schaltet die Ueberpruefung auf die HLT Instruktion beim Startup ab. Wenn sie einen 486er-Clone haben, ist diese Option *SEHR* hilfreich. (Anm. d. Uebersetzers: mit "Clone" sind hier wohl mehr Prozessoren von AMD, Cyrix oder TI gemeint und weniger nicht-IBM PCs) ------------------------------------------------------------------------------ Optionsparameter, die von "init" erkannt werden: ================================================ single ------ bootet im Singleuser-mode auto ---- ro,rw,no387 (weitergeleitet vom Kernel < 1.1.47). (siehe obigen Kommentar) ------------------------------------------------------------------------------ Konfiguration von Ethernetkarten: ================================= ether=irq,base_addr,mem_start,mem_end,dev_name --------------------------------------------- irq Zahl, IRQ-nummer (3..15) base_addr Zahl, IO-basis (0x280,...) mem_start Zahl, shared memory Start mem_end Zahl, shared memory Ende dev_name string, eth0..3 alle konfigurierten Ethernetkarten dl0 D-Link DE600 pocket adaptor atp0 AT-LAN-TEC (RealTek) pocket adaptor plip0..2 parallel IP (PLIP) sl0..3 serial IP (SLIP) Beispiel: ether=10,0x280,0xc8000,0xcbfff,eth0 zugehoerige Files: net/inet/eth.c, drivers/net/Space.c ------------------------------------------------------------------------------ Reservieren von I/O-Ports: ========================== reserve=port1,num1,...,port5,num5 --------------------------------- portn erste I/O-portadresse, die reserviert werden soll numn Anzahl der I/O-adressen, die reserviert werden sollen (es muessen dazu bits auf "1" in "ioport_register" gesetzt werden) zugehoerige Files: kernel/ioport.c ------------------------------------------------------------------------------ Setzen der Festplattenparameter fuer das root-Geraet: ===================================================== hd=cyl,head,sect --------------- # Hinweis: sollten sie 2 Platten haben, muessen sie 2 hd= Parameter in die Kommandozeile eingeben den ersten fuer Laufwerk 1, den zweiten fuer Laufwerk 2 z.B. loadlin zimage hd=1001,15,17 hd=989,15,56 root=/dev/hdb2 ro (dieses Beispiel von meiner Maschine ist nicht noetig; sie benoetigen die Angaben nur, wenn Linux die Laufwerksparameter nicht korrekt vom BIOS ermitteln kann). zugehoerige Files: drivers/block/hd.c config: CONFIG_BLK_DEV_HD ------------------------------------------------------------------------------ Setzen des IRQ fuer die Busmouse: ================================= bmouse=irq ---------- zugehoerige Files: drivers/char/busmouse.c config: CONFIG_BUSMOUSE ------------------------------------------------------------------------------ Parameter fuer SCSI-Controller: =============================== max_scsi_luns=n (n sollte zwischen 1 und 8 liegen) 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 zugehoerige 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 ------------------------------------------------------------------------------ Parameter fuer SCSI Tapes: ========================== st=buffer_size,write_threshould,max_buffers buffer_size Groesse des Tape Buffers in Kbyte (wie ST_BLOCK_SIZE) write_threshould Zahl in Kbyte, die in dem Buffer kommen vor dem Schreiben (muss < buffer_size) max_buffers Anzahl von zu reservierenden Buffern zugehoerige Files: drivers/scsi/st.c config: CONFIG_CHR_DEV_ST ------------------------------------------------------------------------------ Parameter fuer XT Festplattenkontroller (DTC 5150X): ================================================== xd=type,irq,iobase,dma ---------------------- zugehoerige Files: drivers/block/xd.c config: CONFIG_BLK_DEV_XD ------------------------------------------------------------------------------ Parameter fuer den Sony CDU-31/33a CDROM Treiber: ================================================= cdu31a=iobase,irq,PAS --------------------- zugehoerige Files: drivers/block/cdu31a.c include/linux/cdu31a.h config: CONFIG_CDU31A WARNUNG! Jegliche Autodetection ist vom Treiber entfernt worden. Sie MUESSEN das CDU31A via LILO config beim boot oder in der lilo.conf konfigurieren. I habe die folgende Konfiguration in meiner lilo.conf: append="cdu31a=0x1f88,0,PAS" Die erste Zahl ist die I/O Basisadresse der Karte. Die zweite ist der Interrupt (0 bedeutet kein Interrupt) In die dritte Spalte sollte "PAS" eingetragen sein, wenn es an eine Pro-Audio Spectrum angeschlossen ist, oder nichts, falls an etwas anderem. ------------------------------------------------------------------------------ Parameter fuer den Mitsumi CDROM Treiber: ========================================= mcd=port,irq ------------ zugehoerige Files: drivers/block/mcd.c config: CONFIG_MCD ------------------------------------------------------------------------------ Parameter fuer Soundkarten: =========================== sound=0x0TTPPPID, .. ---------------- alle Werte sind in einer longint-Zahl eingebunden, das obige Format zeigt eine Hexzahl, wobei jede Stelle einer Hexziffer entspricht TT Unterstuetzter Kartentyp Hier ist der Index der konfigurierten Karten Falls alle Karten konfiguriert sind (was normalerweise nicht der Fall ist), wird die folgende Reihenfolge eingehalten: Roland MPU-401 Gravis Ultrasound ProAudio Spectrum SoundBlaster SoundBlaster 16 SB16 MPU-401 (SB16-MIDI port) AdLib PPP Port Adresse I IRQ D DMA Channel zugehoerige Files: drivers/sound/dev_table.h,dev_table.c config: CONFIG_SOUND ------------------------------------------------------------------------------ Parameter fuer IDE CD-ROM Geraetetreiber (Kotobuki/Matsushita/Panasonic): ========================================================================= sbpcd=sbport,SoundBlaster ------------------------ sbpcd=LMport,LaserMate ---------------------- sbpcd=SpeaFXport,SPEA ---------------------- sbport Soundblaster Basisadresse +0x10 (i.e 0x230 = 0x220+0x10) LMport MPU Port auf 0x300 oder Equivalent SpeaFXport Basisadresse auf der SpeaFX-Karte zugehoerige Files: drivers/block/sbpcd.c config: CONFIG_SBPCD ------------------------------------------------------------------------------ This file copyright 1995 Walnut Creek CDROM.