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 menjalankanset-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 membuatrc.conf
gabungan . - Mekanisme impor konfigurasi eksternal menggunakan gabungan
rc.conf
untuk mengonfigurasihostname
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.
- Mekanisme impor konfigurasi eksternal membaca
- 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 darirc.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.