summaryrefslogtreecommitdiff
path: root/usr/src/man/man4fs/pcfs.4fs
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man4fs/pcfs.4fs')
-rw-r--r--usr/src/man/man4fs/pcfs.4fs540
1 files changed, 540 insertions, 0 deletions
diff --git a/usr/src/man/man4fs/pcfs.4fs b/usr/src/man/man4fs/pcfs.4fs
new file mode 100644
index 0000000000..2b51e2032b
--- /dev/null
+++ b/usr/src/man/man4fs/pcfs.4fs
@@ -0,0 +1,540 @@
+.\"
+.\" Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright 2021 Oxide Computer Company
+.\"
+.\" The contents of this file are subject to the terms of the
+.\" Common Development and Distribution License (the "License").
+.\" You may not use this file except in compliance with the License.
+.\"
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+.\" or http://www.opensolaris.org/os/licensing.
+.\" See the License for the specific language governing permissions
+.\" and limitations under the License.
+.\"
+.\" When distributing Covered Code, include this CDDL HEADER in each
+.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+.\" If applicable, add the following below this CDDL HEADER, with the
+.\" fields enclosed by brackets "[]" replaced with your own identifying
+.\" information: Portions Copyright [yyyy] [name of copyright owner]
+.\"
+.Dd November 29, 2021
+.Dt PCFS 4FS
+.Os
+.Sh NAME
+.Nm pcfs
+.Nd FAT formatted file system
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/fs/pc_fs.h
+.Ft int
+.Fo mount
+.Fa "const char *spec"
+.Fa "const char *dir"
+.Fa "int mflag"
+.Fa \(dqpcfs\(dq
+.Fa NULL
+.Fa 0
+.Fa "const char *optptr"
+.Fa "int optlen"
+.Fc
+.Sh DESCRIPTION
+.Nm
+is a file system type that enables direct access to files on FAT formatted disks
+from within the SunOS operating system.
+.Pp
+Once mounted,
+.Nm
+provides standard file operations and semantics.
+Using
+.Nm
+you can create, delete, read, and write files on a FAT formatted disk.
+You can also create and delete directories and list files in a directory.
+.Pp
+.Nm
+supports FAT12 (floppies) and FAT16 and FAT32 file systems.
+.Pp
+.Nm
+file systems can be force umounted using the
+.Fl -f
+argument to
+.Xr umount 8 .
+.Pp
+The
+.Nm
+file system contained on the block special file identified by
+.Fa spec
+is mounted on the directory identified by
+.Fa dir .
+.Fa spec
+and
+.Fa dir
+are pointers to pathnames.
+.Fa mflag
+specifies the
+.Fa mount
+options.
+The
+.Dv MS_DATA
+bit in
+.Fa mflag
+must be set.
+Mount options can be passed to
+.Nm
+using the optptr and optlen arguments.
+See
+.Xr mount_pcfs 8
+for a list of mount options supported by
+.Nm
+.Pp
+Because FAT formatted media can record file timestamps between January 1st 1980
+and December 31st 2127, it's not possible to fully represent UNIX
+.Vt time_t
+in
+.Nm
+for 32 bit or 64 bit programs.
+In particular, if post-2038 timestamps are present on a FAT formatted medium and
+.Nm
+returns these, 32bit applications may unexpectedly fail with
+.Er EOVERFLOW
+errors.
+To prevent this, the default behaviour of
+.Nm
+has been modified to clamp
+post-2038 timestamps to the latest possible value for a 32bit
+.Vt time_t ,
+which is January 19th 2038, 03:14:06 UTC when setting and retrieving file
+timestamps.
+You can override this behavior using the
+.Ar noclamptime
+mount option, as described in
+.Xr mount_pcfs 8 .
+.Pp
+Timestamps on FAT formatted media are recorded in local time.
+If the recording and receiving systems use different timezones, the
+representation of timestamps shown on the two systems for the same medium might
+vary.
+To correct this,
+.Nm
+provides a timezone mount option to force interpretation
+of timestamps as read from a FAT formatted medium in a given timezone
+.Pq that of the recorder .
+By default, the local timezone of the receiver is used.
+See
+.Xr mount_pcfs 8
+for details.
+.Pp
+The root directory of a FAT formatted medium has no timestamps and
+.Nm
+returns the time when the mount was done as timestamp for the root of the
+filesystem.
+.Pp
+The FAT filesystem doesn't support multiple links.
+As a result, the link count
+for all files and directories in
+.Nm
+is hard-coded as
+.Dq 1 .
+.Ss Mounting File Systems
+Use the following command to mount
+.Nm
+from diskette:
+.Bd -literal -offset indent
+mount -F pcfs device-special directory-name
+.Ed
+.Pp
+You can use:
+.Bd -literal -offset indent
+mount directory-name
+.Ed
+if the following line is in your
+.Pa /etc/vfstab
+file:
+.Bd -literal -offset indent
+device-special - directory-name pcfs - no rw
+.Ed
+.Pp
+Use the following command to mount
+.Nm
+from non-diskette media:
+.Bd -literal -offset indent
+mount -F pcfs device-special:logical-drive directory-name
+.Ed
+.Pp
+You can use:
+.Bd -literal -offset indent
+mount directory-name
+.Ed
+if the following line is in your
+.Pa /etc/vfstab
+file:
+.Bd -literal -offset indent
+device-special:logical_drive - directory-name pcfs - no rw
+.Ed
+.Pp
+.Ar device-special
+specifies the special block device file for the diskette
+.Pq Pa /dev/disketteN
+or the entire hard disk
+.Po
+Pa /dev/dsk/cNtNdNp0
+for a SCSI, SATA, NVME disk, and
+.Pa /dev/dsk/cNdNp0
+for IDE disks
+.Pc
+or the PCMCIA pseudo-floppy memory card
+.Pq Pa /dev/dsk/cNtNdNsN .
+.Pp
+.Ar logical-drive
+specifies either the DOS logical drive letter
+.Po
+.Sy c
+through
+.Sy z
+.Pc
+or a drive number
+.Pq 1 through 24 .
+Drive letter
+.Sy c
+is equivalent to drive number
+.Sy 1
+and represents the Primary DOS partition on the disk; drive letters
+.Sy d
+through
+.Sy z
+are equivalent to drive numbers
+.Sy 2
+through
+.Sy 24 ,
+and represent DOS drives within the Extended FAT partition.
+Note that
+.Ar device-special
+and
+.Ar logical-drive
+must be separated by a colon.
+.Pp
+.Ar directory-name
+specifies the location where the file system is mounted.
+.Pp
+For example, to mount the Primary DOS partition from a SCSI hard disk,
+use:
+.Bd -literal -offset indent
+mount -F pcfs /dev/dsk/cNtNdNp0:c /pcfs/c
+.Ed
+.Pp
+To mount the first logical drive in the Extended DOS partition from an IDE hard
+disk, use:
+.Bd -literal -offset indent
+mount -F pcfs /dev/dsk/cNdNp0:d /pcfs/d
+.Ed
+.Pp
+To mount a DOS diskette in the first floppy drive when volume management is not
+running use:
+.Bd -literal -offset indent
+mount -F pcfs /dev/diskette /pcfs/a
+.Ed
+.Pp
+If Volume Management is running, run
+.Xr volcheck 1
+to automatically mount the floppy and some removable disks.
+.Pp
+To mount a PCMCIA pseudo-floppy memory card, with Volume Management not running
+.Pq or not managing the PCMCIA media ,
+use:
+.Bd -literal -offset indent
+mount -F pcfs /dev/dsk/cNtNdNsN /pcfs
+.Ed
+.Ss "Conventions"
+Files and directories created through
+.Nm
+must comply with either the FAT short file name convention or the long file name
+convention introduced with Windows 95.
+The FAT short file name convention is of the form
+.Pa filename[.ext] ,
+where
+.Em filename
+generally consists of from one to eight upper-case characters, while the
+optional
+.Em ext
+consists of from one to three upper-case characters.
+.Pp
+The long file name convention is much closer to illumos file names.
+A long file name can consist of any characters valid in a short file name,
+lowercase letters, non-leading spaces, the characters
+.Sy +,;=[] ,
+any number of periods, and can be up to 255 characters long.
+Long file names have an associated short file name for systems that do not
+support long file names.
+The short file name is not visible if the system recognizes long file names.
+.Nm
+generates a unique short name automatically when creating a long file name.
+.Pp
+Given a long file name such as
+.Pa This is a really long filename.TXT ,
+the short file name will generally be of the form
+.Pa THISIS~N\&.TXT ,
+where
+.Em N
+is a number.
+The long file name will probably get the short name
+.Pa THISIS~1.TXT ,
+or
+.Pa THISIS~2.TXT
+if
+.Pa THISIS~1.TXT
+already exits
+.Po or
+.Pa THISIS~3.TXT
+if both exist, and so forth
+.Pc .
+If you use
+.Nm
+file systems on systems that do not support long file names, you may want to
+continue following the short file name conventions.
+See
+.Sx EXAMPLES .
+.Pp
+When creating a file name,
+.Nm
+creates a short file name if it fits the FAT short file name format, otherwise
+it creates a long file name.
+This is because long file names take more directory space.
+Because the root directory of a
+.Nm
+file system is fixed size, long file names in the root directory should be
+avoided if possible.
+.Pp
+When displaying file names,
+.Nm
+shows them exactly as they are on the media.
+This means that short names are displayed as uppercase and long file names
+retain their case.
+Earlier versions of
+.Nm
+folded all names to lowercase, which can be forced with the
+.Dv PCFS_MNT_FOLDCASE
+mount option.
+All file name searches within
+.Nm ,
+however, are treated as if they were uppercase, so
+.Pa readme.txt
+and
+.Pa ReAdMe.TxT
+refer to the same file.
+.Pp
+To format a diskette or a PCMCIA pseudo-floppy memory card in FAT format in the
+SunOS system, use either the
+.Xr fdformat 1
+.Fl -d
+or the DOS
+.Sy FORMAT
+command.
+.Ss Boot Partitions
+On x86 systems, hard drives may contain an fdisk partition reserved for the boot
+utilities.
+The most common case is the EFI system partition.
+These partitions are special instances of
+.Nm .
+You can mount an x86 boot partition with the command:
+.Bd -literal -offset indent
+mount -F pcfs device-special:boot directory-name
+.Ed
+or you can use:
+.Bd -literal -offset indent
+mount directory-name
+.Ed
+if the following line is in your
+.Pa /etc/vfstab
+file:
+.Bd -literal -offset indent
+device-special:boot - directory-name pcfs - no rw
+.Ed
+.Pp
+.Ar device-special
+specifies the special block device file for the entire hard disk
+.Pq Pa /dev/dsk/cNtNdNp0
+.Pp
+.Ar directory-name
+specifies the location where the file system is mounted.
+.Pp
+All files on a boot partition are owned by super-user.
+Only the super-user may create, delete, or modify files on a boot partition.
+.Sh ENVIRONMENT
+See
+.Xr environ 7
+for descriptions of the following environment variables
+for the current locale setting:
+.Ev LANG ,
+.Ev LC_ALL ,
+.Ev LC_CTYPE ,
+and
+.Ev LC_COLLATE .
+.Sh FILES
+.Bl -tag -width Pa
+.It Pa /usr/lib/fs/pcfs/mount
+.Nm
+mount command.
+.It Pa /usr/kernel/fs/amd64/pcfs
+64-bit kernel module (x86).
+.El
+.Sh EXAMPLES
+.Sy Example 1
+Sample Displays of File Names
+.Pp
+If you copy a file
+.Pa financial.data
+from a UNIX file system to
+.Nm ,
+it displays as
+.Pa financial.data
+in
+.Nm
+but may show up as
+.Pa FINANC~1.DAT
+in systems that do not support long file names.
+.Pp
+The following are legal long file names.
+They are also illegal short file names:
+.Bl -item -offset indent
+.It
+.Pa test.sh.orig
+.It
+.Pa data+
+.El
+.Pp
+Other systems that do not support long file names may see:
+.Bl -item -offset indent
+.It
+.Pa TESTSH~1.ORI
+.It
+.Pa DATA~1
+.It
+.Pa LOGIN~1
+.El
+The short file name is generated from the initial characters of the long file
+name, so differentiate names in the first few characters.
+For example, these names:
+.Bl -item -offset indent
+.It
+.Pa WorkReport.January.Data
+.It
+.Pa WorkReport.February.Data
+.It
+.Pa WorkReport.March.Data
+.El
+result in these short names, which are not distinguishable:
+.Bl -item -offset indent
+.It
+.Pa WORKRE~1.DAT
+.It
+.Pa WORKRE~2.DAT
+.It
+.Pa WORKRE~2.DAT
+.It
+.Pa WORKRE~2.DAT
+.It
+.Pa WORKRE~13.DAT
+.El
+.Pp
+These names, however:
+.Bl -item -offset indent
+.It
+.Pa January.WorkReport.Data
+.It
+.Pa February.WorkReport.Data
+.It
+.Pa March.WorkReport.Data
+.El
+result in the more descriptive short names:
+.Bl -item -offset indent
+.It
+.Pa JANUAR~1.DAT
+.It
+.Pa FEBRUA~1.DAT
+.It
+.Pa MARCHW~1.DAT
+.El
+.Sh SEE ALSO
+.Xr chgrp 1 ,
+.Xr chown 1 ,
+.Xr dos2unix 1 ,
+.Xr eject 1 ,
+.Xr fdformat 1 ,
+.Xr unix2dos 1 ,
+.Xr volcheck 1 ,
+.Xr ctime 3C ,
+.Xr vfstab 5 ,
+.Xr environ 7 ,
+.Xr mount 8 ,
+.Xr mount_pcfs 8 ,
+.Xr umount 8
+.Sh WARNINGS
+Do not physically eject a FAT floppy while the device is mounted as
+.Nm
+If Volume Management is managing a device, use the
+.Xr eject 1
+command before physically removing media.
+.Pp
+When mounting
+.Nm
+on a hard disk, make sure the first block on that device contains a valid fdisk
+partition table.
+.Pp
+Because
+.Nm
+has no provision for handling owner-IDs or group-IDs on files,
+.Xr chown 1
+or
+.Xr chgrp 1
+may generate various errors.
+This is a limitation of
+.Nm
+but it should not cause problems other than error messages.
+.Sh NOTES
+Only the following characters are allowed in
+.Nm
+short file names and extensions:
+.Bl -item -offset indent
+.It
+0-9
+.It
+A-Z
+.It
+$#&@!%()-{}<>`_^~|'
+.It
+.El
+illumos and FAT use different character sets and have different
+requirements for the text file format.
+Use the
+.Xr dos2unix 1
+and
+.Xr unix2dos 1
+commands to convert files between them.
+.Pp
+.Nm
+offers a convenient transportation vehicle for files between multiple systems.
+Because the FAT disk format was designed for use under DOS, it does not operate
+efficiently under illumos and should not be used as the format for a regular
+local storage.
+Instead, use ZFS for local storage within an illumos system.
+.Pp
+Although long file names can contain spaces
+(just as in UNIX file names) ,
+some utilities may be confused by them.
+.Pp
+When
+.Nm
+encounters long file names with non-ASCII characters, it converts such long file
+names in Unicode scalar values into UTF-8 encoded filenames so that they are
+legible and usable with any of illumos UTF-8 locales.
+In the same context, when new file names with non-ASCII characters are created,
+.Nm
+expects that such file names are in UTF-8.
+This feature increases the interoperability of
+.Nm
+on illumos with other operating
+systems.
+.Sh BUGS
+.Nm
+should handle the disk change condition in the same way that DOS does, so you do
+not need to unmount the file system to change floppies.