OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [filesystems/] [vfat.txt] - Blame information for rev 1275

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
USING VFAT
2
----------------------------------------------------------------------
3
To use the vfat filesystem, use the filesystem type 'vfat'.  i.e.
4
  mount -t vfat /dev/fd0 /mnt
5
 
6
No special partition formatter is required.  mkdosfs will work fine
7
if you want to format from within Linux.
8
 
9
VFAT MOUNT OPTIONS
10
----------------------------------------------------------------------
11
codepage=###  -- Sets the codepage for converting to shortname characters
12
                 on FAT and VFAT filesystems.  By default, codepage 437
13
                 is used.  This is the default for the U.S. and some
14
                 European countries.
15
iocharset=name -- Character set to use for converting between 8 bit characters
16
                 and 16 bit Unicode characters. Long filenames are stored on
17
                 disk in Unicode format, but Unix for the most part doesn't
18
                 know how to deal with Unicode. There is also an option of
19
                 doing UTF8 translations with the utf8 option.
20
utf8=   -- UTF8 is the filesystem safe version of Unicode that
21
                 is used by the console.  It can be be enabled for the
22
                 filesystem with this option. If 'uni_xlate' gets set,
23
                 UTF8 gets disabled.
24
uni_xlate= -- Translate unhandled Unicode characters to special
25
                 escaped sequences.  This would let you backup and
26
                 restore filenames that are created with any Unicode
27
                 characters.  Until Linux supports Unicode for real,
28
                 this gives you an alternative.  Without this option,
29
                 a '?' is used when no translation is possible.  The
30
                 escape character is ':' because it is otherwise
31
                 illegal on the vfat filesystem.  The escape sequence
32
                 that gets used is ':' and the four digits of hexadecimal
33
                 unicode.
34
posix=  -- Allow names of same letters, different case such as
35
                 'LongFileName' and 'longfilename' to coexist.  This has some
36
                 problems currently because 8.3 conflicts are not handled
37
                 correctly for POSIX filesystem compliance.
38
nonumtail= -- When creating 8.3 aliases, normally the alias will
39
                 end in '~1' or tilde followed by some number.  If this
40
                 option is set, then if the filename is
41
                 "longfilename.txt" and "longfile.txt" does not
42
                 currently exist in the directory, 'longfile.txt' will
43
                 be the short alias instead of 'longfi~1.txt'.
44
 
45
quiet         -- Stops printing certain warning messages.
46
check=s|r|n   -- Case sensitivity checking setting.
47
                 s: strict, case sensitive
48
                 r: relaxed, case insensitive
49
                 n: normal, default setting, currently case insensitive
50
 
51
shortname=lower|win95|winnt|mixed
52
              -- Shortname display/create setting.
53
                 lower: convert to lowercase for display,
54
                        emulate the Windows 95 rule for create.
55
                 win95: emulate the Windows 95 rule for display/create.
56
                 winnt: emulate the Windows NT rule for display/create.
57
                 mixed: emulate the Windows NT rule for display,
58
                        emulate the Windows 95 rule for create.
