
나는 PXEboot에 구성된 시스템이 네트워크에서 문제 없이 syslinux를 로드하는 tftpboot 디렉토리가 있는 기능적인 DHCP, ftp 및 tftp 서버를 가지고 있습니다.
SYSLINUX를 통해 PXE에 우분투 22.04를 설치하려고 합니다.
나는 이것을 따랐다우편이것을 달성하기 위해.
이 게시물에서는 ubuntu 22.04 서버 설치 프로그램 ISO에서 vmlinuz 및 initrd 커널 파일을 추출하여 tftpboot 디렉토리에 넣어야 한다고 나와 있습니다. 그런 다음 pxelinux.cfg 디렉터리에 있는 default라는 구성 파일에서 ISO를 로드합니다. 다음은 jammy와 관련된 tftpboot 디렉토리의 대략적인 도식적 표현입니다(전통적으로 syslinux에서 사용되는 나머지 파일은 생략).
└── tftpboot
├── pxelinux.0
├── jammy
│ ├── initrd
│ └── vmlinuz
├── pxelinux.cfg
│ └── default
└── syslinux (All the Syslinux boot files)
└── bios
├── ldlinux.c32
├── libutil.c32
└── menu.c32
여기 내가 가지고 있는 ftp 디렉토리가 있습니다
└── ftp
└── Ubuntu-22.04
├── ubuntu-22.04.1-live-server-amd64.iso
└── Kickstart
├── user-data
└── meta-data
다음은 최소 설치를 먼저 시도하기 위해 가져온 사용자 데이터 파일입니다. 메타데이터는 비어 있을 수 있습니다.
#cloud-config
autoinstall:
identity:
hostname: jammy-minimal
password: $6$gnqbMUzHhQzpDEw.$.cCNVVDsDfj5Feebh.5O4VbOmib7tyjmeI2ZsFP7VK2kWwgJFbfjvXo3chpeAqCgXWVIW9oNQ/Ag85PR0IsKD/
username: ubuntu
version: 1
다음은 제가 설정한 기본 구성 파일입니다.
default menu.c32
menu title Ubuntu installer
LABEL ubuntu
MENU LABEL Install Ubuntu Jammy Server
MENU DEFAULT
KERNEL jammy/vmlinuz
IPAPPEND 1
APPEND initrd=jammy/initrd ip=dhcp url=ftp://172.16.0.4/Ubuntu-22.04/ubuntu-22.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=ftp://172.16.0.4/Ubuntu-22.04/Kickstart
마지막으로 사용자 데이터(cloud-config) 및 메타 데이터 파일을 추가하려면 기본 파일이 해당 구성을 다운로드하여 자동 설치를 시작하는 데 사용할 수 있는 ftp에, 사용자 데이터에는 우리가 수행하는 모든 단계가 있습니다. 수동 개입(언어, 형식 등) 없이 설치를 수행하기 위해 이전에 수동으로 선택했을 것입니다.
커널과 ISO가 제대로 로딩되어 설치 메뉴까지 설치 과정을 시작하는데, 자동 설치를 시작하기 위해 cloud-config(user-data) 파일을 로딩해야 할 때 문제가 발생합니다. 기본 파일에 지정했는데도 찾을 수 없습니다. 아래 이미지에서 무슨 일이 일어나고 있는지 살펴보겠습니다.
ISO 로딩
영원히 기다리는 중 cloud-init
그런 다음 궁극적으로 메뉴를 시작하십시오.
분명히 사용자 데이터 파일은 기본 syslinux 파일에서 로드하면 무시됩니다. 이것이 어떻게 가능한지? 기본 파일이 아닌 다른 곳에서 로드해야 합니까? 수정된 ISO에서 로드하려고 이미 생각했습니다. 이것이 좋은 대안이 될까요? 감사해요
답변1
영원히 기다리는 중 cloud-init
확인 해봤 었니cloud-init의 로그 파일? 당신은 무엇을 보았는가?
cloud-init이 영원히 기다리는 이유는 다음과 같습니다.유효한 NoCloudNet 문자열을 제공하지 않습니다.. Cloud-init의 NoCloud 데이터 소스는 지원을 지원하지 않습니다 ftp
. 에서문서:
ds=nocloud를 사용하면 Seedfrom 값은 / 또는 file://로 시작해야 합니다. ds=nocloud-net을 사용하는 경우 seedfrom 값은 http:// 또는 https://로 시작하고 후행 /로 끝나야 합니다.
cloud-init 로그를 확인하면 다음과 같은 내용이 표시될 것입니다.경고.
업데이트:24.2 릴리스에서는 FTP가 cloud-init의 NoCloud 데이터 소스에 추가됩니다.