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 . 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.