GNU/Linux >> Znalost Linux >  >> Linux

Linux – jaký je výchozí soubor pro `hostname`?

Ahoj! V současné době pracuji na systému bez lfs od nuly s busyboxem jako hvězdou. Nyní moje přihlašovací jméno říká:

(none) login:

Moje hostitelské jméno je tedy nefunkční. hostname mi přináší (none) taky.

Průvodce, který jsem sledoval, mi řekl, abych hodil název hostitele do /etc/HOSTNAME . Zkoušel jsem také /etc/hostname . Bez ohledu na to, co dělám, hostname vrátí (none) – pokud nespustím hostname <thename> nebo hostname -F /etc/hostname . Nyní samozřejmě nechci, aby se to dělalo pokaždé, když někdo čerstvě nainstaloval distribuci – jaký je tedy skutečný výchozí soubor, když ne /etc/hostname ?

Předem děkuji!

Přijatá odpověď:

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)“, lze změnit 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, a 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í set-dynamic-hostname sady nástrojů 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 zní /etc/hostname a /etc/HOSTNAME , mimo jiné zdroje (protože různé operační systémy to konfigurují různými způsoby) a vytváří sloučený rc.conf .
    • Mechanismus importu externí konfigurace používá sloučený soubor rc.conf pro konfiguraci hostname této služby proměnná prostředí.
    • Když je služba spuštěna, set-dynamic-hostname se nemusí 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 (pouze) z /etc/hostname , s přechodem na proměnnou shellu načtenou z rc.conf a nastaví dynamický název hostitele z jeho hodnoty.
Související:Linux+ Cheat Sheet

Pokud stavíte systém „od nuly“, budete muset vytvořit službu, která udě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 sloučení". 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

Linux
  1. Linux - změňte název hostitele v CLI

  2. Jaké je spojení mezi adresáři /etc/init.d a /etc/rcX.d v Linuxu?

  3. Jak v mém souboru /etc/hosts/ v systému Linux/OSX vytvořím subdoménu se zástupnými znaky?

  1. Linux hostname Command Tutorial pro začátečníky (5 příkladů)

  2. Úvod do souboru Linux /etc/fstab

  3. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  1. Linux – co je jmenný prostor Uts?

  2. Linux – Jak nastavit výchozí afinitu CPU pro všechny démony v Systemd?

  3. Pochopení souboru /etc/inittab v Linuxu