install.zip - an *EXPERIMENTAL* UMSDOS-based Slackware installer. This is the Slackware install.zip, a new approach to installing Slackware. It is a UMSDOS version of the Slackware installer rootdisks. UMSDOS is a means of having a UNIX-compatible filesystem on a DOS partition. For more information about UMSDOS, see: http://www.voyager.hr/umsdos/ UMSDOS home page http://tldp.org/HOWTO/UMSDOS-HOWTO.html UMSDOS-HOWTO The Slackware install.zip was made for two main reasons: to address the inconvenience and difficulty of having to use three floppy disks for installing Slackware; and at the same time to try to reduce the hardware memory requirement. If an operating system can run with 8MB RAM, it should also be able to install on such a machine, right? In case you didn't know, a rootdisk is a minimal Linux root filesystem. We call it that because it used to fit on a single floppy disk. :-) The rootdisk provides the executables and scripts needed to install Slackware Linux. Rootdisks for previous recent versions of Slackware have loaded into a ramdisk: that is, placing the root filesystem entirely into system RAM. This is very fast, but of course requires more RAM. With install.zip unzipped onto a partition of the hard drive, we can read our necessary files from there and thus conserve RAM. REQUIREMENTS: ============= 1. You need a small FAT partition, preferably accessible to and bootable by DOS, although DOS is not necessary. The minimum size or free space for the filesystem is approximately 16MB. 2. You need an unzip utility which works in your operating system of choice. Pkunzip.exe for DOS should suffice for DOS/Windows. The "unzip" utility included in all versions of Slackware will do. 3. You need a Linux kernel with hardware support for the device on which your FAT partition sits (this includes having support for the controller and the bus for the device). Any of the Slackware kernels and boot disks (including the bootable CD-ROM -- yes, there are reasons why you might use this with the CD!) will do. 4. You need to have a means to boot that kernel: LILO, loadlin, or other boot loader. 5. I would recommend at least 8MB RAM, but you might succeed with as little as 5MB (with patience and a lot of time). 6. You should understand that this is experimental. I hope and believe it will be useful to many people, but I have not had time to test it to my satisfaction. Consider this a beta release. Comments, bug reports, suggestions and patches may be sent to volkerdi@slackware.com. FEATURES: ========= 1. The exact same Slackware setup scripts and supporting binaries as are on the rootdisks/install.[1-2] disks, and the bootable CD-ROM. 2. The binaries for modutils, so that you can load any modules you may need for installing Slackware. (See "Using Modules" below). 3. A preconfigured swap file of ~10MB. Note that this accounts for the largest single part of the 16MB disk space requirement. BENEFITS: ========= 1. You can use this to install Slackware on machines which lack a floppy drive or bootable CD-ROM drive. 2. You can use this to install Slackware on machines well below the official minimum RAM requirement of 16MB. This is because the root filesystem for setup will be read from the FAT partition, rather than being loaded entirely in memory (ramdisk). 3. You can use this to install Slackware without having to fumble with *six* or more floppy disks! :-) PREINSTALL INSTRUCTIONS: ======================== Create a FAT partition. Any of the numerous FAT partition types will do, depending on the operating system of your boot loader: i.e., if you're planning to use DOS and loadlin, it must be a partition type which is recognized by DOS. You may, of course, use an existing FAT partition (such as a partition containing Windows) if you wish. If it's a new partition, you must format it. Slackware and other Linux distributions include a "mkdosfs" utility which can do this. It's simply "/sbin/mkdosfs /dev/". In DOS or Windows you can use the DOS command "format X:" (where "X:" is the drive letter for your new partition). In Windows you can use the format command from Explorer. If it's an existing partition, make sure that there is no "Linux" file or directory in the top level. (The name is case-insensitive, so "linux" or "LINUX" or "LiNuX" must not be there). Rename it if you want to save it, delete it otherwise. Using your unzip utility, unzip the install.zip file into the top level directory of your chosen FAT partition. That's what is called the root directory in DOS and Windows. You *must* unzip into that directory, and you must recreate the directories in the .zip file (pkunzip for DOS has the "-d" option for this. Unlike ZipSlack, install.zip should work with a 16-bit DOS unzipper). You will see a new /linux (\linux in DOS) directory. Boot your kernel, and specify the partition with the unzipped install.zip as your root partition. (See BOOTING, below). Using Modules ------------- If you need to load a module to access either the source or the target media, you can easily install the full modules package. After you unzip install.zip, copy the slackware/a/kernel-modules-2.4.22-i486-2.tgz package to the new \linux directory. After booting Linux (and before running setup) use these commands to install the modules: cd / mv weird-name-due-to-UMSDOS kernel-modules-2.4.22-i486-2.tgz installpkg kernel-modules-2.4.22-i486-2.tgz At that point you can use "modprobe" to load any module you may need. Please note that the modules package is 7.3MB, and it untars to slightly more than that. Using this procedure you will need at least another 16MB of free space on the FAT partition. If this is a problem, extract only the modules you need from /lib/modules/2.4.22 inside the tar archive. You will be able to load the modules with commands like this: insmod [/path-to/]modulename.o.gz When using insmod you must manually load all dependent modules in the correct order. If you don't know which modules are needed by the one you want, the simple answer is to use a larger FAT partition for your install.zip installation. :-) BOOTING: ======== There are as many possible ways to boot this as there are to boot any Linux root filesystem. Here we will consider four likely possibilities. Loadlin ------- Loadlin is a DOS program designed to load the Linux kernel and boot it. If the machine is already configured to boot DOS, loadlin.exe is probably the simplest way to boot this. In the \linux directory, you'll find these files: LOADLIN.EXE: The loadlin loader executable. LINUX.BAT: A simple DOS batch file to boot Linux using LOADLIN.EXE. You can use any Linux kernel of your choosing by copying it to your FAT partition. Typically you might put it at \linux\vmlinuz (which is the path and filename assumed by LINUX.BAT). Slackware includes a collection of precompiled kernels in its kernels directory, any of which will work if appropriate for your hardware. To boot the system, you'll need to edit the LINUX.BAT file, and make sure the root=/dev/XXXX statement on the loadlin line (the one that's not commented out with 'rem') is set up to use the partition where you unzipped install.zip, such as /dev/hda1. If you're not sure which partition to use, just go ahead and guess. If you get it wrong, you'll still be able to use scrollback (right shift key and PageUp) when the kernel halts to go back and look at your partitions, noting the names Linux gives them. With this information, you should be able to edit the LINUX.BAT correctly. Once LINUX.BAT is edited, you can try to boot the system by entering LINUX on a prompt while in the \linux directory. IMPORTANT: You'll need to be in DOS mode for the boot to work. A DOS prompt running under Windows will not work! What you need to do if you use Windows 95 or 98 is shut the machine down, selecting the "Restart in MS-DOS mode" selection. Then, you'll be able to use Loadlin. I've also had great success booting with a "Startup disk" made from Win95 (Add/Remove Programs in Control Panel, and then "Startup disk" tab) and then switching into the \linux directory on the target drive and running LINUX.BAT. If it doesn't work, the problem could be DOS memory management -- I had to run both HIMEM.SYS and EMM386.EXE to get LOADLIN to load a large kernel, but it also worked fine with no memory management. With the latest version (1.6c) of loadlin.exe, memory management should not be necessary. (At the time of this writing, this has not been extensively tested). Windows 9x has an undocumented command for bypassing all startup files and automatically loaded drivers, including compression: press Ctrl+F5 when you see the initial "Starting Windows 9x" message. This is usually a good environment for loadlin. You can also run LOADLIN directly. Here is a sample boot command to boot Linux on /dev/sda4 (a parallel-port Zip disk would often be this) in read-write mode using the kernel file vmlinuz: loadlin vmlinuz root=/dev/sda4 rw Using a boot floppy ------------------- You can use any of the bootdisks included with Slackware to boot an unzipped install.zip. See the "bootdisks" directory on the first CD. To write the image to a floppy disk in DOS or Windows 9x/ME, use the RAWRITE.EXE program: rawrite bare.i a: The RAWRITENT.EXE program works similarly for Windows NT/2000/XP. If you're using Slackware or another UNIX/Linux, use dd: dd if=bare.i of=/dev/fd0 To boot a Linux system in read-write mode on /dev/sda4, boot the bootdisk. On the 'boot:' prompt, you'd enter this command: mount root=/dev/sda4 rw noinitrd Using the bootable CD-ROM ------------------------- This booting option is identical to using a boot floppy, except of course for the creation of the disk, which is beyond the scope of this document. :-) Assuming that you possess a copy of the Slackware install CD, you could boot it and enter the same kind of command at the boot prompt as was shown in the previous section. (In general, if you can boot the CD-ROM you should use its built-in install. But install.zip might be useful for installing on a machine with less than 16MB RAM). Using LILO ---------- LILO can boot a UMSDOS root filesystem almost as easily as any other type of root filesystem. The exception is that the boot map must not be installed to the superblock of a partition containing a FAT filesystem. You should have the "boot" line of /etc/lilo.conf point to the master boot record of the boot drive, or to the superblock of a native Linux partition. Here's a sample lilo.conf for multi-booting install.zip along with an existing Slackware install. This assumes that the older Slackware root filesystem is on /dev/hda2 and that the FAT filesystem where you unzipped install.zip is /dev/hda3: boot = /dev/hda # /dev/hda2 would work if set active image = /vmlinuz root = /dev/hda2 read-only # normal for ext2 root filesystems label = linux image = /vmlinuz root = /dev/hda3 read-write # necessary for UMSDOS filesystems label = setup As always, for any changes in /etc/lilo.conf to take effect, you must first run /sbin/lilo, the map installer. NOTES ON INSTALLING: ==================== This section is lacking at this point because of the beta status of install.zip. If you have tips to share or if you encounter a problem with installing from it, please send them to volkerdi@slackware.com. The pcmcia and network disks have not been merged with install.zip, but if you copy the images to /cdrom/isolinux/ then you can just use "pcmcia" or "network" to load them, if needed. If you want to create your FAT filesystem under Linux, you can. But DOS won't recognize some of the possible partition types. Even some of the more recent FAT types won't be understood by older DOS versions. The sure way of making a partition DOS will recognize is to let DOS create it. (See FAQ A4 below for more). The Slackware setup will probably detect your FAT partition and ask if you want to mount it under Linux. If it's just a temporary partition you might want to say no to this, but it doesn't matter. You can use the line in /mnt/etc/fstab as a basis for your ultimate purpose for the partition: just change the mount point, filesystem type, and other fields as appropriate. If you're planning to use a partition which will be mounted as a Linux filesystem eventually, you need to be aware of what will be required. The vast majority of the files (and bytes) installed will go under /usr, so you would not want to use a /usr partition for this job. If you're planning a separate /boot partition that might be a good choice; only a few small files are installed there. Nothing would be installed to /usr/local, if you plan to separate it. /home would be almost as easy, although if you install proftpd you will get a small /home/ftp directory with a few files. The most likely candidate for install.zip would be a future swap partition. However, DO NOT allow setup to activate your swap partition! You can do this manually after setup is complete. Note: if you require swap for booting a low-memory machine, you can do this before booting into your newly-installed Slackware. While your new system is mounted at /mnt, you can create an 8MB swapfile as follows: dd if=/dev/zero of=/mnt/root/swapfile bs=1M count=8 mkswap /mnt/root/swapfile grep swap /etc/fstab >> /mnt/etc/fstab FREQUENTLY ASKED QUESTIONS: =========================== Actually this is a collection of *anticipated* FAQ's. Since this is a new feature of Slackware, as of this writing I have yet to have been asked any questions about install.zip. :-) Please also see the ZipSlack FAQ: http://www.slackware.com/faq/do_faq.php?faq=zipslack which may cover the common problems with booting, etc. Q1: I have Windows ME/NT/2000/XP. How can I use loadlin.exe? A1: Make a DOS boot disk. Windows ME can do this just as 95/98 did. For Windows NT and its successors, you could try FreeDOS: http://www.freedos.org/ which is an MS-DOS-compatible project being developed under the GNU GPL. Or, you could try shareware DOS products such as DR-DOS. Q2: But I don't want to have a FAT partition! Am I stuck with it? A2: Of course not. What you can do is borrow a partition which can later be used in another way. A typical choice would be to plan for a swap partition, but to make it as FAT instead. Once you have Slackware installed you can change the partition type to 82 using fdisk, then mkswap(8) and add it to your /etc/fstab as a swap partition. Q3: All I have available is an 8MB partition on my tiny old hard drive. Is there a way I can I use install.zip? A3: Yes! Tell your unzip utility to exclude "/linux/swapfile" when unzipping (change "/" to "\" in DOS, Windows or OS/2, of course). If you have at least 8MB RAM it should work fine, but you will see an error about the missing swapfile when you boot. You can ignore the error. Q4: I made a FAT partition and filesystem from Linux, but when I boot DOS, it's not recognized. Why, and what can I do? A4: The Linux partitioning programs support a wide variety of partition types, but DOS does not. If your partition is the wrong type, DOS will think it is a non-DOS partition. Two likely solutions: 1. Use FDISK.EXE and FORMAT.COM in DOS to create and format your partition. 2. Put your kernel image and LOADLIN.EXE on your DOS boot disk and run loadlin from there -- DOS does not need to access the UMSDOS partition. Q5: Can I unzip install.zip on my NTFS partition? A5: No. You can unzip it anywhere you like, but you can only use it as a root filesystem for Linux if it is on a FAT partition. CREDITS: Rob McGee, who spotted this idea somewhere on USENET, and helped test the original install.zip. Rob also contributed this original draft of this documentation. Thanks Rob! :-)