Difference between revisions of "Upstart mythbackend Configuration"
(update to some other stuff in the upstream script now) |
(Note that systemd is now the default) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Some newer Linux distributions replace the traditional initscript startup management process with a program called upstart, which does things differently; here are some notes on how to make MythTV play nicely with upstart. | Some newer Linux distributions replace the traditional initscript startup management process with a program called upstart, which does things differently; here are some notes on how to make MythTV play nicely with upstart. | ||
− | + | {{Note box|Although Ubuntu backends can be configured to use Upstart, the default is [[Systemd mythbackend Configuration]]}} | |
==Default configuration== | ==Default configuration== | ||
{{Script info | {{Script info | ||
Line 24: | Line 24: | ||
#expect fork | #expect fork | ||
+ | kill timeout 10 | ||
respawn | respawn | ||
respawn limit 2 3600 | respawn limit 2 3600 | ||
Line 43: | Line 44: | ||
sleep 5 # Note 5. | sleep 5 # Note 5. | ||
test -f /etc/default/mythtv-backend && . /etc/default/mythtv-backend || true | test -f /etc/default/mythtv-backend && . /etc/default/mythtv-backend || true | ||
− | LANG=$LANG /usr/bin/mythbackend --user mythtv $ARGS $EXTRA_ARGS | + | LANG=$LANG exec /usr/bin/mythbackend --user mythtv $ARGS $EXTRA_ARGS |
end script | end script | ||
</pre> | </pre> |
Latest revision as of 19:08, 13 July 2017
Some newer Linux distributions replace the traditional initscript startup management process with a program called upstart, which does things differently; here are some notes on how to make MythTV play nicely with upstart.
Note: Although Ubuntu backends can be configured to use Upstart, the default is Systemd mythbackend Configuration
Default configuration
Author | Mario Limonciello |
Description | Upstart configuration file for starting mythbackend. |
Supports |
Save the configuration file below in /etc/init/mythtv-backend.conf
and create a symlink referencing the upstart-job binary in /etc/init.d
or /etc/rc.d/init.d
.
ln -s /lib/init/upstart-job /etc/init.d/mythtv-backend
# MythTV Backend service description "MythTV Backend" author "Mario Limonciello <superm1@ubuntu.com>" start on (local-filesystems and net-device-up IFACE!=lo and started udev-finish) # Note 1. stop on runlevel [016] #expect fork kill timeout 10 respawn respawn limit 2 3600 pre-start script [ -x /usr/sbin/mysqld ] || exit 0 for i in `seq 1 30` ; do /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping && exit 0 sleep .5 done end script script ulimit -c unlimited # Note 2. test -f /etc/default/locale && . /etc/default/locale || true # Note 3. ARGS="--logfile /var/log/mythtv/mythbackend.log" # ARGS="--logpath /var/log/mythtv" # Note 4. (pick 1) ARGS="--syslog local7" # sleep 5 # Note 5. test -f /etc/default/mythtv-backend && . /etc/default/mythtv-backend || true LANG=$LANG exec /usr/bin/mythbackend --user mythtv $ARGS $EXTRA_ARGS end script
- For systems with no network interface, use IFACE=lo.
- After 0.24, use
ulimit -c unlimited
to allowmythbackend
core files orulimit -c 0
to inhibit them. - After 0.24, verify that the
LANG
and (LC_ALL
orLC_CTYPE
) variables are set.If/etc/default/locale
(or an equivalent) doesn't exist, the value forLANG
and related language settings can be seen by typinglocale
on the command line. --logfile
is used prior to 0.25, use--logpath
or--syslog
with 0.25 and above. See Logging.- IPv6 users may find that
net-device-up IFACE
does not guarantee that their addresses are available for the backend to bind to and should add asleep 5
before starting it.
Delay starting the backend until all tuners have initialised
Some tuners take a long time to initialise and may therefore not yet be available when the backend starts. Since the backend only tests the presence of tuners upon startup, tuner initialisation needs to have completed before the backend is started.
This is accomplished by adding additional events to the and clauses in the start on stanza. An example follows:
start on stanza in /etc/init/mythtv-backend.conf
start on (local-filesystems and net-device-up IFACE=lo and pvrusb2-device-added KERNEL=sn-7157879 and pvrusb2-device-added KERNEL=sn-7117063)
Consult the Upstart Intro, Cookbook and Best Practices for details about how to determine the correct events. Briefly:
- Use the following command to list all possible event types on your system:
for subsystem in /sys/class/* do for action in added changed removed do echo "${subsystem}-device-${action}" done done
- Determine which of these event types correspond with your tuners. For example, when a Hauppauge HVR-1900 tuner finishes initialisation this results in a pvrusb2-device-added event.
- If you have only one tuner, or only one tuner of each type, then you are done: just add the corresponding events to your start on stanza without additional parameters.
- If you however have multiple tuners that result in the same event type upon initialisation, then you want to delay starting the backend until they have all initialised. You therefore need to find a way to tell the tuner initialisation events apart. In the above example this is done by noting that the KERNEL environment variable contains the tuner's serial number when the event is triggered.
- In order to find out which environment variables are available when an event is triggered, create a test Upstart configuration file such as the following, which logs the environment to a file:
start on (pvrusb2-device-added) script echo "\n`env`" >> /dev/.initramfs/test.log end script
Don't forget to delete the test Upstart config file when you are done.