colinux64/doc/cofs
2025-02-13 19:44:47 -07:00

105 lines
3.6 KiB
Plaintext
Executable File

The cofs driver in the coLinux kernel is based on work by the people
responsible for the fuse-1.3 library and kernel code, namely Miklos
Szeredi <miklos@szeredi.hu>.
cofs is similar to UML's hostfs. It is a binding between the host's
VFS and Linux's VFS layers. By using cofs it is possible to mount
host OS directories inside Linux.
* Flat mode (default)
Mounting in flat mode (the default) under Windows, means that the
expected behavior of the mounted file system is similar to that of
vfat or samba, which means there is no support for the regular
UNIX meta data and all the UNIX attributes (mode, uid, gid) are
virtually the same for all files and directories. Creation of special
files like symlinks, device nodes, and pipes are not supported.
Unix mode Attributes are maped to FAT attributes.
File: Directory:
r Hidden is not set r Hidden is not set
w Readonly is not set w Readonly is not set
x System is set x System is not set
Only owner rights have effect for change the attribues on host side.
The rights for group and others are mirrored from owner rights.
All attributes are AND masked with dmask and fmask on attribute read.
Use mount option 'noattrib' to disable these attribute mapping.
* UNIX meta data mode (not supported)
Future versions of cofs support will introduce the UNIX meta data
mode, which is similiar to hostfs. It will allow to have a true
UNIX file system on top of a Windows (or Linux) file system by
storing the VM's UNIX meta data as regular inaccessible files.
Theoretically, it will allow to boot a full Linux system without
a root file system image.
* Ports
For the host OS side, cofs is only supported on the Windows port
at the time this is writing (October 23, 2004).
The planned Linux port will be designed to behave more like UML's
hostfs in flat mode (with support for UNIX attributes), and UML's
humfs in UNIX meta data mode.
* Configuring cofs (using the colinux-daemon command line interface):
cofsXX=host-pathname
XX is a number between 0 and 31.
* mount syntax:
mount -t cofs (cofs)XX(:path) (-o options) /mnt/point
'cofs' as a prefix to the device name is optional and it is only for
clarity.
The optional ':path' suffix can specify an inner path to mount
instead of the mapped root.
'options' are parallel to smbfs:
gid= Set the default group.
uid= Set the default user.
dmask= Set the default directory permission.
fmask= Set the default regular file permission.
nocache Disable directory caching.
noattrib Disable host file attribute mapping.
* Examples:
Using the following configuration:
colinux-daemon kernel=vmlinux hda1=root_fs cofs0=c:\
This map cofs0 to c:\.
mount -t cofs 0 /mnt/windows
Mount c:\ as /mnt/windows.
mount -t cofs cofs0 -o uid=dax,gid=dax /mnt/windows
Mount c:\ as /mnt/windows and give dax full access to all the
files and directories.
mount -t cofs cofs0:Share -o uid=dax,gid=dax,dmask=0775,fmask=0664 /mnt/windows
Mount c:\Share as /mnt/windows and give dax exclusive full access to
all the files and directories. Executable mode will unmask for all files.
An example fstab entry:
cofs0:Share /mnt/windows cofs defaults 0 0
* Cofs31, initrd and vmlinux-modules.tar.gz:
While using initrd, cofs 31 is automatically added for the path of file
initrd.gz to locate the file vmlinux-modules.tar.gz in same directory.
User can overwrite cofs31, then initrd would not work and don't install
modules.