GNU/Linux >> Znalost Linux >  >> Linux

Jaký je výchozí soubor pro `hostname`?

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 konfiguraci hostname 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.
  • 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 z rc.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.


Linux
  1. Průběžné testování integrace linuxového jádra

  2. K čemu jsou Inody dobré?

  3. Jaký je účel souboru .bashrc v Linuxu

  1. Jaký je správný způsob použití inotify?

  2. Jaký je aktuální zdrojový kód jádra Linuxu?

  3. Jaké je výchozí heslo obrazovky?

  1. Jak najít výchozího správce souborů?

  2. Jaké je výchozí pořadí řazení Linuxu?

  3. K čemu je i915.modeset=1?