MiniMyth from minimyth.org
Configuration Instructions
General

MiniMyth obtains configuration from the following places:

Ideally, the MiniMyth configuration package and the miscellaneous configuration files should not be needed. However, MiniMyth still lacks configuration files for many remote control receivers, remote controls, and LCD and VFD displays. In addition, MiniMyth still lacks the flexibility needed for some X Window System configurations. If you have configuration files for your hardware and setup that you would like included in MiniMyth, then let us know and provide a list of you hardware including vendor and model, the outputs of the commands 'lspci -mn' and 'lsusb' with all you hardware connected, and the configuration files you want included.

Configuration obtained from the boot line

MiniMyth can obtain configuration from the boot line. The following boot line parameters are of some interest:

  • Linux parameters:
    debug

    Enables kernel debug logging and disables the boot splash screen.

    irqpoll

    Works around IRQ problems with the ASUS A8N-VM CSM motherboard that can cause a kernel oops when the nvidia kernel driver is loaded, resulting in X not starting correctly.

  • MiniMyth variables:
    MM_DEBUG

    Enables MiniMyth debug logging. Valid values are "yes" and "no", with "no" being the default.

    MM_MINIMYTH_BOOT_DEVICE

    Sets the device that will be mounted as the local MiniMyth boot directory ('/minimyth'). Valid values are any device in the directory "/dev/disk", with "/dev/disk/by-label/minimyth" being the default.

    While MiniMyth will mount the device specified by MM_MINIMYTH_BOOT_DEVICE as '/minimyth', it will not use '/minimyth' as the MiniMyth boot directory unless MM_MINIMYTH_BOOT_URL='file:/minimyth/'.

    In addition to MM_DEBUG and MM_MINIMYTH_BOOT_DEVICE you can include any variables found in the MiniMyth Configuration File on the boot line. However, with the exception of some of the DHCP override variables, there is little reason to include these variables on the boot line.

    Unlike in the MiniMyth configuration file where MiniMyth variable values should be single quoted ('), MiniMyth variable values on the boot line must either be unquoted or double quoted (").

Configuration obtained from the DHCP server

MiniMyth obtains some configuration from the DHCP server.

Address

The MiniMyth system's IPv4 address. MiniMyth requires an IPv4 address for communicating. Therefore, if MiniMyth does not obtain an IPv4 address, then MiniMyth will abort its boot process and output an error.

If you do not have an appropriate DHCP server on your network, then you can use the MM_DHCP_ADDRESS DHCP override variable on the boot line in order to manually configure the MiniMyth system's address. If you provide MM_DHCP_ADDRESS, then MiniMyth will assume that you are manually configuring all configuration normally obtained from the DHCP server and will not start the DHCP client.

Broadcast Address

The MiniMyth system's IPv4 broadcast address.

The DHCP option is 28 (0x1c), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'broadcast-address' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_BROADCAST DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

Subnet Mask

The MiniMyth system's IPv4 subnet mask.

The DHCP option is 1 (0x01), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'subnet-mask' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_SUBNET_MASK DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

Routers

A space separated list of router (a.k.a. gateway) IPv4 addresses that the MiniMyth system will use to communicate with hosts not on the local subnet. MiniMyth does not require that any routers, unless the MiniMyth system needs to communicate with hosts not on the local subnet.

The DHCP option is 3 (0x03), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'routers' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_ROUTERS DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

Host Name

The MiniMyth system's host name. MiniMyth requires a host name for storing/retrieving the MythTV settings in/from the MythTV's database. Therefore, if MiniMyth does not obtain a host name, then MiniMyth will abort its boot process and output an error.

The DHCP option is 12 (0x0c), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should enable the 'use-host-decl-names' option and set the 'host' and 'hardware' options in your dhcpd.conf file

In addition to using the host name when making MythTV database accesses, MiniMyth can use the host name when retrieving host specific configuration files.

If you DHCP server does not support this option, then you can use the MM_DHCP_HOST_NAME DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

Domain Name

The MiniMyth system's domain name. MiniMyth does not require a domain name, but it can be useful when using DNS to resolve local network hostnames to IPv4 addresses.

The DHCP option is 15 (0x0f), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'domain-name' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_DOMAIN_NAME DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

Domain Name Servers

A space separated list of Domain Name System (DNS) server IPv4 addresses that the MiniMyth system will use to resolve DNS names. MiniMyth needs a DNS server to resolve Internet host name to Internet Protocol addresses. Therefore, if MiniMyth does not obtain a DNS server address, then MiniMyth will abort its boot process and output an error message.

The DHCP option is 6 (0x06), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'domain-name-servers' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_DOMAIN_NAME_SERVERS DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

NTP Servers

A space separated list of Network Time Protocol (NTP) server IPv4 addresses that the MiniMyth system will use to synchronize its clock. MiniMyth's clock needs to be synchronized to the MythTV backend's clock or fastforward, rewind and commercial skip will fail. Therefore, if MiniMyth does not obtain an NTP server address, then MiniMyth will abort its boot process and output an error message.

The DHCP option is 42 (0x2a), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'ntp-servers' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_NTP_SERVERS DHCP override variable either on the boot line or in the MiniMyth configuration file instead. If you specify MM_DHCP_NTP_SERVERS in your MiniMyth configuration file and if either your DHCP server returns a valid list of Domain Name Servers or you specify MM_DHCP_DOMAIN_NAME_SERVERS on the boot line, then MM_DHCP_NTP_SERVERS may contain either IPv4 addresses or fully qualified domain names.

Log Servers

A list of syslog server IPv4 addresses to which MiniMyth will log. MiniMyth will log to the first log server in the list. If MiniMyth does not obtain a log server address, then MiniMyth will log locally.

The DHCP option is 7 (0x07), which is supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should set the 'log-servers' option in your dhcpd.conf file.

If you DHCP server does not support this option, then you can use the MM_DHCP_LOG_SERVERS DHCP override variable either on the boot line or in the MiniMyth configuration file instead. If you specify MM_DHCP_LOG_SERVERS in your MiniMyth configuration file and if either your DHCP server returns a valid list of Domain Name Servers or you specify MM_DHCP_DOMAIN_NAME_SERVERS on the boot line, then MM_DHCP_LOG_SERVERS may contain either IPv4 addresses or fully qualified domain names.

TCode

The tz database (a.k.a. the zoneinfo database) name of your MiniMyth system's time zone. MiniMyth's time zone needs to be correct or fastforward, rewind and commercial skip will fail. Therefore, if MiniMyth does not obtain time zone, then MiniMyth will abort its boot process and output an error message.

The DHCP option is 101 (0x65), which is not supported by ISC DHCP. Therefore, if your DHCP server is ISC DHCP, then you should define and set the 'tcode' option in your dhcpd.conf file.

As mentioned above, if you want to use the 'tcode' option in ISC DHCP, then you will need to define it in your dhcpd.conf file. As defined in RFC 4833, the 'tcode' option is a string identified by the tag 101 (0x65). As explained in the dhcp-options man page, this new option is defined by adding the following line to dhcpd.conf:

option tcode code 101 = text;

After that, you can use 'tcode' as you would any other option, with the option value being the tz database name for your time zone. For example:

option tcode "America/Los_Angeles";

If you DHCP server does not support this option, then you can use the MM_DHCP_TCODE DHCP override variable either on the boot line or in the MiniMyth configuration file instead.

Location of configuration files

MiniMyth looks for configuration files and packages in the MiniMyth configuration directories. There are two MiniMyth configuration directories: the read-only configuration directory and the read-write configuration directory.

The MiniMyth read-only configuration directory is named 'conf' and is required. This directory (actually a sub-directory of this directory) is where you would put configuration files that you create. This directory may be read-only.

The MiniMyth read-write configuration directory is named 'conf-rw' and is optional. This directory is where MiniMyth put files that it creates. For example, when MiniMyth saves game configurations it saves them in this directory. This directory is only required when you are using a MiniMyth feature that saves files across reboot. This directory must be read-write. In addition, if this directory is on a TFTP server, then you need to be sure that the TFTP server is configured to allow file creation not just file upload.

MiniMyth looks for the MiniMyth configuration directories in the MiniMyth boot directory. If neither the boot line nor the MiniMyth configuration file provide 'MM_MINIMYTH_BOOT_URL', then MiniMyth 'guesses' the location of the boot directory as follows. If MiniMyth 'guesses' that network boot was used, then MiniMyth assumes that the boot directory is the directory on the TFTP server that contains the boot loader (i.e. url="tftp://${MM_TFTP_SERVER}${MM_TFTP_ROOTDIR)/"). If MiniMyth 'guesses' that local boot was used, then MiniMyth assumes that the boot directory is the directory on the local file system name '/minimyth' (i.e. url="file:/minimyth/"). MiniMyth makes the 'guess' based on whether or not the boot file name is contained in DHCP's DHCPOFFER message (using either the 'file' field or the 'bootfile' option).

In practice, this means that if you network boot MiniMyth then you put the MiniMyth configuration directories in the same directory on the TFTP server as the network boot loader (called 'pxelinux.0' when using PXELINUX), and that if you local boot MiniMyth, then you put the MiniMyth configuration directories at the root of the partition specified by MM_MINIMYTH_BOOT_DEVICE which MiniMyth will automatically mount at the mount point '/minimyth'.

Once MiniMyth has determined the boot directory (lets call it '{boot}'), then MiniMyth looks for read-only configuration files first as the file '{boot}/conf/{hostname}/{file}' and second as the file '{boot}/conf/default/{file}', and looks for read-write configuration files as the file '{boot}/conf-rw/{hostname}+{file}', where '{hostname}' is the hostname of the MiniMyth system and '{file}' is the name of the configuration file.

Format of configuration files

Many of MiniMyth's configuration files are ASCII text. In some cases, if the ASCII text configuration file uses the wrong character(s) to represent a line break, then the MiniMyth software using the configuration file will fail to work correctly. Unfortunately, different operating systems use different ASCII characters to represent a line break: Unix/Linux uses LF, Mac OS uses CR and DOS/Windows uses CRLF. If you transfer, create or edit ASCII text files using an operating system other than Unix/Linux, then it is likely to use the wrong ASCII character(s) to represent a line break.

Whether or not a text editor running on Linux lets you know that file contains non-Linux line breaks is editor dependent. Therefore, a lack of visible strange characters at the end of each line does not mean that the file has only Linux line breaks. Whether or not a text editor running on Linux converts non-Linux line breaks to Linux line breaks is editor dependent. Therefore, saving a file transfered, created or edited on a different operating system using a text editor running on Linux does not mean that the file will have only Linux line breaks.

The best way to ensure that you do not run into this problem is to transfer, create and edit all ASCII text configuration files on Linux. However, if you did transfer, create or edit an ASCII text configuration file on a computer running Mac OS or DOS/Windows, then you can use the dos2unix command to ensure that the file contains only Linux line breaks.

Configuration obtained from the MiniMyth configuration file

The MiniMyth configuration file is called 'minimyth.conf'. The MiniMyth configuration file is required. You can find information on the configuration that can be obtained from MiniMyth configuration file in the minimyth.conf description.

Configuration obtained from the MiniMyth configuration package

The MiniMyth configuration package is called 'minimyth.pm'. The MiniMyth configuration package is optional. Whether or not 'minimyth.pm' is retrieved depends on 'MM_MINIMYTH_FETCH_MINIMYTH_PM'.

MiniMyth executes the MiniMyth configuration package as early as possible during startup and shutdown. At startup, MiniMyth executes the package's 'start' method after retrieving and importing (but not processing) the MiniMyth configuration file and after updating DHCP configuration. At shutdown, MiniMyth executes the package's 'stop' method before running any of MiniMyth's built in shutdown packages.

As mentioned above, 'minimyth.pm' defines a perl package. The perl package must define the class 'init::minimyth'. If you want to run commands during startup, then the 'init::minimyth' class must contain a method named 'start' that accepts a pointer to the perl class 'MiniMyth'. If you want to run commands during shutdown, then the 'init::minimyth' class must contain a method named 'stop' that accepts a pointer to the perl class 'MiniMyth'. The following is a stub for the perl package defining 'init::minimyth':

package init::minimyth;

use strict;
use warnings;

use MiniMyth ();

sub start
{
    my $self     = shift;
    my $minimyth = shift;

    return 1;
}

sub stop
{
    my $self     = shift;
    my $minimyth = shift;

    return 1;
}

1;
          

For example uses of the 'minimyth.pm', look at the example minimyth.pm.

Configuration obtained from miscellaneous configuration files

MiniMyth can override the following configuration files:

asound.conf

The ASLA configuration file. MiniMyth will use this file as the '/etc/asound.conf'. Whether or not 'asound.conf' is retrieved depends on 'MM_AUDIO_FETCH_ASOUND_CONF'.

MiniMyth should be able to create a working '/etc/asound.conf' file. Therefore, if you need to modify the auto-generated '/etc/asound.conf' file, then please let us know the modifications required.

asound.state

The ASLA state file. MiniMyth will use this file as the '/etc/asound.state'. Whether or not 'asound.state' is retrieved depends on 'MM_AUDIO_FETCH_ASOUND_STATE'.

MiniMyth should be able to configure the audio controls correctly. Therefore, if you need to use an '/etc/asound.state' file in order to configure the audio controls correctly, then please let us know the changes that you needed to make to the audio controls.

authorized_keys

An SSH authorized keys file. This file contains the public keys of users that are allowed to connect to the SSH server as the user 'root' using public key authentication. The format of this file must be in the format of an OpenSSH authorized keys file. Whether or not 'authorized_keys' is retrieved depends on 'MM_SSH_SERVER_ENABLED'.

ca-bundle.crt

The bundle of digital certificates for trusted certificate authorities. Whether or not 'ca-bundle.crt' is retrieved depends on 'MM_SECURITY_FETCH_CA_BUNDLE_CRT'. This bundle of digital certificates for trusted certificate authorities will be prepended to the bundle of digital certificates for trusted certificate authorities included in MiniMyth.

crontab

The crontab file for user root. Whether or not 'crontab' is retrieved depends on 'MM_CRON_FETCH_CRONTAB'.

credentials_cifs

A CIFS credentials file for mount.cifs. This file contains the username and password that allows MiniMyth to mount CIFS network shares. The format of this file must be in the format described in the mount.cifs man page. Whether or not 'credentials_cifs' is retrieved depends on 'MM_SECURITY_FETCH_CREDENTIALS_CIFS'.

WARNING: Because access to the TFTP server storing this file is not secure, the credentials in this file should not be trusted. You should assume that because it can be compromised that it will be compromised. Therefore, when using network boot, do not allow anything identifying itself using these credentials to do anything that could be harmful.

huludesktop.data

The Hulu Desktop configuration file. MiniMyth will use this file as the '/home/minimyth/.local/share/.huludesktop.data' file in the MiniMyth file system. Whether or not 'huludesktop.data' is saved and retrieved depends on 'MM_HULU_STORE_HULUDESKTOP_DATA'.

This file contains a subset of the Hulu Desktop configuration information. It contains the system independent information. For example, it contains the Hulu Desktop state and user profile settings. It does not contain system dependent information. For example, it does not contain application window size and location, Adobe Flash Player location or remote control type.

LCDd.conf

The LCDproc daemon ('LCDd') configuration file. MiniMyth will use this file as the '/etc/LCDd.conf' file in the MiniMyth file system. Whether or not 'LCDd.conf' is retrieved depends on 'MM_LCDPROC_FETCH_LCDD_CONF'.

lircd.conf

The LIRC daemon ('lircd') configuration file. MiniMyth will use this file as the '/etc/lirc/lircd.conf' file in the MiniMyth file system. Whether or not 'lircd.conf' is retrieved depends on 'MM_LIRC_FETCH_LIRCD_CONF'.

LIRC supports arbitrary alphanumeric key names. However, because MiniMyth uses lircd to present lircd supported remote controls as Linux input event devices, MiniMyth only supports key names that are Linux key event names. Because the LIRC namespace uses the Linux key event names, you can list the valid key names by running the command 'irrecord --list-namespace'.

In addition, if you want a key to be treated as a remote control button rather than a mouse/joystick button, then do not use an LIRC namespace key name with the BTN_ prefix. MiniMyth uses eventlircd, which assumes that BTN_ prefix names are mouse/joystick buttons handled by Xorg.

Finally, if you want MiniMyth to handle a remote control button using its built-in lircrc files, then use an LIRC namespace key name that MiniMyth uses in its built-in lircrc files. While there exist multiple possible KEY_* names for that same remote control button, MiniMyth tends to use only one of the possible KEY_* names in its built-in lircrc files. For example, while the "0" remote control button might generate KEY_0, KEY_KP0 or KEY_NUMERIC_0, MiniMyth's lircrc files only expect it to generate KEY_NUMERIC_0. Therefore, you need to be sure that your LIRC daemon configuration file maps each remote control button to the KEY_* name expected by MiniMyth's built-in lircrc files.

lircmd.conf

The LIRC mouse daemon ('lircmd') configuration file. MiniMyth will use this file as the '/etc/lirc/lircmd.conf' file in the MiniMyth file system. Whether or not 'lircmd.conf' is retrieved depends on 'MM_LIRC_FETCH_LIRCMD_CONF'.

lircrc

The LIRC configuration file. MiniMyth will use this file as the '/etc/lirc/lircrc' file in the MiniMyth file system. Whether or not 'lircrc' is retrieved depends on 'MM_LIRC_FETCH_LIRCRC'.

While LIRC supports limiting actions to specific remote controls using 'remote = {remote-name}', MiniMyth does not. In MiniMyth, all remote controls appear as 'remote = devinput'. Therefore, do not include any 'remote = {remote-name}' in any lircrc files.

lircrc.minimyth

The LIRC configuration file for minimyth. MiniMyth will use this file as the minimyth section of '/etc/lirc/lircrc' file (the '/etc/lirc/lircrc.d/minimyth' in the MiniMyth file system). Whether or not 'lircrc.mplayer' is retrieved depends on 'MM_LIRC_FETCH_LIRCRC_MINIMYTH'.

lircrc.mythtv

The LIRC configuration file for mythtv. MiniMyth will use this file as the mythtv section of '/etc/lirc/lircrc' file (the '/etc/lirc/lircrc.d/mythtv' in the MiniMyth file system). Whether or not 'lircrc.mythtv' is retrieved depends on 'MM_LIRC_FETCH_LIRCRC_MYTHTV'.

lircrc.mplayer

The LIRC configuration file for mplayer. MiniMyth will use this file as the mplayer section of '/etc/lirc/lircrc' file (the '/etc/lirc/lircrc.d/mplayer' in the MiniMyth file system). Whether or not 'lircrc.mplayer' is retrieved depends on 'MM_LIRC_FETCH_LIRCRC_MPLAYER'.

lircrc.vlc

The LIRC configuration file for vlc. MiniMyth will use this file as the vlc section of '/etc/lirc/lircrc' file (the '/etc/lirc/lircrc.d/vlc' in the MiniMyth file system). Whether or not 'lircrc.vlc' is retrieved depends on 'MM_LIRC_FETCH_LIRCRC_VLC'.

lircrc.xine

The LIRC configuration file for xine. MiniMyth will use this file as the xine section of '/etc/lirc/lircrc' file (the '/etc/lirc/lircrc.d/xine' in the MiniMyth file system). Whether or not 'lircrc.xine' is retrieved depends on 'MM_LIRC_FETCH_LIRCRC_XINE'.

microcode.dat

The Intel CPU microcode data file. MiniMyth will use this file as the '/etc/firmware/microcode.dat' file in the MiniMyth file system, and load the microcode during initialization when '/etc/firmware/microcode.dat' is present. Whether or not 'microcode.dat' is retrieved depends on 'MM_CPU_FETCH_MICROCODE_DAT'.

The latest Intel microcode can be found by searching the Intel web site for Linux* Processor Microcode Data File">

RAOPKey.rsa

The Apple AirPlay private key file. MiniMyth will use this file as the '/home/minimyth/.mythtv/RAOPKey.rsa'. Whether or not 'RAOPKey.rsa' is retrieved depends on 'MM_AIRPLAY_FETCH_RAOPKEY_RSA'.

rc_maps.cfg

The ir-keytable auto load configuration file. This file is part of the video4linux remote control API.

ssh_host_rsa_key

An SSH private RSA identity file. This file is the host key of the SSH server. The format of these files must be in the format of an OpenSSH private RSA key as generated by ssh-keygen. Whether or not 'ssh_host_rsa_key' is retrieved depends on 'MM_SSH_SERVER_ENABLED'.

WARNING: Because access to the TFTP server storing this file is not secure, the SSH RSA private key in this file should not be trusted. You should assume that because it can be compromised that it will be compromised. Therefore, when using network boot, do not allow anything identifying itself using this identity file to do anything that could be harmful.

xbindkeysrc

The X Window System (Xorg) bind keys file. MiniMyth will use this file as the '/etc/X11/xbindkeysrc' file in the MiniMyth file system. Whether or not 'xbindkeysrc' is retrieved depends on 'MM_X_FETCH_XBINDKEYSRC'.

This file is loaded by MiniMyth's build-in '/etc/X11/xinit/xinitrc' file using the 'xbinkeys' utility. Therefore, if you override '/etc/X11/xinit/xinitrc', then you will need to load '/etc/X11/xbindkeysrc'.

xinitrc

The X Window System (Xorg) startup file. MiniMyth will use this file as the '/etc/X11/xinit/xinitrc' file in the MiniMyth file system. Whether or not 'xinitrc' is retrieved depends on 'MM_X_FETCH_XINITRC'.

xmodmaprc

The X Window System (Xorg) keyboard map file. MiniMyth will use this file as the '/etc/X11/xmodmaprc' file in the MiniMyth file system. Whether or not 'xmodmaprc' is retrieved depends on 'MM_X_FETCH_XMODMAPRC'.

This file is loaded by MiniMyth's build-in '/etc/X11/xinit/xinitrc' file using the 'xmodmap' utility. Therefore, if you override '/etc/X11/xinit/xinitrc', then you will need to load '/etc/X11/xmodmaprc'.

xorg.conf

The X Window System (Xorg) configuration file. MiniMyth will use this file as the '/etc/X11/xorg.conf' file in the MiniMyth file system. Whether or not 'xorg.conf' is retrieved depends on 'MM_X_FETCH_XORG_CONF'.

MiniMyth should be able to create a working '/etc/X11/xorg.conf' file. Therefore, if you need to modify the auto-generated '/etc/X11/xorg.conf' file, then please let us know the modifications required.

If you want to override any other configuration files, then you will need to use the MiniMyth configuration package.