Jak vypsat informace na obrazovku během bootu
Občas se během startu počítače hodí vypsat informace na obrazovku. Používám hromadu testovacích virtálních strojů, které by default dostávají adresu z DHCP a potřebuji se k nim připojovat ze sítě. Hodí se mi tedy znát jejich IP bez toho, aniž bych se musel po každém bootu přihlašovat na jejich virtuální consoli. Proto je také vhodné informace zobrazit hned na první tty.
Zrušíme login na tty1
Standardně se na každém tty startuje proces login, který vymaže obrazovku a předchozí informace jsou nedostupné. Musíme tedy zrušit login na tty1:
systemctl mask getty@tty1.service
Pokud tohle neprojde, tak můžeme natvrdo udělat link (systemctl mask
dělá
totéž, ale občas se brání maskovat některé služby):
ln -sf /dev/null /etc/systemd/system/getty@tty1.service
Po rebootu už by na tty1 neměl být login a měl by tam zůstat výpis služeb během bootu.
Služba pro výpis informací
V mém případě chci vypsat aktuální IP po konfiguraci sítě (výstup z příkazu networkctl
):
[Unit]
Description=Print Network Address
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/bin/echo
ExecStart=/bin/networkctl status
ExecStart=/bin/echo
StandardOutput=tty
StandardError=tty
TTYPath=/dev/tty1
[Install]
WantedBy=multi-user.target
Unitu uložíme do souboru /etc/systemd/system/printIP.service
a zavoláme systemctl
daemon-reload
. Tip: unitu můžeme editovat pomocí příkazu systemctl edit --full
printIP.service
a při uložení se jednak provedou kontroly a taky se automaticky zavolá reload. Službu aktivujeme pomocí systemctl enable printIP.service
.
Popis unity
Službu je potřeba spustit až po konfiguraci sítě, takže definujeme závislost na
targetu network-online
. Služba je typu oneshot
, spustí se jednou. Výstup
přesměrujeme na tty.
Na řádcích ExecStart
jsou potom spouštěné příkazy.
Ano, není to jediná možnost a možná ani nejelegantnější (výstup se míchá s dalšími výstupy během startu), ale zdá se mi nejjednodušší. Nepotřebujeme žádné externí příkazy, vše funguje se základními prostředky minimální instalace debianu.