Root/
1 | 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/<volume> (where |
137 | <volume> 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 <disk> is the device name). |
169 | DO AT YOUR OWN RISK: |
170 | |
171 | dd if=/dev/<disk> 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/<disk> |
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://web.archive.org/web/*/http://www.freiburg.linux.de/~uae/ |
220 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9