PXE boot debian-installer preseed.cfg - 특정 문제(예: 호스트 이름)만 표시하는 방법

PXE boot debian-installer preseed.cfg - 특정 문제(예: 호스트 이름)만 표시하는 방법

현재 집에서 PXE 부팅을 통해 debian-installer를 사용하고 있습니다(Duan Linux 사용). 설치 프로그램에서 호스트 이름과 도메인을 요청하고 도메인에 대해서만 사전 설정된 기본값을 요청하고 싶은데 이것이 가능한지 확실하지 않습니까? 목적은 프로비저닝이 어떻게 작동하는지 이해할 수 있다면 그 지식을 직장에 적용하고 현재는 대부분 수동이기 때문에 지원 팀이 Ubuntu를 더 쉽게 배포할 수 있도록 하는 것입니다.

내가 이해한 바로는 netboot를 구현하려면(내가 읽은 대부분의 문서가 실제로 Debian용이므로 Devuan netboot가 Debian과 거의 같은 방식으로 작동할 것으로 예상합니다) netcfg는 다음에서 프로비저닝 파일을 가져오기 전에 완료되어야 합니다: TFTP 이는 설치 프로그램이 설치 프로그램의 netcfg 부분을 강제로 다시 실행하도록 하려면 다음을 수행해야 함을 의미합니다.

d-i preseed/early_command string kill-all-dhcp; netcfg

...지정하기 전에...

d-i netcfg/hostname seen false
d-i netcfg/domain string network-name.int
d-i netcfg/domain seen false

...debian-installer에서 질문할 수 있도록 기본값도 제공됩니다.

이 페이지는 이것이 사실임을 보여줍니다.https://www.debian.org/releases/stable/amd64/apbs05.html.en

...구체적으로:B.5.2. 사전 설정을 사용하여 기본값 변경

사전 설정을 사용하여 질문에 대한 기본 답변을 변경할 수 있습니다.그런데 아직도 사람들이 이런 질문을 해요.. 이렇게 하려면 질문의 값을 설정한 후 see 플래그를 "false"로 재설정해야 합니다.

이 Reddit 게시물은 다른 사람들도 "seen"을 false 및 true로 설정하려고 시도했지만 아무런 효과가 없음을 나타냅니다. https://www.reddit.com/r/debian/comments/7ak9h0/debian_preseed_installation_no_dialog_for/

나는 또한 debconf 우선순위가 여기서도 역할을 한다는 것을 다른 곳에서 읽었습니다. Devuan netboot 파일에 포함된 netboot vesamenu.c32는 커널 명령줄에서 "priority=ritic"을 지정하지만 호스트 이름 및 도메인 대화 상자가 다음과 같은 것으로 알고 있습니다.높은하지만 우선순위이므로 debconf 우선순위가 다음으로 설정되지 않으면 어쨌든 발생하지 않습니다.높은. 그렇게 하면 설치 프로그램이 필요한 경우 호스트 이름을 묻게 되지만, 불행하게도 호스트 이름을 제공한 후 다음 단계를 묻는 메뉴도 표시됩니다. 커널 명령줄에서 우선순위를 높음으로 설정한 다음, 프로비저닝에서 위의 kill-all-dhcp;netcfg 줄을 실행하여 네트워크를 다시 초기화하고 강제로 호스트 이름을 요청하도록 한 다음 다음을 사용하여 우선순위를 다시 중요로 변경했습니다.

debconf debconf/priority critical 

...(위 프로필 상단의 reddit 게시물에 표시됨) 그러나 안타깝게도 이로 인해 설치 프로그램이 호스트 이름 문제나 도메인 문제를 묻지 않고 질문 없이 완전 자동 설치를 실행하게 되었습니다.

내가 읽은 블로그 게시물(불행히도 열린 탭 목록에서 찾을 수 없음)에는 프로비저닝 파일의 명령 순서가 중요하지 않다고 명시되어 있어 호스트 이름 질문에 대답한 후에는 변경할 수 없다고 믿게 됩니다. 우선 사항

