Provided by: nbdkit_1.36.3-1ubuntu10_amd64 bug

NAME

       nbdkit-linuxdisk-plugin - create virtual Linux disk from directory

SYNOPSIS

        nbdkit linuxdisk [dir=]DIRECTORY
                         [label=LABEL] [type=ext2|ext3|ext4]
                         [size=[+]SIZE]

DESCRIPTION

       "nbdkit-linuxdisk-plugin" is a plugin for nbdkit(1) which creates an ext2-, ext3- or ext4-formatted disk
       image from a directory on the fly.  The files in the specified directory (and subdirectories) appear in
       the virtual disk, which is served read-only over the NBD protocol.

       The virtual disk is partitioned with a single GPT partition containing the filesystem.

       The virtual disk can be used as a Linux root (or other) filesystem.  Most features of Linux filesystems
       are supported, such as hard links, symbolic links, block special devices etc.

       To create a FAT-formatted virtual floppy disk, see nbdkit-floppy-plugin(1).  To create a CD/ISO, see
       nbdkit-iso-plugin(1).  To create an empty filesystem for each client that connects (like a "remote
       tmpfs") use nbdkit-tmpdisk-plugin(1).

EXAMPLES

       nbdkit linuxdisk /path/to/directory label=ROOTFS
           Create  a  virtual  disk, giving it a filesystem label.  Note that clients will not be able to modify
           the filesystem, so it is safe to share it with multiple clients.

       nbdkit --filter=cow linuxdisk /path/to/directory
           Add a writable overlay (see nbdkit-cow-filter(1), allowing the disk to  be  written  by  the  client.
           Multiple  clients  must  not  be allowed to connect at the same time (even if they all mount it read-
           only) as this will cause disk corruption.

       nbdkit --filter=cow linuxdisk /path/to/directory size=+1G
           The same but specifying that at least 1G of free space should be available  in  the  filesystem  (not
           including the space taken by the initial filesystem).

       nbdkit --filter=partition linuxdisk /path/to/directory partition=1
           Instead  of  serving  a  partitioned  disk  image,  serve  just the "naked" filesystem (ie. the first
           partition, see nbdkit-partition-filter(1)).

       nbdkit linuxdisk /path/to/directory --run 'nbdcopy "$uri" ext2fs.img'
           This serves nothing.  Instead it turns a directory into a disk image, writing it to  ext2fs.img  (see
           nbdkit-captive(1)).  The resulting image is a partitioned disk.

       Create a minimal virtual appliance
           This  creates  and boots a minimal busybox(1)-based virtual appliance.  This assumes that your kernel
           (/boot/vmlinuz) contains the ext2 or ext4 driver compiled in, but  most  Linux  distro  kernels  have
           that.

            mkdir -p root/{bin,dev,proc,sbin,sys,usr/bin,usr/sbin}
            sudo mknod root/dev/console c 5 1
            cp /sbin/busybox root/sbin/
            ln root/sbin/busybox root/sbin/init
            ln root/sbin/busybox root/bin/ls
            ln root/sbin/busybox root/bin/sh
            nbdkit linuxdisk root --run '
              qemu-kvm -display none -kernel /boot/vmlinuz -drive file=nbd:unix:$unixsocket,snapshot=on -append "console=ttyS0 root=/dev/sda1 rw" -serial stdio
            '

           You  can  drop  any  extra  files  you need into the root/ directory and they will be copied into the
           appliance before boot.  After booting type these commands to complete the environmental setup:

            /sbin/busybox --install
            mount -t proc proc /proc
            mount -t sysfs sys /sys

PARAMETERS

       [dir=]DIRECTORY
           Specify the directory containing files and subdirectories which will be added to  the  virtual  disk.
           Files inside this directory will appear in the root directory of the virtual disk.

           This parameter is required.

           "dir=" is a magic config key and may be omitted in most cases.  See "Magic parameters" in nbdkit(1).

       label=LABEL
           The optional label for the filesystem.

       size=SIZE
       size=+SIZE
           The total (virtual) size of the filesystem.

           If  the "size" parameter is omitted the plugin will try to size the filesystem with just enough space
           to contain the files and directories that are initially loaded, and there  will  not  be  much  extra
           space.

           Using  "size=SIZE"  specifies  the  required  virtual size of the whole filesystem (including initial
           files and extra space).  If this is set too small for the initial filesystem  then  the  plugin  will
           fail to start.

           Using  "size=+SIZE"  specifies  the minimum free space required after the initial filesystem has been
           loaded.  (The actual free space might be slightly larger).

       type=ext2
       type=ext3
       type=ext4
           Select the filesystem type.  The default is "ext2".

NOTES

   Users and groups
       The original file UIDs and GIDs are recreated as far as possible.  Note that UIDs/GIDs will likely map to
       different users and groups when read by a virtual machine or other NBD client machine.

ENVIRONMENT VARIABLES

       "TMPDIR"
           The filesystem image is stored in a temporary file located in /var/tmp by default.  You can  override
           this location by setting the "TMPDIR" environment variable before starting nbdkit.

FILES

       $plugindir/nbdkit-linuxdisk-plugin.so
           The plugin.

           Use "nbdkit --dump-config" to find the location of $plugindir.

VERSION

       "nbdkit-linuxdisk-plugin" first appeared in nbdkit 1.12.

SEE ALSO

       mke2fs(8),  nbdkit(1),  nbdkit-plugin(3), nbdkit-captive(1), nbdkit-cow-filter(1), nbdkit-file-plugin(1),
       nbdkit-floppy-plugin(1), nbdkit-iso-plugin(1), nbdkit-partition-filter(1), nbdkit-partitioning-plugin(1),
       nbdkit-tmpdisk-plugin(1),

AUTHORS

       Richard W.M. Jones

COPYRIGHT

       Copyright Red Hat

LICENSE

       Redistribution and use in source and binary forms, with or without modification, are  permitted  provided
       that the following conditions are met:

       •   Redistributions  of  source  code must retain the above copyright notice, this list of conditions and
           the following disclaimer.

       •   Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
           the following disclaimer in the documentation and/or other materials provided with the distribution.

       •   Neither the name of Red Hat nor the names of its contributors may  be  used  to  endorse  or  promote
           products derived from this software without specific prior written permission.

       THIS  SOFTWARE  IS  PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
       INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS  FOR  A  PARTICULAR
       PURPOSE  ARE  DISCLAIMED.  IN  NO EVENT SHALL RED HAT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
       INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  PROCUREMENT  OF
       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
       OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
       DAMAGE.

nbdkit-1.36.3                                      2024-03-31                         nbdkit-linuxdisk-plugin(1)