Amiga filesystems Overview
|
Amiga filesystems Overview
|
==========================
|
==========================
|
|
|
Not all varieties of the Amiga filesystems are supported for reading and
|
Not all varieties of the Amiga filesystems are supported for reading and
|
writing. The Amiga currently knows 6 different filesystems:
|
writing. The Amiga currently knows 6 different filesystems:
|
|
|
DOS\0 The old or original filesystem, not really suited for
|
DOS\0 The old or original filesystem, not really suited for
|
hard disks and normally not used on them, either.
|
hard disks and normally not used on them, either.
|
Supported read/write.
|
Supported read/write.
|
|
|
DOS\1 The original Fast File System. Supported read/write.
|
DOS\1 The original Fast File System. Supported read/write.
|
|
|
DOS\2 The old "international" filesystem. International means that
|
DOS\2 The old "international" filesystem. International means that
|
a bug has been fixed so that accented ("international") letters
|
a bug has been fixed so that accented ("international") letters
|
in file names are case-insensitive, as they ought to be.
|
in file names are case-insensitive, as they ought to be.
|
Supported read/write.
|
Supported read/write.
|
|
|
DOS\3 The "international" Fast File System. Supported read/write.
|
DOS\3 The "international" Fast File System. Supported read/write.
|
|
|
DOS\4 The original filesystem with directory cache. The directory
|
DOS\4 The original filesystem with directory cache. The directory
|
cache speeds up directory accesses on floppies considerably,
|
cache speeds up directory accesses on floppies considerably,
|
but slows down file creation/deletion. Doesn't make much
|
but slows down file creation/deletion. Doesn't make much
|
sense on hard disks. Supported read only.
|
sense on hard disks. Supported read only.
|
|
|
DOS\5 The Fast File System with directory cache. Supported read only.
|
DOS\5 The Fast File System with directory cache. Supported read only.
|
|
|
All of the above filesystems allow block sizes from 512 to 32K bytes.
|
All of the above filesystems allow block sizes from 512 to 32K bytes.
|
Supported block sizes are: 512, 1024, 2048 and 4096 bytes. Larger blocks
|
Supported block sizes are: 512, 1024, 2048 and 4096 bytes. Larger blocks
|
speed up almost everything with the expense of wasted disk space. The speed
|
speed up almost everything with the expense of wasted disk space. The speed
|
gain above 4K seems not really worth the price, so you don't lose too
|
gain above 4K seems not really worth the price, so you don't lose too
|
much here, either.
|
much here, either.
|
|
|
The muFS (multi user File System) equivalents of the above file systems
|
The muFS (multi user File System) equivalents of the above file systems
|
are supported, too.
|
are supported, too.
|
|
|
Mount options for the AFFS
|
Mount options for the AFFS
|
==========================
|
==========================
|
|
|
protect If this option is set, the protection bits cannot be altered.
|
protect If this option is set, the protection bits cannot be altered.
|
|
|
uid[=uid] This sets the uid of the root directory (i. e. the mount point
|
uid[=uid] This sets the uid of the root directory (i. e. the mount point
|
to uid or to the uid of the current user, if the =uid is
|
to uid or to the uid of the current user, if the =uid is
|
omitted.
|
omitted.
|
|
|
gid[=gid] Same as above, but for gid.
|
gid[=gid] Same as above, but for gid.
|
|
|
setuid[=uid] This sets the owner of all files and directories in the file
|
setuid[=uid] This sets the owner of all files and directories in the file
|
system to uid or the uid of the current user, respectively.
|
system to uid or the uid of the current user, respectively.
|
|
|
setgid[=gid] Same as above, but for gid.
|
setgid[=gid] Same as above, but for gid.
|
|
|
mode=mode Sets the mode flags to the given (octal) value, regardless
|
mode=mode Sets the mode flags to the given (octal) value, regardless
|
of the original permissions. Directories will get an x
|
of the original permissions. Directories will get an x
|
permission, if the corresponding r bit is set.
|
permission, if the corresponding r bit is set.
|
This is useful since most of the plain AmigaOS files
|
This is useful since most of the plain AmigaOS files
|
will map to 600.
|
will map to 600.
|
|
|
reserved=num Sets the number of reserved blocks at the start of the
|
reserved=num Sets the number of reserved blocks at the start of the
|
partition to num. Default is 2.
|
partition to num. Default is 2.
|
|
|
root=block Sets the block number of the root block. This should never
|
root=block Sets the block number of the root block. This should never
|
be necessary.
|
be necessary.
|
|
|
bs=blksize Sets the blocksize to blksize. Valid block sizes are 512,
|
bs=blksize Sets the blocksize to blksize. Valid block sizes are 512,
|
1024, 2048 and 4096. Like the root option, this should
|
1024, 2048 and 4096. Like the root option, this should
|
never be necessary, as the affs can figure it out itself.
|
never be necessary, as the affs can figure it out itself.
|
|
|
quiet The file system will not return an error for disallowed
|
quiet The file system will not return an error for disallowed
|
mode changes.
|
mode changes.
|
|
|
verbose The volume name, file system type and block size will
|
verbose The volume name, file system type and block size will
|
be written to the syslog.
|
be written to the syslog.
|
|
|
prefix=path Path will be prefixed to every absolute path name of
|
prefix=path Path will be prefixed to every absolute path name of
|
symbolic links on an AFFS partition. Default = /
|
symbolic links on an AFFS partition. Default = /
|
|
|
volume=name When symbolic links with an absolute path are created
|
volume=name When symbolic links with an absolute path are created
|
on an AFFS partition, volume will be prepended as the
|
on an AFFS partition, volume will be prepended as the
|
volume name. Default = "" (empty string).
|
volume name. Default = "" (empty string).
|
|
|
Handling of the Users/Groups and protection flags
|
Handling of the Users/Groups and protection flags
|
=================================================
|
=================================================
|
|
|
Amiga -> Linux:
|
Amiga -> Linux:
|
|
|
The Amiga protection flags RWEDRWEDHSPARWED are handled as follows:
|
The Amiga protection flags RWEDRWEDHSPARWED are handled as follows:
|
|
|
- R maps to r for user, group and others. On directories, R implies x.
|
- R maps to r for user, group and others. On directories, R implies x.
|
|
|
- If both W and D are allowed, w will be set.
|
- If both W and D are allowed, w will be set.
|
|
|
- If both R and S are set, x will be set.
|
- If both R and S are set, x will be set.
|
|
|
- H, P and E are always retained and ignored under Linux.
|
- H, P and E are always retained and ignored under Linux.
|
|
|
- A is always reset when written.
|
- A is always reset when written.
|
|
|
User id and group id will be used unless set[gu]id are given as mount
|
User id and group id will be used unless set[gu]id are given as mount
|
options. Since most of the Amiga file systems are single user systems
|
options. Since most of the Amiga file systems are single user systems
|
they will be owned by root.
|
they will be owned by root.
|
|
|
Linux -> Amiga:
|
Linux -> Amiga:
|
|
|
The Linux rwxrwxrwx file mode is handled as follows:
|
The Linux rwxrwxrwx file mode is handled as follows:
|
|
|
- r permission will set R for user, group and others.
|
- r permission will set R for user, group and others.
|
|
|
- w permission will set W and D for user, group and others.
|
- w permission will set W and D for user, group and others.
|
|
|
- x permission of the user will set S for plain files.
|
- x permission of the user will set S for plain files.
|
|
|
- All other flags (suid, sgid, ...) are ignored and will
|
- All other flags (suid, sgid, ...) are ignored and will
|
not be retained.
|
not be retained.
|
|
|
Newly created files and directories will get the user and group id
|
Newly created files and directories will get the user and group id
|
of the current user and a mode according to the umask.
|
of the current user and a mode according to the umask.
|
|
|
Symbolic links
|
Symbolic links
|
==============
|
==============
|
|
|
Although the Amiga and Linux file systems resemble each other, there
|
Although the Amiga and Linux file systems resemble each other, there
|
are some, not always subtle, differences. One of them becomes apparent
|
are some, not always subtle, differences. One of them becomes apparent
|
with symbolic links. While Linux has a file system with exactly one
|
with symbolic links. While Linux has a file system with exactly one
|
root directory, the Amiga has a separate root directory for each
|
root directory, the Amiga has a separate root directory for each
|
file system (i. e. partition, floppy disk, ...). With the Amiga,
|
file system (i. e. partition, floppy disk, ...). With the Amiga,
|
these entities are called "volumes". They have symbolic names which
|
these entities are called "volumes". They have symbolic names which
|
can be used to access them. Thus, symbolic links can point to a
|
can be used to access them. Thus, symbolic links can point to a
|
different volume. AFFS turns the volume name into a directory name
|
different volume. AFFS turns the volume name into a directory name
|
and prepends the prefix path (see prefix option) to it.
|
and prepends the prefix path (see prefix option) to it.
|
|
|
Example:
|
Example:
|
You mount all your Amiga partitions under /amiga/ (where
|
You mount all your Amiga partitions under /amiga/ (where
|
is the name of the volume), and you give the option
|
is the name of the volume), and you give the option
|
"prefix=/amiga/" when mounting all your AFFS partitions. (They
|
"prefix=/amiga/" when mounting all your AFFS partitions. (They
|
might be "User", "WB" and "Graphics", the mount points /amiga/User,
|
might be "User", "WB" and "Graphics", the mount points /amiga/User,
|
/amiga/WB and /amiga/Graphics). A symbolic link referring to
|
/amiga/WB and /amiga/Graphics). A symbolic link referring to
|
"User:sc/include/dos/dos.h" will be followed to
|
"User:sc/include/dos/dos.h" will be followed to
|
"/amiga/User/sc/include/dos/dos.h".
|
"/amiga/User/sc/include/dos/dos.h".
|
|
|
Examples
|
Examples
|
========
|
========
|
|
|
Command line
|
Command line
|
mount Archive/Amiga/Workbench3.1.adf /mnt -t affs -o loop,reserved=4
|
mount Archive/Amiga/Workbench3.1.adf /mnt -t affs -o loop,reserved=4
|
mount /dev/sda3 /Amiga -t affs
|
mount /dev/sda3 /Amiga -t affs
|
|
|
/etc/fstab example
|
/etc/fstab example
|
/dev/sdb5 /d/f affs ro
|
/dev/sdb5 /d/f affs ro
|
|
|
Bugs, Restrictions, Caveats
|
Bugs, Restrictions, Caveats
|
===========================
|
===========================
|
|
|
Quite a few things may not work as advertised. Not everything is
|
Quite a few things may not work as advertised. Not everything is
|
tested, though several hundred MB have been read and written using
|
tested, though several hundred MB have been read and written using
|
this fs.
|
this fs.
|
|
|
Filenames are truncated to 30 characters without warning.
|
Filenames are truncated to 30 characters without warning.
|
|
|
Currently there are no checks against invalid characters (':')
|
Currently there are no checks against invalid characters (':')
|
in filenames.
|
in filenames.
|
|
|
Case is ignored by the affs in filename matching, but Linux shells
|
Case is ignored by the affs in filename matching, but Linux shells
|
do care about the case. Example (with /mnt being an affs mounted fs):
|
do care about the case. Example (with /mnt being an affs mounted fs):
|
rm /mnt/WRONGCASE
|
rm /mnt/WRONGCASE
|
will remove /mnt/wrongcase, but
|
will remove /mnt/wrongcase, but
|
rm /mnt/WR*
|
rm /mnt/WR*
|
will not since the names are matched by the shell.
|
will not since the names are matched by the shell.
|
|
|
The block allocation is designed for hard disk partitions. If more
|
The block allocation is designed for hard disk partitions. If more
|
than 1 process writes to a (small) diskette, the blocks are allocated
|
than 1 process writes to a (small) diskette, the blocks are allocated
|
in an ugly way (but the real AFFS doesn't do much better). This
|
in an ugly way (but the real AFFS doesn't do much better). This
|
is also true when space gets tight.
|
is also true when space gets tight.
|
|
|
The bitmap valid flag in the root block may not be accurate when the
|
The bitmap valid flag in the root block may not be accurate when the
|
system crashes while an affs partition is mounted. There's currently
|
system crashes while an affs partition is mounted. There's currently
|
no way to fix this without an Amiga (disk validator) or manually
|
no way to fix this without an Amiga (disk validator) or manually
|
(who would do this?). Maybe later.
|
(who would do this?). Maybe later.
|
|
|
A fsck.affs and mkfs.affs will probably be available in the future.
|
A fsck.affs and mkfs.affs will probably be available in the future.
|
Until then, you should do
|
Until then, you should do
|
ln -s /bin/true /etc/fs/mkfs.affs
|
ln -s /bin/true /etc/fs/mkfs.affs
|
|
|
It's not possible to read floppy disks with a normal PC or workstation
|
It's not possible to read floppy disks with a normal PC or workstation
|
due to an incompatibility with the Amiga floppy controller.
|
due to an incompatibility with the Amiga floppy controller.
|
|
|
If you are interested in an Amiga Emulator for Linux, look at
|
If you are interested in an Amiga Emulator for Linux, look at
|
|
|
http://www-users.informatik.rwth-aachen.de/~crux/uae.html
|
http://www-users.informatik.rwth-aachen.de/~crux/uae.html
|
|
|