1 |
1275 |
phoenix |
Overview of Amiga Filesystems
|
2 |
|
|
=============================
|
3 |
|
|
|
4 |
|
|
Not all varieties of the Amiga filesystems are supported for reading and
|
5 |
|
|
writing. The Amiga currently knows six different filesystems:
|
6 |
|
|
|
7 |
|
|
DOS\0 The old or original filesystem, not really suited for
|
8 |
|
|
hard disks and normally not used on them, either.
|
9 |
|
|
Supported read/write.
|
10 |
|
|
|
11 |
|
|
DOS\1 The original Fast File System. Supported read/write.
|
12 |
|
|
|
13 |
|
|
DOS\2 The old "international" filesystem. International means that
|
14 |
|
|
a bug has been fixed so that accented ("international") letters
|
15 |
|
|
in file names are case-insensitive, as they ought to be.
|
16 |
|
|
Supported read/write.
|
17 |
|
|
|
18 |
|
|
DOS\3 The "international" Fast File System. Supported read/write.
|
19 |
|
|
|
20 |
|
|
DOS\4 The original filesystem with directory cache. The directory
|
21 |
|
|
cache speeds up directory accesses on floppies considerably,
|
22 |
|
|
but slows down file creation/deletion. Doesn't make much
|
23 |
|
|
sense on hard disks. Supported read only.
|
24 |
|
|
|
25 |
|
|
DOS\5 The Fast File System with directory cache. Supported read only.
|
26 |
|
|
|
27 |
|
|
All of the above filesystems allow block sizes from 512 to 32K bytes.
|
28 |
|
|
Supported block sizes are: 512, 1024, 2048 and 4096 bytes. Larger blocks
|
29 |
|
|
speed up almost everything at the expense of wasted disk space. The speed
|
30 |
|
|
gain above 4K seems not really worth the price, so you don't lose too
|
31 |
|
|
much here, either.
|
32 |
|
|
|
33 |
|
|
The muFS (multi user File System) equivalents of the above file systems
|
34 |
|
|
are supported, too.
|
35 |
|
|
|
36 |
|
|
Mount options for the AFFS
|
37 |
|
|
==========================
|
38 |
|
|
|
39 |
|
|
protect If this option is set, the protection bits cannot be altered.
|
40 |
|
|
|
41 |
|
|
setuid[=uid] This sets the owner of all files and directories in the file
|
42 |
|
|
system to uid or the uid of the current user, respectively.
|
43 |
|
|
|
44 |
|
|
setgid[=gid] Same as above, but for gid.
|
45 |
|
|
|
46 |
|
|
mode=mode Sets the mode flags to the given (octal) value, regardless
|
47 |
|
|
of the original permissions. Directories will get an x
|
48 |
|
|
permission if the corresponding r bit is set.
|
49 |
|
|
This is useful since most of the plain AmigaOS files
|
50 |
|
|
will map to 600.
|
51 |
|
|
|
52 |
|
|
reserved=num Sets the number of reserved blocks at the start of the
|
53 |
|
|
partition to num. You should never need this option.
|
54 |
|
|
Default is 2.
|
55 |
|
|
|
56 |
|
|
root=block Sets the block number of the root block. This should never
|
57 |
|
|
be necessary.
|
58 |
|
|
|
59 |
|
|
bs=blksize Sets the blocksize to blksize. Valid block sizes are 512,
|
60 |
|
|
1024, 2048 and 4096. Like the root option, this should
|
61 |
|
|
never be necessary, as the affs can figure it out itself.
|
62 |
|
|
|
63 |
|
|
quiet The file system will not return an error for disallowed
|
64 |
|
|
mode changes.
|
65 |
|
|
|
66 |
|
|
verbose The volume name, file system type and block size will
|
67 |
|
|
be written to the syslog when the filesystem is mounted.
|
68 |
|
|
|
69 |
|
|
mufs The filesystem is really a muFS, also it doesn't
|
70 |
|
|
identify itself as one. This option is necessary if
|
71 |
|
|
the filesystem wasn't formatted as muFS, but is used
|
72 |
|
|
as one.
|
73 |
|
|
|
74 |
|
|
prefix=path Path will be prefixed to every absolute path name of
|
75 |
|
|
symbolic links on an AFFS partition. Default = "/".
|
76 |
|
|
(See below.)
|
77 |
|
|
|
78 |
|
|
volume=name When symbolic links with an absolute path are created
|
79 |
|
|
on an AFFS partition, name will be prepended as the
|
80 |
|
|
volume name. Default = "" (empty string).
|
81 |
|
|
(See below.)
|
82 |
|
|
|
83 |
|
|
Handling of the Users/Groups and protection flags
|
84 |
|
|
=================================================
|
85 |
|
|
|
86 |
|
|
Amiga -> Linux:
|
87 |
|
|
|
88 |
|
|
The Amiga protection flags RWEDRWEDHSPARWED are handled as follows:
|
89 |
|
|
|
90 |
|
|
- R maps to r for user, group and others. On directories, R implies x.
|
91 |
|
|
|
92 |
|
|
- If both W and D are allowed, w will be set.
|
93 |
|
|
|
94 |
|
|
- E maps to x.
|
95 |
|
|
|
96 |
|
|
- H and P are always retained and ignored under Linux.
|
97 |
|
|
|
98 |
|
|
- A is always reset when a file is written to.
|
99 |
|
|
|
100 |
|
|
User id and group id will be used unless set[gu]id are given as mount
|
101 |
|
|
options. Since most of the Amiga file systems are single user systems
|
102 |
|
|
they will be owned by root. The root directory (the mount point) of the
|
103 |
|
|
Amiga filesystem will be owned by the user who actually mounts the
|
104 |
|
|
filesystem (the root directory doesn't have uid/gid fields).
|
105 |
|
|
|
106 |
|
|
Linux -> Amiga:
|
107 |
|
|
|
108 |
|
|
The Linux rwxrwxrwx file mode is handled as follows:
|
109 |
|
|
|
110 |
|
|
- r permission will set R for user, group and others.
|
111 |
|
|
|
112 |
|
|
- w permission will set W and D for user, group and others.
|
113 |
|
|
|
114 |
|
|
- x permission of the user will set E for plain files.
|
115 |
|
|
|
116 |
|
|
- All other flags (suid, sgid, ...) are ignored and will
|
117 |
|
|
not be retained.
|
118 |
|
|
|
119 |
|
|
Newly created files and directories will get the user and group ID
|
120 |
|
|
of the current user and a mode according to the umask.
|
121 |
|
|
|
122 |
|
|
Symbolic links
|
123 |
|
|
==============
|
124 |
|
|
|
125 |
|
|
Although the Amiga and Linux file systems resemble each other, there
|
126 |
|
|
are some, not always subtle, differences. One of them becomes apparent
|
127 |
|
|
with symbolic links. While Linux has a file system with exactly one
|
128 |
|
|
root directory, the Amiga has a separate root directory for each
|
129 |
|
|
file system (for example, partition, floppy disk, ...). With the Amiga,
|
130 |
|
|
these entities are called "volumes". They have symbolic names which
|
131 |
|
|
can be used to access them. Thus, symbolic links can point to a
|
132 |
|
|
different volume. AFFS turns the volume name into a directory name
|
133 |
|
|
and prepends the prefix path (see prefix option) to it.
|
134 |
|
|
|
135 |
|
|
Example:
|
136 |
|
|
You mount all your Amiga partitions under /amiga/ (where
|
137 |
|
|
is the name of the volume), and you give the option
|
138 |
|
|
"prefix=/amiga/" when mounting all your AFFS partitions. (They
|
139 |
|
|
might be "User", "WB" and "Graphics", the mount points /amiga/User,
|
140 |
|
|
/amiga/WB and /amiga/Graphics). A symbolic link referring to
|
141 |
|
|
"User:sc/include/dos/dos.h" will be followed to
|
142 |
|
|
"/amiga/User/sc/include/dos/dos.h".
|
143 |
|
|
|
144 |
|
|
Examples
|
145 |
|
|
========
|
146 |
|
|
|
147 |
|
|
Command line:
|
148 |
|
|
mount Archive/Amiga/Workbench3.1.adf /mnt -t affs -o loop,verbose
|
149 |
|
|
mount /dev/sda3 /Amiga -t affs
|
150 |
|
|
|
151 |
|
|
/etc/fstab entry:
|
152 |
|
|
/dev/sdb5 /amiga/Workbench affs noauto,user,exec,verbose 0 0
|
153 |
|
|
|
154 |
|
|
IMPORTANT NOTE
|
155 |
|
|
==============
|
156 |
|
|
|
157 |
|
|
If you boot Windows 95 (don't know about 3.x, 98 and NT) while you
|
158 |
|
|
have an Amiga harddisk connected to your PC, it will overwrite
|
159 |
|
|
the bytes 0x00dc..0x00df of block 0 with garbage, thus invalidating
|
160 |
|
|
the Rigid Disk Block. Sheer luck has it that this is an unused
|
161 |
|
|
area of the RDB, so only the checksum doesn't match anymore.
|
162 |
|
|
Linux will ignore this garbage and recognize the RDB anyway, but
|
163 |
|
|
before you connect that drive to your Amiga again, you must
|
164 |
|
|
restore or repair your RDB. So please do make a backup copy of it
|
165 |
|
|
before booting Windows!
|
166 |
|
|
|
167 |
|
|
If the damage is already done, the following should fix the RDB
|
168 |
|
|
(where is the device name).
|
169 |
|
|
DO AT YOUR OWN RISK:
|
170 |
|
|
|
171 |
|
|
dd if=/dev/ of=rdb.tmp count=1
|
172 |
|
|
cp rdb.tmp rdb.fixed
|
173 |
|
|
dd if=/dev/zero of=rdb.fixed bs=1 seek=220 count=4
|
174 |
|
|
dd if=rdb.fixed of=/dev/
|
175 |
|
|
|
176 |
|
|
Bugs, Restrictions, Caveats
|
177 |
|
|
===========================
|
178 |
|
|
|
179 |
|
|
Quite a few things may not work as advertised. Not everything is
|
180 |
|
|
tested, though several hundred MB have been read and written using
|
181 |
|
|
this fs. For a most up-to-date list of bugs please consult
|
182 |
|
|
fs/affs/Changes.
|
183 |
|
|
|
184 |
|
|
Filenames are truncated to 30 characters without warning (this
|
185 |
|
|
can be changed by setting the compile-time option AFFS_NO_TRUNCATE
|
186 |
|
|
in include/linux/amigaffs.h).
|
187 |
|
|
|
188 |
|
|
Case is ignored by the affs in filename matching, but Linux shells
|
189 |
|
|
do care about the case. Example (with /wb being an affs mounted fs):
|
190 |
|
|
rm /wb/WRONGCASE
|
191 |
|
|
will remove /mnt/wrongcase, but
|
192 |
|
|
rm /wb/WR*
|
193 |
|
|
will not since the names are matched by the shell.
|
194 |
|
|
|
195 |
|
|
The block allocation is designed for hard disk partitions. If more
|
196 |
|
|
than 1 process writes to a (small) diskette, the blocks are allocated
|
197 |
|
|
in an ugly way (but the real AFFS doesn't do much better). This
|
198 |
|
|
is also true when space gets tight.
|
199 |
|
|
|
200 |
|
|
You cannot execute programs on an OFS (Old File System), since the
|
201 |
|
|
program files cannot be memory mapped due to the 488 byte blocks.
|
202 |
|
|
For the same reason you cannot mount an image on such a filesystem
|
203 |
|
|
via the loopback device.
|
204 |
|
|
|
205 |
|
|
The bitmap valid flag in the root block may not be accurate when the
|
206 |
|
|
system crashes while an affs partition is mounted. There's currently
|
207 |
|
|
no way to fix a garbled filesystem without an Amiga (disk validator)
|
208 |
|
|
or manually (who would do this?). Maybe later.
|
209 |
|
|
|
210 |
|
|
If you mount affs partitions on system startup, you may want to tell
|
211 |
|
|
fsck that the fs should not be checked (place a '0' in the sixth field
|
212 |
|
|
of /etc/fstab).
|
213 |
|
|
|
214 |
|
|
It's not possible to read floppy disks with a normal PC or workstation
|
215 |
|
|
due to an incompatibility with the Amiga floppy controller.
|
216 |
|
|
|
217 |
|
|
If you are interested in an Amiga Emulator for Linux, look at
|
218 |
|
|
|
219 |
|
|
http://www-users.informatik.rwth-aachen.de/~crux/uae.html
|