GNU/Linux >> Belajar Linux >  >> Linux

Linux – Apa File Default Untuk `hostname`?

Hei! Saat ini saya sedang mengerjakan sistem non-lfs dari awal dengan busybox sebagai bintangnya. Sekarang, login saya mengatakan:

(none) login:

Oleh karena itu, nama host saya rusak. hostname membawakan saya (none) juga.

Panduan yang saya ikuti mengatakan kepada saya untuk membuang nama host ke /etc/HOSTNAME . Saya juga sudah mencoba /etc/hostname . Tidak peduli apa yang saya lakukan, hostname mengembalikan (none) – kecuali saya menjalankan hostname <thename> atau hostname -F /etc/hostname . Sekarang jelas, saya tidak ingin ini dilakukan setiap kali seseorang baru saja menginstal distro — jadi apa file default sebenarnya, jika bukan /etc/hostname ?

Terima kasih sebelumnya!

Jawaban yang Diterima:

hostname perintah di perangkat umum, termasuk BusyBox, tidak kembali ke file saat menanyakan nama host.
Mereka hanya melaporkan apa yang dikembalikan kernel kepada mereka sebagai nama host dari panggilan sistem, yang diinisialisasi kernel ke string seperti “ (none)”, dapat diubah dengan mengkonfigurasi 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 “file default”.

Biasanya ada layanan single-shot yang berjalan saat 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 dari perangkat ini 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 pada (setiap) bootstrap sistem:
    • Mekanisme impor konfigurasi eksternal membaca /etc/hostname dan /etc/HOSTNAME , di antara sumber-sumber lain (karena sistem operasi yang berbeda mengonfigurasi ini 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 mempedulikan semua kemungkinan sumber konfigurasi dan cukup mengambil variabel lingkungan, dari lingkungan yang dikonfigurasi untuk layanan, dan menyetel 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 , tapi tidak /etc/HOSTNAME atau /etc/default/hostname atau /etc/sysconfig/network ) dan meneruskannya ke kernel.
  • Di Void Linux ada skrip shell startup yang membaca nama host statis dari (hanya) /etc/hostname , dengan fallback ke variabel shell yang dibaca dari rc.conf , dan menyetel nama host dinamis dari nilainya.
Terkait:Linux+ Cheat Sheet

Jika Anda sedang 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 tersebut terhadap /etc/hostname atau file semacam itu.

BusyBox hadir 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 lunak. Perangkat Lunak.
  • Jonathan de Boyne Pollard (2017). “rc.conf penggabungan". Panduan nosh . Perangkat Lunak.
  • Jonathan de Boyne Pollard (2015). "format eksternal". Panduan nosh . Perangkat Lunak.
  • Rob Landley. hostname . Daftar perintah kotak mainan . landley.net.
  • https://unix.stackexchange.com/a/12832/5132

Linux
  1. Tutorial Perintah Hostname Linux untuk Pemula (5 Contoh)

  2. Linux – Apa itu Namespace Uts?

  3. Linux – Bagaimana Cara Mengatur Afinitas Cpu Default Untuk Semua Daemon Di Systemd?

  1. Memahami File /etc/inittab di Linux

  2. Linux - ubah nama host di CLI

  3. Di file /etc/hosts/ saya di Linux/OSX, bagaimana cara melakukan subdomain wildcard?

  1. Pengantar file Linux /etc/fstab

  2. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  3. Cara mengatur /etc/issues untuk menampilkan alamat IP untuk eth0