hostname
příkazy v běžných sadách nástrojů, včetně BusyBox, se při dotazování na název hostitele nevrací k souborům. Hlásí pouze to, co jim jádro vrátí jako název hostitele ze systémového volání, které jádro inicializuje na řetězec, jako je „(none)“ , měnitelné překonfigurováním a přebudováním jádra. (V terminologii systemd je to dynamický název hostitele , aka přechodný název hostitele; ten, který ve skutečnosti hlásí Linux, jádro.) neexistuje "výchozí soubor".
Obvykle existuje jednorázová služba, která běží při startu systému, poměrně brzy na začátku, která hledá v těchto různých souborech, vytáhne název hostitele a inicializuje s ním název hostitele jádra. (V terminologii systemd je tento konfigurační řetězec statický název hostitele .)Například:
- Ve své sadě nástrojů uvádím "časný"
hostname
služba, která spouští sadu nástrojůset-dynamic-hostname
příkaz po připojení místního souborového systému a před službami přihlášení uživatele. Práce je rozdělena na věci, které se dělají (pouze), když člověk provede změnu konfigurace, a věci, které se dělají při (každém) bootstrapu systému:- Mechanismus importu externí konfigurace má hodnotu
/etc/hostname
a/etc/HOSTNAME
, mimo jiné zdroje (protože různé operační systémy to konfigurují různými způsoby) a vytvoří sloučenýrc.conf
. - Mechanismus importu externí konfigurace používá sloučený
rc.conf
pro konfiguracihostname
této služby proměnná prostředí. - Když je služba spuštěna,
set-dynamic-hostname
nemusí se starat o všechny možnosti zdroje konfigurace a jednoduše vezme proměnnou prostředí z prostředí nakonfigurovaného pro službu a nastaví z ní dynamický název hostitele.
- Mechanismus importu externí konfigurace má hodnotu
- V systemd se jedná o inicializační akci, která je pevně začleněna do kódu
systemd
samotný, který běží ještě před spuštěním správy služeb.systemd
program sám přejde a přečte/etc/hostname
(a také/proc/cmdline
, ale ne/etc/HOSTNAME
ani/etc/default/hostname
ani/etc/sysconfig/network
) a předá to jádru. - Ve Void Linux existuje spouštěcí shell skript, který čte statický název hostitele z (pouze)
/etc/hostname
, s přechodem na proměnnou shellu načtenou zrc.conf
a nastaví dynamický název hostitele z jeho hodnoty.
Pokud stavíte systém „od nuly“, budete muset vytvořit službu, která dělá ekvivalent. Nástroje BusyBox a ToyBox pro nastavení názvu hostitele ze souboru jsou hostname -F "${filename}"
, takže budete muset vytvořit službu, která spustí tento příkaz proti /etc/hostname
nebo nějaký takový soubor.
BusyBox je dodáván se sadou nástrojů pro správu služeb runitu a jednoduchá služba runit by byla něco v tomto smyslu:
#!/bin/sh -e exec 2>&1 exec hostname -F /etc/hostname
Další čtení
- Lennart Poettering a kol. (2016).
hostnamectl
. systémové manuálové stránky. Freedesktop.org. - Jonathan de Boyne Pollard (2017). "
set-dynamic-hostname
." ". Příručka uživatelských příkazů." . nosh nářadí. Software. - Jonathan de Boyne Pollard (2017). "
rc.conf
." amalgamace". průvodce nosem . Software. - Jonathan de Boyne Pollard (2015). „externí formáty“. průvodce nosem . Software.
- Robe Landley.
hostname
. Seznam příkazů Toybox . landley.net. - https://unix.stackexchange.com/a/12832/5132
Takže stavíte tento systém od začátku a ptáte se, kde je nakonfigurováno jméno hostitele?
Jednoduchá odpověď je, že není. Aktuální název hostitele je uložen v jádře a jako většina jader ve výchozím nastavení nečte žádné soubory.
Něco při spuštění systému musíte přečíst konfigurační soubor (dle vašeho výběru) a nastavit název hostitele jádra. To se musí stát při každém spuštění.
Můžete jej změnit z make menuconfig
při sestavování jádra.