Какой файл по умолчанию используется для `имени хоста `?

Только блочные устройства имеют UUID (, которые можно найти ).

Файл не является блочным устройством, петлевое устройство превращает его в одно.

Таким образом, чтобы найти UUID файла изображения, сначала должно существовать петлевое устройство.

Тем не менее, ваша запись в fstab является циклическим монтированием, т.е. петлевое устройство создается только при его монтировании (и немедленно удаляется при размонтировании ), поэтому оно не существует до его монтирования (и после вы размонтируете его ), и так... UUID не найден, потому что петлевого устройства не существует.

Для циклического монтирования вполне допустимо указывать путь к файлу.

В противном случае вам понадобится сценарий инициализации, который настраивает устройства цикла перед попыткой их монтирования (, а затем избавляется от опции монтирования цикла ).

14
06.10.2020, 23:37
3 ответа

Команды hostnameв распространенных наборах инструментов, включая BusyBox, не возвращаются к файлам при запросе имени хоста. Они сообщают только то, что ядро ​​возвращает им как имя хоста из системного вызова, которое ядро ​​инициализирует строкой, такой как «(none )», которую можно изменить путем перенастройки и пересборки ядра. (В терминологии systemd это динамическое имя хоста , также известное как переходное имя хоста ; тот, о котором на самом деле сообщает Linux, ядро. )Там нет "файла по умолчанию".

Обычно существует одна -служба выстрела, которая запускается при запуске системы, довольно рано, просматривает эти различные файлы, извлекает имя хоста и инициализирует им имя хоста ядра. (В терминологии systemd эта строка конфигурации представляет собой статическое имя хоста . )Например:

  • В моем наборе инструментов я предоставляю «ранний» hostnameсервис, который запускает команду set-dynamic-hostnameнабора инструментов после монтирования локальной файловой системы и перед входом пользователя в систему. Работа делится на то, что выполняется (только )при изменении конфигурации, и то, что выполняется при (каждой )начальной загрузке системы :.
    • Механизм импорта внешней конфигурации читается как /etc/hostnameи /etc/HOSTNAME, среди прочих источников (, поскольку разные операционные системы настраивают его по-разному ), и создает объединенный rc.conf.
    • Механизм импорта внешней конфигурации использует объединенную rc.confдля настройки переменной среды hostnameэтой службы.
    • Когда служба запущена, set-dynamic-hostnameне нужно заботиться обо всех возможностях источника конфигурации, она просто берет переменную среды из среды, настроенной для службы, и задает из нее динамическое имя хоста.
  • В systemd это действие инициализации, которое жестко встроено в код самого systemdи выполняется еще до запуска управления службами. Сама программа systemdидет и читает /etc/hostname(, а также /proc/cmdline, но , а не /etc/HOSTNAME, ни /etc/default/hostname, ни /etc/sysconfig/network), и передает это ядру.
  • В Void Linux есть сценарий запуска оболочки , который считывает статическое имя хоста только из ()/etc/hostnameс откатом к переменной оболочки, считываемой из rc.conf, и устанавливает динамическое имя хоста. от его стоимости.

Если вы строите систему «с нуля», вам придется сделать аналогичный сервис. Инструменты BusyBox и ToyBox для установки имени хоста из файла — hostname -F "${filename}", поэтому вам придется создать службу, которая запускает эту команду для /etc/hostnameили какого-либо подобного файла.

BusyBox поставляется с набором инструментов для управления сервисом runit, и простой сервис runit будет чем-то вроде:

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

Дополнительная литература

  • Леннарт Поттеринг и др. (2016 ).hostnamectl. справочные страницы systemd. Freedesktop.org.
  • Джонатан де Бойн Поллард (2017 ). «set-dynamic-hostname». Руководство по командам пользователя . нош набор инструментов. Программное обеспечение.
  • Джонатан де Бойн Поллард (2017 ). "rc.conf слияние ". Направляющая ноша . Программное обеспечение.
  • Джонатан де Бойн Поллард (2015 ). " внешние форматы ". Направляющая ноша . Программное обеспечение.
  • Роб Лэндли.hostname.Список команд Toybox . Landley.net.
  • https://unix.stackexchange.com/a/12832/5132
36
18.03.2021, 22:59

Итак, вы строите эту систему с нуля и спрашиваете, где настраивается имя хоста?

Простой ответ заключается в том, что это не так. Текущее имя хоста хранится внутри ядра, и, как и большинство других вещей, ядро ​​по умолчанию не читает никаких файлов.

Что-то при запуске вашей системы должно прочитать файл конфигурации (по вашему выбору )и установить имя хоста ядра. Это должно происходить при каждом запуске.

6
18.03.2021, 22:59

Вы можете изменить его с make menuconfigпри сборке ядра.

5
18.03.2021, 22:59

Теги

Похожие вопросы