diff --git a/Documentation/fdisk.txt b/Documentation/fdisk.txt deleted file mode 100644 index a480ac5dc..000000000 --- a/Documentation/fdisk.txt +++ /dev/null @@ -1,581 +0,0 @@ -`fdisk': the Linux partition table editor -========================================= - -`fdisk' is the Linux partition table editor. In this section we -examine this utility and try to describe it thoroughly enough so that -anyone can use it. - -* Contents: - -* Disks and how they are described. -* Dividing up your disk. -* The `fdisk' command. -* Deleting and adding partitions. -* Active flags and system types. -* Extra commands for experts. -* Warnings for `fdisk' users. - - -Disks and how they are described --------------------------------- - -A typical disk consists physically of one or more circular objects -called "platters", which rotate about a central axis. Devices called -"heads" move to specified places on the disk surface to read or write -information. There is usually one head on each side of every platter, -and all these heads are attached to a comb-like controller arm which -moves all of them at the same time, either closer to the center of the -disk, or closer to the outer edge. - -Suppose the arm is in one position, putting an area of the disk -surface within reach of one or another of the heads. This total area, -everything that is accessible without moving the arm, is called a -"cylinder". (A cylinder is a barrel-shaped cross section of a disk, -consisting of a circular strip from each side of each platter.) The -part of a cylinder that one head can read or write without moving is -called a "track". - -Each track is divided into several pie-shaped slices called -"sectors", which are the smallest parts of the disk which can be read -or written at a time. The sectors on one disk are usually all the same -size. - -In fact, there are not always two heads to every platter, there are -some disks which do not have the same amount of data in every cylinder, -and there may be disks which do not have the same amount of data in -every sector. These features are usually hidden on PCs by the -controller card or the BIOS, which map the physical geometry of a disk -onto a logical geometry, which is what is actually used to access the -disk. - -The numbers which describe the "geometry" of a disk are - - 1. The number of cylinders it contains. - - 2. The number of tracks per cylinder, which is the number of heads. - - 3. The number of sectors per track. - - 4. The number of bytes per sector. - -These numbers vary from disk to disk, but a typical PC disk might -have about 1000 cylinders, half a dozen heads, and 15 or 20 sectors per -track, with each sector containing 512 bytes or characters; such a disk -contains 40 to 60 megabytes of data. A "double density" floppy disk -contains 40 cylinders, with 2 heads (2 tracks per cylinder), and with 9 -sectors per track; such a disk contains 360 kilobytes, or 360 * 1024 -characters. A "high density" 3.5 inch floppy contains 80 cylinders, -with 2 heads and 18 sectors per track, or 1.44 megabytes, or 1440 * -1024 characters. - -The exact size of a track or cylinder in bytes varies from one disk -to another. This `fdisk' for Linux deals mainly with cylinders, since -this is the best unit to use when allocating space for partitions. It -reports partition sizes in "blocks" of 1024 bytes, or 2 sectors, since -`mkswap' and the various `mkfs' programs require this number. A block -is the smallest amount of space which can be set aside for a file in -the current file systems. - -An operating system, such as Linux or DOS or OS/2, may use a disk in -any way that it wishes, but if two operating systems share the same -disk, they must agree on who owns what, or else one will interfere with -the other (that is, by damaging the other's files). A "partition" is a -section of a hard disk which is handled as a unit by all operating -systems which can access the disk. The standard way to define -partitions (for the moment) is the "partition table", a list of -information which is stored in parts of the disk that don't belong to -any of the systems using the disk. The beginning of the partition -table is stored in the disk's primary boot sector, and the rest is -stored in a chain of sectors scattered throughout the disk. - -The first sector on the disk is called the "primary boot block" or -"primary boot sector" because (1) it comes first, before other, similar -sectors; (2) it tells where the other, similar sectors are found, so -that it is logically `prior' to them; and (3) it usually contains code -which is executed when the system boots up. This sector contains a -table describing at most four partitions. These areas are called -"primary partitions". - -The partition table in the primary boot sector may also describe at -most one "extended partition". This is a large area of the disk, -usually containing all the space which is not in any primary partition. -Within this space we can set aside other areas which are called -"logical partitions", because they look almost exactly like primary -partitions. In fact, the main difference between them is that we can -boot from primary partitions, while we cannot boot from logical -partitions. This happens because the address of a primary partition is -in a fixed place, whereas the address of a secondary partition is not, -so we require a more complicated process to discover it, one which is -too difficult for most primary boot programs. - - -Dividing up your disk ---------------------- - -It is a good idea to plan ahead before you start creating partitions -on your disk. If you set aside a partition for some purpose, it is not -easy to change its size: you must backup all the data from the partition, -whether to floppies, to another partition, to another hard disk, or -somewhere else; then you must edit the table which describes this -partition, so changing its size; then you must reboot and initialize -the new partition, formatting it, for example, under DOS, or running -`mkfs' under Linux; finally you can copy all the data back. It is -possible, if you have several partitions, to copy data back and forth -between them while you change their sizes, but this is a bit risky and -time consuming. It is better to plan ahead what you will need, since -it is hard to change it afterwards. - -Many people with large disks and recent versions of DOS have their -entire file system on one large partition. They usually ask, `Isn't -there any way I can reformat my disk without copying everything off?' -There is no way to do it using standard DOS utilities, and there is no -truly safe way to do it using commercial software, because, if you make -a mistake, you will lose the entire contents of your disk. If you are -going to back up your disk anyway, you might as well copy the data back -safely. The Linux FAQ contains references to tools and procedures -which will allow you to do this, if you dare. - -DOS and Linux both allow you to access several partitions on a -single disk; on DOS these are treated as if they were separate disks or -drives, and under Linux they are treated as different "devices". - -You can have up to 64 partitions on a single IDE disk, or up to 16 -partitions on a single SCSI disk, at least as far as Linux is -concerned; in practice you will rarely want so many. The maximum size -of a Linux file system on a single partition depends on the type of -file system you use. Minix file systems (version 1) are limited to 64 -megabytes. You may have all of your Linux files in a single partition, -or you may have two, three, or more Linux file systems. Similarly you -may have one or more DOS partitions. If you have several small -partitions, you run much less risk of losing all your files if your -disk gets corrupted. On the other hand, you may run out of space on a -small partition more easily. - -Under DOS, you must refer to each partition by a separate drive -letter, but all partitions are automatically accessible. Under Linux -only the root partition is automatically accessible, but once we mount -another partition, it is indistinguishable from the rest of the file -system. Disks are usually mounted by a command in one of the system -startup files, `/etc/rc', so you need not worry about having to do it -yourself whenever you boot the system. But even ordinary users may -be allowed to mount removable hard disks and floppy disks. - -Linux requires at least one partition, which is the `root' of the -file system. You may prefer to have a separate partition for `/usr', -which contains most of the executable files, or for `/home', which -contains most of your private files. You may also wish to set aside a -partition to use for swap space, depending on the amount of memory your -PC has. You will certainly need swap space if you have less than 4 MB -of RAM and wish to compile anything substantial. You can reserve swap -space in a file, but you need a partition big enough to hold it, and -this will probably be less efficient than having a partition devoted to -swap. - -Are you going to boot Linux from the hard disk, or will you boot -from a floppy? Some boot programs place severe restrictions on where -the boot partition can be. LILO is more relaxed about this, but does -require either the Master Boot Record on your first hard disk, or the -boot record on one of the first four partitions on your first hard disk. - -If you have an extended partition with logical partitions in it, you -can have only three primary partitions containing data. - - -The `fdisk' command -------------------- - -Every operating system, whether DOS, OS/2, or Linux, should provide -its own utility for editing hard disk partition tables. At least four -of these utilities have been called `fdisk', for `Fixed DISK setup -program', where `fixed' means `not removable'. I believe the first PC -program named `fdisk' came from Microsoft in about 1985; before that -time disks were too small to divide into separate sections. - -Every operating system has its own peculiarities. Normally you -should set up a partition for the use of one operating system by using -its own `fdisk' program. Do not use the Linux `fdisk' to create -partitions for DOS or for any system other than Linux; otherwise you -may have problems. - -An `fdisk' program performs two functions: it reports how the disk is -configured, and it changes that configuration by adding or deleting -partitions. Most `fdisk' programs can also change other information in -partition tables. - -This `fdisk' for Linux operates on one hard disk at a time. If you -give the command - - fdisk - -it reports on, and is able to change, `/dev/hda', the first hard -disk. (If you have no `/dev/hda', `fdisk' uses `/dev/sda' as the -default device.) To look at or change the second hard disk, `/dev/hdb', -give the command - - fdisk /dev/hdb - -To look at or change the first SCSI disk, give the command - - fdisk /dev/sda - -There are some special forms of the `fdisk' command. One of them, -suggested by Jim Winstead, simply lists all partitions on all available -disks: - - fdisk -l (where `l' is a letter, not the digit `1') - -The option `-v' is provided to list the current version of the -`fdisk' command. Finally, there is an option `-s' which is not really -intended for interactive use. It causes fdisk to print the size of a -partition in blocks of 1024 bytes as follows: - - fdisk -s /dev/hda7 - 39934 - -Because this is intended to be used by `mkfs' and `mkswap' programs, -it does not return the size of extended partitions or of partitions -whose system type code is less than 10 (hexadecimal a). If you start -`fdisk' without using one of these special options, it responds by -asking for a command: - - Command (m for help): _ - -Each `fdisk' command consists of a single letter, which must be -followed by before it is obeyed. Upper and lower case are not -distinguished. Anything you type after the first character is ignored. -Give the command `m', and you should see this menu: - Command action - a toggle a bootable flag - d delete a partition - l list known partition types - m print this menu - n add a new partition - p print the partition table - q quit without saving changes - 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): _ - -The simplest commands are Print, Verify, and Quit. On a small disk, the -Print command might produce a display like this one: - - Disk /dev/hda: 5 heads, 17 sectors, 977 cylinders - Units = cylinders of 85 * 512 bytes - - Device Boot Begin Start End Blocks Id System - /dev/hda1 * 1 1 236 10021+ 1 DOS 12-bit FAT - /dev/hda2 837 837 977 5992+ 5 Extended - /dev/hda3 * 237 237 836 25500 83 Linux native - /dev/hda5 837 837 936 4249+ 82 Linux swap - /dev/hda6 942 942 977 1522 1 DOS 12-bit FAT - -There are 5 partitions reported; `/dev/hda4' does not appear because -it is not allocated. Partitions 1 and 3 are flagged as bootable. The -size of each partition is reported in 1 kilobyte blocks; hence the -primary Linux partition, partition 3, is 25 1/2 megabytes in size. The -`+' after three of the sizes warns that these partitions contain an odd -number of sectors: Linux normally allocates filespace in 1 kilobyte -blocks, so the extra sector in partition 5 is wasted. Id numbers are -reported in hexadecimal and explained in English. - -The display/entry units may be either cylinders or sectors. The -default is cylinders, but changing the units makes the print command -display the following table for the system reported above: - - Disk /dev/hda: 5 heads, 17 sectors, 977 cylinders - Units = sectors of 1 * 512 bytes - - Device Boot Begin Start End Blocks Id System - /dev/hda1 * 1 17 20059 10021+ 1 DOS 12-bit FAT - /dev/hda2 71060 71060 83044 5992+ 5 Extended - /dev/hda3 * 20060 20060 71059 25500 83 Linux native - /dev/hda5 71061 71061 79559 4249+ 82 Linux swap - /dev/hda6 79985 80001 83044 1522 1 DOS 12-bit FAT - -The start of data in both DOS partitions is 16 sectors after the -beginning of the partition: this is one reason why you should use DOS's -own `FDISK' to create DOS partitions. Changing the units to sectors -also affects the way in which the new partition command asks for the -beginning and end of a new partition. - -*Warning*: it is dangerous to create a new partition when the -display/entry units are sectors. - -The Verify command is useful because - - 1. It warns you if anything is wrong. *Always* do a Verify command - to check your work before writing any changes to disk. - - 2. It reports how many unallocated sectors there are on the disk. - -The Quit command is also useful. `fdisk' does not actually change -any data on your disk unless you give a Write command. If you are -unhappy about any changes you may have made, give the Quit command, and -your disk will remain as it was before you ran `fdisk'. You can also -interrupt `fdisk' with `CTRL-C'. - - -Deleting and adding partitions ------------------------------- - -Deleting a partition is simple. Give the Delete command by typing -`d'. `fdisk' asks: - - Partition number (1-6): _ - -Once you get this far, you must either delete a partition or -interrupt the program with `CTRL-C' (or whatever your current interrupt -character is). Note: - - 1. You may delete a nonexistent partition. You will get a warning - message. - - 2. You may delete an extended partition. This has the side effect of - deleting all partitions greater than or equal to 5. - - 3. You may delete a logical partition. In that case, all partitions - above it are renumbered at once. For example, if you delete - partition 5, then partition 6 becomes known as partition 5, and - partition 7 as partition 6. - -Adding a partition is just a bit more complicated. Give the New -command by typing `n'. `fdisk' allows you to - - 1. Create a primary partition, if there is a free slot in the primary - partition table. - - 2. Create an extended partition if there is a free slot in the - primary partition table, and if there is no extended partition. - - 3. Create a logical partition if an extended partition exists. - -If more than one of these actions is possible, you will be asked to -select Primary, Extended, or Logical, depending on what is currently -permissible. Before you create a primary or an extended partition, you -are asked what slot it is to have in the table (1-4). - -You may not add a primary or an extended partition if the selected -slot in the primary partition table is already occupied: in that case -you simply return to the main menu. You are not allowed to add a new -primary partition unless there are sectors available outside the -extended partition. You are not allowed to add a new logical partition -unless there are sectors available inside the extended partition. - -If space is available, you are prompted for the first cylinder: - - First cylinder ([237]-977): _ - -The limits are the lowest and the highest cylinders in which sectors -are available in the appropriate part of the disk. The square-bracketed -number is what you'll get if you simply press enter. Not all numbers in -this range are necessarily available: they may fall inside an existing -partition. If you select a cylinder which is already in use, you are -told off and prompted again for the first cylinder. After selecting the -first cylinder, you are prompted again: - - Last cylinder or +size or +sizeM or +sizeK (237-[836]): _ - -The limits are the cylinder you have chosen as the first cylinder, -and the highest cylinder which contains a legitimate upper boundary for -the new partition. The square-bracketed number is what you'll get if -you simply press enter. In other words, all numbers in the given range are -legitimate, unlike those in the first range of cylinders. You may also -specify the size of a partition in megabytes, kilobytes, or in the -current units (cylinders or sectors). A plus sign `+' indicates that -your answer is a size rather than a boundary, and the suffix `m' or `k' -(upper or lower case) indicates that the size is not given in units of -sectors or cylinders, but in megabytes or kilobytes respectively. Thus -possible answers to the last cylinder request above are - -700 - Make cylinder 700 the last cylinder in the partition. - -+300 - Make cylinder 237 + 300 = 537 the last cylinder in the partition. - -+15m - Make the partition at least 15 megabytes in size. - -+12500k - Make the partition at least 12,500 kilobytes in size. - -If you specify a size which is too large or an end which is out of -range, fdisk complains and repeats the prompt. - -Adding or deleting partitions has no effect unless you subsequently -give the Write command. Please remember to give the Verify command -first, just before giving the Write command: this is a safety -precaution. After giving the Write command, you will see this message: - - The partition table has been altered! - Calling ioctl() to re-read partition table. - Syncing disks. - -If there are no further messages, the kernel has successfully copied -the information from the partition table into its own internal table. -But sometimes you will see a message like this one: - - Re-read table failed with error 16: Device or resource busy. - Reboot your system to ensure the partition table is updated. - -In this case, depending on what you have changed in the partition -table, it may be dangerous to continue working without rebooting, -since you may lose or corrupt your data. - - -Here are some important things to note: - - 1. Before you reboot, you *may* run `fdisk' again, either to manage - another disk, or to make additional changes to the same disk, or - just to check that the changes have been made as you expected. - This is true even after you receive the message warning you to - reboot. - - 2. It is not a good idea to run any of the programs `mkfs', `mkswap', - `mount', or `swapon' if you have received the warning message but - have not rebooted. In this case it is dangerous to run any program, - but these in particular may cause serious damage to the data on your - disk, including the partition tables themselves. - - -Active flags and system types ------------------------------ - -The active flag is a bit in the partition table entry which marks a -partition as bootable. This is important to some primary boot sector -programs, which will not boot from an unflagged partition. Other such -programs do not allow more than one partition to be flagged. Some, -like LILO, ignore the flags completely. I prefer to flag all bootable -partitions as active so that they stand out on the menu which `fdisk' -lists. Fdisk prints a star after the name of a partition's device file -if its active flag is set. - -The Active command changes, or toggles, a partition's active flag. -Give the Active command, and select a partition by number. If it was -marked inactive, it will be flagged as active; if it was flagged as -active, it will be marked inactive. You may set the active flag on an -extended or logical partition, though the meaning of such a flag is by -no means clear. This can be used to install LILO as a secondary boot -loader to boot a Linux which lives on a second hard disk. - -The Type command changes the ID number which describes what type a -partition is. `fdisk' currently recognises 30 system IDs, in the sense -that it prints a string for each of them, but it allows you to change -any system ID to any other, with the following exceptions: you may not -change any partition to or from the type Extended, and you may not -change a partition whose type is Empty (0) to any other type. You may, -however, change the type of any data partition to 0, which is -equivalent to deleting it. - -The new system ID or type code is a hexadecimal number. There are -two ways of listing the numbers which `fdisk' recognises: use the List -command, which prints the list, or use the Type command, which, when it -prompts you for the code, says - - Hex code (type L to list codes): _ - -where the upper case `L' is used for clarity. The codes printed are: -Some of these numbers are a trifle uncertain. By default `fdisk' uses -a type of 83. It used to use 81, the type code used by the MINIX -`fdisk'. It seemed prudent to change the default since (a) many Linux -`minix' file systems are no longer compatible with MINIX, (b) the ext2 -file system, a native Linux file system, is fairly stable, as is the -Xia file system, and (c) the number 81 causes problems with DR-DOS. -Linux does not usually care what values you use for type codes, but -other systems, in particular DOS, OS/2, and DR-DOS, may. - -The value of 82 for Linux swap partitions is my own invention, and -is intended to give some recognisable distinction to the partitions -when the values are displayed in hexadecimal. - -New active flags and new system type codes are not written to the -disk until you exit from `fdisk' with the Write command, as described -above, in the section on deleting and adding partitions. - - -Extra commands for experts --------------------------- - -The eXtra command `x' puts `fdisk' into `expert' mode, in which a -slightly different set of commands is available. The Active, Delete, -List, New, Type, Verify, and `eXpert' commands are not available in -expert mode. The commands Write and Quit are available as in ordinary -mode, the Print command is available, but produces output in a slightly -different format, and of course the Menu command prints the expert -menu. There are several new commands. - - 1. The Return command brings you back to the main menu. - - 2. The Extended command prints the list of table entries which point - to other tables. Ordinary users do not need this information. - The data is shown as it is stored. The same format is used for - the expert Print command. - - 3. The dangerous Begin command allows you to move the start of data - in a partition away from its beginning. Other systems create - partitions with this format, and it is sometimes useful to be able - to reproduce it. - - 4. The slightly dangerous Cylinders command allows you to change the - available number of cylinders. For SCSI disk owners, note that we - require not the actual number of physical cylinders, but the - number of logical cylinders used by DOS and other operating - systems. - - 5. The extremely dangerous Heads and Sectors commands allow you to - change the number of heads and sectors. It should not be - necessary to use these commands unless you have a SCSI disk, whose - geometry Linux is not always able to determine. SCSI disk owners - note that we need not the actual number of heads or of sectors per - track, but the number believed to exist by DOS and other operating - systems. *Warning*: If you set either of these numbers to a bad - value, you may lose all data on your disk. - -Always, after giving any of the commands Begin, Cylinder, Heads, or -Sectors, you should Return to the main menu and give the Verify command. - - -Warnings for `fdisk' users --------------------------- - -In general, you should not use this `fdisk' program to create -partitions for other operating systems, only for Linux. Nor should you -use `fdisk' commands from other operating systems to create partitions -for Linux. - -DR-DOS 5.0 and 6.0 are reported to have difficulties with partition -ID codes of 80 or more. The Linux `fdisk' used to set the system type -of new partitions to hexadecimal 81. DR-DOS seems to confuse this with -hexadecimal 1, a DOS code. The values 82 for swap and 83 for file -systems should not cause problems with DR-DOS. If they do, you may use -the `fdisk' command `t' to change the system code of any Linux -partitions to some number less than hexadecimal 80; I suggest 42 and 43 -for the moment. - -Partitioning a hard disk may destroy data which is on that disk if you -are not careful. Go slowly, write down a description of the partition -tables before you changed them, and always verify before you write. - -Most operating systems and utilities expect that all partitions begin and -end at cylinder boundaries. This version of `fdisk' does so by default, -but you can use it to create partitions which begin or end anywhere. -This does not normally affect Linux, but it is very dangerous, as other -operating systems (including DOS) may try to `correct' the partition -boundaries. - -It is dangerous to create a new partition when the display/entry -units are sectors. - -The Verify command warns you if anything is wrong. *Always* give a -Verify command before writing any changes to disk. - -If you set the disk geometry (tracks per cylinder, or sectors per -track) to an incorrect value, you may lose all data on your disk. - -Do create BSD/SUN and/or IRIX/SGI disk labels only when you are sure -that you want them. Both features are intended to allow you READing -those labels and prevent unintentional formatting of these disks. diff --git a/Documentation/sfdisk.txt b/Documentation/sfdisk.txt deleted file mode 100644 index 13e671d48..000000000 --- a/Documentation/sfdisk.txt +++ /dev/null @@ -1,264 +0,0 @@ -Examples of the use of sfdisk 3.0 (to partition a disk) -Input lines have fields ,,... - see sfdisk.8. -Usually no is given, and input lines start with a comma. - -Before doing anything with a disk, make sure it is not in use; -unmount all its file systems, and say swapoff to its swap partitions. -(The final BLKRRPART ioctl will fail if anything else still uses -the disk, and you will have to reboot. It is easier to first make -sure that nothing uses the disk, e.g., by testing: - % umount /dev/sdb1 - % sfdisk -R /dev/sdb - BLKRRPART: Device or resource busy - * Device busy for revalidation (usage=2) - % swapoff /dev/sdb3 - % sfdisk -R /dev/sdb - * sdb: sdb1 < sdb5 sdb6 > sdb3 - % -Note that the starred messages are kernel messages, that may be -logged somewhere, or written to some other console. -In sfdisk 3.01 sfdisk automatically does this check, unless told not to.) - -1. One big partition: - sfdisk /dev/hda << EOF - ; - EOF - -(If there was garbage on the disk before, you may get error messages -like: `ERROR: sector 0 does not have an msdos signature' -and `/dev/hda: unrecognized partition'. This does not matter -if you write an entirely fresh partition table anyway.) - -The output will be: ------------------------------------------------------------------------ -Old situation: -... -New situation: -Units = cylinders of 208896 bytes, blocks of 1024 bytes, counting from 0 - - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 1023 1024- 208895+ 83 Linux native -Successfully wrote the new partition table - hda: hda1 ------------------------------------------------------------------------ -Writing and rereading the partition table takes a few seconds - -don't be alarmed if nothing happens for six seconds or so. - - -2. Three primary partitions: two of size 50MB and the rest: - sfdisk /dev/hda -uM << EOF - ,50 - ,50 - ; - EOF ------------------------------------------------------------------------ -New situation: -Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from 0 - - Device Boot Start End MB #blocks Id System -/dev/hda1 0+ 50- 51- 51203+ 83 Linux native -/dev/hda2 50+ 100- 51- 51204 83 Linux native -/dev/hda3 100+ 203 104- 106488 83 Linux native -Successfully wrote the new partition table - hda: hda1 hda2 hda3 ------------------------------------------------------------------------ -/dev/hda1 is one block (in fact only half a block) shorter than -/dev/hda2 because its start had to be shifted away from zero in -order to leave room for the Master Boot Record (MBR). - - -3. A 1MB OS2 Boot Manager partition, a 50MB DOS partition, - and three extended partitions (DOS D:, Linux swap, Linux): - sfdisk /dev/hda -uM << EOF - ,1,a - ,50,6 - ,,E - ; - ,20,4 - ,16,S - ; - EOF ------------------------------------------------------------------------ - Device Boot Start End MB #blocks Id System -/dev/hda1 0+ 1- 2- 1223+ a OS/2 Boot Manager -/dev/hda2 1+ 51- 51- 51204 6 DOS 16-bit FAT >=32M -/dev/hda3 51+ 203 153- 156468 5 Extended -/dev/hda4 0 - 0 0 0 Empty -/dev/hda5 51+ 71- 21- 20603+ 4 DOS 16-bit FAT <32M -/dev/hda6 71+ 87- 17- 16523+ 82 Linux swap -/dev/hda7 87+ 203 117- 119339+ 83 Linux native -Successfully wrote the new partition table - hda: hda1 hda2 hda3 < hda5 hda6 hda7 > ------------------------------------------------------------------------ -All these rounded numbers look better in cylinder units: - % sfdisk -l /dev/hda ------------------------------------------------------------------------ - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager -/dev/hda2 6 256 251 51204 6 DOS 16-bit FAT >=32M -/dev/hda3 257 1023 767 156468 5 Extended -/dev/hda4 0 - 0 0 0 Empty -/dev/hda5 257+ 357 101- 20603+ 4 DOS 16-bit FAT <32M -/dev/hda6 358+ 438 81- 16523+ 82 Linux swap -/dev/hda7 439+ 1023 585- 119339+ 83 Linux native ------------------------------------------------------------------------ -But still - why does /dev/hda5 not start on a cylinder boundary? -Because it is contained in an extended partition that does. -Of the chain of extended partitions, usually only the first is -shown. (The others have no name under Linux anyway.) But -these additional extended partitions can be made visible: - % sfdisk -l -x /dev/hda ------------------------------------------------------------------------ - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager -/dev/hda2 6 256 251 51204 6 DOS 16-bit FAT >=32M -/dev/hda3 257 1023 767 156468 5 Extended -/dev/hda4 0 - 0 0 0 Empty - -/dev/hda5 257+ 357 101- 20603+ 4 DOS 16-bit FAT <32M - - 358 1023 666 135864 5 Extended - - 257 256 0 0 0 Empty - - 257 256 0 0 0 Empty - -/dev/hda6 358+ 438 81- 16523+ 82 Linux swap - - 439 1023 585 119340 5 Extended - - 358 357 0 0 0 Empty - - 358 357 0 0 0 Empty - -/dev/hda7 439+ 1023 585- 119339+ 83 Linux native - - 439 438 0 0 0 Empty - - 439 438 0 0 0 Empty - - 439 438 0 0 0 Empty ------------------------------------------------------------------------ - -Why the empty 4th input line? The description of the extended partitions -starts after that of the four primary partitions. -You force an empty partition with a ",0" input line, but here all -space was divided already, so the fourth partition became empty -automatically. - -How did I know about 4,6,a,E,S? Well, E,S,L stand for Extended, -Swap and Linux. The other values are hexadecimal and come from -the table: - % sfdisk -T - Id Name - - 0 Empty - 1 DOS 12-bit FAT - 2 XENIX root - 3 XENIX usr - 4 DOS 16-bit FAT <32M - 5 Extended - 6 DOS 16-bit FAT >=32M - 7 OS/2 HPFS or QNX or Advanced UNIX - 8 AIX data - 9 AIX boot or Coherent - a OS/2 Boot Manager - ... - - -4. Preserving the sectors changed by sfdisk. - % sfdisk -O save-hdd-partition-sectors /dev/hda - ... - will write the sectors overwritten by sfdisk to file. - If you notice that you trashed some partition, you may - be able to restore things by - % sfdisk -I save-hdd-partition-sectors /dev/hda - % - -5. Preserving some old partitions. - % sfdisk -N2 /dev/hda - ... - will only change the partition /dev/hda2, and leave the rest - unchanged. The most obvious application is to change an Id: - % sfdisk -N7 /dev/hda - ,,63 - % ------------------------------------------------------------------------ -Old situation: - - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager -... -/dev/hda6 358+ 438 81- 16523+ 82 Linux swap -/dev/hda7 439+ 1023 585- 119339+ 83 Linux native - -New situation: - - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager -... -/dev/hda6 358+ 438 81- 16523+ 82 Linux swap -/dev/hda7 439+ 1023 585- 119339+ 63 GNU HURD ------------------------------------------------------------------------ - Note that changing a logical partition into an empty partition - will decrease the number of all subsequent logical partitions. - -6. Deleting a partition. -At first I thought of having an option -X# for deleting partitions, -but there are several ways in which a partition can be deleted, and -it is probably better to handle this just as a general change. - % sfdisk -d /dev/hda > ohda -will write the current tables on the file `ohda'. ------------------------------------------------------------------------ -% cat ohda -# partition table of /dev/hda -unit: sectors - -/dev/hda1 : start= 1, size= 40799, Id= 5 -/dev/hda2 : start= 40800, size= 40800, Id=83 -/dev/hda3 : start= 81600, size= 336192, Id=83 -/dev/hda4 : start= 0, size= 0, Id= 0 -/dev/hda5 : start= 2, size= 40798, Id=83 ------------------------------------------------------------------------ -In order to delete the partition on /dev/hda3, edit this file -and feed the result to sfdisk again. ------------------------------------------------------------------------ -% emacs ohda -% cat ohda -# partition table of /dev/hda -unit: sectors - -/dev/hda1 : start= 1, size= 40799, Id= 5 -/dev/hda2 : start= 40800, size= 40800, Id=83 -/dev/hda3 : start= 0, size= 0, Id= 0 -/dev/hda4 : start= 0, size= 0, Id= 0 -/dev/hda5 : start= 2, size= 40798, Id=83 -% sfdisk /dev/hda < ohda -Old situation: -Units = cylinders of 208896 bytes, blocks of 1024 bytes, counting from 0 - - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 99 100- 20399+ 5 Extended -/dev/hda2 100 199 100 20400 83 Linux native -/dev/hda3 200 1023 824 168096 83 Linux native -/dev/hda4 0 - 0 0 0 Empty -/dev/hda5 0+ 99 100- 20399 83 Linux native -New situation: -Units = sectors of 512 bytes, counting from 0 - - Device Boot Start End #sectors Id System -/dev/hda1 1 40799 40799 5 Extended -/dev/hda2 40800 81599 40800 83 Linux native -/dev/hda3 0 - 0 0 Empty -/dev/hda4 0 - 0 0 Empty -/dev/hda5 2 40799 40798 83 Linux native -Successfully wrote the new partition table -% sfdisk -l -V /dev/hda - -Disk /dev/hda: 12 heads, 34 sectors, 1024 cylinders -Units = cylinders of 208896 bytes, blocks of 1024 bytes, counting from 0 - - Device Boot Start End #cyls #blocks Id System -/dev/hda1 0+ 99 100- 20399+ 5 Extended -/dev/hda2 100 199 100 20400 83 Linux native -/dev/hda3 0 - 0 0 0 Empty -/dev/hda4 0 - 0 0 0 Empty -/dev/hda5 0+ 99 100- 20399 83 Linux native -/dev/hda: OK ------------------------------------------------------------------------ -This is a good way of making changes: dump the current status -to file, edit the file, and feed it to sfdisk. -Preserving the file on some other disk could be useful: -if ever the MBR gets thrashed it can be used to restore -the old situation.