1 PCFS(7FS) File Systems PCFS(7FS) 2 3 4 5 NAME 6 pcfs - FAT formatted file system 7 8 SYNOPSIS 9 #include <sys/param.h> 10 #include <sys/mount.h> 11 #include <sys/fs/pc_fs.h> 12 13 int mount(const char *spec, 14 const char * dir, int mflag, 15 "pcfs", NULL, 0, char *optptr, 16 int optlen); 17 18 19 DESCRIPTION 20 pcfs is a file system type that enables direct access to files on FAT 21 formatted disks from within the SunOS operating system. 22 23 24 Once mounted, pcfs provides standard SunOS file operations and 25 semantics. Using pcfs, you can create, delete, read, and write files 26 on a FAT formatted disk. You can also create and delete directories and 27 list files in a directory. 28 29 30 pcfs supports FAT12 (floppies) and FAT16 and FAT32 file systems. 31 32 33 pcfs file systems can be force umounted using the -f argument to 34 umount(1M). 35 36 37 The pcfs file system contained on the block special file identified by 38 spec is mounted on the directory identified by dir. spec and dir are 39 pointers to pathnames. mflag specifies the mount options. The MS_DATA 40 bit in mflag must be set. Mount options can be passed to pcfs using 41 the optptr and optlen arguments. See mount_pcfs(1M) for a list of 42 mount options supported by pcfs. 43 44 45 Because FAT formatted media can record file timestamps between January 46 1st 1980 and December 31st 2127, it's not possible to fully represent 47 UNIX time_t in pcfs for 32 bit or 64 bit programs. In particular, if 48 post-2038 timestamps are present on a FAT formatted medium and pcfs 49 returns these, 32bit applications may unexpectedly fail with EOVERFLOW 50 errors. To prevent this, the default behaviour of pcfs has been 51 modified to clamp post-2038 timestamps to the latest possible value for 52 a 32bit time_t, which is January 19th 2038, 03:14:06 UTC when setting 53 and retrieving file timestamps. You can override this behavior using 54 the noclamptime mount option, as described in mount_pcfs(1M). 55 56 57 Timestamps on FAT formatted media are recorded in local time. If the 58 recording and receiving systems use different timezones, the 59 representation of timestamps shown on the two systems for the same 60 medium might vary. To correct this, pcfs provides a timezone mount 61 option to force interpretation of timestamps as read from a FAT 62 formatted medium in a given timezone (that of the recorder). By 63 default, the local timezone of the receiver is used. See 64 mount_pcfs(1M) for details. 65 66 67 The root directory of a FAT formatted medium has no timestamps and pcfs 68 returns the time when the mount was done as timestamp for the root of 69 the filesystem. 70 71 72 The FAT filesystem doesn't support multiple links. As a result, the 73 link count for all files and directories in pcfs is hard-coded as "1." 74 75 Mounting File Systems 76 Use the following command to mount pcfs from diskette: 77 78 mount -F pcfs device-special directory-name 79 80 81 82 83 You can use: 84 85 mount directory-name 86 87 88 89 90 if the following line is in your /etc/vfstab file: 91 92 device-special - directory-namepcfs - no rw 93 94 95 96 Use the following command to mount pcfs from non-diskette media: 97 98 mount -F pcfs device-special:logical-drive directory-name 99 100 101 102 103 You can use: 104 105 mount directory-name 106 107 108 109 110 if the following line is in your /etc/vfstab file: 111 112 device-special:logical_drive - directory-name pcfs - no rw 113 114 115 116 device-special specifies the special block device file for the diskette 117 (/dev/disketteN) or the entire hard disk (/dev/dsk/cNtNdNp0 for a SCSI 118 disk, and /dev/dsk/cNdNp0 for IDE disks) or the PCMCIA pseudo-floppy 119 memory card (/dev/dsk/cNtNdNsN). 120 121 122 logical-drive specifies either the DOS logical drive letter (c through 123 z) or a drive number (1 through 24). Drive letter c is equivalent to 124 drive number 1 and represents the Primary DOS partition on the disk; 125 drive letters d through z are equivalent to drive numbers 2 through 24, 126 and represent DOS drives within the Extended FAT partition. Note that 127 device-special and logical-drive must be separated by a colon. 128 129 130 directory-name specifies the location where the file system is mounted. 131 132 133 For example, to mount the Primary DOS partition from a SCSI hard disk, 134 use: 135 136 mount -F pcfs /dev/dsk/cNtNdNp0:c /pcfs/c 137 138 139 140 141 To mount the first logical drive in the Extended DOS partition from an 142 IDE hard disk, use: 143 144 mount -F pcfs /dev/dsk/cNdNp0:d /pcfs/d 145 146 147 148 149 To mount a DOS diskette in the first floppy drive when volume 150 management is not running use: 151 152 mount -F pcfs /dev/diskette /pcfs/a 153 154 155 156 157 If Volume Management is running, run volcheck(1) to automatically mount 158 the floppy and some removable disks. 159 160 161 To mount a PCMCIA pseudo-floppy memory card, with Volume Management not 162 running (or not managing the PCMCIA media), use: 163 164 mount -F pcfs /dev/dsk/cNtNdNsN /pcfs 165 166 167 168 Conventions 169 Files and directories created through pcfs must comply with either the 170 FAT short file name convention or the long file name convention 171 introduced with Windows 95. The FAT short file name convention is of 172 the form filename[.ext], where filename generally consists of from one 173 to eight upper-case characters, while the optional ext consists of from 174 one to three upper-case characters. 175 176 177 The long file name convention is much closer to Solaris file names. A 178 long file name can consist of any characters valid in a short file 179 name, lowercase letters, non-leading spaces, the characters +,;=[], any 180 number of periods, and can be up to 255 characters long. Long file 181 names have an associated short file name for systems that do not 182 support long file names (including earlier releases of Solaris). The 183 short file name is not visible if the system recognizes long file 184 names. pcfs generates a unique short name automatically when creating a 185 long file name. 186 187 188 Given a long file name such as This is a really long filename.TXT, the 189 short file name will generally be of the form THISIS~N.TXT, where N is 190 a number. The long file name will probably get the short name 191 THISIS~1.TXT, or THISIS~2.TXT if THISIS~1.TXT already exits (or 192 THISIS~3.TXT if both exist, and so forth). If you use pcfs file systems 193 on systems that do not support long file names, you may want to 194 continue following the short file name conventions. See EXAMPLES. 195 196 197 When creating a file name, pcfs creates a short file name if it fits 198 the FAT short file name format, otherwise it creates a long file name. 199 This is because long file names take more directory space. Because the 200 root directory of a pcfs file system is fixed size, long file names in 201 the root directory should be avoided if possible. 202 203 204 When displaying file names, pcfs shows them exactly as they are on the 205 media. This means that short names are displayed as uppercase and long 206 file names retain their case. Earlier versions of pcfs folded all names 207 to lowercase, which can be forced with the PCFS_MNT_FOLDCASE mount 208 option. All file name searches within pcfs, however, are treated as if 209 they were uppercase, so readme.txt and ReAdMe.TxT refer to the same 210 file. 211 212 213 To format a diskette or a PCMCIA pseudo-floppy memory card in FAT 214 format in the SunOS system, use either the fdformat -d or the DOS 215 FORMAT command. 216 217 Boot Partitions 218 On x86 systems, hard drives may contain an fdisk partition reserved for 219 the Solaris boot utilities. These partitions are special instances of 220 pcfs. You can mount an x86 boot partition with the command: 221 222 mount -F pcfs device-special:boot directory-name 223 224 225 226 227 or you can use: 228 229 mount directory-name 230 231 232 233 234 if the following line is in your /etc/vfstab file: 235 236 device-special:boot - directory-name pcfs - no rw 237 238 239 240 241 device-special specifies the special block device file for the entire 242 hard disk (/dev/dsk/cNtNdNp0) 243 244 245 directory-name specifies the location where the file system is mounted. 246 247 248 All files on a boot partition are owned by super-user. Only the super- 249 user may create, delete, or modify files on a boot partition. 250 251 EXAMPLES 252 Example 1 Sample Displays of File Names 253 254 255 If you copy a file financial.data from a UNIX file system to pcfs, it 256 displays as financial.data in pcfs, but may show up as FINANC~1.DAT in 257 systems that do not support long file names. 258 259 260 261 The following are legal long file names. They are also illegal short 262 file names: 263 264 test.sh.orig 265 data+ 266 .login 267 268 269 Other systems that do not support long file names may see: 270 271 TESTSH~1.ORI 272 DATA~1 273 LOGIN~1 274 275 276 The short file name is generated from the initial characters of the 277 long file name, so differentiate names in the first few characters. For 278 example, these names: 279 280 WorkReport.January.Data 281 WorkReport.February.Data 282 WorkReport.March.Data 283 284 285 result in these short names, which are not distinguishable: 286 287 WORKRE~1.DAT 288 WORKRE~2.DAT 289 WORKRE~13.DAT 290 291 292 These names, however: 293 294 January.WorkReport.Data 295 February.WorkReport.Data 296 March.WorkReport.Data 297 298 299 result in the more descriptive short names: 300 301 JANUAR~1.DAT 302 FEBRUA~1.DAT 303 MARCHW~1.DAT 304 305 FILES 306 /usr/lib/fs/pcfs/mount 307 pcfs mount command 308 309 310 /usr/kernel/fs/pcfs 311 32-bit kernel module 312 313 314 ENVIRONMENT VARIABLES 315 See environ(5) for descriptions of the following environment variables 316 for the current locale setting: LANG, LC_ALL, LC_CTYPE, and LC_COLLATE. 317 318 SEE ALSO 319 chgrp(1), chown(1), dos2unix(1), eject(1), fdformat(1), unix2dos(1), 320 volcheck(1), mount(1M), mount_pcfs(1M), umount(1M), ctime(3C), 321 vfstab(4), environ(5), pcmem(7D) 322 323 WARNINGS 324 Do not physically eject a FAT floppy while the device is mounted as 325 pcfs. If Volume Management is managing a device, use the eject(1) 326 command before physically removing media. 327 328 329 When mounting pcfs on a hard disk, make sure the first block on that 330 device contains a valid fdisk partition table. 331 332 333 Because pcfs has no provision for handling owner-IDs or group-IDs on 334 files, chown(1) or chgrp(1) may generate various errors. This is a 335 limitation of pcfs, but it should not cause problems other than error 336 messages. 337 338 NOTES 339 Only the following characters are allowed in pcfs short file names and 340 extensions: 341 0-9 342 A-Z 343 $#&@!%()-{}<>`_^~|' 344 345 346 SunOS and FAT use different character sets and have different 347 requirements for the text file format. Use the dos2unix(1) and 348 unix2dos(1) commands to convert files between them. 349 350 351 pcfs offers a convenient transportation vehicle for files between Sun 352 workstations and PCs. Because the FAT disk format was designed for use 353 under DOS, it does not operate efficiently under the SunOS system and 354 should not be used as the format for a regular local storage. Instead, 355 use ufs for local storage within the SunOS system. 356 357 358 Although long file names can contain spaces (just as in UNIX file 359 names), some utilities may be confused by them. 360 361 362 This implementation of pcfs conforms to the behavior exhibited by 363 Windows 95 version 4.00.950. 364 365 366 When pcfs encounters long file names with non-ASCII characters, it 367 converts such long file names in Unicode scalar values into UTF-8 368 encoded filenames so that they are legible and usable with any of 369 Solaris UTF-8 locales. In the same context, when new file names with 370 non-ASCII characters are created, pcfs expects that such file names are 371 in UTF-8. This feature increases the interoperability of pcfs on 372 Solaris with other operating systems. 373 374 BUGS 375 pcfs should handle the disk change condition in the same way that DOS 376 does, so you do not need to unmount the file system to change floppies. 377 378 379 380 November 6, 2007 PCFS(7FS)