Змінити ім'я хоста RPi на основі Raspbian для постійного або тимчасового користування легко, якщо ви знаєте, як це зробити...
Часто одним з перших завдань після створення на Raspberry Pi операційної системи Raspbian є зміна імені машини (імені хоста), тому що воно за замовчуванням встановлюється в "raspberrypi". Звичайно, це не проблема, якщо у вашій мережі є лише один RPi, але для тих, хто розвиває системи Інтернету речей (IoT), де є кілька RPi, було б бажано мати різні імена хостів:
Ви можете змінити ім'я хоста тимчасово за допомогою команди hostname (зверніть увагу, що ви повинні використовувати sudo, бо в іншому випадку команда не буде виконана), але після перезавантаження ім'я повернеться до того, яке було встановлене раніше, а ми зазвичай хочемо, щоб ім'я хоста змінилось на постійній основі. Є кілька способів, як досягнути цього, в тому числі, за допомогою команди hostname в сценарій оболонки при старті. Це могло б бути корисним, якщо вам потрібне динамічно визначене певне ім'я хоста, але найчастіше використовується метод редагування файлу hosts наступним чином:
sudo nano /etc/hosts
Ось що ви побачите:
Якщо змінити останній рядок, в даному випадку, 127.0.1.1 raspberrypi, на інший, скажімо, 127.0.1.1 barkometer, а потім перезавантажитися, то це буде ім'ям хоста вашої машини. Що б ви не робили, НЕ ЗМІНЮЙТЕ 127.0.1.1, бо якщо це зробите, то будете роздратовані наслідками.
Хочете ще більш простий спосіб, щоб змінити ім'я хоста вашого Raspberry Pi? Спробуйте використати hostnamectl. Ця команда, яка доступна на майже кожному дистрибутиві Linux, включаючи Raspbian:
... розрізняє три різні типи імен хостів: ім'я хоста "pretty" високого рівня, яке може включати в себе всі види спеціальних символів (наприклад, "Lennart's Laptop"), статичне ім'я хоста, яке використовується для ініціалізації ядра імені хоста при завантаженні (наприклад, "lennarts-laptop") і перехідне ім'я хоста, яке представляє собою резервне значення, отримане з конфігурації мережі. Якщо встановлюється статичне ім'я хоста і воно діє (і відмінне від localhost), то перехідне ім'я хоста не використовується.
Команда виводу імені за замовчуванням:
hostnamectl status
... виводить ту ж інформацію:
Насправді є три імена хостів: статичні, перехідні і "pretty"; останні є рядком, який може містити будь-які символи, в тому числі ті, які не можуть бути використані в іменах хостів згідно RFC 1123.
Команда:
sudo hostnamectl set-hostname “Barkometer”
... встановлює статичні і "pretty" імена хоста (перехідне ім'я хоста встановлюється в нуль, тобто ""). Знову ж таки, ви повинні використати sudo, бо команда не буде виконана:
Зверніть увагу, що в наведеному вище скріншоті, якщо задається ім'я хоста "pretty", то статичне ім'я хоста не стає красивим ім'ям, зроблене сумісний RFC 1123 шляхом заміни верхнього регістру на нижній регістр і пробілу на підкреслення та пропускаючи спеціальні символи, коли воно перетворюється в статичне ім'я хоста. Ви можете встановити довільне ім'я для кожного з трьох імен хостів, наприклад:
sudo hostnamectl --transient set-hostname “barkometer”
sudo hostnamectl --static set-hostname “barkometer”
sudo hostnamectl --pretty set-hostname “barkometer”
... але зверніть увагу, що hostnamectl не дозволить конкретно встановити статичне ім'я хоста в рядок, якщо воно не відповідає RFC 1123. Нижче приклад встановлення імені хоста "pretty" для "Barkometer" (яке потім перетворюється в "barkometer" для статичного імені хоста), але перехідне ім'я хоста можна встановити в якесь інше, наприклад, "Test":
Може, це помилка, але перехідне ім'я хоста може бути встановлене в рядок, якщо навіть не сумісне з RFC 1123, і потім використовується, коли потрібне ім'я хоста.
Чудовою особливістю hostnamectl є можливість віддалено встановити імена хостів за допомогою SSH і тому, якщо ви господар на цільовій машині і хочете перейменувати, то на обох має бути встановлений hostnamectl:
sudo hostnamectl -H
Ця електронна адреса захищена від спам-ботів, Вам потрібно включити JavaScript для перегляду
set-hostname “Barkometer”
... запустить SSH-сесію, підключіться до цільової машини, введіть пароль і встановіть імена хостів відповідним чином (ви можете також використовувати параметри --static, --transient і --pretty з Н).
Нарешті, під Raspbian, вказавши порожній рядок ("") без вказівки імені хоста:
sudo hostnamectl set-hostname “”
... будуть показані: статичне ім'я хоста, як "n/a", перехідне ім'я хоста, встановлене як localhost (яке використовується, коли ім'я хоста представлене для мережевих сервісів), а також ім'я "pretty" хоста null, тому воно не відображається. Після перезавантаження будуть раніше встановлені імена хостів:
|