home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 1999 August
/
PCWorld_1999-08_cd.bin
/
doc
/
HOWTO
/
unmaintained
/
mini
/
Win95+Win+Linux
< prev
next >
Wrap
Text File
|
1998-01-14
|
14KB
|
324 lines
[ 15 January 1998
The Linux Win95+Win+Linux mini-HOWTO is not being maintained by
the author any more. If you are interested in maintaining the
Win95+Win+Linux mini-HOWTO, please get in touch with me at
<gregh@sunsite.unc.edu>. ]
Windows 95 + Windows 3.x + Linux Howto
Robert Goodwin <Robert.Goodwin@mcc.ac.uk>
August 1996
0. Introduction
This document was originally written in Jan96. I have incorporated
various comments, information, and questions received since then.
This document is also avilable in Japanese; see the collection of
Japanese linux docs at http://epsenewsc.gee.kyoto-u.ac.jp/JF/JF.html
1. Booting Multiple Operating Systems
If you want to boot multiple operating systems (and you don't want
to have to boot them from floppy disk!), you need to use some
sort of BOOT MANAGER.
Win95 doesn't really *have* a boot manager - it has boot options,
but in my book a "boot manager" can be configured to boot anything.
Lilo can be configured to boot almost anything, as can the OS/2
boot manager and the Windows NT boot manager. Which of these you
use is really up to you; it depends what you want on your system.
If you use the OS/2 manager, for example, it "hides" the "other"
DOSsy partitions from you.
2. Other Places You Might Look
If you just want Win95 and Linux, then you probably want the
Win95+Linux Howto. The latest version can be found at:
http://www.in.net/~jkatz/win95/Linux-HOWTO.html
Win95 and Linux can be installed on a single drive; the problems
covered in the rest of this document revolve around DOS not allowing
more than ONE primary DOS partition per drive.
If you want to use the NT boot manager, take a look at
http://www.bcpl.lib.md.us/~dbryan/directboot.html
To add Linux (or others, including OS/2), there's a nifty little
program that makes boot sector files for use with the NT loader.
You can find information about this at
http://ourworld.compuserve.com/homepages/gvollant/othertl.htm
You might also investigate LOADLIN.EXE which allows you to "boot"
Linux by first booting into DOS.
3. Why this HOWTO?
This document addresses the following issues:
* How to get Win 3.x to live on the same machine as Win95 without
problems (and what those problems might otherwise be)
* How to avoid problems on a machine with Win95 which can also
remote boot DOS
* How to install Win95 with Linux without having to reinstall lilo
(with the tedious booting of Linux from floppy)
Although the Win95 filesystem lives on top of the standard DOS FAT,
it does some pretty unpleasant things to it. Boot your Win95 machine
from a bootable DOS floppy and get Norton to check the disk (but
DON'T let it attempt any repairs or you'll mess up some "long"
filenames)
I am currently required to support applications in the Win95
environment as well as under Win3.x (both run locally and network
booted). I developed the setup described in this document to allow me
to do all this with just one PC.
Don't ask how a Unix person ended up in this position :-)
4. Requirements
If you are prepared to tinker with the source to lilo (lilo 1.7
or later, I belive), it is possible to do all this with ONE
hard disk. This works by changing the contents of the partition
table as the system boots; if you don't feel confident about trying
this, then don't!
Otherwise, you will need TWO hard disks. This is due to some
DOS/Windows limitations with respect to booting and allocation of
drive letters. Believe me, I tried to get it working with one.
(but I didn't want to mess with the lilo source)
5. What you will end up with
A word on device names. I have seen systems which use /dev/hdc for
the 3rd IDE disk (first IDE disk on secondary controller) and
/dev/hdd for the fourth. I've also seen systems which use /dev/hd1a
and /dev/hd1b (giving such partitions as /dev/hd1a3 etc). My system
uses this second naming style, but I have changed to names to
/dev/hdc and /dev/hdd to minimise confusion.
Here is a brief description of what I now have - watch those drive
letters because they change...
If you use a secondary IDE controller, you may need to create the
/dev entries yourself (/dev/hdcd* and /dev/hdd*) This might be the
case if you add a second hard drive to a machine with one IDE disk
and an IDE CDROM already installed; your second hard disk would be
/dev/hdc. I have tried this arrangement with no problems.
I have: /dev/hda - first hard disk
/dev/hdb - cd-rom drive
/dev/hdc - second hard disk
Option 1:
On powering up the machine, I can allow the boot ROM on the
ethernet card to remote boot DOS. The "C" drive is the first DOS
partition on the FIRST IDE disk (in my case /dev/hda1). The "D"
drive is the first DOS partition on the SECOND IDE disk (in my
case /dev/hdc1), and the "E" drive is the second DOS partition on
the SECOND IDE disk (/dev/hdc2). The CD-ROM becomes F:
Option 2:
Allow lilo to boot the default system (Linux, naturally)
Option 3:
Interrupt lilo and ask for an option I call DOS. This boots DOS
from /dev/hda1, and, as with option 1, the "C" drive is /dev/hda1
the "D" drive is /dev/hdc1 and the "E" drive is /dev/hdc2. The
CD-ROM becomes F:
Option 4:
Interrupt lilo and ask for an option I call Win95. This boots
Win95 from the first DOS partition on the SECOND IDE drive (in
my case /dev/hdc1). Follow this carefully: the "C" drive is now
the first DOS partition on the SECOND IDE disk (/dev/hdc1),
the "D" drive is now the first DOS partition on the FIRST IDE
disk (/dev/hda1), and the "E" drive remains the second DOS
partition on the SECOND IDE disk (/dev/hdc2). The CD-ROM
becomes F:
Notice that the C drive changes depending how you boot. This means
that when you install Win95, you install it to C:\WINDOWS, and when
you install Win3.x, you install it to C:\WINDOWS but this isn't the
same place :-)
Also notice that the third DOS partition (which I use as a general
data drive) is E: whichever way you boot, and that the CD-ROM
stays constant too.
6. How to do it
First of all, install Linux; it does not matter which drive you
install it on; but since you are using two drives it makes sense to
create a swap partition on each.
Create a primary DOS partition on the second disk. Unfortunately, the
DOS FDISK won't let you do this, so you must use the Linux fdisk to
create the partition, set the type (6 for DOS 16 BIT FAT > 32Mb), set
the partition as bootable, and CAREFULLY follow the advice on the man
page for fdisk. This describes how to persuade DOS to recognise a
partition created in this manner using the dd command to zero the
first 512 bytes of the partition. (Basically, you use
"dd if=/dev/zero of=/dev/XXXX bs=512 count=1" where XXXX is the
device but be VERY careful since this is a good way to trash a disk
- for example by putting /dev/hda instead of /dev/hda1!)
Creating the primary DOS partition on the first hard disk can be done
with the DOS FDISK. Any other required DOS partitions can similarly
be created.
Both of these primary partitions must be formatted as bootable DOS
partitions; use FORMAT C: /S and FORMAT D: /S having booted from a
floppy. In order to avoid confusion, give the partitions meaningful
volume labels!
Edit /etc/lilo.conf to give you the option of booting from either
of the two primary DOS partitions. I have appended an example
to the end of this document. Note the use of the "loader" line in
this example file. Which you choose to install as Win95 and which
as DOS/Win3.x is up to you; I used the second hard disk for Win95
since network booting of the machine then gives the normal DOS
drive as "C". Also (and usefully), installing Win95 on the second
hard disk avoids having to boot linux from a recovery disk and
re-install lilo (why this should be is explained below). Remember
to run lilo to install the options.
If you are (sensibly) planning to install Win95 from CDROM, you
will need to include the relevant drivers on the Win95 partition
such that when you boot from it, the CDROM drive will be accessible.
Now boot, using lilo, from the drive you wish to use for DOS/Win3.x
and install the rest of DOS and Win3.x - the Windows installation
should go to the C:\WINDOWS directory as per default.
Once this is done, reboot the machine and, using lilo, boot from the
Win95 partition. Perform your Win95 installation. The installation
procedure may suggest D:\WINDOWS for installing Win95 because it
searches the machine for existing WINDOWS versions - DON'T accept
this - install Win95 to C:\WINDOWS.
Now for the neat part! Win95 is a rather arrogant system - when you
install it, it assumes that it is the only operating system on the
machine and proceeds to write its own MBR (Master Boot Record) to
the hard disk. This is why you generally need to re-install lilo.
If you have installed Win95 to the second hard disk, you have done
something which the Microsoft(tm) programmers didn't consider.
On one machine where I performed this operation, Win95 wrote its
replacement MBR to the MBR of the SECOND hard disk. On another, I
never found any evidence of it at all. The practical upshot of this
is that the MBR which matters, that of the first hard disk, is
not disturbed. Thus when you reboot the machine, you will be greeted
by the friendly and familiar LILO prompt.
Example Partition List:
/dev/hda1 * DOS partition (C: or D: depending upon boot)
/dev/hda2 Extended partition
/dev/hda5 /
/dev/hda6 swap
/dev/hda7 /home
/dev/hdc1 * Win95 partition (C: or D: depending upon boot)
/dev/hdc2 DOS partition (E: always)
/dev/hdc3 swap
(Partitions with a * are set as bootable (or "active") by fdisk)
Example lilo.conf:
# /etc/lilo.conf
install = /boot/boot.b
compact
delay = 20 # optional, for systems that boot very quickly
#prompt # use instead of delay to force response to boot prompt
#vga = normal # force sane state
#ramdisk = 0 # paranoia setting
#root = current # use "current" root
boot = /dev/hda
image = /boot/vmlinuz
read-only
label = linux
other = /dev/hdc1
label = win95
loader= /boot/any_d.b
other = /dev/hda1
table = /dev/hda
label = dos
image = /boot/vmlinuz.old
label = linux.old
optional
read-only
7. Some Questions and Answers
Q: Does this scheme work for SCSI disks?
A: I have been told that this works, but have not been able to try it
for myself
Q: Does this scheme work if Linux is wholly on one disk, and DOS and
Win 95 are partitions of the other?
A: No - the DOS and Win95 bits both have to be the primary "DOS"
partition of a disk. It is possible to get round this by
recompiling LILO
Q: I have downloaded a Win95 FAQ which speaks of the ability to boot
between DOS and Win95. If I install Win3.11 in a different directory
from "windows" it says I can run Win95 and Win3.11 in harmony. This
is one partition.
A: Yes, this can be done. It may cause problems however. Win95 does
some nasty things to the FAT drive and some operations you perform
under your old DOS and old windows (3.x) can easily destroy the
long-filename information. For example, defragmenting the drive using
a DOS/Win3.x utility will do this. You are also introducing
difficulties for yourself when things don't work; you have to worry
about the INI files under each system *and* the win95 registry.
Q: Does LBA matter?
A: Yes. Ugh!
BIOS's after approx 1994 support LBA to get around a limit somewhere
inside DOS which prevents DOS from being able to cope with cylinder
numbers > 1024. (This is covered in much greater detail in PC hardware
FAQs). LBA fiddles the disk geometry, multiplying the number of heads
by 2 or 4 (etc) in order to divide the aparent number of cylinders by
2 or 4 (etc) to a number < 1024. This works around this limit.
Linux can handle cylinders > 1024 (provided that the partition from
which you boot is wholly below 1024 cylinders), so can handle large
(>504Mb) disks even on old machines (pre-1994 BIOS). It can also
handle large disks on BIOS's which do support LBA, whether or not
LBA is enabled.
It is vital that ALL the OS's view each disk as having the same
geometry - this is because the numbers in the partition table are
"perceived" cylinder numbers, not the actual ones. Therefore, changing
the BIOS setting to activate LBA will invalidate the existing contents
of a disk.
If your linux system does not "see" the "correct" geometry (that is,
the same that DOS "sees"), you will need to add a line to lilo.conf
append="hd=x,y,z" where x,y,z represent the disk geometry (see the
relevant man pages).
Q: My BIOS only holds information on two HDDs, not four. Does this
matter?
A: Maybe! Having 4 HDDs with old BIOS's under DOS required the use of
driver software. Newer BIOS's hold information on 4 HDDs.
Linux can happily use 4 HDDs even with most of these older BIOS's,
but if you put a DOS partition on disk 3 you will only be able to
access it via linux.
This is relevant since many machines have an IDE drive, an IDE
CD-ROM and, if you want to implement this document, another IDE
drive too.
If you have found this document useful, please let me know.