448 lines
19 KiB
Plaintext
448 lines
19 KiB
Plaintext
Welcome to FIPS
|
|
The First nondestructive Interactive Partition Splitting program
|
|
|
|
Version 0.3 alpha
|
|
June 8, 1993
|
|
|
|
Copyright 1993 by Arno Schaefer
|
|
|
|
|
|
0. What you need to use FIPS
|
|
1. Introduction
|
|
2. Safety
|
|
3. Restrictions
|
|
4. Before you start
|
|
5. Use with Stacker/SuperStor/Doublespace
|
|
6. Using FIPS
|
|
7. After splitting the partition
|
|
8. Commandline Switches
|
|
9. Troubleshooting
|
|
10. Credits
|
|
|
|
|
|
FIPS is a program designed to split an existing DOS partition without deleting
|
|
the data on it.
|
|
|
|
FIPS is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 1, or (at your option)
|
|
any later version.
|
|
|
|
FIPS is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with FIPS; see the file COPYING. If not, write to
|
|
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
Report problems and direct all questions to:
|
|
|
|
schaefer@silene.imag.fr
|
|
|
|
|
|
0. What you need to use FIPS
|
|
|
|
You need a defragmentation program in order to move all data to the beginning
|
|
of the hard disk. FIPS will only split your partition if you have enough free
|
|
space at the end. Suitable programs are Norton's Speedisk, PCTools' Compress,
|
|
or the Shareware programs ORG, DOG or SAFPAK (available by anonymous FTP from
|
|
any simtel mirror in the <msdos.dskutl> directory). I did not test these how-
|
|
ever, so don't blame me if they don't work for you.
|
|
You may also want to use a program like Norton Disk Doctor to check your
|
|
harddisk before and after using FIPS.
|
|
|
|
FIPS was developed under DOS 5.0. It should work fine with anything above
|
|
3.0, perhaps even with 2.0. However it will not be of much use with older
|
|
DOS versions, since the large partition sizes are only available since DOS 4.
|
|
It should also work under DR-DOS (never tested it, though).
|
|
|
|
Don't use FIPS in multitasking environments like OS/2, Desqview, Windows or
|
|
the Linux DOS-Emulator. I don't know what will happen, but I would not like
|
|
to take any chances. FIPS does not (yet ?) attempt to detect these, so be
|
|
careful!
|
|
|
|
|
|
1. Introduction
|
|
|
|
The program was inspired by the Linux Project. When installing Linux on a
|
|
PC that was used for DOS / Windows, many people want to retain a smaller
|
|
partition for their DOS software. However, since most Harddisks contain
|
|
only one large partition, you would normally be required to do a complete
|
|
backup, erase the partition and build two (or more) new partitions. Then you
|
|
would restore the backup to one of the new partitions.
|
|
This is a very time consuming activity and requires lots of diskettes (why
|
|
buy 50+ disks only to once backup and restore your HD?).
|
|
FIPS was written to remedy this problem. You can now split a partition
|
|
without losing any data, provided there is enough free space for the new
|
|
partition at the end of the old one.
|
|
|
|
|
|
2. Safety
|
|
|
|
FIPS was specifically designed to provide a maximum of safety. On startup
|
|
it checks the Partition Table, Boot Sector and FAT for any inconsistencies.
|
|
If it finds anything suspicious, it will tell you so. If there are errors,
|
|
FIPS will not proceed.
|
|
You have the possibility to write backup copies of your root- and bootsector
|
|
to a floppy disk before proceeding. If something goes wrong, you may restore
|
|
these with the program 'restorrb.exe' (see section 4).
|
|
After you have entered the start cylinder for the new partition, FIPS will
|
|
check if the new partition is completely empty by examining the FAT of the
|
|
old one. If it is not, FIPS will stop.
|
|
After having calculated the new Partition Table and Bootsector, FIPS will
|
|
check them again, so that eventual bugs in the calculation may be detected.
|
|
Only if everything is ok, FIPS will ask for permission to write the new
|
|
Root- and Bootsector.
|
|
|
|
|
|
3. Restrictions
|
|
|
|
FIPS will only work with Hard Disk BIOSes that use interrupt 13h for low
|
|
level harddisk access. I don't know if there exist others, but if you happen
|
|
to have one (large SCSI disks, perhaps?), FIPS will most certainly not find
|
|
any meaningful data and thus will exit without attempting to write anything.
|
|
|
|
FIPS will only work on disks with a sector size of 512 bytes.
|
|
It seems that DOS is prepared to deal with different sector sizes, but so
|
|
far I did not hear of formatting programs that use this possibility.
|
|
If anybody can tell me anything about it, I may incorporate this in a later
|
|
release.
|
|
|
|
FIPS will not split partitions with 12-bit FATs (you would not want to split
|
|
partitions with less than 10 MB, would you?).
|
|
|
|
FIPS will only split DOS partitions. Partition Table and Bootsector must
|
|
conform to the MSDOS 3.0+ conventions. This is marked by the system
|
|
indicator byte in the partition table, it must have the value 4 (16-bit
|
|
sector number) or 6 (32-bit sector number).
|
|
It will especially *not* split Linux-partitions.
|
|
|
|
FIPS does not yet work on extended DOS partitions.
|
|
|
|
FIPS will not work if you already have four partitions, since it needs one
|
|
free partition entry.
|
|
|
|
FIPS will not reduce the original partition to a size with less than 4085
|
|
clusters, because this would imply rewriting the 16-bit FAT to a 12-bit FAT.
|
|
|
|
4. Before you start
|
|
|
|
Run CHKDSK on the partition you want to split. If you have Norton Disk Doctor
|
|
or something similar, you may use it also. Make sure there remain no 'dead'
|
|
clusters on the disk.
|
|
Prepare a bootable floppy disk in drive A:. If you need a device driver to
|
|
access your harddisk, install it on the floppy (see your Hard Disk Controller
|
|
manual for details). Copy the file RESTORRB.EXE to this disk. When starting
|
|
FIPS, you will be given the opportunity to write backup copies of your root-
|
|
and bootsector to a file on drive A: called ROOTBOOT.000.
|
|
If anything goes wrong while using FIPS, you can restore the original infor-
|
|
mation by booting from the floppy and running RESTORRB.
|
|
|
|
In addition to this you *must* now defragment your Harddisk. All of the space
|
|
that will be used for the new partition must be free. Be aware that the
|
|
Windows Swapfile will not be moved by most defragmentation programs. You must
|
|
uninstall it (in the 386enhanced part of the Windows Control Panel) and rein-
|
|
stall it after using FIPS.
|
|
If you use IMAGE or MIRROR, the last sector of the hard disks contains a
|
|
hidden system file with a pointer to your mirror files. You must delete this
|
|
file before using FIPS (it will be recreated the next time you run mirror).
|
|
Do 'attrib -rsh image.idx' or 'attrib -rsh mirorsav.fil' in the rootdirectory,
|
|
then delete the file.
|
|
If FIPS still complains about the new partition not being empty after defrag-
|
|
mentation, this may mean
|
|
|
|
a. You still have too much data in the remaining partition. Consider making
|
|
the new partition smaller or deleting some of the data.
|
|
|
|
b. There are hidden files in the space of the new partition that have not
|
|
been moved by the defragmentation program. Make sure to which program
|
|
they belong. If a file is a swap file of some program (for example NDOS)
|
|
it is possible that it can be safely deleted (and will be recreated
|
|
automatically later when the need arises). See your manual for details.
|
|
|
|
If the file belongs to some sort of copy protection, you must uninstall
|
|
the program to which it belongs and reinstall it after repartitioning.
|
|
|
|
I can't give you more aid in this - if you really can't figure out what
|
|
to do, contact me directly.
|
|
|
|
Attention! If you use a DOS-version lower than DOS 5.0 do *not* try to move
|
|
DOS' hidden system files (ibmbio.com & ibmdos.com or something similar). You
|
|
will end up with a harddisk that won't boot any more. Since these files are
|
|
already in the first sectors of the partition, it is not necessary to move
|
|
them.
|
|
|
|
Be aware that the location of your DOS partitions in the partition table may
|
|
change. If you use the new partition under DOS *and* you have an extended
|
|
partition and/or two drives, this means that the names of the partitions may
|
|
change (D: may become E: for example). I have taken care that C: always re-
|
|
mains C:, so that you will still be able to boot.
|
|
|
|
For Linux users:
|
|
This also means that the number of the DOS partition under Linux may change
|
|
(/dev/hda3 may become /dev/hda1). Any existing Linux partitions will not
|
|
change, so that you will have no trouble booting (this was corrected in ver-
|
|
sion 0.2.2). You just need to edit your /etc/fstab file if you mount your DOS
|
|
partition on bootup.
|
|
|
|
|
|
5. Use with Stacker/SuperStor/Doublespace
|
|
|
|
I received reports that the following scheme works with Stacker, it may also
|
|
work with the other programs. I can't confirm this, since I don't use any of
|
|
these programs.
|
|
|
|
a. Make sure that there is enough space on the compressed partition to be
|
|
split.
|
|
b. Use the Checkdisk program that comes with the compression program.
|
|
c. Remove the Windows swapfile (if you have one).
|
|
d. Decrease the size of the compressed volume with the utilities that come
|
|
with the compression program.
|
|
e. Boot without the compression device driver.
|
|
f. Look at the directory listing to see how much space is available for the
|
|
new partition.
|
|
i. use FIPS as described below.
|
|
|
|
If the compressed volume is fragmented (I don't know if this is possible),
|
|
FIPS will complain about the partition not being empty. You may need to add
|
|
the following steps. Attention: I can not guarantee that this will not cor-
|
|
rupt the compression scheme, see your manual for details. It seems to work
|
|
with Stacker, but I have no reports about the other programs.
|
|
|
|
g. Remove Hidden, Readonly and System attributes from compressed volume.
|
|
h. Defragment the partition.
|
|
|
|
j. Reset Hidden, Readonly and System attributes on compressed volume.
|
|
|
|
Please let me know if this scheme works for you, so that I can include this
|
|
info in later releases.
|
|
|
|
|
|
6. Using FIPS
|
|
|
|
You start FIPS by typing FIPS at the DOS prompt, followed by <ENTER>.
|
|
You may exit from the program at any time by pressing <CTRL-C>.
|
|
|
|
FIPS will first detect you hard disks, if you have more than one, it will
|
|
ask you which one you want to work on.
|
|
FIPS then reads the rootsector of the hard disk and display the partition
|
|
table.
|
|
|
|
Example:
|
|
|
|
| | Start | | End | Start |Number of|
|
|
Part.|bootable|Head Cyl. Sector|System|Head Cyl. Sector| Sector |Sectors | MB
|
|
-----+--------+----------------+------+----------------+--------+---------+----
|
|
1 | yes | 0 148 1| 83h| 15 295 63| 149184| 149184| 72
|
|
2 | no | 1 0 1| 06h| 15 139 63| 63| 141057| 68
|
|
3 | no | 0 140 1| 06h| 15 147 63| 141120| 8064| 3
|
|
4 | no | 0 0 0| 00h| 0 0 0| 0| 0| 0
|
|
|
|
|
|
If you don't know what to make of this, don't worry too much. You may just use
|
|
the number of Megabytes to identify your partitions.
|
|
|
|
The rootsector is then checked for errors. If you get an error message, see
|
|
the file 'errors.txt' for an explanation.
|
|
|
|
If you have more than one partition on the disk, you will be asked which one
|
|
you want to split.
|
|
|
|
The bootsector of the chosen partition is read and some information is dis-
|
|
played.
|
|
|
|
Example:
|
|
|
|
Bytes per sector: 512
|
|
Sectors per cluster: 8
|
|
Reserved sectors: 1
|
|
Number of FATs: 2
|
|
Number of rootdirectory entries: 512
|
|
Number of sectors (short): 0
|
|
Media descriptor byte: f8h
|
|
Sectors per FAT: 145
|
|
Sectors per track: 63
|
|
Drive heads: 16
|
|
Hidden sectors: 63
|
|
Number of sectors (long): 141057
|
|
Physical drive number: 80h
|
|
Signature: 29h
|
|
|
|
|
|
FIPS checks if this information is consistent with the partition table and
|
|
tries to detect other errors.
|
|
|
|
It then verifies if the two copies of the FAT are identical, if they are not,
|
|
FIPS will exit with an error message.
|
|
|
|
If everything checks out ok, you may now enter on which cylinder the new par-
|
|
tition should start. The calculation is the following: The size of one cylin-
|
|
der in KB is: number of heads * number of sectors per track / 2 (in the above
|
|
case 504 KByte). The new starting cylinder is: start cylinder of partition
|
|
(from the partition table) + (desired size of reduced partition in KB / size
|
|
of one cylinder in KB).
|
|
|
|
Example:
|
|
If I want to reduce partition 2 in the above example to 50 MB, I calculate:
|
|
0 + ((50 * 1024) / 504) = 101. This is the number I would enter, which would
|
|
result in a 50 MB and a new 18 MB partition.
|
|
|
|
FIPS will look if the space for the new partition is empty, if not it will
|
|
stop.
|
|
|
|
After this, FIPS will calculate the changes to the rootsector, check the
|
|
changes and display the new partition table. You may now choose to reedit the
|
|
partition table (this will return you to the point where you select the par-
|
|
tition) or to continue. If you type 'c', FIPS will calculate the changed
|
|
bootsector, check it again and prompt you if you want to proceed. If you type
|
|
'y' then, FIPS will write the changes to the disk and exit.
|
|
|
|
|
|
7. After splitting the partition
|
|
|
|
Your new partition will be recognized by DOS after your first reboot. Make
|
|
sure to disable all programs that write to your disk in config.sys and
|
|
autoexec.bat before rebooting. Your best bet is to rename these two files
|
|
or to boot from floppy. You should especially disable MIRROR or IMAGE.
|
|
After rebooting, use CHKDSK or Norton Disk Doctor to make sure your old (now
|
|
smaller) partition is ok. If you don't find any errors, you may now reboot
|
|
with your normal config.sys and autoexec.bat. Start some programs and make
|
|
sure you can still read your data.
|
|
|
|
If you want to use your new partition under DOS, you must format it. If you
|
|
have multiple partitions, make sure to format the right one, the drive names
|
|
may have changed!
|
|
If you want to use the partition under Linux, you may now change the system
|
|
indicator byte with Linux' fdisk, then use MKFS.
|
|
|
|
|
|
8. Commandline Switches
|
|
|
|
Since version 0.2 there are commandline switches to use FIPS non-interactively
|
|
and to override some of the error messages. If you prefer the DOS style, you
|
|
may use '/' instead of '-' as the switch character. The switches may be arbi-
|
|
trarily combined. Type 'FIPS -help' to get a list of the switches.
|
|
Here is a more detailed explanation:
|
|
|
|
-q or -quiet : quiet mode
|
|
|
|
The program only displays the prompts for input, nothing else. If you have
|
|
selected drive,partition, start cylinder and save/nosave on the commandline,
|
|
the program will run completely silent. Attention: no write confirmation is
|
|
requested. Like this, you can use the program in a batch file (I don't think
|
|
anybody will ever need this feature - you don't change your partition size
|
|
every day - but here it is :-). Perhaps it could be useful in a network
|
|
environment with many identical workstations.
|
|
|
|
-t or -test : test mode (no writes to disk)
|
|
|
|
This doesn't need much explanation.
|
|
|
|
-v or -verbose : verbose mode
|
|
|
|
When an error or a warning is displayed, the additional information from the
|
|
file ERRORS.TXT is shown, so you need not search for it - this file must be
|
|
in the current directory
|
|
|
|
-d or -debug : debug mode
|
|
|
|
In this mode, a complete transcript of your session along with some additio-
|
|
nal information is written to the file FIPSINFO.DBG in the current directory.
|
|
You can send this file to me in case of trouble (see below).
|
|
This switch does not interfere with the -d<num> switch.
|
|
|
|
-h or -help or -? : help page
|
|
|
|
A short summary of the switches
|
|
|
|
-d<num> : select drive <num>
|
|
|
|
Preselect the drive number with this switch. Valid numbers are 128 to 255.
|
|
This may also be used to override the automatic drive detection - if for any
|
|
reason the drive is not found by FIPS, you may try this switch.
|
|
|
|
-p<num> : select partition <num>
|
|
|
|
Preselect the partition number (1-4). Only valid partitions are accepted.
|
|
|
|
-c<num> : new start cylinder = <num>
|
|
|
|
Preselect the new start cylinder - only valid cylinder numbers are accepted.
|
|
|
|
-s+ : save rootsector and bootsector to floppy without prompting
|
|
-s- : do not save rootsector and bootsector to floppy
|
|
|
|
These switches skip the question if you want to save the root- and bootsector.
|
|
Insert a floppy disk before starting FIPS when using -s+.
|
|
|
|
-omb : override 'More than one bootable Partition'
|
|
|
|
There are some bootprograms that do not complain about more than one bootable
|
|
partition - they will just use the first one. If you have such a program in
|
|
your rootsector and the PC boots normally, you may use this switch to skip
|
|
the error message. I would recommend however to delete the wrong flags, if
|
|
you have a suitable program.
|
|
|
|
-obf : override 'Invalid bootable-flag'
|
|
|
|
By modifying the bootable flag and the bootprogram it is theoretically pos-
|
|
sible to boot from the second harddrive. If you happen to have such a confi-
|
|
guration, use this switch to skip the error message.
|
|
|
|
-ore : override 'Number of Rootdir entries must be multiple of 16'
|
|
|
|
An invalid number of Rootdir entries is accepted by DOS. If you have no other
|
|
means to correct the entry, you may use this switch to skip the error message.
|
|
|
|
-olf : override 'FAT too large'
|
|
|
|
Since the number of sectors per FAT is a 2-byte number, it is theoretically
|
|
possible to have up to 65535 sectors per FAT. This is accepted by DOS, but a
|
|
number greater than 256 is not useful, since the largest possible FAT has 256
|
|
sectors.
|
|
|
|
-osf : override 'FAT too small'
|
|
|
|
If the number of clusters in the partition is larger than there are entries
|
|
in the FAT, DOS uses only part of the partition. Something has gone *very*
|
|
wrong with this partition, but all is not lost - use this switch and reduce
|
|
the new partition to a size that can be properly managed.
|
|
|
|
-omd : override 'Wrong Media Descriptor Byte in FAT/Bootsector'
|
|
|
|
The media descriptor byte should be F8h for a harddisk, but other values like
|
|
FCh are accepted by DOS (perhaps used for removable media ?), so you can
|
|
override the error message with this switch.
|
|
|
|
|
|
9. Troubleshooting
|
|
|
|
FIPS is still very experimental, and when in doubt I usually decided to stay
|
|
safe and display error messages when encountering suspicious configurations.
|
|
For some of the minor errors I added override switches (see section 8).
|
|
There is also a verbose mode that displays additional info on errors (the
|
|
-v switch). If you can't resolve a problem yourself, or have a configuration
|
|
not supported by FIPS, or if you suspect a bug in FIPS, make a transcript of
|
|
your session using the -d switch and send the file FIPSINFO.DBG along
|
|
with a short comment to schaefer@silene.imag.fr. Possibly your problem has
|
|
already been solved.
|
|
|
|
|
|
10. Credits
|
|
|
|
FIPS is based on the procedure described by Drew Eckhardt in Linux digest132.
|
|
Most of what I know about Harddisk structures comes from the excellent german
|
|
book 'Scheibenkleister II' by Claus Brod and Anton Stepper. It is for the
|
|
Atari ST, but most of it applies to PCs also.
|
|
Information on the Harddisk Interrupts was drawn from Ralf Brown's Interrupt
|
|
List. Thanks to Hamish Coleman for some useful info and to Paul Smith for
|
|
his good suggestions. Gunnar Hilmarsson suggested the procedure for stacked
|
|
drives, and Miguel Alvarez helped me improve the partition ordering. Thanks
|
|
to all others who sent me feedback.
|
|
|
|
|
|
Arno Schaefer
|
|
schaefer@silene.imag.fr
|