59
                 Default setting is `lower'.
60
 
61
: 0,1,yes,no,true,false
62
 
63
TODO
64
----------------------------------------------------------------------
65
* Need to get rid of the raw scanning stuff.  Instead, always use
66
  a get next directory entry approach.  The only thing left that uses
67
  raw scanning is the directory renaming code.
68
 
69
* Fix the POSIX filesystem support to work in 8.3 space.  This involves
70
  renaming aliases if a conflict occurs between a new filename and
71
  an old alias.  This is quite a mess.
72
 
73
 
74
POSSIBLE PROBLEMS
75
----------------------------------------------------------------------
76
* vfat_valid_longname does not properly checked reserved names.
77
* When a volume name is the same as a directory name in the root
78
  directory of the filesystem, the directory name sometimes shows
79
  up as an empty file.
80
* autoconv option does not work correctly.
81
 
82
BUG REPORTS
83
----------------------------------------------------------------------
84
If you have trouble with the VFAT filesystem, mail bug reports to
85
chaffee@bmrc.cs.berkeley.edu.  Please specify the filename
86
and the operation that gave you trouble.
87
 
88
TEST SUITE
89
----------------------------------------------------------------------
90
If you plan to make any modifications to the vfat filesystem, please
91
get the test suite that comes with the vfat distribution at
92
 
93
  http://bmrc.berkeley.edu/people/chaffee/vfat.html
94
 
95
This tests quite a few parts of the vfat filesystem and additional
96
tests for new features or untested features would be appreciated.
97
 
98
NOTES ON THE STRUCTURE OF THE VFAT FILESYSTEM
99
----------------------------------------------------------------------
100
(This documentation was provided by Galen C. Hunt 
101
 and lightly annotated by Gordon Chaffee).
102
 
103
This document presents a very rough, technical overview of my
104
knowledge of the extended FAT file system used in Windows NT 3.5 and
105
Windows 95.  I don't guarantee that any of the following is correct,
106
but it appears to be so.
107
 
108
The extended FAT file system is almost identical to the FAT
109
file system used in DOS versions up to and including 6.223410239847
110
:-).  The significant change has been the addition of long file names.
111
These names support up to 255 characters including spaces and lower
112
case characters as opposed to the traditional 8.3 short names.
113
 
114
Here is the description of the traditional FAT entry in the current
115
Windows 95 filesystem:
116
 
117
        struct directory { // Short 8.3 names
118
                unsigned char name[8];          // file name
119
                unsigned char ext[3];           // file extension
120
                unsigned char attr;             // attribute byte
121
                unsigned char lcase;            // Case for base and extension
122
                unsigned char ctime_ms;         // Creation time, milliseconds
123
                unsigned char ctime[2];         // Creation time
124
                unsigned char cdate[2];         // Creation date
125
                unsigned char adate[2];         // Last access date
126
                unsigned char reserved[2];      // reserved values (ignored)
127
                unsigned char time[2];          // time stamp
128
                unsigned char date[2];          // date stamp
129
                unsigned char start[2];         // starting cluster number
130
                unsigned char size[4];          // size of the file
131
        };
132
 
133
The lcase field specifies if the base and/or the extension of an 8.3
134
name should be capitalized.  This field does not seem to be used by
135
Windows 95 but it is used by Windows NT.  The case of filenames is not
136
completely compatible from Windows NT to Windows 95.  It is not completely
137
compatible in the reverse direction, however.  Filenames that fit in
138
the 8.3 namespace and are written on Windows NT to be lowercase will
139
show up as uppercase on Windows 95.
140
 
141
Note that the "start" and "size" values are actually little
142
endian integer values.  The descriptions of the fields in this
143
structure are public knowledge and can be found elsewhere.
144
 
145
With the extended FAT system, Microsoft has inserted extra
146
directory entries for any files with extended names.  (Any name which
147
legally fits within the old 8.3 encoding scheme does not have extra
148
entries.)  I call these extra entries slots.  Basically, a slot is a
149
specially formatted directory entry which holds up to 13 characters of
150
a file's extended name.  Think of slots as additional labeling for the
151
directory entry of the file to which they correspond.  Microsoft
152
prefers to refer to the 8.3 entry for a file as its alias and the
153
extended slot directory entries as the file name.
154
 
155
The C structure for a slot directory entry follows:
156
 
157
        struct slot { // Up to 13 characters of a long name
158
                unsigned char id;               // sequence number for slot
159
                unsigned char name0_4[10];      // first 5 characters in name
160
                unsigned char attr;             // attribute byte
161
                unsigned char reserved;         // always 0
162
                unsigned char alias_checksum;   // checksum for 8.3 alias
163
                unsigned char name5_10[12];     // 6 more characters in name
164
                unsigned char start[2];         // starting cluster number
165
                unsigned char name11_12[4];     // last 2 characters in name
166
        };
167
 
168
If the layout of the slots looks a little odd, it's only
169
because of Microsoft's efforts to maintain compatibility with old
170
software.  The slots must be disguised to prevent old software from
171
panicking.  To this end, a number of measures are taken:
172
 
173
        1) The attribute byte for a slot directory entry is always set
174
           to 0x0f.  This corresponds to an old directory entry with
175
           attributes of "hidden", "system", "read-only", and "volume
176
           label".  Most old software will ignore any directory
177
           entries with the "volume label" bit set.  Real volume label
178
           entries don't have the other three bits set.
179
 
180
        2) The starting cluster is always set to 0, an impossible
181
           value for a DOS file.
182
 
183
Because the extended FAT system is backward compatible, it is
184
possible for old software to modify directory entries.  Measures must
185
be taken to ensure the validity of slots.  An extended FAT system can
186
verify that a slot does in fact belong to an 8.3 directory entry by
187
the following:
188
 
189
        1) Positioning.  Slots for a file always immediately proceed
190
           their corresponding 8.3 directory entry.  In addition, each
191
           slot has an id which marks its order in the extended file
192
           name.  Here is a very abbreviated view of an 8.3 directory
193
           entry and its corresponding long name slots for the file
194
           "My Big File.Extension which is long":
195
 
196
                
197
                
198
                
199
                
200
                
201
 
202
           Note that the slots are stored from last to first.  Slots
203
           are numbered from 1 to N.  The Nth slot is or'ed with 0x40
204
           to mark it as the last one.
205
 
206
        2) Checksum.  Each slot has an "alias_checksum" value.  The
207
           checksum is calculated from the 8.3 name using the
208
           following algorithm:
209
 
210
                for (sum = i = 0; i < 11; i++) {
211
                        sum = (((sum&1)<<7)|((sum&0xfe)>>1)) + name[i]
212
                }
213
 
214
        3) If there is free space in the final slot, a Unicode NULL (0x0000)
215
           is stored after the final character.  After that, all unused
216
           characters in the final slot are set to Unicode 0xFFFF.
217
 
218
Finally, note that the extended name is stored in Unicode.  Each Unicode
219
character takes two bytes.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.