
It is possible for a DOS/Windows system using IDE hard drive(s) and CD ROM to be functional even with the master/slave jumpers on the drives incorrectly set. Linux won't fly this way. If in doubt, check your master-slave jumpers!
Is any of your peripheral hardware designed with neither configuration jumpers nor non-volatile configuration memory? If so, it may require boot-time initialization via an MS-DOS utility to start up, and may not be easily accessible from Linux. CD-ROMs, sound cards, Ethernet cards and low-end tape drives can have this problem. If so, you may be able to work around this with an argument to the boot prompt; see theLinux Boot Prompt HOWTO for details).
Some other operating systems will allow a bus mouse to share an IRQ with other devices. Linux doesn't support this; in fact, trying it may lock up your machine. If you are using a bus mouse, see the Linux Bus Mouse HOWTO, for details.
If possible, get the telephone number of an experienced Linux user you can call in case of emergency. Nine times out of ten you won't need it, but it's comforting to have.
Budget time for installation. That will be about one hour on a bare system or one being converted to all-Linux operation. Or up to three hours for a dual-boot system (they have a much higher incidence of false starts and hangups).
(This step is only needed if you can't boot from a CD-ROM.)
More detailed information on making bootdisks, see the Linux Bootdisk HOWTO.
Your first step will be to select a boot-disk image to fit your hardware. If you must do this by hand, you'll generally find that either (a) the bootdisk images on your CD-ROM are named in a way that will help you pick a correct one, or (b) there's an index file nearby describing each image.
Next, you must create floppies from the bootdisk image you selected, and optionally from the rescue disk images. This is where the MS-DOS program RAWRITE.EXE comes into play.
Next, you must have two or three high-density MS-DOS formatted floppies. (They must be of the same type; that is, if your boot floppy drive is a 3.5" drive, both floppies must be high-density 3.5" disks.) You will use RAWRITE.EXE to write the bootdisk images to the floppies.
Invoke it with no arguments, like this:
C:\> RAWRITE |
Answer the prompts for the name of the file to write and the floppy to write it to (such as A:). RAWRITE will copy the file, block-by-block, directly to the floppy. Also use RAWRITE for the root disk image (such as COLOR144). When you're done, you'll have two floppies: one containing the boot disk, the other containing the root disk. Note that these two floppies will no longer be readable by MS-DOS (they are ``Linux format'' floppies, in some sense).
You can use the dd(1) commands on a UNIX system to do the same job. (For this, you will need a UNIX workstation with a floppy drive, of course.) For example, on a Sun workstation with the floppy drive on device /dev/rfd0, you can use the command:
$ dd if=bare of=/dev/rfd0 obs=18k |
You must provide the appropriate output block size argument (the `obs' argument) on some workstations (e.g., Suns) or this will fail. If you have problems the man page for dd(1) may be be instructive.
Be sure that you're using brand-new, error-free floppies. The floppies must have no bad blocks on them.
Note that you do not need to be running Linux or MS-DOS in order to install Linux. However, running Linux or MS-DOS makes it easier to create the boot and root floppies from your CD-ROM. If you don't have an operating system on your machine, you can use someone else's Linux or MS-DOS just to create the floppies, and install from there.
Even if they are not directly applicable to your system, they will help you understand the issues involved.
![]() |
Some Linuxes will install to a directory on your MS-DOS partition. (This is different than installing from an MS-DOS partition.) Instead, you use the ``UMSDOS filesystem'', which allows you to treat a directory of your MS-DOS partition as a Linux filesystem. In this way, you don't have to repartition your drive. |
I only suggest using this method if your drive already has four partitions (the maximum supported by DOS) and repartitioning would be more trouble than it's worth (it slows down your Linux due to filename translation overhead). Or, if you want to try out Linux before repartitioning, this is a good way to do so. But in most cases you should re-partition, as described here. If you do plan to use UMSDOS, you are on your own -- it is not documented in detail here. From now on, we assume that you are NOT using UMSDOS, and that you will be repartitioning.
A partition is just a section of the hard drive set aside for a particular operating system to use. If you only have MS-DOS installed, your hard drive probably has just one partition, entirely for MS-DOS. To use Linux, however, you'll need to repartition the drive, so that you have one partition for MS-DOS, and one (or more) for Linux.
Partitions come in three flavors: primary, extended, and logical. Briefly, primary partitions are one of the four main partitions on your drive. However, if you wish to have more than four partitions per drive, you need to replace the last primary partition with an extended partition, which can contain many logical partitions. You don't store data directly on an extended partition---it is used only as a container for logical partitions. Data is stored only on either primary or logical partitions.
To put this another way, most people use only primary partitions. However, if you need more than four partitions on a drive, you create an extended partition. Logical partitions are then created on top of the extended partition, and there you have it---more than four partitions per drive.
Note that you can easily install Linux on the second drive on your system (known as D: to MS-DOS). You simply specify the appropriate device name when creating Linux partitions. This is described in detail below.
Back to repartitioning your drive. It used to be that there was no way to resize partitions without destroying the data on them. Nowadays there are partitioning utilities that can resize non-destructively; they know about the structure of file systems, can find the free space on a file system, and can move file data around on the partition to move free space where it needs to be in order for a resize to work properly. It's still suggested that you make a full backup before using one of these, in case of program or human error.
Under Linux GNU parted allows you to create, destroy, resize and copy partitions. It supports ext2, FAT16, and FAT32 filesystems, Linux swap devices; it also knows about MS-DOS disk labels. Parted is useful for creating space for new operating systems, reorganising disk usage, copying data between hard disks, and disk imaging. It is relatively new code, but is reported to work well and not trash data.
There is a non-destructive disk repartitioner available for MS-DOS, called FIPS. With FIPS, a disk optimizer (such as Norton Speed Disk), and a little bit of luck, you should be able to resize MS-DOS partitions without destroying the data on them.
The older method of resizing a partition, if you don't have one of these resizing partition editors available, is to delete the partition(s), and re-create them with smaller sizes. If you use this method, you absolutely must make a backup in order to save any of your data.
The classic way to modify partitions is with the program FDISK. For example, let's say that you have an 80 meg hard drive, dedicated to MS-DOS. You'd like to split it in half---40 megs for MS-DOS and 40 megs for Linux. In order to do this, you run FDISK under MS-DOS, delete the 80 meg MS-DOS partition, and re-create a 40 meg MS-DOS partition in its place. You can then format the new partition and reinstall your MS-DOS software from backups. 40 megabytes of the drive is left empty. Later, you create Linux partitions on the unused portion of the drive.
In short, you should do the following to resize MS-DOS partitions with FDISK:
Make a full backup of your system.
Create an MS-DOS bootable floppy, using a command such as
FORMAT /S A: |
Boot the MS-DOS system floppy.
Run FDISK, possibly specifying the drive to modify (such as C: or D:).
Use the FDISK menu options to delete the partitions which you wish to resize. This will destroy all data on the affected partitions.
Use the FDISK menu options to re-create those partitions, with smaller sizes.
Exit FDISK and re-format the new partitions with the FORMAT command.
Restore the original files from backup.
Note that MS-DOS FDISK will give you an option to create a ``logical DOS drive''. A logical DOS drive is just a logical partition on your hard drive. You can install Linux on a logical partition, but you don't want to create that logical partition with MS-DOS fdisk. So, if you're currently using a logical DOS drive, and want to install Linux in its place, you should delete the logical drive with MS-DOS FDISK, and (later) create a logical partition for Linux in its place.
The mechanism used to repartition for OS/2 and other operating systems is similar. See the documentation for those operating systems for details.
In addition, most users create a swap partition, which is used for virtual RAM. If you have, say, 4 megabytes of memory on your machine, and a 10-megabyte swap partition, as far as Linux is concerned you have 14 megabytes of virtual memory.
When using swap space, Linux moves unused pages of memory out to disk, allowing you to run more applications at once on your system. However, because swapping is often slow, it's no replacement for real physical RAM. But applications that require a great deal of memory (such as the X window system) often rely on swap space if you don't have enough physical RAM.
Nearly all Linux users employ a swap partition. If you have 4 megabytes of RAM or less, a swap partition is required to install the software. It is strongly recommended that you have a swap partition anyway, unless you have a great amount of physical RAM.
The size of your swap partition depends on how much virtual memory you need. It's often suggested that you have at least 16 megabytes of virtual memory total. Therefore, if you have 8 megs of physical RAM, you might want to create an 8-megabyte swap partition. Note that there are platform-dependent limits on the size of swap partitions; see the Partition-HOWTO if you want to create a swap partition larger than 1GB.
You can find more on the theory of swap space layout and disk partitioning in the Linux Partition mini-HOWTO (http://www.linuxdoc.org/HOWTO/mini/Partition.html).
Note: it is possible, though a bit tricky, to share swap partitions between Linux and Windows 95 in a dual-boot system. For details, see the Linux Swap Space Mini-HOWTO.
Gotcha #1: If you have an EIDE drive with a partition that goes above 504MB, your BIOS may not allow you to boot to a Linux installed there. So keep your root partition below 504MB. This shouldn't be a problem for SCSI drive controllers, which normally have their own drive BIOS firmware. For technical details, see the Large Disk Mini-HOWTO.
Gotcha #2: Are you mixing IDE and SCSI drives? Then watch out. Your BIOS may not allow you to boot directly to a SCSI drive.
It often cuts down the time required for boot-time file-system checks.
Files can't grow across partition boundaries. Therefore you can use partition boundaries as firebreaks against programs (like Usenet news) that want to eat huge amounts of disk, to prevent them from crowding out file space needed by your kernel and the rest of your applications.
If you ever develop a bad spot on your disk, formatting and restoring a single partition is less painful than having to redo everything from scratch.
On today's large disks, a good basic setup is to have a small root partition (less than 80 meg), a medium-sized /usr partition (up to 300 meg or so) to hold system software, and a /home partition occupying the rest of your available space for home directories.
You can get more elaborate. If you know you're going to run Usenet news, for example, you may want to give it a partition of its own to control its maximum possible disk usage. Or create a /var partition for mail, news, and temporary files all together. But in today's regime of very cheap, very large hard disks these complications seem less and less necessary for your first Linux installation. For your first time, especially, keep it simple.
SCSI: 0 hosts |
linux <parameters...> |
hd=cylinders,heads,sectors Specify the drive geometry. Required for systems such as the IBM PS/1, ValuePoint, and ThinkPad. For example, if your drive has 683 cylinders, 16 heads, and 32 sectors per track, enter
linux hd=683,16,32 |
tmc8xx=memaddr,irq Specify address and IRQ for BIOS-less Future Domain TMC-8xx SCSI controller. For example,
linux tmc8xx=0xca000,5 |
Note that the 0x prefix must be used for all values given in hex. This is true for all of the following options.
st0x=memaddr,irq Specify address and IRQ for BIOS-less Seagate ST02 controller.
t128=memaddr,irq Specify address and IRQ for BIOS-less Trantor T128B controller.
ncr5380=port,irq,dma Specify port, IRQ, and DMA channel for generic NCR5380 controller.
aha152x=port,irq,scsi_id,1 Specify port, IRQ, and SCSI ID for BIOS-less AIC-6260 controllers. This includes Adaptec 1510, 152x, and Soundblaster-SCSI controllers.
If you have questions about these boot-time options, please read the Linux SCSI HOWTO, which should be available on any Linux FTP archive site (or from wherever you obtained this document). The SCSI HOWTO explains Linux SCSI compatibility in much more detail.
/dev/hda First IDE drive
/dev/hdb Second IDE drive
/dev/sda First SCSI drive
/dev/sdb Second SCSI drive
For example, to create Linux partitions on the first SCSI drive in your system, you will use (or your installation program might generate from a menu choice) the command:
cfdisk /dev/sda |
If you use fdisk or cfdisk without an argument, it will assume /dev/hda.
To create Linux partitions on the second drive on your system, simply specify either /dev/hdb (for IDE drives) or /dev/sdb (for SCSI drives) when running fdisk.
Your Linux partitions don't all have to be on the same drive. You might want to create your root filesystem partition on /dev/hda and your swap partition on /dev/hdb, for example. In order to do so just run fdisk or cfdisk once for each drive.
In Linux, partitions are given a name based on the drive which they belong to. For example, the first partition on the drive /dev/hda is /dev/hda1, the second is /dev/hda2, and so on. If you have any logical partitions, they are numbered starting with /dev/hda5, /dev/hda6 and so on up.
![]() |
You should not create or delete partitions for operating systems other than Linux with Linux fdisk or cfdisk. That is, don't create or delete MS-DOS partitions with this version of fdisk; use MS-DOS's version of FDISK instead. If you try to create MS-DOS partitions with Linux fdisk, chances are MS-DOS will not recognize the partition and not boot correctly. |
Here's an example of using fdisk. Here, we have a single MS-DOS partition using 61693 blocks on the drive, and the rest of the drive is free for Linux. (Under Linux, one block is 1024 bytes. Therefore, 61693 blocks is about 61 megabytes.) We will create just two partitions in this tutorial example, swap and root. You should probably extend this to four Linux partitions in line with the recommendations above: one for swap, one for the root filesystem, one for system software, and a home directory area.
First, we use the ``p'' command to display the current partition table. As you can see, /dev/hda1 (the first partition on /dev/hda) is a DOS partition of 61693 blocks.
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M
Command (m for help):
|
Next, we use the ``n'' command to create a new partition. The Linux root partition will be 80 megs in size.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
|
Here we're being asked if we want to create an extended or primary partition. In most cases you want to use primary partitions, unless you need more than four partitions on a drive. See the section ``Repartitioning'', above, for more information.
Partition number (1-4): 2 First cylinder (204-683): 204 Last cylinder or +size or +sizeM or +sizeK (204-683): +80M |
The first cylinder should be the cylinder AFTER where the last partition left off. In this case, /dev/hda1 ended on cylinder 203, so we start the new partition at cylinder 204.
As you can see, if we use the notation ``+80M'', it specifies a partition of 80 megs in size. Likewise, the notation ``+80K'' would specify an 80 kilobyte partition, and ``+80'' would specify just an 80 byte partition.
Warning: Linux cannot currently use 33090 sectors of this partition |
If you see this warning, you can ignore it. It is left over from an old restriction that Linux filesystems could only be 64 megs in size. However, with newer filesystem types, that is no longer the case... partitions can now be up to 4 terabytes in size.
Next, we create our 10 megabyte swap partition, /dev/hda3.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (474-683): 474
Last cylinder or +size or +sizeM or +sizeK (474-683): +10M
|
Again, we display the contents of the partition table. Be sure to write down the information here, especially the size of each partition in blocks. You need this information later.
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M
/dev/hda2 204 204 473 82080 83 Linux native
/dev/hda3 474 474 507 10336 83 Linux native
|
Note that the Linux swap partition (here, /dev/hda3) has type ``Linux native''. We need to change the type of the swap partition to ``Linux swap'' so that the installation program will recognize it as such. In order to do this, use the fdisk ``t'' command:
Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 82 |
If you use ``L'' to list the type codes, you'll find that 82 is the type corresponding to Linux swap.
To quit fdisk and save the changes to the partition table, use the ``w'' command. To quit fdisk WITHOUT saving changes, use the ``q'' command.
After quitting fdisk, the system may tell you to reboot to make sure that the changes took effect. In general there is no reason to reboot after using fdisk---modern versions of fdisk and cfdisk are smart enough to update the partitions without rebooting.
Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda1 30719 22337 6796 77% / /dev/sda3 595663 327608 237284 58% /usr /dev/sda4 1371370 1174 1299336 0% /home /dev/sdb1 1000949 643108 306130 68% /home2 |
You may be given the option of installing LILO on your hard drive. Unless you're running OS/2, answer `yes'. OS/2 has special requirements; see Custom LILO Configuration below.
Installing LILO as your primary loader makes a separate boot diskette unnecessary; instead, you can tell LILO at each boot time which OS to boot.