# Reference

The following sections provide reference material to the command line utilities provided in nobodd, and the Python-based API.

## Command line

The following chapters document the command line utilities included in nobodd:

- nobodd-prep
- nobodd-tftpd
- nobodd-sh

## API reference

In addition to being a service and command-line tool, nobodd can also be used as an API from Python to access disk images, determining their partitioning style, enumerating the available partitions, and manipulating FAT file-systems (either from within a disk image, or just standalone). It can also be used as the basis of a generic TFTP service.

The following sections list the modules by their topic.

### Disk images

The `nobodd.disk.DiskImage` class is the primary entry-point for dealing with disk images.

- nobodd.disk
- nobodd.gpt
- nobodd.mbr

### FAT filesystem

The `nobodd.fs.FatFileSystem` class is the primary entry-point for handling FAT file-systems.

- nobodd.fs
- nobodd.fat
- nobodd.path

### TFTP service

The `nobodd.tftpd.TFTPBaseServer` and `nobodd.tftpd.TFTPBaseHandler` are two classes which may be customized to produce a TFTP server. Two example classes are included, `nobodd.tftpd.SimpleTFTPServer` and `nobodd.tftpd.SimpleTFTPHandler` which serve files directly from a specified path.

- nobodd.tftpd
- nobodd.tftp
- nobodd.netascii

### Command line applications

The `nobodd.server` module contains the primary classes, `BootServer` and `BootHandler` which define a TFTP server (nobodd-tftpd) that reads files from FAT file-systems contained in OS images. The `nobodd.prep` module contains the implementation of the nobodd-prep command, which customizes images prior to first net boot.

The `nobodd.config` module provides configuration parsing facilities to these applications.

- nobodd.server
- nobodd.prep
- nobodd.sh

### Support modules

The `nobodd.tools` module contains a variety of utility functions that either cross boundaries in the system or are entirely generic. Meanwhile, `nobodd.locks` provides an SREW (shared-read, exclusive-write) lock implementation with re-entrancy.

- nobodd.tools
- nobodd.locks
- nobodd.config
- nobodd.systemd
- nobodd.transfer