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