Linux에서 디스크 없는 PXE 이미지를 만드는 방법

Linux에서 디스크 없는 PXE 이미지를 만드는 방법

제목은 소개입니다. 이 문제를 해결하려면 Linux 전문가가 정말로 필요합니다. 이는 명백한 질문이 아니거나 적어도 나에게는 그렇지 않습니다. 나는 이 작업을 수행하는 방법을 정확히 알고 있으며 이전에도 해본 적이 있지만 이번에는 뭔가를 놓치고 있습니다. 이 경우 pxe 이미지가 부팅되지 않고 루트로 전환할 수 없습니다.

현재 이미지를 만들기 위해 내가 시도한 작업은 다음과 같습니다.

  1. 대상 하드웨어에 Linux Redhat 버전 7을 설치하고 설정합니다.

  2. "nfs" 및 "network" 모듈을 포함하는 사용자 정의 initramfs를 생성했습니다. 따라서 이미지가 온보드 하드 드라이브에서 부팅되어 작동합니다.

  3. rsync cmd를 사용하여 루트 파일 시스템을 복사한 다음 사용자 정의 initramfs와 일치하는 커널을 pxe의 tftpboot 서버에 넣습니다.

  4. fstab 파일을 지우고 하드 드라이브의 uuid를 주석 처리한 후 둘 다 시도합니다(fstab 비어 있거나 nfs에 루트 마운트된 fstab).

  5. initramfs 및 vmlinuz에 대한 권한 변경

  6. nfs 서버 서비스를 설정하고 no_root_squash 및 rw를 사용하여 루트 파일 시스템을 내보낼 수 있도록 만듭니다.

내가 겪고 있는 문제: 이미지가 px로 이동하여 vmlinuz를 실행한 다음 initramfs를 실행하지만 일단 스위치 루트에 도달하면 서비스가 실패합니다. 얼마 후 dracut 쉘로 들어가 dracut report/run/initramfs/rdsosreport.txt를 살펴보았는데 다음 줄 중 하나에 다음이 포함되어 있었습니다.

Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree. os-release file is missing initrd-switch-root.service: Main Process exited, code=exited, status=1/FAILURE 

확인해 보니 OS 릴리스 파일이 있고 대상 하드웨어 하드 드라이브의 작업 이미지에 있는 파일과 동일합니다(매번 성공적으로 부팅됩니다).

루트 파일 시스템이 있고 올바른 절대 경로를 사용하여 적절한 위치를 가리킵니다. 이것이 내 pxelinux.cfg 기본 줄입니다.

root=nfs:192.9.600.5:/correct/path/to/rootfilesystem  

또한 이 줄이 틀리거나 부정확할 때 dracut 치명적인 오류가 발생하고 dracut은 root=nfs... 등으로 무엇을 해야할지 몰랐거나 잘못된 이유로 루트 파일 시스템을 사용할 수 없는 경우 권한을 뱉어낼 것입니다. 경로 또는 권한이 부족합니다. 오류가 발생했습니다.

또한 루트를 전환하는 동안 pxe 서버에 대한 연결이 끊어진 것을 확인했습니다. 루트가 nfs에 있지만 nfs 및 네트워크 모듈이 있기 때문에 실패한 이유일 수 있습니다. 그렇지 않으면 initramfs가 switch-root.service가 실패하기 전에 발생합니까? 그래서 지금 이 시점에서 연결이 끊어지는 이유가 무엇인지 혼란스럽습니다. 특히 pxe 이미지가 생성되는 이미지에는 nfs가 있고 부팅 시 활성화되기 때문입니다.

나는 이것을 아무 소용없이 조사했지만 누군가 내가 뭘 잘못하고 있는지 지적하거나 문제의 원인을 찾는 데 도움을 줄 수 있다면 매우 감사하겠습니다.

답변1

NFS 버전의 잠금일 수 있습니다. 첫째, 매뉴얼에서는 부팅 옵션으로 root=nfs:server-ip:/exported/root/directory,vers=4.2를 사용할 것을 권장합니다. 작업 시스템에서 /root를 /mnt로 마운트하여 확인할 수도 있습니다.

  1. 올바르게 설치된 경우
  2. cat /proc/mounts는 기본 마운트에서 NFS 버전을 확인합니다.
  3. lsmod는 실제로 사용되는 모듈을 표시할 수 있습니다.

NFSv4에는 많은 파생 항목과 비호환성이 있고 NFSv3이 작동하려면 RPC 데몬이 필요하므로 NFS는 매우 까다롭습니다. 이는 때때로 혼란스러울 수 있습니다. 일부 디스크 없는 클라이언트를 실행할 때 initramfs의 모듈은 기본 시스템의 모듈과 매우 다르게 동작한다고 말할 수 있습니다.

dracut에서 NFS 마운트를 시도하고 결과를 제공할 수도 있습니다. tcpdumping 클라이언트 트래픽은 무슨 일이 일어나고 있는지 확인하는 데도 도움이 될 수 있습니다.

또한 다른 경고가 있는지 확인하기 위해 오늘 밤 최신 EL7을 부팅해 보겠습니다.

관련 정보