현재 커널 명령줄 우선순위는 중요로 설정되어 있으며 preseed.cfg에서 다음 관련 섹션을 지정했습니다.

## Locale/Keymap configuration
d-i debian-installer/locale string en_GB
d-i keyboard-configuration/xkb-keymap select gb

## Network configuration (none, just use DHCP)
d-i netcfg/choose_interface select auto

## Hostname configuration
d-i preseed/early_command string kill-all-dhcp; netcfg

debconf debconf/priority high

d-i netcfg/hostname string CHANGETHIS
d-i netcfg/hostname seen false
d-i netcfg/domain string network-name.int
d-i netcfg/domain seen false

debconf debconf/priority string critical 

나는 debian-installer가 마지막에 사용자 정의 스크립트를 실행하여 /etc/hostname의 호스트 이름을 변경하고 재부팅하기 전에 /etc/hosts를 업데이트함으로써 이 문제를 해결할 수 있다는 것을 알고 있지만 설치 소스를 동일하게 유지하고 싶습니다. 업그레이드를 시작하려면 가능한 한 적은 단계가 필요합니다(최신 OS 버전을 사용하기 위해 스크립트를 사용자 정의하고 업데이트할 필요 없이 사전 설정만 수정하기만 하면 됨). 그리고 내가 읽은 다른 기사에서 제안한 내용을 지정할 수 있습니다.di preseed/late_command그리고/또는미리 시드/early_command따라서 사전 시드가 필요한 것을 처리하지 못할 경우를 대비해 미래에 맡기고 싶습니다.

답변1

몇 시간의 테스트 끝에 작동하는 답변을 찾았습니다. 다른 사람들이 답변을 찾으러 오면 참고하시기 바랍니다.

대답은 구성 파일에서 netcfg 구성을 전혀 수행하지 않고 커널 명령줄에서 우선 순위를 높음 및 중요하지 않음으로 설정하여 수행하는 것입니다.

나는 다음 menu.c32/vesamenu.c32 구성을 사용했습니다.

label customauto
    menu label ^Automated install - Custom Auto
    kernel debian-installer/amd64/linux
    append auto=true priority=high netcfg/get_hostname?= netcfg/get_domain?=internal.domain preseed/url=tftp://<ip address to tftp server>/preseed.cfg vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet 

테스트 참고 사항: 커널 명령줄에서 다음 명령을 사용하면 특정 동작이 발생합니다.

netcfg/get_hostname=hostname우선 순위가 "high"로 설정되어 있어도 질문을 제기하지 않고 시스템의 호스트 이름을 지정된 것(이 경우 "hosname")으로 설정합니다.

netcfg/get_hostname?=hostname(? 및 해당 위치 참고)는 기본값(이 경우 "호스트 이름")을 설정하지만 지정한 기본값에 대해서도 질문합니다.

netcfg/get_hostname?=기본값은 전혀 전달되지 않으며 질문이 제기됩니다. 처음에는 이것이 작동하지 않을 것이라고 생각했지만 테스트에서는 작동하는 것 같습니다!

라인에도 마찬가지입니다 netcfg/get_domain. 다른 문제가 있다고 가정하지만 이것이 제가 원하는 구성이므로 다른 문제는 테스트하지 않았습니다.

프로비저닝 파일에서 netcfg에 대한 모든 di 줄을 제거하고 다른 것을 지정하기 전에 맨 위에서 우선 순위를 중요로 설정했습니다.

d-i debconf/priority string critical

설치가 완료된 후 호스트 이름이 올바르게 설정되었는지, /etc/hosts가 올바르게 설정되었는지, 프로비저닝 파일의 다른 모든 설정이 올바르게 적용되었는지 확인하여 이 구성이 좋다고 믿게 되었습니다.

이것은 제가 원하는 답변이 아닙니다. 프로비저닝 파일에서 이 모든 작업을 수행하고 싶습니다. 왜냐하면 이제 요구 사항이 변경됨에 따라 나중에 동작을 변경하려면 두 곳을 확인해야 하기 때문입니다. 나는 어느 정도 타협이 필요하다고 생각합니다.

관련 정보