PLIP Install HOWTO <author>Gilles Lamiral, <tt>lamiral@mail.dotcom.fr</tt> <date>v0.10, 24 October 1999 <abstract> This paper describes how to install a <bf>Gnu|Linux</bf> distribution on a computer without Ethernet card, nor cdrom, but just a <bf>local floppy drive</bf> and a <bf>remote nfs server</bf> attached by a <bf>Null-Modem parallel</bf> cable. The nfs server has a <bf>cdrom drive</bf> mounted and exported. <toc> <p>You can find the last release of the <htmlurl url="http://www.linuxdoc.org/HOWTO/PLIP-Install-HOWTO.html" name="PLIP-Install-HOWTO">, by Gilles Lamiral, located at: <newline> <tt>http://www.linuxdoc.org/HOWTO/PLIP-Install-HOWTO.html</tt> <sect>Introduction <p> Writing a PLIP install HOWTO seems useless nowadays since Ethernet cards are cheap: NE2000 cards cost near the same as a Null-Modem cable. This is true for desktop computers, but not for laptop computers, which the PCMCIA card costs more than 10 times as the Null-Modem cable. Moreover, there is a parallel port on every computer, not a network card. Of course, this howto can be used to install Linux on every personal computer without loss of generality. This paper is just what I've done to install a <htmlurl url="http://www.debian.org" name="Debian GNU/Linux"> distribution on a Toshiba Portégé 620CT laptop, from a NFS exported cdrom drive, via a Null-Modem cable. A Null-Modem cable is also called a LapLink cable but this word is <htmlurl url="http://www.marksonline.com/app/tmsearch/find_mark?tok=laplink" name="trademarked"> by Traveling Software under the number 75466713 since 1986, so I won't use it anymore. This HOWTO will be obsolete when every Linux distribution include a PLIP install option. For example, the Debian installation only needs to add two commands to make this HOWTO obsolete (ifconfig + route). I hope one Debian maintainer will consider this point. I would be happy to know if someone used the PLIP-Install-HOWTO to install other Linux distributions from other network protocols (ftp, http, nfs, samba, or even NT/Novell servers) Feedback for typos, bad English, comments, money, job writings, joy, fears, cries are welcome and recommended (not with the same eagerness, choose yours). <!-- He who can do more can do less. --> <sect>License <p> I put this documentation under the <url url="http://www.opencontent.org/opl.shtml" name="opencontent"> license. This means this document is given without any warranty. You can use it, redistribute it, modify it, by respecting the following conditions: You have to clearly specify the nature and the content of the modifications, their date and keep the opencontent license in case of redistribution. If you sell it, you sell the medium, not the content. This is a summary, read the license to get more details. For those who can't read the license online, I give a textual copy: <tscreen><verb> OpenContent License (OPL) Version 1.0, July 14, 1998. This document outlines the principles underlying the OpenContent (OC) movement and may be redistributed provided it remains unaltered. For legal purposes, this document is the license under which OpenContent is made available for use. The original version of this document may be found at http://www.opencontent.org/opl.shtml LICENSE Terms and Conditions for Copying, Distributing, and Modifying Items other than copying, distributing, and modifying the Content with which this license was distributed (such as using, etc.) are outside the scope of this license. 1. You may copy and distribute exact replicas of the OpenContent (OC) as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the OC a copy of this License along with the OC. You may at your option charge a fee for the media and/or handling involved in creating a unique copy of the OC for use off-line, you may at your option offer instructional support for the OC in exchange for a fee, or you may at your option offer warranty in exchange for a fee. You may not charge a fee for the OC itself. You may not charge a fee for the sole service of providing access to and/or use of the OC via a network (e.g. the Internet), whether it be via the world wide web, FTP, or any other method. 2. You may modify your copy or copies of the OpenContent or any portion of it, thus forming works based on the Content, and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified content to carry prominent notices stating that you changed it, the exact nature and content of the changes, and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the OC or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License, unless otherwise permitted under applicable Fair Use law. These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the OC, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the OC, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Exceptions are made to this requirement to release modified works free of charge under this license only in compliance with Fair Use law where applicable. 3. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to copy, distribute or modify the OC. These actions are prohibited by law if you do not accept this License. Therefore, by distributing or translating the OC, or by deriving works herefrom, you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or translating the OC. NO WARRANTY 4. BECAUSE THE OPENCONTENT (OC) IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE OC "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK OF USE OF THE OC IS WITH YOU. SHOULD THE OC PROVE FAULTY, INACCURATE, OR OTHERWISE UNACCEPTABLE YOU ASSUME THE COST OF ALL NECESSARY REPAIR OR CORRECTION. 5. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MIRROR AND/OR REDISTRIBUTE THE OC AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE OC, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. </verb></tscreen> <sect>How did I wrote this howto ? <p> I wrote this paper during the installation process but since I encountered several problems in the same time, my notes were disparate and sometimes I forgot to write the good command lines because I was fed up to reboot (kernel compilations) and edit this file each time. When the installation went wrong (It did, I'm a beginner on laptops, plip, linux nfs, portmaper, Debian), I tried several things to fix the problems. When they remained too long, my brain was focused on solving, not writing. So, when the installation process finally came out, I decided to restart the process from scratch by noting everything in order to save <bf>your</bf> time. It was the first time I installed Linux twice on the same computer. Then, in order to verify the document, I again restarted from scratch with a Slink Debian distribution (The next after the Hamm one). It was the first time I installed Linux 3 times on the same computer. I hope it was the last time I do that. <bf>Conclusion</bf>: If you do what is in this paper, it should work. <sect>What do you need ? <p> <itemize> <item> A Personal Computer, laptop or desktop, called the target computer or simply <bf>target</bf>. <p> <item> A 3"1/4 inch floppy drive on the <bf>target</bf>. <p> <item> Two or three fresh floppies. They don't need to be formatted. You also need one more DOS formated floppy if you have to play with <tt>FIPS</tt>. <p><item> A other Computer with a cdrom drive and nfs services, called source computer or simply <bf>source</bf>. It doesn't have to be a Linux system but just a system which can export a cdrom drive via nfs. In this HOWTO, I assume it is a Linux system. <p><item> A cdrom distribution. I took a Debian Hamm (2.0r3) from an old Infomagic compilation. I think every distribution can be installed this way, but I'm not sure. I've read a <htmlurl name="french document" url="http://www.linux-france.org/article/sys/Install-Plip/Install-Plip.html">, written by Chmouel Boudjnah, saying the RedHat distribution has a easy installation process. The Chmouel's document also deal with the Debian distribution, so if you read French, you can use the Chmouel's document instead of this one. <p><item> A Null-Modem DB 25 cable. <p> <item> Some time: 3 hours. <p><item> Coffee. </itemize> <sect>The documentation <p> I recommend those good readings when you can't figure out a problem. I've read them. You should too if you're curious or conscientious. Please, do not forget to consider the <htmlurl url="http://www.linuxdoc.org/mirrors.html" name="LDP mirrors">, listed at: <newline> <url url="http://www.linuxdoc.org/mirrors.html"> Mostly every HOWTO are translated in <htmlurl url="http://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/" name="many languages">. Just go to a mirror bottom page and follow the <bf><tt>translations/</tt></bf> link. If you want to use Linux on a laptop, read the last <htmlurl url="http://www.snafu.de/~wehe/index_li.html" name="Laptop-HOWTO">, by Werner Heuser, located at: <newline> <url url="http://www.snafu.de/~wehe/index_li.html">. If you haven't install any distribution yet, read carefully the <htmlurl url="http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html" name="Installation-HOWTO">, by Eric S. Raymond, located at: <newline> <url url="http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html" >. And make more coffee :-) If you need information about your cdrom, drive read the <htmlurl url="http://www.linuxdoc.org/HOWTO/CDROM-HOWTO.html" name="CDROM-HOWTO">, by Jeff Tranter, located at: <newline> <url url="http://www.linuxdoc.org/HOWTO/CDROM-HOWTO.html">. If you haven't install a nfs server yet, read the <htmlurl url="http://www.linuxdoc.org/HOWTO/NFS-HOWTO.html" name="NFS-HOWTO">, by Nicolai Langfeldt, located at: <newline> <url url="http://www.linuxdoc.org/HOWTO/NFS-HOWTO.html">. If you need to compile a new kernel on the <bf>source</bf> box, read the <htmlurl url="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html" name="Kernel-HOWTO">, by Brian Ward, located at: <newline> <url url="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html">. If you are new with plip, read the <htmlurl url="http://www.linuxdoc.org/HOWTO/mini/PLIP.html" name="PLIP MINI-HOWTO">, by Andrea Controzzi, located at: <newline> <url url="http://www.linuxdoc.org/HOWTO/mini/PLIP.html">. <!-- read the <htmlurl url="" name="">, by , located at: <newline> <url url="">. --> If you plan to build your Null-Modem cable on your own, a good reading is the file <htmlurl url="file:///usr/src/linux/Documentation/networking/PLIP.txt" name="PLIP.txt">, by Donald Becker, located at: <newline><tt>/usr/src/linux/Documentation/networking/PLIP.txt</tt> <newline> on your <bf>source</bf> linux computer, Luke. <sect>Conventions <p> The file contents and line commands and install screen-shots are always in <tt>typewriter</tt> font, like this: <verb> #!/bin/bash ############################################# #### This is the great file /bin/Windows #### ############################################# while [ "1" ]; do echo "I do my best because I'm the best" echo "Very soon, next Y2Kill (the 01/01/0000)" echo "A new marvelous 64 bit release !" echo "Please wait a little more" sleep 18446744073709551615 # 2^64-1 done </verb> or this: <verb> $ killall Windows Terminated </verb> The file content lines never begin with white space. You'll have to remove them, if any. Sorry, I'm fed up with <tt>C-a M-AltGr-\</tt> (remember, I'm a French azerty writer). Tab-emacs reflex is untamable. Command input lines begin with a dollar <tt>$</tt> (the prompt), you don't have to type the dollar, just type the rest of the line; other lines are the command output, you don't have to type them neither. Because all the configuration commands are important, you'll need to use a system administrator shell, like root, on the <bf>source</bf> and the <bf>target</bf> computers. <verb> $ su Password: blabla # </verb> The prompt will remain "<tt>$</tt>" in this documentation, even if it should be "<tt>#</tt>". This is because "<tt>#</tt>" often means comment, so it is ambiguous. I don't like ambiguity in computer science. <sect>Network parameters <p> We will make a plip pointopoint network with those IP configuration: <itemize> <item> <bf>target</bf>: 192.168.0.1 netmask 255.255.255.255 <item> <bf>source</bf>: 192.168.0.2 netmask 255.255.255.255 </itemize> You should not already have those names in your name space: <verb> $ ping source ping: unknown host source $ ping target ping: unknown host target </verb> You should not already have those IP addresses in your network space: <verb> $ ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes ping: sendto: Network is unreachable ping: wrote 192.168.0.1 64 chars, ret=-1 --- 192.168.0.1 ping statistics --- 1 packets transmitted, 0 packets received, 100% packet loss $ ping 192.168.0.2 PING 192.168.0.2 (192.168.0.2): 56 data bytes ping: sendto: Network is unreachable ping: wrote 192.168.0.2 64 chars, ret=-1 --- 192.168.0.2 ping statistics --- 1 packets transmitted, 0 packets received, 100% packet loss </verb> If those commands don't give you a error, change the names or the addresses. You can choose other addresses, names or netmask (netmask must be the same on both sides). In the rest of this document, I'll suppose you choose those addresses and those names. Add a line in <bf><tt>/etc/exports</tt></bf> <verb> #### file /etc/exports #### ... /cdrom source(ro) target(ro) #### EOF #### </verb> Because the portmaper do try to resolve IP addresses, add the IP addresses and names in <bf><tt>/etc/hosts</tt></bf> <verb> #### file /etc/hosts #### ... 192.168.0.1 target 192.168.0.2 source #### EOF #### </verb> Verify you have the item <bf><tt>files</tt></bf> for the <bf><tt>hosts</tt></bf> search list in the file <bf><tt>/etc/nsswitch.conf</tt></bf> <verb> #### file /etc/nsswitch.conf #### ... hosts: files nis dns ... #### EOF #### </verb> <sect>PLIP on the Source side <p> This section describes how to set the <tt>plip</tt> interface in the <bf>source</bf> server. If you run into troubles, I suggest to read the <htmlurl url="http://www.linuxdoc.org/HOWTO/mini/PLIP.html" name="PLIP MINI-HOWTO">. Check if your <tt>lp</tt> device is not set. You should not have this entry: <verb> $ cat /proc/devices Character devices: ... 6 lp ... </verb> If you have it, kill the <tt>lpd</tt> daemon and remove the <tt>lp</tt> module: <verb> $ /etc/rc.d/init.d/lpd.init stop Shutting down lpd: lpd $ rmmod lp </verb> If you can't remove the <tt>lp</tt> module then you have to recompile the <bf>kernel</bf> with <tt>lp</tt> service as a module. Now, the "<tt>6 lp</tt>" line is disappeared from the <tt>/proc/devices</tt> file, which is a reflection of the kernel possibilities. You are not obliged to eliminate the lp device because it can work with it but it isn't sure (it works for me). Check it yourself. Check if your parallel port is handle: <verb> $ ls /proc/parport/ 0/ $ cat /proc/parport/0/hardware base: 0x378 irq: 7 dma: none modes: SPP,ECP,ECPEPP,ECPPS2 </verb> If you don't have any directory under <tt>/proc/parport/</tt> then you have to load the <tt>parport</tt> and <tt>parport_pc modules</tt>: <verb> $ insmod parport $ insmod parport_pc </verb> You should see this new entry in <bf><tt>/var/log/messages</tt></bf>: <verb> Oct 9 20:50:47 louloutte kernel: parport0: PC-style at 0x378 [SPP,ECP,ECPEPP,ECPPS2] Oct 9 20:50:47 louloutte kernel: parport0: detected irq 7; use procfs to enable interrupt-driven operation. </verb> I repeat the message "detected <tt>irq 7</tt>, use procfs to enable interrupt-driven operation", so: <verb> $ echo 7 > /proc/parport/0/irq </verb> Check if <tt>plip</tt> module is loaded: <verb> $ lsmod |grep plip </verb> If <tt>plip</tt> module is not loaded, then load it: <verb> $ insmod plip </verb> You should see something like this in <bf><tt>/var/log/messages</tt></bf> <verb> ==> /var/log/messages <== Oct 8 16:34:12 louloutte kernel: NET3 PLIP version 2.3-parport gniibe@mri.co.jp Oct 8 16:34:12 louloutte kernel: plip0: Parallel port at 0x378, using IRQ 7 </verb> If you can't load the <tt>plip</tt> module then you have to recompile the <bf>kernel</bf> with <tt>plip</tt> service as a module. The syslog message says the module is loaded on the <tt>plip0</tt> interface. Configure the <tt>plip0</tt> interface: <verb> $ ifconfig plip0 source pointopoint target netmask 255.255.255.255 up </verb> Check if everything is ok. <verb> $ ifconfig plip0 plip0 Link encap:10Mbps Ethernet HWaddr FC:FC:C0:A8:00:02 inet addr:192.168.0.2 P-t-P:192.168.0.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:7 Base address:0x378 </verb> Now you can <tt>ping</tt> locally the <bf>source</bf> server: <verb> $ ping source PING source (192.168.0.2): 56 data bytes 64 bytes from 192.168.0.2: icmp_seq=0 ttl=255 time=0.3 ms 64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=0.2 ms --- source ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.3 ms </verb> Verify that the route to <bf>target</bf> exists: <verb> $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface target * 255.255.255.255 UH 0 0 0 plip0 </verb> If the route doesn't exist, add it: <verb> $ route add -host 192.168.0.1 dev plip0 </verb> When the <bf>target</bf> <em>will</em> be configurated you can do a ping test: <verb> $ ping target PING 192.168.0.1 (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=4.5 ms 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=4.3 ms --- 192.168.0.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 4.3/4.4/4.5 ms </verb> But if you try it now you should have: <verb> $ ping target PING target (192.168.0.1): 56 data bytes --- target ping statistics --- 5 packets transmitted, 0 packets received, 100% packet loss </verb> Now, the server network is ready to work. Congratulations. <sect>The cdrom nfs server side <p> This section describes how to mount and export via NFS a cdrom drive. Mount the cdrom. If you encounter a problem with your cdrom drive, read the <bf><em>CDROM-HOWTO</em></bf>. I suppose that the cdrom device is <tt>/dev/hdd</tt> but it could be <tt>/dev/sr0</tt> or <tt>/dev/hdb</tt> etc. The mount point I choose is <tt>/cdrom</tt> but you can choose the one you want: <verb> $ mount -t iso9660 /dev/hdd /cdrom </verb> You have to set up nfs services. If something goes wrong, read the <bf><em>NFS-HOWTO</em></bf> Verify your kernel supports nfs: <verb> $ cat /proc/filesystems ext2 nodev proc nodev nfs nodev ncpfs nodev devpts iso9660 </verb> Verify your portmaper can handle mountd and nfs client requests: <verb> $ rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 655 mountd 100005 1 tcp 657 mountd 100003 2 udp 2049 nfs 100003 2 tcp 2049 nfs </verb> Lines with <tt>nfs</tt> or <tt>portmapper</tt> have to be there. NFS on tcp ? progress have been made ! Then, rerun <tt>portmap</tt>, <tt>mountd</tt>, <tt>nfs</tt>: <verb> $ /etc/rc.d/init.d/portmap.init stop Stopping INET services: portmap $ /etc/rc.d/init.d/portmap.init start Starting portmapper: portmap $ /etc/rc.d/init.d/nfs stop Shutting down NFS services: rpc.mountd rpc.nfsd $ /etc/rc.d/init.d/nfs start Starting NFS services: rpc.mountd rpc.nfsd </verb> Then, try to mount it "locally" (via nfs) on the <bf>source</bf> box and clean the test: <verb> $ mkdir /tmp/nfstest $ mount -t nfs source:/cdrom /tmp/nfstest $ ls /tmp/nfstest/ README debian/ locatedb.3 tools/ TRANS.TBL ftp.netscape.com/ ls_lR.3 upgrade/ boot/ install/ realaudio/ $ echo great stuff ! $ umount /tmp/nfstest $ rmdir /tmp/nfstest </verb> Bad luck ? Read the <bf><em>NFS-HOWTO</em></bf> and <bf><tt>/var/log/messages</tt></bf>. Check the nfs server with those commands: <verb> $ rpcinfo -p </verb> Run <tt>portmap</tt> with the <tt>-v</tt> flag: <verb> $ portmap -v </verb> kill <tt>portmap</tt>, <tt>mountd</tt>, <tt>nfsd</tt> and rerun them in this order: <tt>portmap</tt>, <tt>mountd</tt>, <tt>nfsd</tt>. Take a rest. Read again the <bf><em>NFS-HOWTO</em></bf> and restart. Now, the exported cdrom drive nfs server is ready to work. Congratulations. <sect>FIPS, splitting of harddisk partitions <p> This section is for people who has a one only primary FAT partition (DOS, Windows 3.xx, NT) and wants to keep it without loosing data. Make some backup because if you burn it, I won't be responsible. You will. Download <url url="ftp://ftp.debian.org/pub/debian/tools/" name="FIPS">. Don't forget the mirrors ftp.<bf>xx</bf>.debian.org where <bf>xx</bf> is your country abbreviation (fr, fi, us, uk, etc.). At the time of this writing the archive file is called <bf>fips20.zip</bf>. The <bf>fips</bf> program is already in the debian cdrom distribution. I found it (yes, after download the <bf>fips20.zip</bf> file) in <tt>/cdrom/debian/tools/fips15.zip</tt> (It supposes your cdrom is mounted on <bf>/cdrom</bf>) I guess you are on a Unix world but you're not compelled to do so. Go in a good working place on the <bf>source</bf> computer: <verb> $ mkdir /tmp/fips-2.0/ $ cd /tmp/fips-2.0/ $ unzip -l /archive/fips/fips20.zip ... $ unzip /archive/fips/fips20.zip ... $ ls $ dos2unix fips.doc fips.faq readme.1st </verb> <enum> <item>Read the file readme.1st <item>Read the file fips.doc <item>Read the file fips.faq </enum> Boot your <bf>target</bf> computer. Be in pure DOS (Quit Windows). Read again the file <bf><tt>fips.doc</tt></bf> from the section "5. Before you start". Be aware of hidden files. Be aware to eliminate the "virtual memory" file (swap for Win*) during the fips process. In Windows 3.11 (Quite up to date, no?) this swap file is configurated from Program-Manager->Control-Panel->Extent (a i386 chip icon). Click->Click->Click on the chip and re-click on a button called "Virtual Memory". Adjust the size to none, Click<-Click<-Click<-Click back plus Alt-F4 to close all your windows. Don't you think the gates are too closed too ? Go to sleep. Run <tt>SCANDISK</tt>: <verb> C:\> SCANDISK </verb> Correct every cluster. You should have no dead cluster now. Quit <tt>SCANDISK</tt> Run <tt>DEFRAG</tt> on C: <verb> C:\> DEFRAG C: </verb> All clusters are at the beginning of the harddisk. Quit <tt>DEFRAG</tt> Make a bootable floppy disk: <verb> C:\> FORMAT A:/S </verb> Copy <bf><tt>AUTOEXEC.BAT</tt></bf> and <bf><tt>CONFIG.SYS</tt></bf> on the new floppy if you want to keep your local features (keyboard keys etc.). Remove the line running <tt>SMARTDRIVE.EXE</tt> in <tt>AUTOEXEC.BAT</tt>. Keep a minimal <tt>AUTOEXEC.BAT</tt> On the <bf>source</bf> box: Copy the fips files <bf>restorrb.exe</bf>, <bf>fips.exe</bf> and <bf>errors.txt</bf> to this floppy disk. <verb> $ mcopy errors.txt fips.exe restorrb.exe a: </verb> Boot the <bf>target</bf> with the floppy. Run fips while reading the section "Using FIPS" in the file <bf>fips.doc</bf> <bf>Do not forget</bf> to answer <bf>yes</bf> when fips ask for a rootboot saving. When everything is ok, save your hard disk space: <verb> $ cd $ rm -rf /tmp/fips-2.0/ </verb> Now you have a nice free space for a new operating system. <sect>Debian installation <p> I'm not a Debian proselyte since it is my first Debian installation. Debian lovers are the same kind of people as Macintosh lovers or Linux lovers in the operating systems space. Nothing else counts. Since I'm already a Mac and Lin lover (and French too :-) it was time to fall in love. Debian is well, clearly and internationally documented. Thanks to all those guys who bred this really open distribution. I could leave you on your own during the installation process. But since we have to interact with a shell during it, the entire process will be described in details. I know the description is Debian specific. I prefer to give you a complete example than nothing except a ``run a shell and type bla bla...''. I do like concrete examples. <sect>Preparing the two floppies <p> On the <bf>source</bf> side, mount the cdrom and go in the install directory <verb> $ mount -t iso9660 /dev/hdd /cdrom $ cd /cdrom/debian/dists/stable/main/disks-i386/current/ </verb> Read the file install.html with a browser or install.txt with a cat, less or more (a dog). Now, record the install (alias rescue) floppy. Write a "<tt>resc1440.bin</tt>" label on it: <verb> $ dd if=resc1440.bin of=/dev/fd0H1440 </verb> Record the drivers floppy. Write a "<tt>drv1440.bin</tt>" label on it: <verb> $ dd if=drv1440.bin of=/dev/fd0H1440 </verb> Lock the writing on those floppies. Now you're ready to start the real installation process. <sect>The real installation process <p> Insert the resc1440.bin floppy on <bf>target</bf> drive. Reboot your <bf>target</bf> box. <verb> Welcome to Debian GNU/Linux 2.x! ...</verb> Read the text The prompt is : <verb> boot:</verb> Press <tt><ENTER></tt> <verb> Loading root.bin........... loading linux... ....</verb> A new screen: <verb> Next: Select Color or Monochrome display</verb> Choose yours with the arrow up/down keys and press <tt><ENTER></tt> <verb> Next: Continue with the installation</verb> press <tt><ENTER></tt> <verb> Software in the Public Interest presents *** Debian GNU/Linux 2.1 *** ...</verb> Read the text Press <tt><ENTER></tt> (You see <tt><Continue></tt> on the screen) <verb> Next: Configure the Keyboard</verb> press <tt><ENTER></tt> Select your country and press <tt><ENTER></tt> <verb> Next : Partition a Hard Disk</verb> Press <tt><ENTER></tt> <verb> Select Disk Drive /dev/hda</verb> If you have several disks choose the good one (where you want to install Linux) and Press <tt><ENTER></tt> You are now using the program <tt>cfdisk</tt>. Using <tt>cfdisk</tt> is safe until you decide to <tt>[Write]</tt> the partition on disk. Leaving <tt>cfdisk</tt> with <tt>[Quit]</tt> is safe. We are going to make just two new primary partitions, a Swap one and a big Linux one. If you want to do more partitions, leave some free space or extended partitions, you can. But read the documentation about Partitioning in the <em>Installation-HOWTO</em>. If you previously ran the <tt>FIPS</tt> program, you see the <tt>hda1</tt> partition (<tt>DOSFAT16</tt>). Switch to the next free partition with the up/down arrow keys. Select <tt>[New]</tt> with the right/left arrow keys and press <tt><ENTER></tt> Select <tt>[Primary]</tt> and press <tt><ENTER></tt> Enter the size of your swap partition. Twice the ram is usual if you have less than 128 mega bytes of ram. If you have 2 giga bytes of ram, it's because you don't want to swap. In that case, no swap partition is needed. Select <tt>[Beginning]</tt> and press <tt><ENTER></tt> Select <tt>[Type]</tt> and press <tt><ENTER></tt> Type <tt>82</tt> (Linux Swap) and press <tt><ENTER></tt> Switch to the next free partition with the up/down arrow keys Select <tt>[New]</tt> and press <tt><ENTER></tt> Select <tt>[Primary]</tt> and press <tt><ENTER></tt> Enter the size in MB (You can leave the default) and press <tt><ENTER></tt> Its type is already Linux. If not, change to Linux (83) with <tt>[Type]</tt> The partition table is defined now. Verify everything looks good. If you're not sure, read the documentation with <tt>[Help]</tt>. If doubts are still there, select <tt>[Quit]</tt> and leave the installation process. Go for a walk and restart from the beginning of this section. I assume your are confident now. Select <tt>[Write]</tt> <verb> Are you sure you want to write the partition table to disk?</verb> Type <tt>yes</tt> and press <tt><ENTER></tt> Select <tt>[Quit]</tt> and press <tt><ENTER></tt> <verb> Next: Initialize and Activate a Swap Partition</verb> Press <tt><ENTER></tt> <verb> Please select the partition to initialize as a swap device</verb> Select <tt>/dev/hda2</tt> (normally already selected) Press <tt><ENTER></tt> <verb> Scan for Bad Blocks?</verb> select <tt><YES></tt> and press <tt><ENTER></tt> <verb> Are you Sure?</verb> select <tt><YES></tt> and press <tt><ENTER></tt> <verb> Initializing swap partition ...</verb> <verb> Next: Initialize a Linux Partition</verb> Press <tt><ENTER></tt> <verb> Select Partition Please select the to initialize as a Linux "ext2" file-system.</verb> Select <tt>/dev/hda3</tt> (normals already selected) and press <tt><ENTER></tt> <verb> Scan for Bad Blocks?</verb> Select <tt><YES></tt> and press <tt><ENTER></tt> <verb> Are you Sure?</verb> Select <tt><YES></tt> and press <tt><ENTER></tt> A new page full of numbers. You can take a rest because it takes some time (especially with big hard disk). <verb> Next: Mount a Previously-Initialized Partition</verb> Press <tt><ENTER></tt> <verb> Please select the partition to mount</verb> Select <tt>/dev/hda3</tt> and press <tt><ENTER></tt> <verb> Mount the /dev/hda3 device as the Root FileSystem?</verb> Select <tt><Yes<</tt> and press <tt><ENTER></tt> <verb> Next: Install Operating System Kernel and Modules</verb> Press <tt><ENTER></tt> <verb> Please select the medium you will use to install the system</verb> Select <tt>/dev/fd0</tt> and press <tt><ENTER></tt> <verb> Please place the Rescue Floppy in the first floppy drive</verb> The floppy is already there.<newline> Select <tt><Continue></tt> and press <tt><ENTER></tt> <verb> Installing the Rescue Floppy ... Please place the Drivers Floppy in the first floppy drive</verb> Eject the Rescue Floppy and insert the Drivers Floppy, the one I you labelled <tt>drv1440.bin</tt> (you did it, didn't you?).<newline> Select <tt><Continue></tt> and press <tt><ENTER></tt> <verb> Installing the Drivers Floppy ...</verb> A new screen: <verb> Next: Configure Device Driver Modules</verb> Press <tt><ENTER></tt> <verb> Select Category</verb> Read the text. <verb> Please select the category of modules</verb> Select <tt>net</tt> and press <tt><ENTER></tt> <newline> Select <tt>plip</tt>. <verb> Module plip</verb> Select "Install the module in the kernel" and press <tt><ENTER></tt> <newline> No parameters are needed. <newline> Select <tt><Ok></tt> and press <tt><ENTER></tt> <verb> Installation succeeded Please press ENTER when you are ready to continue.</verb> Press <tt><ENTER></tt> Select <tt>Exit</tt> (Finished with these modules) and press <tt><ENTER></tt> <newline> Then you see the same kind of screen again. <newline> Select <tt>Exit</tt> (Finished with these modules) and press <tt><ENTER></tt> <verb> Next: Configure the Network</verb> Choose a name, you can use a different name than <tt>debian</tt> or <tt>target</tt>.<newline> Press <tt><ENTER></tt> <verb> Is your system connect to a network? </verb> Select <tt><No></tt> and press <tt><ENTER></tt> <bf>STOP STOP STOP</bf>. You see now: <verb> Next: Install the base system</verb> Now we need a shell. Press <tt>Alt F2</tt> and <tt><ENTER></tt> You are in a root shell. <sect>A install break: PLIP on the target side <p> You are in a root shell. Verify the plip module is loaded: <verb> $ lsmod Module Pages Used by plip 3 0 </verb> Find the exact name of the plip interface: <verb> $ dmesg ... NET3 PLIP version 2.2 gniibe@mri.co.jp plip1: Parallel port at 0x378, using assigned IRQ 7 </verb> You can find the same information with <verb> $ cat /proc/kmsg ... <4>NET3 PLIP version 2.2 gniibe@mri.co.jp <4>plip1: Parallel port at 0x378, using assigned IRQ 7 ... Cntrl-c</verb> Configure the plip interface: <verb> $ ifconfig plip1 192.168.0.1 pointopoint 192.168.0.2 netmask 255.255.255.255 up</verb> Verify everything is ok: <verb> $ ifconfig plip1 plip0 Link encap:Ethernet HWaddr FC:FC:C0:A8:00:01 inet addr:192.168.0.1 P-t-P:192.168.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Collisions:0 Interrupt:7 Base address:0x378</verb> Verify the route to <bf>source</bf> exists: <verb> $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo</verb> If not, like in the previous example, add the route to 192.168.0.2, the <bf>source</bf>: <verb> $ route add -host 192.168.0.2 dev plip1</verb> Now the route is installed: <verb> $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 plip1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo</verb> Now you can perform a successful <tt>ping</tt> from the <bf>source</bf> server (<tt>ping</tt> is not available on the Debian install process): <verb> $ ping target PING target (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=14.0 ms 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=4.3 ms --- target ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 4.3/9.1/14.0 ms</verb> If it doesn't work, check the Null-Modem cable connection, rerun <tt>dmesg</tt>, <tt>ifconfig</tt>, <tt>route</tt>. Verify everything. Take a rest. Restart. When the ping is ok, return to the normal installation process: On the target: Press <tt>Alt F1</tt> <sect>Return to the normal install process <p> You are back to the normal installation process. You should still see: <verb> Next: Install the base system</verb> Press <tt><ENTER></tt> <verb> Please select the medium you will use to install the system</verb> Select <tt>nfs</tt> and press <tt><ENTER></tt> <verb> Please choose the NFS server and the mount path ...</verb> Type: <tt>192.168.0.2:/cdrom</tt><newline> Press <tt><ENTER></tt> <verb> Please choose the path inside the mounted NFS filesystem</verb> Type /debian (normally already there) and press <tt><ENTER></tt> If no error message complains about the nfs mount then bravo. You can verify this mount by entering the shell again: Press <tt>Alt F2</tt> <verb> $ mount ... 192.168.0.2:/cdrom on /instmnt type nfs (rw, addr=192.168.0.2) $ ls /instmnt/debian README README.non-US doc/ README.CD-manufacture README.pgp@ hamm/ README.mirrors.html TRANS.TBL tools/ README.mirrors.txt dists/</verb> Press <tt>Alt F1</tt> You're back again to the normal installation process. Now the plip nfs cdrom connection is done. Let's go on and finish our job. <verb> Please select the directory containing a file base2_0.tgz</verb> Select <tt>list</tt> and press <tt><ENTER></tt> <verb> Please Wait The installation program is building a list of ...</verb> A new screen: <verb> Select Archive Path Please select the directory that you will use to install the Base System from.</verb> Only one long item, already selected. Press <tt><ENTER></tt> <verb> The Base System is being extracted from /instmnt/debian/dists/.....</verb> Take a second rest, you deserve it <verb> Next: Configure the Base System</verb> Press <tt><ENTER></tt> <verb> Select Timezone</verb> Select your timezone and your directory and press <tt><ENTER></tt> <verb> Timezone Configuration</verb> Read and press <tt><ENTER></tt> <verb> Timezone Configuration.</verb> An other page Read, select <tt><YES></tt> and press <tt><ENTER></tt> <verb> Next: Make Linux Bootable Directly From Hard Disk</verb> Press <tt><ENTER></tt> <verb> Create Master Boot Record?</verb> Read<newline> Select <tt><Yes></tt> and press <tt><ENTER></tt> <verb> Make Linux the Default Boot Partition?</verb> Read.<newline> Select <tt><No></tt> and press <tt><ENTER></tt> <verb> Next: Make a boot Floppy</verb> Press <tt><ENTER></tt> <verb> Change Disk Please place a blank floppy disk in the first floppy drive.</verb> Do it and press <tt><ENTER></tt> <newline> The floppy is being formated <verb> Creating a filesystem on the floppy... Copying the operating system kernel...</verb> A new screen: <verb> Next: Reboot the System</verb> Press <tt><ENTER></tt> <verb> Reboot the system ?</verb> Remove the floppy and press <tt><ENTER></tt> The system reboot. Are you still with the dark side? I guess yes, so insert the boot floppy you've just made and reboot again with <tt>Ctrl-Alt-Del</tt> See the boot messages.<newline> Read the text. <verb> New password:</verb> Enter a root password. <verb> Re-enter new password</verb> Do it. <verb> Shall I create a normal user account now? [Y/n]</verb> Enter <tt>n</tt> and press <tt><ENTER></tt> <verb> Shall I install shadow passwords? [Y/n]</verb> Enter <tt>y</tt> and press <tt><ENTER></tt> <verb> Do you want to use a PPP connection to install</verb> Enter <tt>n</tt> and press <tt><ENTER></tt> <verb> Now you may choose one of several selections ... Do you want to perform this step?</verb> Enter <tt>n</tt> and press <tt><ENTER></tt> <verb> I'm going to start the 'dselect' program...</verb> Press <tt><ENTER></tt> <newline> Select <tt>[Q]uit</tt> and press <tt><ENTER></tt> <verb> You may now login as 'root' at the login: prompt... ... debian login:</verb> Enter <tt>root</tt>. <verb> Password:</verb> Enter the root password. <verb> ... debian:~#</verb> The system is installed and working. CONGRATULATIONS! My job stops here. Read the install documentation of your distribution and go on with the Unix system administration job. When you reboot your system, the plip connection won't be in good shape. But now you now what to do. I suggest you some work:<itemize> <item>Configure the plip interface for the normal boot process (in the file <tt>/etc/init.d/network</tt>). <item>Configure <tt>/etc/fstat</tt> to mount simply the remote source cdrom via nfs. <verb> source:/cdrom /cdrom nfs noauto,intr 1 2 </verb> <item>Learn Lilo. Configure it for your DOS and Linux systems and install it on a floppy. <item>When you master Lilo on the floppy, install it on your hard drive. <item>Install and configure the X Window System. <item>Have fun. <item>Mail me a feedback. </itemize> <sect>Need to compile a new kernel ? <p> Several times during the <bf>source</bf> server configuration we mentioned that a kernel compilation on the <bf>source</bf> computer could be needed. I list the things you need to change or set. If you have never compile a kernel, read the <em>Kernel-HOWTO</em>. <verb> Loadable module support ---> [*] Enable loadable module support General setup ---> [*] Networking support <M> Parallel port support <M> PC-style hardware Networking options ---> [*] TCP/IP networking Network device support ---> [*] Network device support <*> Dummy net driver support <M> PLIP (parallel port) support < > or <M> PPP (point-to-point) support < > or <M> SLIP (serial line) support Character devices ---> <M> Parallel printer support Filesystems ---> [*] /proc filesystem support <*> or <M> ISO 9660 CDROM filesystem support Network File Systems ---> <*> or <M> NFS filesystem support </verb> <sect>Todo <p> <itemize> <item>Check a kernel compilation from scratch (no last <tt>.config</tt> file) with only the options I gave. Add the missing ones if any. <p> <item>Make the different chapters dealing with the detailed Debian installation be a single chapter with the actual chapters as just subsections. <p> <item>Make the Red Hat, Mandrake, Caldera OpenLinux, SuSE, Turbo Linux, Slackware, Stampede, detailed installation chapters. Contributions are welcome. Gilles Lamiral won't do that job unless given new computers and CDs. <p> <item>Make "The cdrom nfs server side" chapter become simply "the server side" chapter with subsections like "cdrom medium", "zip medium", "hard disk medium", and "ftp server" "nfs server", "samba server" "http server". Again, contributions are welcome. <!-- <item> <item> <item> <item> <item> --> </itemize> </article> </linuxdoc>