18.04 LTS에서 재부팅 후 호스트 이름이 이전 이름으로 되돌아 감


32

이것은 가상 머신 (Host is Win 2016 DC)으로 18.04 LTS를 실행하는 것과 관련이있을 수 있지만 어떻게 알아낼 수는 없습니다. 나는 호스트 이름을 변경하기 위해 알고있는 모든 방법을 시도했지만 재부팅 할 때 항상 컴퓨터를 만들 때 입력 한 호스트 이름으로 되돌아갑니다. 나는 다음을 시도했다.

  1. hostnamectl set-hostname xxx입니다.
  2. 호스트 이름을 직접 편집합니다.
  3. hostnamectl에 --static 추가
  4. 호스트 파일 편집 및 원하는 호스트 이름 추가
  5. 재부팅하기 전에 드라이브에서 이전 호스트 이름에 대한 참조를 검색합니다.
  6. 인터넷에서 언급 할 가치가없는 몇 가지 이상한 제안.

현재이 서버에 대한 DNS가 없습니다.

예:

XXXX@iwrxmail:~# hostnamectl
Static hostname: iwrxmail
Pretty hostname: Interwrx Ubuntu Mail Server
Transient hostname: ctl
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 01ef0d836d2c4945b51a4fab8e506381
       Boot ID: e6608fe238d843f883cde52af7631a79
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
        Kernel: Linux 4.15.0-20-generic
  Architecture: x86-64
XXXX@iwrxmail:~# hostnamectl set-hostname test
XXXX@iwrxmail:~# hostnamectl
Static hostname: test
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 01ef0d836d2c4945b51a4fab8e506381
       Boot ID: e6608fe238d843f883cde52af7631a79
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
        Kernel: Linux 4.15.0-20-generic
  Architecture: x86-64
root@iwrxmail:~# cat /etc/hostname
test
root@iwrxmail:~# cat /etc/hosts
127.0.0.1       localhost.localdomain   localhost
::1             localhost6.localdomain6 localhost6
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts 

However on reboot I get this again ....

XXXX@iwrxmail:~# hostnamectl
Static hostname: iwrxmail
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 01ef0d836d2c4945b51a4fab8e506381
       Boot ID: 25a00676b22048eb8d43492c9de4f147
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
        Kernel: Linux 4.15.0-20-generic
Architecture: x86-64

나는 18.04의 베타 버전 에서이 문제를 겪었지만 릴리스 사본을 기다릴 것이라고 생각했습니다. 또한 VM을 복제했다는 점에서 문제가 될 수 있다고 생각했지만 방금 출시 된 배포판으로 처음부터 새로 작성된 최신 버전이었습니다.

내가 무엇을 놓치고 있습니까?

미리 감사드립니다.


답변:


49

먼저 /etc/cloud/cloud.cfg를 편집하고 "preserve_hostname"매개 변수를 "false"에서 "true"로 설정 한 다음 / etc / hostname을 편집하십시오.


4
매력처럼 작동합니다. "# 이렇게하면 set + update 호스트 이름 모듈이 작동하지 않습니다 (true 인 경우)". 웹에 너무 많은 잘못된 방법이 있습니다.
Andy Wylde

18

호스트 이름을 재설정하여 cloud-init다음과 같이 비활성화 할 수 있습니다 (이후 일반적인 방법으로 호스트 이름을 설정할 수 있음 hostnamectl).

sudo touch /etc/cloud/cloud-init.disabled

또는 항목을 원하는 호스트 이름으로 설정 (제공 되지 않은 경우)하도록 cloud-init를 사용하고 user-data파일 (일반적으로 다음 위치에 있음)을 작성 / 수정할 수 있습니다. 먼저 기존 구성을 정리해야합니다./var/lib/cloud/seed/nocloud-net/user-datahostname:preserve_hostname:

sudo cloud-init clean

그런 다음 새 / 수정 된 사용자 데이터 파일에서 cloud-init의 구성을 다시 초기화하십시오.

sudo cloud-init init

그런 다음 재부팅하십시오. 자세한 내용은 cloud-init 문서 를 참조하십시오.


3
실행에주의를 기울 cloud-init clean이거나 cloud-init init/ etc / netplan / yaml 파일을 다시 작성할 수 있습니다.
Michael D.

3
또한 잠재적으로 유해 할 수있는 SSH 호스트 키를 업데이트합니다 (클라이언트는 다시 연결하기 전에 새 호스트 키를 수락해야 함)
Per Lundberg

5

나 같은 "게으른 녀석들", 복사-붙여 넣기 솔루션 :)

sudo sed -i '/preserve_hostname: false/c\preserve_hostname: true' /etc/cloud/cloud.cfg && sudo hostnamectl set-hostname ReplaceThisWithTheHostnamePreferred

첫 번째 명령은 OS가 새 호스트 이름을 기억하도록합니다.

두 번째 부분 (&& 뒤)은 첫 번째 부분이 성공적으로 완료된 경우에만 실행되며 호스트 이름을 원하는 값으로 설정합니다.

문안 인사! 엘


4

1- 편집 vi /etc/cloud/cloud.cfg및 변경

preserve_hostname: false

preserve_hostname: true

저장하고 종료.

2- vi /etc/hostname이 파일에서 새 이름을 편집 하고 바꾸거나 벨로우 명령으로이 단계를 수행 할 수 있습니다.

hostnamectl set-hostname NEWNAME

그것을 즐기십시오 :)


0

동일한 문제가 발생하여 클라우드 패키지를 제거한 후 호스트 이름을 변경할 수 있음을 발견했습니다.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf

1
나는 이것이 효과가 있다고 확신하지만 위의 대답을 선호한다고 생각합니다. 답변 해 주셔서 감사합니다
Andy Wylde

우분투 서버 패키지를 사용하는 경우이 솔루션을 사용하지 않는 것이 좋습니다. 왜? 위에서 언급 한 패키지는 필수 구성 요소이기 때문입니다. 우분투 서버 패키지 설명 '설명 -en : 우분투 서버 시스템이 패키지는 우분투 서버 시스템의 모든 패키지에 의존합니다. 또한 적절한 업그레이드를 보장하는 데 사용되므로 제거하지 않는 것이 좋습니다. '
linux64kb

0

이전 버전을 다른 곳에 두는 것이 마음에 들지 않으면에서 파일을 열고 다음 /var/lib/cloud/seed/nocloud-net/user-data줄에서 호스트 이름을 변경하십시오.

hostname: cm-lc-nc

그런 다음 다음을 실행하십시오.

cloud-init clean
cloud-init init

그런 다음 /etc/hostname새 값으로 설정 되고 재부팅시 일관성을 유지합니다. 이렇게하면 이전 호스트 이름의 모든 흔적이 제거 preserve_hostname되며 어떤 이유로 재설정되거나 무시되는 경우에도 새 호스트 이름을 잃지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.