Что делать, если hostname в Ubuntu 22.04 не сохраняется даже после перезагрузки? Разбираем причину и даём пошаговое решение с отключением cloud-init.
Иногда при смене имени хоста в Ubuntu 22.04 привычными способами, оно всё равно сбрасывается после перезагрузки. Чаще всего причина в cloud-init — службе, которая переустанавливает hostname при запуске. Это типично для VPS, LXC-контейнеров и облачных образов Ubuntu.
Стандартный подход
Меняем хостнейм и прописываем новый в файле hosts
sudo hostnamectl set-hostname my-hostname
sudo nano /etc/hosts
Замените строку:
127.0.1.1 старое_имя
на:
127.0.1.1 my-hostname
Если после перезагрузки имя всё ещё сбрасывается — виноват cloud-init.
Решение 1: Полное отключение cloud-init
Создайте файл-флаг, чтобы навсегда отключить cloud-init:
sudo touch /etc/cloud/cloud-init.disabled
Теперь снова задайте hostname:
sudo hostnamectl set-hostname my-hostname
sudo nano /etc/hosts
И перезагрузитесь:
sudo reboot
Решение 2: Без полного отключения cloud-init
Если cloud-init нужен, но менять hostname ему не надо:
-
- Создайте файл конфигурации:
sudo nano /etc/cloud/cloud.cfg.d/99_hostname.cfg
-
- Добавьте в него:
preserve_hostname: true
-
- Примените hostname как обычно:
sudo hostnamectl set-hostname my-hostname
-
- Обновите
/etc/hosts
и перезагрузите систему:
- Обновите
sudo reboot
Проверка
После перезагрузки проверьте:
hostnamectl
Теперь hostname не будет сбрасываться при запуске.