####[ How-Do-I Documents ]###################################### Sub : Initial Partitioning How-Do-I do partitioning of my IDE Hard disk for a first-time Linux install on a system with pre-existing Windows ? ################################################################ 1 Introduction 1.1 This is a very common problem faced by most newbies. To make matters more complicated, newer generation distros with their "magic" intelligent mechanisms, make a hash of things ... only to regret ... when it is too late. 1.2 The normal scene is something like this. Joe Ramaswamy has a relatively new computer which came pre-laden with Windows of some type. Either his neighbour gave him a Linux distro, or one came along "free" with one of the monthly computer mags ... and now he is prepared to try out Linux on his spare E: or F: ... his friend confirms that this can be done ... and the new distro with its "intelligent" mechanisms and GUI installs confirms that this is very much in order .... 2 The genesis of the problem 2.1 Joe sees things as C:, D:, E: etc, and his hard drive adequately partitioned. What he does not know is the fact that any fdisk under M$ has two problems: o There is only ONE primary partition (which is taken up by the M$ OS itself) with its boot loader on the MBR (Master Boot Record) ... All other partitions are made as Extended logicals. o There are times when the partition boundaries are not written correctly. Some versions of MS-DOS create a first partition which does not begin on a cylinder boundary, but on sector 2 of the first cylinder. 2.2 He diligently moves all his data from E: to D: and then gets into the act of installing the Linux to E: or to (/dev/hda6 as he learns on the way). His new distro, as per claims does a perfect install. He even makes a boot disk .... everything seems okay ... he can dual boot ! 2.3 With some experience he has learnt that it is better to have a separate /home (or even /usr). So he wants to repartition. Runs disk-druid or cfdisk ... and Lo ! He probably did something that he did not know, and now the D: is not accessible ! 3 Understanding the problem 3.1 The problem was that when the second OS (Linux) was in- stalled, it was put in an extended-logical partition by the intelligent new distro. The boot record was written to the first sector of the EXTENDED partition. If he was doing a dual boot through LILO it is obvious that the MBR also had LILO record. 3.2 Every PRIMARY partition has its own boot record ... but all the Extended-Logical partitions have only ONE boot record, that of the mother EXTENDED partition. There is no chance that a third boot record can be written. When one re-partitions an extended partition, the partition info is re-written on the boot record of the Extended partition, which may result in loss of ALL data coming under the EXTENDED partition inclusive of all logical partitions coming under it. The only scope of recovery is restoring the original configuration if the bounda- ries are known. 4 Background to the solution 4.1 Every IDE hard disk can accept upto FOUR primary or THREE primary and ONE extended partition. No hard disk can have two Extended partitions ... there is no need actually, because an Extended partition can have an unlimited number of logical partitions under it. 4.2 M$ literature (for some reason) states that M$ fdisk supports only ONE primary partition, and therefore it creates only one, and makes it bootable. An undocu- mented feature of MS-DOS 5.0 onwards is that multiple Primary partitions are very much supported and can be used by M$. Its own fdisk,however, does not create such a system. 4.3 The golden rule is stated LOUD and clear: "EVERY BOOTABLE OS SHOULD BE INSTALLED IN ITS OWN PRI- MARY PARTITION WITH ITS OWN BOOT RECORD". 4.3.1 This avoids all boot-sharing conflicts. The role of Extended partitions should be restricted for data and swap only. 5 How to go about doing it 5.1 There is a major problem here. Since Joe already has a working M$ system, he knows how to operate M$ fdisk ... but that is inadequate here. The default installation process of the intelligent GUI distro may not provide for enough flexibility to do things manually .. Some do provide for non-GUI access to legacy Linux fdisk, but in may the fdisk program is symlinked to cfdisk or some other "user-friendly" partitioning tool. Then, what is the way out ? 5.2 Partition the HDD using a stand alone floppy based dis- tro, using legacy linux fdisk program, and then install the distro without further re-partitioning. There are some strategies to be employed when calculating for the space to be kept in various Linux partitions. These are dealt in detail in another HDI. 5.3 For a stand-alone personal box there is no need to have major sub-divisions into separate partitions. One large / (root), a reasonable /home and /swap is adequate. The approximate space which should be catered for is: o / (root) .... 2 to 4 GB, PRIMARY partition only. o /home .... 500mb to 1 GB, Extended-logical will do o /swap .... 2 to 3 times physical RAM. Extended log- ical will also do. 5.4 The following disk sets are adequate, and provide for the necessary tools to achieve the above: o Slackware (root and boot disk sets) o alfalinux (floppy based 2 disk distro) o tomsrtbt (single floppy stand-alone distro) 5.4.1 All these are available off the net. The exact URL is not being stated because versions change. Slackware is available at http://www.slackware.com. The links for the others can easily be found by searching at google (http://google.com). All of the above cater for the legacy linux fdisk program ... a bit terse, but defini- tely the most flexible, and powerful. 6 Running fdisk 6.1 After you have booted, you are free to run fdisk with the command: #fdisk /dev/hda [obviously hda should be your target drive (viz. Primary Master)] 6.2 Once in fdisk prompt, type in m (for menu) ... You will get an output like this for help: localhost:~#fdisk /dev/hda Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this men n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): 6.3 The first command after this should be "p" (print part- ition table). This will list your existing "/dev/hda1" (C: under M$) as primary .... /dev/hda4 is the Extended partition, and /dev/hda5 onwards are the logicals which are placed under it. By all probabilities /dev/hda5 is your existing M$ [D:]. 6.4 To create three Primaries and ONE large extended, the full Extended partition would have to be deleted. If you have valuable data in M$ D: or E:, make sure these are carefully backed up under temporary dirs under C: 6.5 After removing ALL essential data, and you are prepared to delete the extended partition use the "d" command.Do NOT touch partition No 1 even by mistake. That is your M$ C:. You can do anything with Partition #2 onwards. Once the mother Extended partition is deleted, all the extended logicals under it are killed. 6.6 Now, play around with the "n" command, and create new partitions. Remember as long as you do not touch the first partition, or issue the "w" write command, you can do no harm. Make, delete, do what you want. It is a great learning experience for which you would be grate- ful forever. 6.7 Once your partitions are created and you are happy that it is as per your plans, press "q" and quit. This time use your intelligent GUI based distro and install with- out further partitioning. Make sure you mark the parti- tion for Linux partitions carefully with the "t" comm- and (Type 82 for swap and Type 83 for Native Linux is to be clearly marked). Keep the bootable flag at hda1 presently. 7 A word of caution 7.1 Linux needs at least one partition, namely for its root file system. It can use swap files and/or swap parti- tions, but the latter are more efficient. So, usually one will want a second Linux partition dedicated for swap partition. On Intel compatible hardware, the BIOS that boots the system can often only access the first 1024 cylinders of the disk. For this reason people with large disks often create a third partition, just a few MB large, typically mounted on /boot, to store the kernel image and a few auxiliary files needed at boot time, so as to make sure that this stuff is accessible to the BIOS. There may be reasons of security, ease of administration and backup, and testing to use more than the minimum number of partitions stated above. 7.2 If your current /dev/hda1 (C:) is large, obviously, it will be beyond the 1024-cylinder limit. My personal ad- vice is to leave things alone. Do NOT try to carve a /boot out of it, you are likely to damage C: for good. There are programs like "fips" which do non-destructive partitioning of M$ partitions. Remember, fips is okay for 16 bit DOS for which it was made. 32-bit handling capacity was appended in 1997, after which development was ceased. It does not work for HPFS/ NTFS, so if your M$ is NT, 2k or XP, fips is totally out. 7.3 You must be conscious of the fact, that you are likely to have the 1024-voodoo problem if /dev/hda1 crosses the 1024 cylinder BIOS limits, and may take the necess- ary precaution of avoiding placing LILO (Linux Loader) record on the MBR. Some of the newer BIOSes and LILO versions beyond 22.x do not have the 1024-voodoo prob- lem. This you will know by trial and error. 7.4 In case of suspicion of 1024-voodoo the recommendations are: o Install LILO on the 1st partition of the / partition or /boot (if you created a separate one). Do NOT put LILO record on the MBR. o Make at least two boot floppies, so that you can boot into Linux through bootable floppies. o If the M$ installed is NT/ 2k/ XP, NEVER dual boot with LILO. It is much easier and more elegant to mod- ify boot.ini under M$, and achieve multiboot through the M$ boot sequence. There is an HDI dedicated to this aspect as well. o Even if the M$ is plain DOS-5.x and beyond with Win- 3.1 or Win-9x/ ME, you can always dual boot with the help of Loadlin, run from the M$ partition. Loadlin has some distinct advantages: - Can boot Linux from an UMSDOS install (on native M$ partition) - has No 1024-voodoo problems - like LILO and other boot loaders it can load Linux from second or third hard disk as well - Can boot QNX and BeOS without fuss [Note : There is a HDI, dedicated to loadlin as well]. 7.5 Once you have some experience on Linux and want to boot through the native Linux system (LILO), you can put the LILO boot record on the MBR with lilo -v. Make sure you have a M$ rescue disk ready so that you are in a posi- tion to reset things to M$ boot with "fdisk /mbr", if things go wrong. 8 Summing things up 8.1 To sum up things, stated above: o M$ fdisk is unreliable. o Full Extended partition is to be deleted for a fresh Linux install o Do NOT trust any fancy GUI driven installation, do it the hard way, manually. o Every bootable OS should be installed in a PRIMARY partition with its own boot record. o Partition with the legacy Linux fdisk .. It has NEVER been known to fail. o Be conscious of the 1024-voodoo problem. o Do NOT carve portions out of your existing M$ just to cater for 1024-voodoo problems. o If in doubt do NOT put LILO info on MBR (specially if the M$ OS is NT/ 2k or XP). o Always make boot floppies. o Do NOT hanker over inability to achieve a LILO dual boot. Dual boot through NT loader, and loadlin are just as effective and less problematic in a dual boot scenario. 9 Can't I use partition magic ? 9.1 Ofcourse you can. Only remember that partition magic keeps a wafer size (2 mb) Primary partition for itself. It can make at best 2 Primary and 1 Extended partition which can be subdivided into numerous logicals. In this case too, it is better to crosscheck the partitions cr- eated with partition magic under Linux fdisk and set the partition types correctly to 82 and 83. ################################################################ 10 Kudos and Brickbats 10.1 This document is released under GFDL/ GPL license. You are free to use and distribute this under terms of the above license. 10.2 Any kudos and brickbats should be directed at: USM Bish29 Dec 2001