home *** CD-ROM | disk | FTP | other *** search
/ Peanuts NeXT Software Archives / Peanuts-Update.iso / NEXTSTEP / unix / disk / vmount.0.6a.README < prev    next >
Encoding:
Text File  |  1997-06-12  |  16.5 KB  |  359 lines

  1. This is the README file for vmount.
  2.  
  3. * What does vmount do?
  4. ======================
  5. vmount is a utility that allows you to mount foreign filesystems in your
  6. directory hierarchy. It uses the NFS-interface to the kernel to make the
  7. files available and the Linux code for the low level filesystem access.
  8.  
  9.  
  10. * What filesystems can currently be accessed?
  11. =============================================
  12. The filesystem sources are taken from the Linux 2.0.25 kernel, which supports
  13. the following filesystems for disk devices:
  14.     ext         the old Linux native filesystem
  15.     ext2        the new Linux native filesystem
  16.     xiafs       another old Linux native filesystem
  17.     minix       the minix filesystem (Linux floppies)
  18.     umsdos      unix permissions on top of a FAT filesystem
  19.     msdos       normal FAT filesystem
  20.     vfat        FAT filesystem with long filenames (Win95, NT compatible)
  21.     iso9660     CDROM filesystem
  22.     xenix       System V filesystem for XENIX (PC-Unix)
  23.     sysv        SCO-Unix System V filesystem format
  24.     coherent    System V filesystem for Coherent (PC-Unix)
  25.     hpfs        the OS/2 filesystem (read only)
  26.     affs        the Amiga Fast FileSystem
  27.     ufs         should be standard berkeley "fast file system" format
  28.     ntfs        NT-filesystem, read only (not part of the kernel but a
  29.                 separate module written by Martin von Loewis)
  30. I have tested (unarchiving, compiling):
  31.     ext2:   read and write OK.
  32.     minix:  read and write OK.
  33.     vfat:   read and write OK.
  34.     ntfs:   read only, seems to work OK although the implementation of the
  35.             "." and ".." directory entries is not completely correct (wrong
  36.             inode numbers in ls). Some directoryies generate endless loops
  37.             of warning or error messages. I had to modify the ntfs module
  38.             sources a bit to make things work, mostly removing #includes of
  39.             non-kernel headers and removing access restrictions.
  40.     iso9660: read only :-), multi session uses an ioctl() that is not
  41.             available on NEXTSTEP. However, it seems to work better than
  42.             NeXT's implementation with multi session disks. Sizing etc. is
  43.             much faster than on NeXT's iso9660 filesystem.
  44.     hpfs:   I have not tested this myself, but Peter Eybert
  45.             <pjoe@charon.muc.de> has reported that it works for read only
  46.             access.
  47.  
  48.  
  49. * What do I need to run vmount?
  50. ===============================
  51. To run vmount:
  52. 1.) An i386 based machine (i386 is the CPU-class, not the actual processor).
  53. 2.) NEXTSTEP 3.2 or higher (I have only tested on 4.0, however).
  54.  
  55. To compile from the sources:
  56. 1.) NEXTSTEP 3.3 Developer or higher. I have also tested with gcc 2.7.2 and
  57.     NEXTSTEP 3.2 Developer, this works too. gcc 2.2.2, which comes with
  58.     3.2 Developer, complains about prototype mismatches for built in
  59.     functions. This can probably be solved easily, but I have not tried.
  60.     You should edit the Makefile to reflect the compiler you intend to use.
  61. 2.) GNU-make. Openstep 4.0 and higher comes with GNU-make, it is available
  62.     under the name "gnumake".
  63.  
  64. And, of course, you need the vmount distribution:
  65.     vmount.0.5.I.b.gnutar.gz        for the binary only distribution
  66.     vmount.0.5.I.s.gnutar.gz        for the vmount sources
  67.     vmount-Linux-2.0.25.s.gnutar.gz for the Linux filesystem sources
  68.         This directory contains the "fs" and "include" hierarchy of the
  69.         Linux kernel sources. "fs" contains only the filesystem specific
  70.         subdirectories. Alternatively you may unpack the original Linux
  71.         kernel sources in the vmount directory.
  72.     vmount-ntfs-cs.s.gnutar.gz      for the modified ntfs sources
  73.  
  74. You can get these files from
  75.     ftp://peanuts.leo.org/pub/comp/platforms/next/Unix/disk/vmount*
  76.     ftp://next-ftp.peak.org/pub/next/apps/utils/disk/vmount*
  77. and from our local machine:
  78.     ftp://hal.kph.tuwien.ac.at/pub/NeXT/tools/vmount/
  79.  
  80.  
  81. * How reliable is it?
  82. =====================
  83. This depends on several factors. First, there is the NFS server code. This
  84. should be relatively stable now, although there might still be some
  85. problems with permissions (eg. the deletion phase in 'cvs release -d' fails
  86. for no apparent reason). Second, there are functions of the Linux kernel
  87. that have to be emulated. Since I don't know exactly what they should
  88. do, there might still be problems. The main functionality seems to work,
  89. however. And third, there are the filesystem modules themselves. I really
  90. don't know how stable they are, but the Linux community works with them, so
  91. they must be quite useable.
  92.  
  93. I have done a lot of read/write access to ext2, vfat and minix now and have
  94. not lost any data on the disks. Nevertheless, I would not use vmount
  95. to mount a main data partition with write enabled.
  96.  
  97. If you are afraid of data-loss, there are several strategies you may adapt.
  98. 1.) You may use vmount for read access only. As long as you don't pass
  99.     the "-w" parameter, the device is opened read-only and no write access
  100.     is attempted. There should be no danger whatsoever for your data.
  101. 2.) You may test vmount on a disk image file, on a floppy or on a removable
  102.     medium. You would not place any valuable data on such a medium, of
  103.     course.
  104.  
  105. I still have very little experience with vmount's reliability. If you use
  106. vmount on a certain filesystem with success for some time, please tell me.
  107.  
  108.  
  109. * Does Workspace recognize DOS-floppies as VFAT when I have vmount?
  110. ===================================================================
  111. There is good news and bad news. First the good news: There will soon be
  112. a NEXTSTEP frontend available for vmount that integrates it into
  113. Workspace's automounter. You just insert a floppy or other removable medium
  114. and it is automatically mounted with the correct filesystem. This frontend
  115. is called "MountMe" and will be available from the archives.
  116.  
  117. Now the bad news: MountMe will be a commercial product. The good news
  118. within the bad news is, however, that I plan to sell it for a very low
  119. price.
  120.  
  121. * Why is there no fat vmount?
  122. =============================
  123. vmount is based on the Linux source, which was originally written for the
  124. i386. The assembler optimized inline functions in the "linux/asm" directory
  125. are available for several other architectures, but I have no way to test
  126. such a port. On the other hand, most of the filesystems read data
  127. structures from the disk by mapping a C-structure to them directly. This
  128. results in all sorts of byte ordering problems for processors with different
  129. endianness. This problem will have to be solved for other Linux-ports, too.
  130.  
  131.  
  132. * How do I use vmount?
  133. ======================
  134. vmount is a daemon that accesses the raw device and serves the kernel via
  135. the NFS interface. In order to use the mount() system call, vmount must be
  136. run as root. The general usage parameters are:
  137.  
  138. [1]   vmount -i <raw-device>
  139. or
  140. [2]   vmount -i -f<offset> <raw-device>
  141. or
  142. [3]   vmount -m<mount-point> -t<fs-type> [-p<partition> | -f<offset>]
  143.             [-s<sector-size>] [-o<options>] [-d<debug-mode>] [-w]
  144.             [-u <uid-translation-file>] [-g <gid-translation-file>]
  145.             [-U<fixed-UID>] [-G<fixed-GID>] [-S] <deivce>
  146.  
  147. The first two invocations help you figure out your disk contents. The fist
  148. one is for DOS-partitioned disks, the second one for not partitioned ones
  149. (the <offset> parameter is usually 0). The first form prints the partition
  150. table to stderr and both forms print filesystem information to stdout.
  151.  
  152. Example:
  153.     root@zaphod# vmount -i /dev/rsd3h
  154. output to stderr:
  155.     mounting read only
  156.       primary 1 0x83 start/sec=0x00000020 size/sec=0x000057e0
  157.       primary 2 0x83 start/sec=0x00005800 size/sec=0x00005800
  158.       logical 5 0x83 start/sec=0x0000b020 size/sec=0x000057e0
  159.       logical 6 0x83 start/sec=0x00010820 size/sec=0x000057e0
  160.       logical 7 0x83 start/sec=0x00016020 size/sec=0x000057e0
  161.       logical 8 0x83 start/sec=0x0001b820 size/sec=0x000057e0
  162.       logical 9 0x83 start/sec=0x00021020 size/sec=0x000057e0
  163.       logical 10 0x83 start/sec=0x00026820 size/sec=0x00008fe0
  164. output to stdout:
  165.     1/ext2: -p1 -text2
  166.     2/ext2: -p2 -text2
  167.     5/ext2: -p5 -text2
  168.     6/ext2: -p6 -text2
  169.     7/ext2: -p7 -text2
  170.     8/ext2: -p8 -text2
  171.     9/ext2: -p9 -text2
  172.     10/ext2: -p10 -text2
  173.  
  174. The first partition in this example is marked active and all partitions
  175. are of type Linux Native (0x83). All partitions are formatted with an ext2
  176. filesystem. The filesystem information is of the format
  177.  
  178.     <partition-id>/<fs-type>: <mount-options>
  179.  
  180. The mount options are the parameters that have to be passed to vmount (in
  181. addition to the raw device and optional flags) to mount the listed
  182. filesystem from the listed partition.
  183.  
  184. Other example:
  185.     root@zaphod# vmount -i -f0 /dev/rsd0h
  186. output to stderr:
  187.     mounting read only
  188. output to stdout:
  189.     0/iso9660: -f0 -tiso9660
  190.  
  191.  
  192. The third form actually mounts the filesystem. Parameter description:
  193.   -v
  194.       Prints the version number and exits.
  195.   -m <mount-point>
  196.       Specifies the mount point. This option is mandatory.
  197.   -t <fs-type>
  198.       The name type of the filesystem-type. Although an autodetection
  199.       would be possible, you could not distinguish between the various
  200.       types of FAT filesystems. You can use the -i option if you want
  201.       to implement autodetection. This option is also mandatory.
  202.   -p <partition>
  203.       If you run vmount on a DOS-partitioned disk (which is the usual
  204.       partitioning scheme on i386 based systems), you can specify the
  205.       number of the partition you want to mount. The numbering scheme is
  206.       now the same as in Linux: the primary partitions are numbered from
  207.       1 to 4 and all logical partitions are numbered beginning at 5. You
  208.       should use the -i option to examine the partition layout of your disk.
  209.       If you don't specify either -p or -f, a default of -f0 is used.
  210.   -f <offset>
  211.       If your disk is not partitioned in the DOS scheme or you have to access
  212.       an extended partition, you can still use vmount if you can figure out
  213.       the offset (in bytes) of your partition's boot sector. This option
  214.       cannot be used together with -p, of course. The number can be given
  215.       in decimal, octal (0 prefix) or hexadecimal (0x prefix) notation.
  216.       If you want to protect the disk against accesses outside of this
  217.       partition, you should use the -s option in conjunction with -f.
  218.       The default value for the offset is 0.
  219.   -s <partition-size>
  220.       Size of the partition. This value is only used when an offset was
  221.       specified with the -f option. It is used to check for out-of-partition
  222.       accesses in the low level disk access routine. If no partition size
  223.       is specified and the size can not be determined from the partition
  224.       table, it is set to the maximum possible value of 4GB.
  225.   -o <options>
  226.       The string passed with -o is passed on to the mount command. It's
  227.       interpretation depends on the filesystem. On FAT filesystems you can
  228.       set the default user and permission for accesses in this way.
  229.       More documentation about this can be found in the Linux distributions.
  230.   -d <debug-mode>
  231.       The number passed with this option is interpreted as bitmask for
  232.       debugging prints. The following debug options are available:
  233.          0x01   debugging of the buffering code (buffers.c)
  234.          0x02   debugging of basic data access routines (missing.c)
  235.          0x04   debugging of dummy functions and regular mechanism (dummies.c)
  236.          0x08   debugging of basic file operations for NFS (file_ops.c)
  237.          0x10   debugging of NFS calls (nfs_funcs.c)
  238.          0x20   even more debugging of NFS calls (nfs_funcs.c)
  239.          0x40   debugging of uid and gid translation (id_translate.c)
  240.          0x80   debugging of the mainloop (mount.c), may be useful if vmount
  241.                 hangs.
  242.       The number can be given in decimal, octal (0 prefix) or
  243.       hexadecimal (0x prefix) notation. When debugging is active (even if
  244.       the mask is 0), vmount does not put itself to background. This makes
  245.       it possible to run vmount in the debugger.
  246.   -u <uid-translation-file>
  247.   -g <gid-translation-file>
  248.       Normally, the uids and gids for the same user will not be the same on
  249.       different OSes on a multi-boot system. These options allows you to
  250.       translate uids and gids for disk accesses. Every line in the file must
  251.       consist of two integer numbers, the first one giving the local id and
  252.       the second one giving the id that is used on the disk for the same user
  253.       or group. Example for a uid-mapping:
  254.  
  255.             #local  disk
  256.             100     500
  257.             101     501
  258.             102     502
  259.  
  260.       This mapping would be appropriate for a Linux-disk where the user-ids
  261.       are allocated from 500 instead of 100 on the NeXT.
  262.   -U <uid> or -U<username>
  263.   -G <gid> or -G<groupname>
  264.       With these options the file ownership of the filesystem is ignored
  265.       and the given values are substituted instead. This is the usual way
  266.       filesystems are automounted by NeXT's Workspace.
  267.   -S
  268.       Use small cache blocksize. This option sets the cache blocksize to
  269.       4kB instead of 64kB. This speeds up all operations on floppy disks.
  270.  
  271. <device> may be any device that supports read(), write() and lseek(), that is
  272. either a block device or a file.
  273.  
  274. Examples:
  275. For running vmount on the third primary partition of your (scsi-)harddisk
  276. which is an ext2-linux partition, type:
  277.     vmount -m /ext2-fs -p3 -t ext2 -w /dev/rsd0h
  278.  
  279. For running it on a VFAT ZIP drive, which is the third SCSI device, type:
  280.     vmount -m /vfat-fs -p4 -w -t vfat -o "uid=100,gid=21" /dev/rsd2h
  281. Type this before you insert the medium to avoid the NEXTSTEP automount. You
  282. are then asked to insert the disk, which you should do. To eject it (after
  283. stopping vmount), you can use
  284.     disk -e /dev/rsd2h
  285.  
  286. If you have a disk image file in 'disk-image', you can type:
  287.     vmount -m /minix-fs -w -t minix disk-image
  288.  
  289. If you want to mount a vfat floppy, you have to insert it first, then type:
  290.     vmount -m /floppy -w -t vfat -S /dev/rfd0b
  291. (don't ask me why /dev/rfd0b, but it's the only one that works). Before you
  292. remove the floppy, you should type:
  293.     disk -e /dev/rfd0b
  294.  
  295. Using vmount for an iso9660 CD-ROM can be done this way:
  296.     vmount -m /CDROM -f0 -t iso9660 /dev/rsd2h
  297. Again, the command must be issued without a CD inserted.
  298.  
  299.  
  300. * How do I unmount things mounted with vmount?
  301. ==============================================
  302. For unmounting, the program "vumount" is supplied. Its usage is:
  303.  
  304. [1]   vumount
  305. or
  306. [2]   vumount <directory>
  307.  
  308. The first form lists all directories mounted with vmount, the second one
  309. unmounts the given directory.
  310.  
  311. If vumount does not work or if you don't want to use it, you can simply
  312. send the vmount daemon the hangup signal (kill -HUP <pid_of_vmount>).
  313.  
  314.  
  315. * How do I build vmount from the sources?
  316. =========================================
  317. 1.) Unpack the archive. You should be left with a directory named 'vmount'.
  318.     This are the sources I have written.
  319. 2.) You have to get the Linux filesystem sources from somewhere. For
  320.     simplicity, I provide the sources from Linux 2.0.25 in a separate
  321.     archive. Unpacking this archive should generate the directories
  322.     'vmount/Linux/include' and 'vmount/Linux/fs'.
  323. 2a.) If you need the NTFS-support, you have to unpack the ntfs archive as
  324.     well.
  325. 3.) Edit the file config.make for your needs. It determines the filesystem
  326.     modules that are compiled in. Edit the Makefile to reflect your compiler
  327.     and don't forget to set the proper options in CFLAGS.
  328. 4.) Run the script mklinks.sh from the directory 'vmount'. It sets up some
  329.     links and patches the Makefile for your absolute directory path.
  330.     You can run mklinks.sh at any time without doing any harm to the sources.
  331. 5.) Type 'gnumake' (GNU-make) in the 'vmount' directory. This takes several
  332.     minutes.
  333. 6.) Optionally strip the programs 'vmount' and 'vumount'.
  334.  
  335.  
  336. * What comes next, can I help in the development?
  337. =================================================
  338. There are some more filesystems in the Linux 2.0.25 kernel:
  339.     NFS     (well, we have that already...)
  340.     smbfs   SMB client for Windows-networks
  341.     ncpfs   Novell Core Protocol
  342. Smbfs would be interesting, of course, but it can't be used due to its
  343. inode numbering scheme, which is incompatible to NFS. I have written a
  344. different utility that implements an SMB client via NFS: it's called
  345. "rumba". It is available at the same sites as vmount, although in different
  346. directories.
  347.  
  348. * What about the copyright?
  349. ===========================
  350. vmount comes with the GNU GPL (GNU General Public License), as it has to,
  351. because it uses code from Linux, which is GPL'd.
  352.  
  353. And of course, there is ABSOLUTELY NO WARRANTY etc....
  354.  
  355.  
  356. * Who's the Author?
  357. ===================
  358. That's me: Christian Starkjohann <cs@hal.kph.tuwien.ac.at>
  359.