Skip to content

Powered by Grav

Host OS baseline

Host OS baseline

A barracuda pass does more than build the BOA stack. It also maintains parts of the base operating system underneath it: the syslog daemon (always rsyslog), what an interactive root login prints, and when the cron service is started or reloaded. The defaults are right for a normal host, and most operators never need this page.

Two optional presence markers in /root/ override the cron and login-banner defaults. Both are operator-created — BOA has no writer for either anywhere in the tree, and the hosted normalisation passes that create or erase a number of other /root markers leave both alone — so each one persists until you delete it. Neither is read for content; only presence matters. Each also has a supported /root/.barracuda.cnf variable now, and that variable is the switch to reach for; the marker files stay honoured for one release. And neither changes anything the moment you set it: the next barracuda up-<tier> system pass is what enacts the choice. (A third marker, the old syslog-daemon choice, is retired — see below.)

The two markers at a glance

Marker in /root/ (variable form) Default without it What its presence does
.upstart.cnf (_NO_CRON_AUTOSTART=YES) BOA starts or reloads cron at three points Suppresses those three cron starts — it never stops cron
.dont.use.fancy.bash.login.cnf (_DONT_USE_FANCY_BASH_LOGIN=YES) Decorative root login banner Neutralises the banner lines in /root/.bashrc and purges the packages behind them

Turning either on is the same two steps. First set the ONE switch you want in /root/.barracuda.cnf — both keys ship there, defaulting to NO:

INI
_NO_CRON_AUTOSTART=YES
# the other switch follows the same pattern:
#   _DONT_USE_FANCY_BASH_LOGIN=YES

Then run the pass that applies it:

SH
barracuda up-lts system

The marker files stay honoured for one release, and while one exists it wins and is re-asserted on every upgrade pass. Turning a switch off during the transition therefore means setting the variable to NO and deleting the marker file, then running another pass.

The syslog daemon is rsyslog — no longer a choice

BOA installs and keeps rsyslog, unconditionally, and never removes it.

There used to be a syslog choice here: an OpenVZ-container arm selecting inetutils-syslogd and a /root/.use.sysklogd.cnf marker (briefly converted to _USE_SYSKLOGD=YES) selecting the classic sysklogd. Both arms purged rsyslog first — and because sysklogd no longer has an install candidate on current Devuan or Debian at all, an opted-in host ended up with no syslog daemon at all. That is why the choice was retired: rsyslog is now the only supported daemon, no arm of any pass removes it, and the OpenVZ arm went with the rest (no OpenVZ hosts remain).

If your host still carries the old marker or a _USE_SYSKLOGD line in /root/.barracuda.cnf, both are inert and safe to leave in place — nothing reads them any more. A host that lost its syslog daemon to the old arm gets rsyslog back on the next barracuda pass — every run now ensures the package is present, outside the FULL-mode-only package section; to close the gap immediately, apt-get install rsyslog by hand. If a legacy sysklogd install is still present from years past, installing rsyslog replaces it — the packages conflict, so apt swaps the legacy daemon out on its own.

The syslog_legacy process guard that watched those legacy daemons is retired with them. A conflict-swap removes the old package but leaves its orphaned /etc/init.d script behind (package state rc), so every barracuda pass now also purges rc-state sysklogd/inetutils-syslogd leftovers — nothing on the box references the old daemons any more. See process guards for the remaining service watchdogs.

Whether BOA touches the cron service

Setting _NO_CRON_AUTOSTART=YES in /root/.barracuda.cnf suppresses the three places where BOA starts or reloads cron. /root/.upstart.cnf is the legacy form of the same switch and stays honoured for one release. The three sites are:

  • the tail of the BOA.sh.txt bootstrap, immediately before it reports that the system is ready for a BOA installation (service cron reload)
  • _finale, the last stage of every barracuda pass (service cron start)
  • the end of each per-account Octopus setup run (service cron start)

All three tests are negated — [ ! -e … ] for the marker file, and either [ "${_NO_CRON_AUTOSTART}" != "YES" ] or a negated anchored grep of the cnf for the variable — so setting either form is the "leave it alone" state, and clearing both is the default behaviour.

Two limits are worth stating plainly, because the marker's name and the folklore around it both overpromise:

  • It never stops cron. The only service cron stop in a barracuda pass sits inside the interactive major OS upgrade prompt, and that call consults neither the variable nor the marker.
  • It is only partially honoured. Several other paths start or reload cron without checking it: the abnormal-exit cleanup, both in the barracuda, octopus, boa and cluster wrappers and in the staged BARRACUDA and OCTOPUS installers; the Nginx configuration stage on a fresh install; the duplicate-cron detector in the system monitor; the master-cron enable and disable helpers in runner.sh, which reload cron on every toggle; the reload the BOA self-update runs after it appends the migration_proxy_certs line to the root crontab; and the migration tools. Read the switch as "BOA will not start cron at the end of a pass", not as a guarantee that cron stays down.

The marker's name is historical, from the Upstart era. It neither detects nor selects an init system, and BOA never creates or removes it — which is why the variable is named _NO_CRON_AUTOSTART, after what the switch actually does, rather than after the file.

The root login banner

By default /root/.bashrc calls fancynow and screenfetch for interactive root shells, and BOA keeps the toilet and figlet packages installed to draw them. fancynow also fetches a short weather line from a third-party service on each interactive login (with a two-second timeout), and prints nothing on hosts where BOA has not cached a city name.

Creating /root/.dont.use.fancy.bash.login.cnf does two separate things on the next pass:

  1. The login lines. Any fancynow and screenfetch lines in /root/.bashrc are rewritten to /bin/true. They stay in the file in neutered form rather than being deleted, and the rewrite only runs when the file currently contains a fancynow line.
  2. The packages. toilet, figlet and screenfetch are purged — but only when /usr/bin/screenfetch exists at the time of the pass.

That second condition is a real co-guard and it inverts the outcome when it is not met: with the marker set on a host that has no /usr/bin/screenfetch, the else arm runs instead and installs toilet and figlet. This marker is therefore not cosmetic-only — it moves the installed package set, in both directions.

Removing the marker re-arms the banner on the next pass, and that moves the package set back as well. The .bashrc arm purges the distro screenfetch package whenever /usr/bin/screenfetch is present, then symlinks BOA's own /opt/local/bin/screenfetch into /usr/bin/ in its place and appends a fresh interactive-shell block to /root/.bashrc; the package arm reinstalls toilet and figlet. The lines neutered earlier are left behind as harmless /bin/true calls; tidy them by hand if you care about a clean .bashrc.

© 2026 BOA Documentation. All rights reserved.