Slackware MCA Installation Instructions (Aug 8, 1998) ====================================================== This is yet another revision of my infamous Slackware on MCA installation procedures. This version includes more examples, more trouble shooting suggestions, and a few bug fixes. It's been tested with Slackware 96 (3.1), 3.2, 3.3, and probably later versions, but because of the significant amount of rewriting, it apparently works with Slackware versions as old as 2.0. Your mileage may vary, but anything older than 3.1 may have kernel compatibility problems. In fact, you might need something even more recent, given the changes of the C libraries on the rootdisk that comes with your particular distribution. I currently use Slackware 3.2. To start, you'll need all the standard Slackware installation goodies: RAWRITE.EXE, GZIP.EXE, the A? series disks (or CD-ROM), the Slackware INSTALL guide, and a rootdisk of your choice. You can download these from ftp.cdrom.com if you don't have the CD-ROM. On the MCA side of things, you'll need the MCA bootdisk, these instructions, and the latest copy of the esdi_slack.tar.gz file (you can get these from http://glycerine.itsmm.uni.edu/mca/goods.html). You may also need a copy of your reference diskette and some diagnostic tools to figure out various system valuse. Generally, you won't need this to install Linux but it's a good idea to have one around for other Ps/2 problems. This procedure assumes you're installing a Linux-only system. If you want to do anything fancy, you're on your own. I cannot and will not take responsibility for you accidentally blowing away a working system, and with these instructions, unless you're more than a little experienced with Linux installations, it's quite easy to do so. I also assumes your particular machine is bug free. In particular, the floppy drive on some PS/2s doesn't work with Linux, making it awfully difficult to read the ramdisk. On the other hand, you shouldn't have some of the problems of previous versions of this document in that it's not necessary to take the rootdisk out during the initial installation, unless you're installing from floppy. Loosely speaking, there are two classes of MCA Linux machines. Those with SCSI hard drives, and those with ESDI hard drives. SCSI users have it a heck of a lot easier than ESDI users. SCSI readers should read through everything, although if you're familiar with Linux, just read section 4 for the boot flags and remember to copy the kernel from the bootdisk. ESDI users need to read pretty much everything, and even then there are problems that might lead to you not being able to install. There are also a very small number of MCA machines with IDE controllers. I've never installed onto such a machine, but it should work about the same as SCSI. Just replace every instance of /dev/sd with /dev/hd and follow the SCSI instructions. If, for whatever reason, you can't install Linux using these procedures, go to the MCA Linux home page and read up on the various things that might be happening. Check the discussion group to see if someone else has a similar problem. If, and only if, your particular problem isn't covered there, e-mail me. It doesn't help anyone if I get flooded with mail about documented problems. Finally, this document would not be nearly as detailed as it is without constant input of annoying nitpickers...er, loyal readers. If there's something I screwed up, feel free to mention it. If there's any questions, feel free to ask them. It can only help the next version. ------------------------------------------------------------------------ 0) Read the Slackware INSTALL guide. Keep it handy, you'll need it. I'm not repeating it here. The Slackware installation covers things like the bootdisk/rootdisk deal, GZIP, RAWRITE, and other things I will assume you know already. If you're not particularly familiar with the common elements of the PS/2 line (such as the reference diskettes and such) I also suggest you have a glance at the PS/2 FAQ. It's usually available at http://www.computercraft.com/, although I personally avoid that site because it's slow. The MCA Linux home page has a few other pointers to the FAQ. 1) Uncompress (if necessary) and write the bootdisk to a floppy (using RAWRITE). Notes: By "Uncompress", I mean run GZIP.EXE. 2) Choose a rootdisk. I assume COLOR.GZ, but if you're feeling brave, you can use something else. Those with low-memory systems (i.e. 4MB) may have problems with COLOR.GZ and might want to try TEXT.GZ. RAWRITE it to a floppy. Notes: The rootdisk should probably be uncompressed. Compressed rootdisks are a common cause of trouble, although they're supposed to be supported. Some versions of the distribution might claim that you don't need to uncompress, but I think they lie. Uncompress esdi_slack and RAWRITE it to a floppy. Set the write protects on all the disks to Read-Write. Otherwise, if the RAMDISK doesn't take, you won't be able to install (you might not be able to install anyways, but that'll be one question I won't have to ask you, now, won't it?) 4) Boot with the bootdisk floppy. At the "boot:" prompt, enter ramdisk [edx=cyl,head,sec] [ibmmcascsi=pun] [tp720] [mca-pentium] [floppy=slow] [ether=0,0,1,eth0] Don't type the square braces ([]). They indicate an optional parameter. The parameters are only needed if one of your devices isn't detected properly or the machine fails to boot. Warning: if you're having any problems, read this section over a few times. Trust me, it's easy to miss some of this stuff. Examples: A MCA Pentium system with SCSI might use: ramdisk ibmmcascsi=7 mca-pentium My Thinkpad 720C uses: ramdisk ed=158,64,32 A typical model 56 or 57 would use: ramdisk ibmmcascsi=7 On my 55SX and 95, all I need is: ramdisk Although the 95 can use ramdisk ibmmcascsi=display The arguments: A) edx=cyl,head,sec may be needed for ESDI drives. "head" and "sec" are usually 64 and 32 respectively. cyl varies with the size of the hard drive. "x" is either "a" or "b", depending on which drive you're configuring. You can also drop the "a" or "b". If you've got DOS handy, run one of the diagnostics programs to get this. (MSD.EXE works). You can sometimes guess at the number, but I don't recommend it. Apparently the popular QCONFIG utility also tells you this info. Notes: During the boot process, the ESDI driver usually spits out a few nasty seeming messages (i.e. Attention error) before doing the partition check. They're usually harmless, and if it boots without dying, you can ignore them. It also has a habit of pausing for long periods of time (15 seconds or so). Also note that this differes from previous versions in that "a" and "b" can be specified. This conforms to standard Linux usage. I seem to have broken the support for two ESDI drives. B) ibmmcascsi=pun may be necessary if your SCSI controller isn't detected by the driver. pun is the scsi_id of the subsystem. Usually pun=7, but if not, check your system configuration using your reference diskette. Notes: This was added because of problems detecting the integrated controller on models 56, 57, 76, and 95 (Ultimedia). It should no longer be a problem for the 76, but the others may still need it. On the 2.0.29 and later versions, the format was changed. I've modified it (Jan 2, 1997) for backwards compatibility, however now you're supposed to use ibmmcascsi=io1,io2,... where io? are the IO addresses of the various controllers. For the controller, this is almost always 0x3540. You can probably get the others from the reference diskette (I don't know for sure, never having had two IBM SCSI controllers in a single machine). Notes: When I say 2.0.29 and later, I mean those versions of the patches I release. Specifically, this may not work on the 2.1.x series. You can also add "ibmmcascsi=display" if your machine has a front-panel display (such as a model 95). This will display disk activity on the display. C) tp720 may be needed if you have a Thinkpad with ESDI. Notes: On the other hand, some Thinkpads work better using the "ed=" line (auto detection doesn't work in either case). However, the calculations for the "ed=" line might be a little more hassle. Auto detection on mine gives 164,64,32. This is wrong, however. I actually need to use 158,64,32 (discovered through trial and error). Obviously you'll need to do some experimenting here. D) mca-pentium is needed on certain Pentium-based models. If your machine has a habit of hanging at the "HLT test", you need to add this flag. Notes: This flag is known to work on one P60 upgraded model 95. Your mileage may vary. E) If you're trying to do a network install with a 3c523, you may need to force detection (rare, but it happens). Use "ether=0,0,1,eth0". F) Assorted PS/2 systems have serious troubles with the floppy controller. TRY using "floppy=slow", but it's still an experimental hack. It may or may not work. People with 2.88 drives are likely to have other problems as well. G) I'm told that some 9595 systems detect non-existant IDE drives! Use the flags "hda=none hdb=none" to disable this behaviour or the SCSI driver won't be able to function. 5) When you're prompted, insert the rootdisk you created. 6) Log in as "root". 7) [ESDI only] Here's where some of the peculiarities of the MCA Linux stuff will bite you. ESDI typically uses different device entries (files in /dev) than the norm, and so isn't quite supported by the standard installtion procedure. But have no fear. We can fake it. First, we have to create the device entries. These are temporaries for the rootdisk, which is in RAM, so it'll have to be done every time you want to install. Sorry, it makes a bunch of things a lot simpler. If you know what you're doing, you can write this stuff onto your root disk. Oh, and it gives me a chance to explain some underlying Unix concepts and show how smart I am. First, blow away some useless stuff: rm /dev/hd* For the first ESDI drive: mknod /dev/hda b 36 0 mknod /dev/hda1 b 36 1 mknod /dev/hda2 b 36 2 mknod /dev/hda3 b 36 3 (continue for as many partitions as you want on the first drive) For the second ESDI drive (if any): mknod /dev/hdb b 36 64 mknod /dev/hdb1 b 36 65 mknod /dev/hdb2 b 36 66 mknod /dev/hdb3 b 36 67 (etc) Notes: This creates the device entries for the ESDI drives and their partitions. What we're telling mknod is to create a block device (hence "b") file with a major number of 36 and a variable minor number. Minor numbers 0 and 64 indicate the first and second drives, respectively. 1 and 65 are the first partitions of each, 2 and 66 the second partitions, etc. The major number 36 identifies the ESDI driver to the kernel. Learned readers will be a little surprised at the /dev/hd* part. The biggest problem in the past with installing Linux on ESDI machines was this /dev/ed* crap. This allows us to dispense with the step of copying /dev/ed* and a new fdisk to the ramdisk, which doesn't work on some machines where it's not possible to unmount the floppy (i.e. buggy model 80's, among others). If it doesn't meet the file system standards, then it's a small price to pay for the sanity of myself and beginning users. Besides, we can, and will, fix it later. 8) The first thing you need to do is partition your hard drive(s). Use fdisk to partition each drive, with (for ESDI) fdisk /dev/hda or (for SCSI) fdisk /dev/sda You can also partition /dev/hdb and dev/sd[bcd...] here if you want. You'll want to create one large partition, and maybe a swap partition (usually the partition should be about twice your RAM size, although it might be pretty stupid on a machine with 64MB of RAM). Make sure that at least one partition is Linux native. Make sure you have a bootable Linux partition somewhere. Notes: ESDI drives are `special'. You'll usually need to make sure that all your partitions start on a cylinder boundary. Because of some stupid CHS translation problems (I think), you can easily shoot yourself in the foot. I haven't come up with a perfect way to deal with it, but the following method doesn't die horribly: - Start adding partitions from the last to the first. - When you get to the first, toggle units (type 'u'), and create the first starting at position 512, ending it wherever it lets you. Note that you lose a bit of space, but it should boot. Apparently, if you place a DOS partition first it works. Unfortunately, DOS doesn't deal too well with the stuff fdisk does, so you need to run the DOS FDISK after all this is done. You might be able to get a similar effect by putting swap first, but I wouldn't trust that. If your ESDI driver starts spitting out nasty messages, it's likely because of this step. You screwed up, or I did. Either way, start playing around. I can't help you anymore. When you get something stable, mail me a correction. 9) Run setup. Maybe grab a beer or coffee first though, as this process takes a little while. Install all the necessary stuff. If you're using ESDI, skip over the LILO configuration. SCSI users are free to install LILO. On the kernel installation part (Slackware 3.1+, I think) tell setup to get the kernel from the bootdisk. Oh, and DON'T BLINDLY REBOOT WHEN SETUP TELLS YOU TO DO SO. Keep reading these instructions. I know things setup doesn't. Notes: If you have a low memory machine, you're going to have trouble running setup. You'll have to enable your swap space first. Assuming your swap partition is /dev/hda2, do this: mkswap -c /dev/hda2 swapon /dev/hda2 You might also need to create your drive partitions, although if you have enough swap this shouldn't be necessary. However, for each elligible partition, do the following: mke2fs -c -i 2048 /dev/hda1 In either case, drop the "-c" if you don't want to do a bad block check as you format (I recommend it, but it's your system...) 9) [SCSI only] If you're installing to SCSI and you installed your kernel from the bootdisk, you're basically finished and can skip right to step 18. If not, continue on and substitute /dev/ed* with /dev/sd* where necessary. 10) [ESDI only] You now need to repeat step 6 on the physical drive. rm /mnt/dev/hd[ab]* mknod /mnt/dev/hda b 36 0 mknod /mnt/dev/hda1 b 36 1 mknod /mnt/dev/hda2 b 36 2 mknod /mnt/dev/hda3 b 36 3 (continue for as many partitions as you want on the first drive) mknod /mnt/dev/hdb b 36 64 mknod /mnt/dev/hdb1 b 36 65 mknod /mnt/dev/hdb2 b 36 66 mknod /mnt/dev/hdb3 b 36 67 (repeat) 11) Put the bootdisk back in, and reboot. Note: With Linux (or just about any modern operating system), never reboot by just power cycling. Use ctrl-alt-delete or type reboot (or "shutdown -r now"). Power cycling can result in loss of data, blindness, and a much longer boot time as the system verifies that the drives didn't get hosed. 12) Remember step 4? When you get the boot prompt this time, type mount read-only root=/dev/eda1 [options] where [options] are the same settings from step 4. Notes: Remember this step for when you (inevitably) go and screw up your LILO configuration and can no longer boot from the hard drive. It happens more often then you might think. What we're doing here, by the way, is booting using the kernel on the bootdisk, but automagically mounting the hard drive as root (AKA '/'). Long time readers will note that this is a handy way to get around the problems with installing LILO during the regular installation using esdi_slack. I've been told that "read-only" doesn't work on some bootdisks, and you actually need to use "ro". If that doesn't work, just forget that flag entirely. Linux is tough. It's survived worse. Finally, yes, that's /dev/eda1. Not /dev/hda1. We have something of a schizophrenic system here, in that sometimes it thinks is a IDE system (because of /dev/hda1), while the _kernel_, which is what we're booting, know that /dev/eda1 is a ESDI device. Trust me, it works. 13) Log in as root. 14) If you installed the kernel from the bootdisk during setup, skip this step. Otherwise, you might not have a kernel on your machine. That sucks, because you need one to boot from the hard drive. We'll just grab one from the handy bootdisk, which is still in the drive. You also need to configure LILO. cd / mount -t minix /dev/fd0 /mnt cp /mnt/vmlinuz /vmlinuz umount /mnt 15) [ESDI only] Remember esdi_slack? Put that disk in the drive and type the following: cd / tar -xpvf /dev/fd0 Notes: esdi_slack creates a bunch of device entries /dev/ed*, similar to what you did in step 7 with /dev/hd*. It also copies an ESDI-aware version of LILO over the original one. 16) Now we configure LILO. Assuming that you have your root partition on /dev/eda1 (first partition of the first drive), type the following: cat </etc/lilo.conf boot=/dev/eda vga=normal ramdisk=0 append="[options]" image=/vmlinuz root=/dev/eda1 label=lunix read-only EOF /sbin/lilo Notes: Only add the "append" line if you had any boot prompt options. Also, feel free to change the label to something that might make more sense to you. I use the kernel version myself. [options], as you might expect, are the same ones you used in step 4. The quotes (") are supposed to be there. 17) [ESDI only] Only one problem remains: Linux still thinks you want to use /dev/hd* for various things. This isn't really a bad thing, and you won't have any real problems in the future, but I like to be clean about it. Edit /etc/fstab and replace instances of /dev/hd* with /dev/ed*. Typing the following works: vi /etc/fstab :%s:/dev/hd:/dev/ed:g :wq! Notes: That bit was a simple search and replace using vi, the worlds second-most cryptic editor (the first being TECO, of course). vi is covered by most introductory Unix and Linux books and is worth learning, if only because it's found on every single Unix box out there as well as any other machine that ever gets used by a vi lover. On the other hand, you're probably suffering from information overload by this point. 18) At this point, you have a working Linux system. Feel free to pull out the floppies and reboot, just to make sure everything is working okay. ------------------------------------------------------------------------ Trouble Shooting ================ (this section should undergo some serious expansion once I have a good long look at my MCA mail folder). Okay, so maybe it's not quite as easy as 1-2-3 (...18). Maybe your hard drive isn't getting detected, maybe your floppy drive is flaky, or perhaps your network card isn't working. These questions and answers are based on very real, very common questions that I get fairly often. Experienced users might laugh, but keep in mind tht installing Linux is rarely easy. Especially when MCA gets thrown into the equation. Q. My 3c523 isn't initializing properly. A. There's a few different problems you could be having here. First, the adapter _must_ be hooked up to a network and the card must be configured (through the reference diskette) to use the correct port. That's by far the most common problem. The second problem is a little nastier. A pre-1990 (or so) 3c523 will _not_ work with a 486 processor. Talk to 3Com about a replacement, maybe. Sometimes, the card is detected but fails to initialize the memory. Try the forced detection stuff from the LILO prompt (you know, "ether=0,0,1,eth0"). Q. Linux hangs soon after detecting my ESDI controller. What gives? A. There's a number of settings on the controller that Linux is very peculiar about. On my 55SX, the only burst setting it will allow is 16. Thinkpad 700 users often have to play with the DMA channel setting and usually set it to 5. All of these can contribute to crashes and other hangs if they're not correct. Grab your reference diskette and start playing around. Q. Linux hangs after printing something like "Console: colour VGA+..." A. This usually means you're running a non-MCA kernel on a MCA machine. If you didn't do the LILO/kernel installation part properly, this will usually happen. If you get this on the MCA Slackware kernel, you have serious problems. Q. My system is hanging right after printing "LILO loading..." A. I get this on my Thinkpad when I have the unattended mode feature turned on. Disable it through the reference diskette. Q. When I boot the kernel, I get a bunch of error messages about modules missing. When can I get these modules? A. This isn't really a problem since you're not using modules right now, but if it bothers you either make /etc/rc.d/rc.modules non-executable (look up chmod if you don't know how), or build a kernel and install modules from it. Strictly speaking, it's just a warning that you can feel free to ignore. It happens because Slackware wants to help you when you inevitably go to a module-based system by automagically tracking down all the modules you'll ever need. Personally, I don't really bother with modules much (except those required by IP Masquerading) and the Slackware stuff doesn't know about MCA devices anyways, which won't help you much. Q. Linux isn't loading the rootdisk! A. Yup, that happens. The PS/2 floppy controller found on a few machines (and this appears to be pretty random) isn't properly supported by the Linux floppy driver. We suspect it's a step rate problem, but nobody in the MCA Linux development community seems to be able to reproduce the problem. I've tried various fixes, but it's a little hard to debug device drivers over the Internet... Q. What about 2.88MB floppies. A. Bad news. Linux just doesn't seem to be able to deal with the PS/2 2.88. Sometimes it works, sometimes it doesn't. ------------------------------------------------------------------------ Final comments =============== Installing Linux is only a small part of the battle. It takes work to figure out how to get a what I'd consider a complete installtion. I've yet to get to that stage myself. You still have a lot of learning ahead of you and I can't help with most of it. Check the manuals, and refer to /usr/doc/faq/howto/* often. It's usually a good idea to build a new kernel specifically for you machine. The kernel included on the bootdisk tends to have a few extra devices that the average user may not like and may lack a few other handy ones. In particular, it's missing PS/2 mouse support (needed for X), parallel printer support, and probably many other things that'll contribute to an enjoyable Linux experience. I suggest grabbing the kernel source from an archive nearest you and applying the latest MCA patch to it. If that was gibberish to you, have a look at the Kernel-HOWTO. It'll tell you everything you need to know Note: 2.1.x is supposed to support MCA, but there are some bugs caused by the fact that there's no active MCA development on 2.1.x. See the web page for more info. Configuring XFree86 on MCA machines is another struggle, although I think we've pretty much beaten it into the ground. X configurations for XGA-1, XGA-2, and various other MCA-based video adapters are also available on the MCA Linux Home Page. One final note. If somehow this makes it into a CD-ROM and you're reading it there, there's always a place on the web where you can go for all the latest and greatest news: The MCA Linux Home Page at "http://glycerine.itsmm.uni.edu/mca/". See you there. c. ------------------------------------------------------------------------ Corrections, comments, etc, to chrisb@truespectra.com cpb@acm.org This file brought to you with the noise of Cocteau Twins, Front Line Assembly, Chainsuck, Download, My Bloody Valentine, Tool, Godflesh, Korn, Veruca Salt, KMFDM, and who knows what else. Play it loud. Copyright 1996-1998 by Christophe Beauregard ------------------------------------------------------------------------ $Header: /home/cpb/os/linux/slack96/RCS/Slackware-MCA,v 1.4 1998/08/09 16:28:12 cpb Exp cpb $