|
| pcfs - DOS formatted file system |
SYNOPSIS
|
#include <sys/param.h>
#include <sys/mount.h>
#include <sys/fs/pc_fs.h> int mount(const char *spec, const char *dir, int mflag, "pcfs", structpcfs_args, struct *pc_argp, sizeof (struct pcfs_args)); |
|
pcfs is
a file system type that enables direct access to files on DOS formatted disks from within the SunOS operating system.
Once mounted, pcfs provides standard SunOS file operations
and semantics. Using pcfs, you can create, delete, read,
and write files on a DOS formatted disk.
You can also create and delete directories and list files in a directory.
pcfs supports FAT12 (floppies) and FAT16 and FAT32
file systems.
The pcfs file system contained on the block special
file identified by spec is mounted on the directory
identified by dir. spec and dir are pointers to pathnames. mflag specifies
the mount options. The MS_DATA bit in mflag must be set. Mounting a pcfs file system requires a pointer to a structure containing mount flags and local timezone information, *pc_argp:
|
struct pcfs_args {
int timezone; /* seconds west of Greenwich */
int daylight; /* type of dst correction */
int flags;
};
|
The information required in the timezone
and daylight members of this structure is described in
ctime(3C). flags can contain the PCFS_MNT_FOLDCASE flag. Fold names read from the file system to lowercase.
Mounting File Systems
|
Use the following command to mount pcfs from diskette:
|
mount -F pcfs device-special directory-name
|
You can use:
if the following line is in your /etc/vfstab file:
|
device-special - directory-namepcfs - no rw
|
Use the following command to mount pcfs from non-diskette
media:
|
mount -F pcfs device-special:logical-drive directory-name
|
You can use:
if the following line is in your /etc/vfstab file:
|
device-special:logical_drive - directory-name pcfs - no rw
|
device-special specifies the special block
device file for the diskette (/dev/disketteN)
or the entire hard disk (/dev/dsk/cNtNdNp0 for a SCSI disk,
and /dev/dsk/cNdNp0 for IDE disks) or the PCMCIA pseudo-floppy memory card (/dev/dsk/cNtNdNsN).
logical-drive specifies either the DOS logical drive letter (c through z) or a drive number (1 through 24). Drive letter c is equivalent to drive number 1 and represents the Primary DOS
partition on the disk; drive letters d through z are equivalent to drive numbers 2 through
24, and represent DOS
drives within the Extended DOS partition.
Note that device-special and logical-drive must be separated by a colon.
directory-name specifies the location where
the file system is mounted.
For example, to mount the Primary DOS
partition from a SCSI hard disk, use:
|
mount -F pcfs /dev/dsk/cNtNdNp0:c /pcfs/c
|
To mount the first logical drive in the Extended DOS partition from an IDE hard
disk, use:
|
mount -F pcfs /dev/dsk/cNdNp0:d /pcfs/d
|
To mount a DOS diskette in the first
floppy drive when Volume Management is not running (see vold(1M)) use:
|
mount -F pcfs /dev/diskette /pcfs/a
|
If Volume Management is running, run volcheck(1) to automatically mount the
floppy and some removable disks.
To mount a PCMCIA pseudo-floppy memory
card, with Volume Management not running (or not managing the PCMCIA media), use:
|
mount -F pcfs /dev/dsk/cNtNdNsN /pcfs
|
|
Conventions
|
Files and directories created through pcfs must comply
with either the DOS short file name convention
or the long file name convention introduced with Windows 95. The DOS short file name convention is of the form filename[.ext], where filename generally consists of from one to eight upper-case
characters, while the optional ext consists of
from one to three upper-case characters.
The long file name convention is much closer to Solaris file names.
A long file name can consist of any characters valid in a short file name,
lowercase letters, non-leading spaces, the characters +,;=[],
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 (including earlier releases of Solaris). The short file name is not
visible if the system recognizes long file names. pcfs
generates a unique short name automatically when creating a long file name.
Given a long file name such as This is a really long filename.TXT, the short file name will generally be of the form THISIS~N.TXT, where N is a number. The long file name will probably get the short
name THISIS~1.TXT, or THISIS~2.TXT
if THISIS~1.TXT already exits (or THISIS~3.TXT if both exist, and so forth). If you use pcfs
file systems on systems that do not support long file names, you may want
to continue following the short file name conventions. See EXAMPLES.
When creating a file name, pcfs creates a short file
name if it fits the DOS 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 pcfs
file system is fixed size, long file names in the root directory should be
avoided if possible.
When displaying file names, pcfs 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 pcfs
folded all names to lowercase, which can be forced with the PCFS_MNT_FOLDCASE mount option. All file name searches within pcfs, however, are treated as if they were uppercase, so readme.txt and ReAdMe.TxT refer to the same file.
To format a diskette or a PCMCIA pseudo-floppy
memory card in DOS format in the SunOS system,
use either the fdformat -d or the DOS FORMAT
command.
|
Boot Partitions
|
On IA systems, hard drives may contain an fdisk
partition reserved for the Solaris boot utilities. These partitions are special
instances of pcfs. You can mount an IA boot partition
with the command:
|
mount -F pcfs device-special:boot directory-name
|
or you can use:
if the following line is in your /etc/vfstab file:
|
device-special:boot - directory-name pcfs - no rw
|
device-special specifies the special block
device file for the entire hard disk (/dev/dsk/cNtNdNp0)
directory-name specifies the location where
the file system is mounted.
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.
|
|
| Example 1. Sample Displays of File Names
|
If you copy a file financial.data from a UNIX file
system to pcfs, it displays as financial.data in pcfs, but may show up as FINANC~1.DAT in systems that do not support long file names.
The following are legal long file names. They are also illegal short file names:
-
test.sh.orig
-
data+
-
.login
Other systems that do not support long file names may see:
-
TESTSH~1.ORI
-
DATA~1
-
LOGIN~1
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:
-
WorkReport.January.Data
-
WorkReport.February.Data
-
WorkReport.March.Data
result in these short names, which are not distinguishable:
-
WORKRE~1.DAT
-
WORKRE~2.DAT
-
WORKRE~13.DAT
These names, however:
-
January.WorkReport.Data
-
February.WorkReport.Data
-
March.WorkReport.Data
result in the more descriptive short names:
-
JANUAR~1.DAT
-
FEBRUA~1.DAT
-
MARCHW~1.DAT
|
|
|
-
/usr/lib/fs/pcfs/mount
-
pcfs mount command
-
/usr/kernel/fs/pcfs
- 32-bit kernel module
-
/usr/kernel/fs/sparcv9/pcfs
- 64-bit kernel module
|
|
chgrp(1), chown(1), dos2unix(1), eject(1), fdformat(1), unix2dos(1), volcheck(1), mount(1M), mount_pcfs(1M), vold(1M), ctime(3C), vfstab(4), pcmem(7D)
|
|
Do not physically eject a DOS floppy
while the device is mounted as pcfs. If Volume Management
is managing a device, use the eject(1)
command before physically removing media.
When mounting pcfs on a hard disk, make sure the
first block on that device contains a valid fdisk partition
table.
Because pcfs has no provision for handling owner-IDs
or group-IDs on files, chown(1)
or chgrp(1) may generate
various errors. This is a limitation of pcfs, but it should
not cause problems other than error messages.
|
|
Only the following characters are allowed in pcfs
short file names and extensions:
-
0-9
-
A-Z
-
$#&@!%()-{}<>`_^~|'
SunOS and DOS use different character
sets and have different requirements for the text file format. Use the dos2unix(1) and unix2dos(1) commands
to convert files between them.
pcfs offers a convenient transportation vehicle for
files between Sun workstations and PCs. Because
the DOS disk format was designed for use
under DOS, it does not operate efficiently
under the SunOS system and should not be used as the format for a regular
local storage. Instead, use ufs for local storage within
the SunOS system.
Although long file names can contain spaces (just as in UNIX file names),
some utilities may be confused by them.
This implementation of pcfs conforms to the behavior
exhibited by Windows 95 version 4.00.950.
|
|
pcfs 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.
When listing or searching a directory, pcfs does
not include files with the hidden or system bits set.
|
| |