GNU/Linux >> Belajar Linux >  >> Linux

Apa file default untuk `hostname`?

hostname perintah dalam kumpulan alat umum, termasuk BusyBox, tidak jatuh kembali ke file saat meminta nama host. Mereka hanya melaporkan apa yang dikembalikan kernel kepada mereka sebagai nama host dari panggilan sistem, yang diinisialisasi oleh kernel ke string seperti "(tidak ada)" , dapat diubah dengan mengonfigurasi ulang dan membangun kembali kernel.(Dalam terminologi systemd, ini adalah nama host dinamis , alias nama host sementara; yang sebenarnya dilaporkan oleh Linux, kernel.) tidak ada "berkas bawaan".

Biasanya ada layanan single-shot yang berjalan pada startup sistem, cukup awal, yang mencari di berbagai file ini, mengeluarkan nama host, dan menginisialisasi nama host kernel dengannya. (Dalam terminologi systemd, string konfigurasi ini adalah nama host statis .)Misalnya:

  • Dalam perangkat saya, saya memberikan hostname "awal". layanan yang menjalankan set-dynamic-hostname perangkat perintah setelah sistem file lokal dipasang dan sebelum layanan login pengguna. Pekerjaan dibagi menjadi hal-hal yang dilakukan (hanya) ketika seseorang membuat perubahan konfigurasi, dan hal-hal yang dilakukan di (setiap) bootstrap sistem:
    • Mekanisme impor konfigurasi eksternal membaca /etc/hostname dan /etc/HOSTNAME , di antara sumber lain (karena sistem operasi yang berbeda mengonfigurasinya dengan cara yang berbeda), dan membuat rc.conf gabungan .
    • Mekanisme impor konfigurasi eksternal menggunakan gabungan rc.conf untuk mengonfigurasi hostname layanan ini variabel lingkungan.
    • Saat layanan berjalan, set-dynamic-hostname tidak perlu memedulikan semua kemungkinan sumber konfigurasi dan cukup mengambil variabel lingkungan, dari lingkungan yang dikonfigurasi untuk layanan, dan menetapkan nama host dinamis darinya.
  • Dalam systemd ini adalah tindakan inisialisasi yang tertanam dalam kode systemd itu sendiri, yang berjalan bahkan sebelum manajemen layanan dimulai. systemd program itu sendiri berjalan dan membaca /etc/hostname (dan juga /proc/cmdline , tetapi tidak /etc/HOSTNAME atau /etc/default/hostname atau /etc/sysconfig/network ) dan meneruskannya ke kernel.
  • Di Void Linux ada skrip startup shell yang membaca nama host statis dari (hanya) /etc/hostname , dengan fallback ke variabel shell yang dibaca dari rc.conf , dan menyetel hostname dinamis dari nilainya.

Jika Anda membangun sistem "dari awal", maka Anda harus membuat layanan yang setara. Alat BusyBox dan ToyBox untuk menyetel nama host dari file adalah hostname -F "${filename}" , jadi Anda harus membuat layanan yang menjalankan perintah itu terhadap /etc/hostname atau beberapa file semacam itu.

BusyBox dilengkapi dengan perangkat manajemen layanan runit, dan layanan runit sederhana akan menjadi sesuatu seperti:

#!/bin/sh -e
exec 2>&1
exec hostname -F /etc/hostname

Bacaan lebih lanjut

  • Lennart Poettering dkk. (2016). hostnamectl . halaman manual systemd. Freedesktop.org.
  • Jonathan de Boyne Pollard (2017). "set-dynamic-hostname ". Manual perintah pengguna . perangkat nosh. Perangkat lunak.
  • Jonathan de Boyne Pollard (2017). "rc.conf penggabungan". nosh Guide . Perangkat lunak.
  • Jonathan de Boyne Pollard (2015). "format eksternal". Panduan nosh . Perangkat lunak.
  • Rob Landley. hostname . Daftar perintah Toybox . landley.net.
  • https://unix.stackexchange.com/a/12832/5132

Jadi, Anda membangun sistem ini dari awal dan bertanya di mana nama host dikonfigurasikan?

Jawaban sederhananya adalah tidak. Nama host saat ini disimpan di dalam kernel dan seperti kebanyakan hal lainnya, kernel tidak membaca file apa pun secara default.

Sesuatu di startup sistem Anda harus membaca file konfigurasi (pilihan Anda) dan mengatur nama host kernel. Ini harus terjadi setiap startup.


Anda dapat mengubahnya dari make menuconfig saat membangun kernel.


Linux
  1. Untuk Apa Inode Baik?

  2. Untuk apa file .la libtool?

  3. Apa cara yang tepat untuk menggunakan inotify?

  1. Apa sumber kernel Linux saat ini?

  2. Apa yang setara dengan perintah File Linux untuk windows?

  3. Apa urutan default dari jenis Linux?

  1. Pengujian integrasi berkelanjutan untuk kernel Linux

  2. Linux – Apa File Default Untuk `hostname`?

  3. Apa tujuan dari file .bashrc di Linux?