a1246c73e0
http://cantaforda.com/cfcl/eryk/linux/pdisk/index.html this is the utility provided by mklinux and osX to manipulate the Apple Partition map.
407 lines
14 KiB
HTML
407 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//2.0">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>pdisk for the Mac OS</TITLE>
|
|
<X-SAS-WINDOW TOP=42 BOTTOM=477 LEFT=4 RIGHT=556>
|
|
</HEAD>
|
|
<BODY BGCOLOR="#FFFFFF">
|
|
|
|
<H2>Overview</H2>
|
|
|
|
<H3>What is pdisk?</H3>
|
|
|
|
<P>A simple editor for Apple disk partition format. There are two
|
|
main versions of pdisk: one for Linux and one for the Mac OS. This
|
|
document describes the Mac OS version of pdisk. Much of this document
|
|
is also relevant to the Linux version, but check the manual page
|
|
(pdisk.8) also.</P>
|
|
|
|
<H3>What is the Apple disk partition format?</H3>
|
|
|
|
<P>Most operating systems have ways to divide disks into several
|
|
pieces - so that an entire disk does not have to be devoted to one
|
|
filesystem, or even to one operating system. This division of the
|
|
disk is usually called partitioning. In some systems the partitioning
|
|
information is built into the operating system code, but that tends to
|
|
be restrictive. In the Mac OS the partitioning information is stored
|
|
on the first few blocks of the disk.</P>
|
|
|
|
<P>The Apple disk partition scheme was developed in 1986 by the A/UX
|
|
team with input from the Mac OS and Apple II teams. There was an
|
|
earlier partition scheme used in the first SCSI drives on the
|
|
MacPlus, but that was replaced by the current scheme in the Macintosh
|
|
II and subsequent machines and in subsequent operating system
|
|
releases. The current scheme is supported by Mac OS, A/UX, ProDos,
|
|
MkLinux, LinuxPPC, and MacOS X.</P>
|
|
|
|
<H3>What are LinuxPPC and MkLinux?</H3>
|
|
|
|
<P>Just in case you got pdisk other than as part of a LinuxPPC or
|
|
MkLinux release:</P>
|
|
<P>LinuxPPC is a port of the true Linux operating system that runs
|
|
on most of the Power Macintosh systems from Apple Computer. It also
|
|
runs on several non-Apple PowerPC machines.</P>
|
|
<P>MkLinux is a portion of the Linux operating system, converted to run
|
|
as a server process on top of the Mach microkernel. As with Linux,
|
|
all of the operating system source code is available for
|
|
<A HREF="http://www.mklinux.org">download</A>, including the
|
|
Mach source. MkLinux runs on some of PowerPC based Macintosh
|
|
machines.</P>
|
|
|
|
<H3>Which Macintosh machines does pdisk run on?</H3>
|
|
|
|
<P>The Mac OS binary should run on any PowerPC based Macintosh. It
|
|
has been tested under System 7.6.1 and System 8, but should run on
|
|
older versions of the Mac OS as well. A Mac OS 68000 binary is also
|
|
distributed for those who may find it useful. </P>
|
|
|
|
<H3>Why would I want to use pdisk on the Mac OS?</H3>
|
|
|
|
<P>The main clients for the Mac OS version of pdisk are Linux
|
|
users. pdisk was originally developed for Linux. The command syntax
|
|
was originally identical to that for the 'fdisk' program. (fdisk is a
|
|
Linux program which edits the DOS/Windows disk partition format.) The
|
|
Mac OS version is a simple, crude port of the Linux version.</P>
|
|
|
|
<P>The advantages of pdisk over the various Mac OS disk partitioning
|
|
programs (such as SilverLining, the FWB toolkit, Apple HD SC Setup,
|
|
DriveSetup, etc) are:</P>
|
|
|
|
<UL>
|
|
<LI>unlike the Apple partitioners, it does not restrict the set of
|
|
drives it can operate on
|
|
|
|
<LI>it allows partitions to be reordered (helpful, as Linux
|
|
depends on the order)
|
|
|
|
<LI>it creates Linux partitions by default
|
|
|
|
<LI>it allows the size of the partition map to be changed
|
|
|
|
<LI>it allows the name of a partition to be changed
|
|
|
|
<LI>it allows you to edit the partition map of your boot disk
|
|
</UL>
|
|
|
|
<P>The disadvantages of pdisk are:</P>
|
|
|
|
<UL>
|
|
<LI>it doesn't automatically initialize HFS partitions
|
|
|
|
<LI>it can't install disk drivers
|
|
|
|
<LI>it allows you to edit the partition map of your boot disk
|
|
</UL>
|
|
|
|
<H3>Where can I get the source?</H3>
|
|
|
|
<P>The main site for LinuxPPC is
|
|
<<A HREF="http://www.linuxppc.org">http://www.linuxppc.org</A>>.
|
|
The main site for MkLinux is
|
|
<<A HREF="http://www.mklinux.org">http://www.mklinux.org</A>>.
|
|
</P>
|
|
|
|
<H2>Description of the program (as of version 0.8)</H2>
|
|
|
|
<P>Though pdisk is a Macintosh program its interface is very
|
|
un-Macintosh. pdisk is what is called a line-oriented program. In a
|
|
line-oriented program you do things by typing on the keyboard and the
|
|
program does not pay attention to the typing until the return key has
|
|
been typed.</P>
|
|
|
|
<P>When you start up pdisk it brings up a window with some text in
|
|
it. The last line of this text should be something like " Top level
|
|
command (? for help): ". This is the prompt. If you type "?" followed
|
|
by a return character you should get a list like this:</P>
|
|
|
|
<PRE>Notes:
|
|
Disk have fake names of the form /dev/scsi<bus>.<id>
|
|
For example, /dev/scsi0.1, /dev/scsi1.3, and so on.
|
|
Linux style names are also allowed (i.e /dev/sda or /dev/hda).
|
|
Due to some technical problems these names may not match
|
|
the 'real' linux names.
|
|
|
|
Commands are:
|
|
h print help
|
|
v print the version number and release date
|
|
l list device's map
|
|
L list all devices' maps
|
|
e edit device's map
|
|
E (edit map with specified block size)
|
|
r toggle readonly flag
|
|
f toggle show filesystem name flag
|
|
q quit the program</PRE>
|
|
|
|
<P>Some of these commands need what are called arguments - for
|
|
example <B>l</B> (list) and <B>e</B> (edit) need a single argument,
|
|
the name of the device to list or edit. Commands which take arguments
|
|
prompt for each argument in turn. You can also type any number of the
|
|
arguments separated by spaces and those prompts will be skipped.
|
|
Commands are case insensitive (e.g. <B>h</B> and <B>H</B>) except
|
|
when the upper case letter does a variant form of the operation.</P>
|
|
|
|
<DL>
|
|
<DT><B>h</B>
|
|
|
|
<DD>Prints just the command help. The difference between <B>h</B>
|
|
and <B>?</B> is the latter prints some helpful notes as well.
|
|
|
|
<DT><B>v</B>
|
|
|
|
<DD>Prints a version number and release date. Matches the
|
|
version in the GetInfo window for the application.
|
|
|
|
<DT><B>l</B>
|
|
|
|
<DD>Prompts for the name of the device and then lists the
|
|
partition map on that device.
|
|
|
|
<DT><B>L</B>
|
|
|
|
<DD>Lists all the devices.
|
|
|
|
<DT><B>e</B>
|
|
|
|
<DD>Prompts for the name of the device and then opens the partition
|
|
map for editing.
|
|
|
|
<DT><B>E</B>
|
|
|
|
<DD>Same as <B>e</B>, except also prompts for block size.
|
|
|
|
<DT><B>r</B>
|
|
|
|
<DD>Toggles read-only setting. When read-only is on pdisk will not
|
|
write a partition map.
|
|
|
|
<DT><B>f</B>
|
|
|
|
<DD>Toggles show filesystem name flag between 'show fileystem name' and
|
|
'show partition name'. The default is to show the filesystem name. Showing
|
|
the filesystem name is helpful when you have several equal sized Macintosh
|
|
partitions on the disk.
|
|
|
|
<DT><B>q</B>
|
|
|
|
<DD>Quit pdisk.
|
|
</DL>
|
|
|
|
<H3>The form of the listing</H3>
|
|
|
|
<P>This is a good point to show what the partition map listing looks
|
|
like.</P>
|
|
|
|
<PRE>Partition map (with 512 byte blocks) on '/dev/scsi0.2' (/dev/sda)
|
|
#: type name length base ( size )
|
|
1: Apple_partition_map Apple 63 @ 1
|
|
2: Apple_Driver43*Macintosh 54 @ 64
|
|
3: Apple_Driver43*Macintosh 74 @ 118
|
|
4: Apple_Patches Patch Partition 512 @ 192
|
|
5: Apple_HFS untitled 2117430 @ 704 ( 1.0G)
|
|
6: Apple_Free Extra 10 @ 2118134
|
|
|
|
Device block size=512, Number of Blocks=2118143
|
|
DeviceType=0x0, DeviceId=0x0
|
|
Drivers-
|
|
1: @ 64 for 20, type=0x1
|
|
2: @ 118 for 32, type=0xffff</PRE>
|
|
|
|
<P>The first line indicates what device this is and what size blocks
|
|
the partition map is using. Most partition maps will use 512-byte
|
|
blocks, but partition maps can use 1024-byte (1K) or 2048-byte (2K)
|
|
blocks instead. If we are able to deduce an Linux name different
|
|
from the name then the Linux name is given in parentheses.</P>
|
|
|
|
<P>Next is the partition list. Each partition (or piece) of the disk
|
|
takes one line of the list. The data describing the partition is
|
|
called the partition map entry. The entries are listed in order by
|
|
index. For each entry, the following information is displayed:</P>
|
|
|
|
<UL>
|
|
<LI>index - where the partition entry is in the map. This does not
|
|
correspond the relative order of the partition contents and can
|
|
change when the partition map is edited.
|
|
|
|
<LI>type - the sort of data expected to be in the partition. pdisk
|
|
doesn't put data into the contents of any partition except the
|
|
partition map partition. The type is a case-insensitive string.
|
|
|
|
<LI>name - the name is for the user's information. If the name
|
|
is in quotes then it is the Mac volume name rather than actual
|
|
partition name.
|
|
|
|
<LI>length - the number of partition blocks the partition takes.
|
|
|
|
<LI>base - the first block of the partition, measured in partition
|
|
blocks, starting from zero.
|
|
|
|
<LI>size - this is the length in bytes. Only shown if the size is
|
|
at least one megabyte.
|
|
</UL>
|
|
|
|
<P>Following the partition list is information from block zero of the
|
|
device which describes the location of drivers.</P>
|
|
|
|
<H3>Editing Partition Tables</H3>
|
|
|
|
<P>The <B>e</B> command at the top level menu opens a partition map
|
|
for editing. The prompt is then changed to "Command (? for help):".
|
|
If you type "?" followed by a return character you should get a list
|
|
like this:</P>
|
|
|
|
<PRE>Notes:
|
|
Base and length fields are blocks, which vary in size between media.
|
|
The name of a partition is descriptive text.
|
|
|
|
Commands are:
|
|
h help
|
|
p print the partition table
|
|
P (print ordered by base address)
|
|
i initialize partition map
|
|
s change size of partition map
|
|
c create new partition (standard Linux type)
|
|
C (create with type also specified)
|
|
n (re)name a partition
|
|
d delete a partition
|
|
r reorder partition entry in map
|
|
w write the partition table
|
|
q quit editing (don't save changes)</PRE>
|
|
|
|
<P>Commands which take arguments prompt for each argument in turn.
|
|
You can also type any number of the arguments separated by spaces and
|
|
those prompts will be skipped. The only exception to typeahead are
|
|
the confirmation prompts on the <B>i</B> and <B>w</B> commands.
|
|
Commands can are case insensitive (e.g. <B>h</B> and <B>H</B>) except
|
|
when the upper case letter does a variant form of the operation.</P>
|
|
|
|
<P>Partitions are always specified by their number, which the index
|
|
of the partition entry in the partition map. Many of the commands
|
|
will change the index numbers of other partitions besides the
|
|
affected partition. You are advised to print the table as frequently
|
|
as necessary.</P>
|
|
|
|
<P>Creating more than fifteen partitions is not advised. There is
|
|
currently a bug in the some (all?) of the kernels which causes access
|
|
to the whole disk fail if more than fifteen partitions are in the
|
|
map.</P>
|
|
|
|
<DL>
|
|
<DT><B>h</B>
|
|
|
|
<DD>Prints just the command help. The difference between <B>h</B>
|
|
and <B>?</B> is the latter prints some helpful notes as well.
|
|
|
|
<DT><B>p</B>
|
|
|
|
<DD>Prints the partition table. The form is identical to the
|
|
listing described above.
|
|
|
|
<DT><B>P</B>
|
|
|
|
<DD>Identical to <B>p</B>, except the entries are listed in the
|
|
order of the partitions on the disk (i.e. by the increasing base
|
|
value) rather than in index order.
|
|
|
|
<DT><B>i</B>
|
|
|
|
<DD>Initializes the partition map (rarely used). This command
|
|
prompts for the size of the device. WARNING - if you write the map
|
|
after initializing it you will delete all the drivers on the device.
|
|
That makes the device invisible to the Mac OS. pdisk is not able
|
|
to install drivers.
|
|
|
|
<DT><B>s</B>
|
|
|
|
<DD>Change the size of the partition map partition. The partition
|
|
map's size must be less than or equal to the size of the partition
|
|
it is contained in. This is mostly useful when you want to do
|
|
tricky things like making a disk with multiple partitioning
|
|
schemes on it.
|
|
|
|
<DT><B>c</B>
|
|
|
|
<DD>Create a new partition takes three arguments.<BR>
|
|
|
|
The first argument is the base address (in partition blocks) of
|
|
the partition. Besides a raw number, you can also specify a
|
|
partition number followed by the letter 'p' to indicate that the
|
|
first block of the new partition should be the same as the first
|
|
block of that existing free space partition.<BR>
|
|
|
|
The second argument is the length of the partition in partition
|
|
blocks. This can be a raw number or can be a partition number
|
|
followed by the letter 'p' to use the size of that partition or
|
|
can be a number followed by 'k', 'm', or 'g' to indicate the size
|
|
in kilobytes, megabytes, or gigabytes respectively. (These are
|
|
powers of 1024, of course, not powers of 1000.)<BR>
|
|
|
|
The last argument is the name of the partition. This can be a
|
|
single word without quotes, or a string surrounded by single or
|
|
double quotes.<BR>
|
|
|
|
The type of the created partition is set to the correct type for
|
|
Linux ("Apple_UNIX_SVR2").
|
|
|
|
<DT><B>C</B>
|
|
|
|
<DD>Identical to the <B>c</B> command, with the addition of a
|
|
prompt for the partition type after the other arguments. The type
|
|
can be a single word without quotes, or a string surrounded by
|
|
single or double quotes.
|
|
|
|
<DT><B>n</B>
|
|
|
|
<DD>Rename a partition. Do not change the name of any partition
|
|
whose type starts with "Apple_Driver". The MacOS looks at the
|
|
names of those partitions. All other partitions should be okay
|
|
to change.
|
|
|
|
<DT><B>d</B>
|
|
|
|
<DD>Delete a partition. When a partition is deleted it's type is
|
|
changed to free ("Apple_Free") and then it is combined with any
|
|
adjacent free space.
|
|
|
|
<DT><B>r</B>
|
|
|
|
<DD>Reorder takes the current index and the desired new index. If
|
|
you give a new index which is greater than the last index the
|
|
entry will be moved to the last index.
|
|
|
|
<DT><B>w</B>
|
|
|
|
<DD>Write does write the partition map out, but pdisk does not yet
|
|
flush the appropriate caches and unmount volumes so the partition
|
|
map is not reinterpreted. In order to use the new partition map
|
|
you must reboot your machine. Sorry.
|
|
|
|
<DT><B>q</B>
|
|
|
|
<DD>Quit out of editing. Returns to the top level prompt. If you
|
|
have modified the partition map you are NOT asked if you want to
|
|
save the changes, instead the changes are quietly thrown away.
|
|
</DL>
|
|
|
|
<H3>Known problems</H3>
|
|
|
|
<DL>
|
|
<DD>This is an awful Mac OS application, it should be rewritten
|
|
to look the way a Mac OS app should look.
|
|
|
|
<DD>The code assumes a better understanding of the partitioning
|
|
scheme than most people care to acquire.
|
|
|
|
<DD>
|
|
|
|
<DD>Even more help should be available during user input.
|
|
</DL>
|
|
|
|
<P>
|
|
<HR>
|
|
</P>
|
|
|
|
<ADDRESS><A HREF="mailto:eryk@cfcl.com">eryk@cfcl.com</A>
|
|
</ADDRESS>
|
|
</BODY>
|
|
</HTML>
|