---
name: "9mount"
section: "1"
platform: "linux"
package: "9mount"
version: "1.3+hg20170412-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/9mount"
---

# 9mount(1)

mount/unmount 9p filesystems

## NAME

9mount, 9bind, 9umount - mount/unmount 9p filesystems

## SYNOPSIS

**9mount** \[ insuvx \] \[ -a SPEC \] \[ -c CACHE \] \[ -d DEBUG \] \[ -m MSIZE \] DIAL MOUNTPT

**9bind** OLD NEW

**9umount** MOUNTPT

## DESCRIPTION

**9mount** mounts a 9p filesystem served at DIAL on MOUNTPT. MOUNTPT must be writable by you and not sticky. DIAL is a dial string assuming one of the forms:

unix!SOCKET\
 tcp!HOST\[!PORT\]\
 virtio!CHANNEL\
 \-

where SOCKET is the name of a file representing a socket, HOST is a hostname, PORT is a port number or service name, and CHANNEL is a virtio channel name (currently ignored). - indicates that 9p messages should be read/written on stdin/stdout. **9mount** has several options:

- \-i

  mount the file system with your uid/gid

- \-n

  dry-run, print mount command to stderr but don't actually mount anything

- \-s

  single attach mode - all users accessing the mount point see the same filesystem (by default they'll each see a unique attach)

- \-u

  use the 9P2000.u extensions

- \-v

  use device mapping

- \-x

  exclusive access - other users cannot access the mount point

- \-a SPEC

  SPEC determines which file tree to mount when attaching to file servers that export multiple trees

- \-c CACHE

  turns on caching using CACHE mode. Supported modes are *loose* (suitable for exclusive read-only mounts),  *fscache*, and *mmap*.

- \-d DEBUG

  comma seperated list of channels for which to enable debug output. Possible channels include: err, devel, 9p, vfs, conv, mux, trans, alloc, fcall.

- \-m MSIZE

  specifies the maximum length of a single 9p message in bytes. Must be less than or equal to 8192 for non-root users.

**9bind** performs a bind mount, making the tree visible at directory OLD also visible at mount point NEW.

**9umount** unmounts a 9p filesystem previously mounted by you.

## ENVIRONMENT

- $USER

  the uname to provide to the server.

## EXAMPLES

- 9mount -i 'unix!/tmp/ns.'$USER'.:0/factotum' $HOME/n/factotum

  mount p9p's factotum interface

- 9mount 'tcp!sources.cs.bell-labs.com' $HOME/n/sources

  import plan 9's "sources"

- 9mount -u -a/home/sqweek/mail 'tcp!wren!5640' $HOME/mail

  import my maildir from my server(wren), being served by ufs

- 9mount -i 'tcp!wren' $HOME/n/wren; 9bind $HOME/n/wren/home/sqweek/mail $HOME/mail

  again importing my maildir, this time serving via u9fs

## BUGS

**9mount** truncates user names and SPECs to 249 characters. **9umount** doesn't know this, so you won't be able to unmount anything outside your home directory. But you probably never bother logging out if your user name is that long.

**9mount** doesn't update /etc/mtab.

**9bind** only does a "shallow", non-recursive bind - any mounted filesystems under the OLD tree will not appear mounted in the NEW tree.

If you **9bind** a non-9p filesystem outside your home directory, **9umount** won't let you unmount it.

## AUTHOR

sqweek@gmail.com

## SEE ALSO

**mount**(1)
