diff options
Diffstat (limited to 'Documentation/filesystems/affs.txt')
-rw-r--r-- | Documentation/filesystems/affs.txt | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/Documentation/filesystems/affs.txt b/Documentation/filesystems/affs.txt new file mode 100644 index 000000000000..30c9738590f4 --- /dev/null +++ b/Documentation/filesystems/affs.txt | |||
@@ -0,0 +1,219 @@ | |||
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://www-users.informatik.rwth-aachen.de/~crux/uae.html | ||