Linux Bootable Root Disk [HJ release] Introduction ------------ This is a bootable root disk for Linux. The kernel is 0.99 patch level 7 with 387 emulation, minix fs, msdos fs (version 0.10 hacked for 0.99.7), ext fs, ext2 fs, xia fs (with fix for 0.7.3), SCSI, CD-ROM and TCP/IP support. There are some basic binaries on the root disk, all of which are linked with the C library 4. There is a light version of the shared image 4.3.3, libc-lite.so.4.3.3, which doesn't have curses and gdbm. I don't have an Ethernet card to check out TCP/IP. Please consult the NET channel and modify /etc/*. NOTE: If you are using this rootdisk for the kernel 0.99 pl7 and xiafs. you should run "xfsck -a /dev/xxxxx" on your xiafs partitions after booting this rootdisk from the floppy drive first. After you have done that, YOU HAVE TO USE THE KERNEL ON THIS DISK TO ACCESS YOUR XIAFS PARTITIONS. Please read LILO docs for how to do it. You have to use the kernel built with Frank Xia's patch for 0.99 pl 7, which is appended below. THIS PATCH IS ONLY NEEDED BY THE KERNEL 0.99 pl 7. DON'T USE IT ON ANY OTHER KERNELS. This rootdisk is designed for emergency use. You can use it to recover from a disaster. I have used it several times. It can also be used to try Linux on a PC or show Linux to your friends. If you are comfortable with Linux, you can also use to install Linux on your PC. You have to know what you are doing. If you copy it to the existing Linux partition on your hard drive, you may overwrite the contents on your Linux partition. You have been warned. There are three users without passwords on the root disk, root, halt and shutdown, log in as halt or shutdown without password will halt (no delay) or shutdown (a few minutes delay) your computer respectively. You can use this disk to install a bootable root partition on your hard drive. The root disk is on tsx-11.mit.edu under pub/linux/GCC/rootdisk. Distribution File Format ------------------------ There are two versions of the root disk. The first is in the file 3rootdisk.z, and is for a 3.5" floppy. The second file is 5rootdisk.z, and is for a 5.25" floppy. Because the 5.25" floppy is smaller than the 3.5", some files are not present in the 5.25" version. The xia filesystem is used in this rootdisk. /dev directory may not be very up to date. Please consult comp.os.linux for proper device name and major/minor device numbers. Because of the lack of space on the 5.25" version, there are only a few free blocks left, and you may have trouble using vi. To solve this you can delete any files you don't need from the root disk. This is a partial list of what is on the root disk. 1. ksh 4.8 2. gzip 1.03 (may not be present in the 5.25" version.) 3. elvis 1.6 4. doshell, chmod, chown, cp, ls (color), mv, rm, and ln. 5. mount, umount, swapon and swapoff (mount 0.99.6 with NFS support from Rick Sladkey.). 6. more (may not be present in the 5.25" version.) 7. /proc based ps, free, tload, w and uptime 8. mkswap, mkfs/fsck (utile 1.4), mkefs/efsck, mkxfs/xfsck (0.7.2), mke2fs/e2fsck (0.2c) and fdisk (utile 1.4). (mkfs/fsck and mkefs/efsck may not be present in the 5.25" version.) 9. expr (for /dev/MAKEDEV) 10. proc ps 0.5 11. grep (for /usr/etc/inet/rc.net) 12. syslogd 13. lilo 0.9 (only minimum stuff, please get full package as well as documentations yourself. in the 5.25" version, there is only a lilo.z.) Building the Bootable Root Floppy --------------------------------- 1. uncompress [3|5]rootdisk.Z with gzip. 2. rawrite or dd the file to a formatted floppy disk. You now have a bootable floppy, which you can use to boot your system. Installing a Bootable Root Partition on Your Hard Drive ----------------------------------------------------- This rootdisk is not recommended for people, who know little about shell script, Unix administration and some PC hardware knowledges, to use it to install Linux on hard drive since it lacks the necessary documentations due to the floppy disk space. You should get the other packages unless you have to use this one due to physical memory limitation. However, this disk is still good for emergency :-). There is a SLS release on tsx-11.mit.edu under pub/linux/packages/SLS and many other Linux FTP sites. And there is also a TAMU release. If you have a CR-ROM, you can try Linux/GNU/X CD-ROM distribution from Yggdrasil Computing, Incorporated. Please contact YCI at (510) 526-7531, yggdrasil@netcom.com or fax (510) 528-8508 for details. You can use this disk to install a bootable root partition on your hard drive. You will need to create a root partition on your disk, using the DOS fdisk command, or another hard drive utility. If you are creating the partition, be sure to record its size in bytes. If the partition already exists, you can find its size using fdisk. There are two fast filesystem, xiafs and ext2fs, with long filename support. I didn't include mkfs and mkefs in the 5.25" version since I am discouraging you using minix fs and ext fs. You should make your own decision for your hard partitions between xia fs and ext2 fs. I put both of them on my hard disk. If you want to install Linux on partition /dev/hdxx with xiafs, whose size is yyyy K bytes, do: [mkxfs|mke2fs] -c /dev/hdxx yyyyy mount -t [xiafs|ext2] /dev/hdxx /mnt cd / for d in *; do if [ $d != "proc" ]; then cp -av $d /mnt fi done cp -av .* /mnt Edit /mnt/etc/fstab to ensure that /dev/hdxx will be mounted as root. There are some examples in /mnt/etc/fstab. If you use the 5.25" version, you have to do this: cd /mnt/bin ln -sf gzip uncompress cd /mnt/etc/lilo /mnt/bin/uncompress lilo.z Lots of stuff in the 5.25" version are either missing, lacking a symbolic link, or gzipped to save some disk space. Next, use lilo to set up your hard drive to boot either Linux or DOS. Please read the documentation come with LILO for the details of installation. Here is a very simple example. cd /mnt/etc/lilo rm map boot.???? ./lilo -r /mnt -b /dev/hdxx -i /etc/lilo/boot.b -v -v -v /vmlinux.z,/dev/hdxx You will also need to make the partition you wish to boot from active, and make all other partitions non-active. You can do this using fdisk or activate in /etc/lilo. To use activate, please do activate device [partition] where device is the device name for the whole hard drive and partition is the partition number you want to activate. If partition is omitted, activate will just report the current active partition. You can now boot Linux from your hard drive. Installing other packages should be easy, you can just mount those floppies with filesystems supported by kernel on them. This kernel should get you going, but may not be the best for your particular hardware configurations. You should get the kernel source and configure it according to your need. Note: If you don't like the color ls, you can make `ls -f' or `ls --no-color' as an alias for ls. Booting Other OS's --------------- There is a file called mboot.tar.Z under pub/linux/GCC/rootdisk on tsx-11.mit.edu. Running mboot from a DOS partition on your first hard drive will enable you to choose from a menu to boot from up to 4 partitions on your first hard drive. Read the documentation in mboot.tar.z for details. Other Linux Disks ----------------- The next thing you may want to do is install the Linux Base System, which contains many system utilities. Please read README.basedisk in the base system directory for details. The Linux Base System is on tsx-11.mit.edu under pub/linux/GCC/basedisk. The only thing missing from the Linux Base System is ispell 3.0.9. It is in a separate file, under pub/linux/GCC/basedisk. You may be also interested in libdisk and gccdisk, which have the most current C/C++ libraries and gcc. Note: basedisk, libdisk and gccdisk may not be very up to date. I am doing my best to keep them current. I will try to update my root disk regularly with Linus' new kernel. This root disk works on my machine with 100MB IDE drive. I don't know anything about your machine or SCSI. Good luck. Correct me if I am wrong. Tell me about your story. Thanks. H.J. hlu@eecs.wsu.edu 03/15/93 ------ From: qx@shire.math.columbia.edu (Qi Xia) Subject: EMERGENCY: xiafs in linux-0.99.7 Message-ID: <1993Mar14.193748.7604@tc.cornell.edu> Originator: mdw@db.TC.Cornell.EDU Keywords: Emergency fix xiafs Sender: news@tc.cornell.edu Nntp-Posting-Host: db.tc.cornell.edu Organization: Cornell Theory Center Date: Sun, 14 Mar 1993 19:37:48 GMT Approved: linux-announce@tc.cornell.edu (Matt Welsh) Lines: 74 Status: RO Hi, There are some inhencement in xiafs supposed to be included in official linux 0.99.7 distribution. But when I got the distribution, I found it's not there. As a result, xiafspgm-0.8.tar.Z I uploaded to linux sites yesterday will not work with linux 0.99.7. You still need xfspgm-0.7.tar.Z with xfspgm-0.7.fix which you have now, or xfsck and mkxfs from H.J. Lu's rootdisk. If you have run (0.8) xfsck, and your xiafs is not accessable any more, do not panic. Apply following patch to linux-0.99.7. It is for linux-0.99.6/xiafs-0.7.2, but it should work with linux-0.99.7 (patch may report "off xxx lines"). Your xiafs will be accessable again and work normally under patched kernel. But you have to continuous using xiafspgm-0.8. (0.8) xfsck may report "bad i_blocks" for some files. You can safely ignore it. This will be fixed automatically, when the inhencement get into the kernel. I will contect Linus, ask him to include the inhencement in next release. Sorry for the confusing. Frank Xia. =========[xiafs-0.7pl3]================================================= *** inode.c.org Wed Mar 10 17:00:38 1993 --- inode.c Wed Mar 10 18:17:51 1993 *************** *** 374,382 **** inode->i_rdev = raw_inode->i_zone[0]; else { for (zone = 0; zone < 8; zone++) ! inode->u.xiafs_i.i_zone[zone] = raw_inode->i_zone[zone]; ! inode->u.xiafs_i.i_ind_zone = raw_inode->i_ind_zone; ! inode->u.xiafs_i.i_dind_zone = raw_inode->i_dind_zone; } brelse(bh); if (S_ISREG(inode->i_mode)) --- 374,382 ---- inode->i_rdev = raw_inode->i_zone[0]; else { for (zone = 0; zone < 8; zone++) ! inode->u.xiafs_i.i_zone[zone] = raw_inode->i_zone[zone] & 0xffffff; ! inode->u.xiafs_i.i_ind_zone = raw_inode->i_ind_zone & 0xffffff; ! inode->u.xiafs_i.i_dind_zone = raw_inode->i_dind_zone & 0xffffff; } brelse(bh); if (S_ISREG(inode->i_mode)) *************** *** 438,446 **** raw_inode->i_zone[0] = inode->i_rdev; else { for (zone = 0; zone < 8; zone++) ! raw_inode->i_zone[zone] = inode->u.xiafs_i.i_zone[zone]; ! raw_inode->i_ind_zone = inode->u.xiafs_i.i_ind_zone; ! raw_inode->i_dind_zone = inode->u.xiafs_i.i_dind_zone; } inode->i_dirt=0; bh->b_dirt=1; --- 438,449 ---- raw_inode->i_zone[0] = inode->i_rdev; else { for (zone = 0; zone < 8; zone++) ! raw_inode->i_zone[zone] = (raw_inode->i_zone[zone] & 0xff000000) ! | (inode->u.xiafs_i.i_zone[zone] & 0xffffff); ! raw_inode->i_ind_zone = (raw_inode->i_ind_zone & 0xff000000) ! | (inode->u.xiafs_i.i_ind_zone & 0xffffff); ! raw_inode->i_dind_zone = (raw_inode->i_dind_zone & 0xff000000) ! | (inode->u.xiafs_i.i_dind_zone & 0xffffff); } inode->i_dirt=0; bh->b_dirt=1; --