blob: 9a44f231b6bec67607d8b128a7a940e38d08399d [file] [log] [blame]
.TH MDT "1" "December 2018" "MDT" "User Commands"
.SH NAME
mdt \- manipulate Mendel Linux devices
.SH SYNOPSIS
.B mdt
[\fI\,SUBCOMMAND\/\fR] [\fI\,ARGS\/\fR]...
.SH DESCRIPTION
.PP
MDT is a simple tool to aid in working with single board computers that the
Mendel Linux distribution runs on. It consists of a whole bunch of pre-existing
open source tooling, coupled with some simple wrappers written in python to ease
their use.
.PP
It also provides an easy way to interact with these boards without having to
fight with serial consoles, IP addresses, and other fiddly bits, reducing
barrier to entry when working with these boards.
.PP
With minimal effort, MDT should also be portable to existing systems such as
Debian and Ubuntu, if needed. This, however, is out of the scope of this
project.
.SH NETWORKING
.PP
MDT uses SSH to handle most commands in the backend, and requires SSH keys for
authentication to the device. The remote device is expected to advertise the
_google_mdt._tcp service over mDNS and run both SSH and \fBmdt-keymaster\fR.
.SH INITIAL SETUP
.PP
MDT expects the remote device to be free of any initial SSH keys and running the
\fBmdt-keymaster\fR service on port 41337. This service is a simple HTTP server
that expects a single PUT command to be sent containing a line that can be added
to the default user's authorized_keys file.
.PP
During first contact the MDT client will generate an SSH key if none are on
disk. Once it has one, it will attempt to connect via SSH to the remote device
using this key only. If this fails, it will then attempt to push the key's
public part via the \fBmdt-keymaster\fR service as described above.
.PP
Once this file has been written to, \fBmdt-keymaster\fR will stop running from
that point forward, and key authentication should perform normally. It is
expected that the remote SSH service will be running in key authentication mode
only.
.SH SUBCOMMANDS
.PP
MDT recognizes the following subcommands:
.PP
.TP
\fBhelp\fR
gets detailed help on any other subcommand
.TP
\fBclear\fR
clears (unsets) an MDT variable on disk
.TP
\fBdevices\fR
prints a list of discovered devices on the local network segment
.TP
\fBexec\fR
runs a shell command on a connected device
.TP
\fBgenkey\fR
generates an SSH key to use for authenticating to a device
.TP
\fBget\fR
prints the value of an MDT variable on disk
.TP
\fBinstall\fR
installs a Debian package (.deb) to a connected device
.TP
\fBpull\fR
pulls (copies, downloads) a single or set of files from a connected device
.TP
\fBpush\fR
pushes (copies, uploads) a single or set of files to a connected device
.TP
\fBreboot\fR
reboots a connected device
.TP
\fBreboot-bootloader\fR
reboots a connected device into the fastboot bootloader
.TP
\fBset\fR
sets an MDT variable on disk
.TP
\fBshell\fR
opens an SSH shell connection to a connected device
.TP
\fBwait-for-device\fR
waits for a device to be discovered on the local network segment
.SH FILES
.PP
MDT stores files in the user's home directory under the standard
\fB.config/mdt\fR heirarchy. Two subdirectories are used in here, called
\fBattribs\fR and \fBkeys\fR.
.PP
\fBattribs\fR contains any single-line files used to store MDT variables.
.PP
\fBkeys\fR contains the SSH keys generated by MDT and are used for SSH
authentication.
.SH KNOWN ISSUES
.PP
None.
.SH AUTHOR
Written by June Tate-Gans.
.SH "REPORTING BUGS"
Contact AIY Projects support at <coral-support@google.com>
.SH COPYRIGHT
Copyright \(co 2018 Google, Inc.
License Apache 2.0.