Sparc/Netboot/ko

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Sparc/Netboot and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎日本語 • ‎한국어 • ‎русский

이 글은 젠투/SPARC netboot 설치 이미지 활용을 위해 네트워크 부팅 서버 설정을 안내합니다.

도입부

참고
이 안내서는 현재 상당히 SPARC 중심적이며 기존의 젠투 리눅스 머신에 네트워크 부팅 서버를 설정하려는 여러분들을 위해 준비한 문서입니다.

이 문서는 썬 마이크로 시스템즈 SPARC 또는 울트라 스팍 기반 컴퓨터용 네트워크 부팅 환경 설정 방법을 설명합니다. 이 문서는 여러분이 네트워크 부팅 서버로 가동할 젠투 리눅스 컴퓨터를 이미 갖추고 있다고 가정합니다.

넷부트 서버와 클라이언트는 동일한 서브넷에 있어야 하는데 ARP 프로토콜이 보통 다른 네트워크 서브넷으로 전달하지 못하기 때문입니다.

네트워크 부팅 과정에서 일어나는 일의 대략적인 내용은 다음과 같습니다:

  1. 클라이언트 머신은 IP 주소를 요청하기 위해 역방향 ARP(RARP) 요청을 보냅니다.
  2. 서버 머신은 IP 주소를 클라이언트에 응답으로 반환합니다.
  3. 클라이언트에서 TFTP 프로토콜을 이용하여 RARP 서버에서 부팅 이미지 다운로드를 시도합니다.
  4. 이미지를 다운로드하고 나면 네트워크 부팅 클라이언트에서 이미지로 부팅합니다.

이 개요 내용에 따라 역방향 ARP 데몬과 TFTP 데몬 프로그램을 설치해야합니다.

프로그램 설치 및 설정

역방향 ARP 데몬

역방향 ARP 데몬은 이미 시스템에 설치되어 있습니다. net-misc/iputils 꾸러미의 일부입니다.

rarpd 일반 요소 설정 : /etc/ethers

/etc/ethers 파일을 설정해야합니다. 이 파일에는 어떤 호스트가 요청했을 경우 rarpd에서 응답해야 하는지, 어떤 주소로 응답해야 하는지 나타냅니다.

/etc/ethers 형식읜 NIC의 MAC 주소이며 머신은 네트워크 부팅을 수행하고 이 언급한 호스트 이름을 부여받습니다. 공백은 MAC 주소를 호스트 이름과 구분하며 각 항목은 한 줄에 기입합니다. 다음은 sparc-netboot.gentoo.org 이름을 가진 호스트에 대한 예제입니다:

파일 /etc/ethers
08:00:20:77:1f:3e  sparc-netboot.gentoo.org
참고
16진수가 0으로 시작하거나 0인 경우 첫번째 0은 생략할 수 있습니다(예를 들면 08:00:20:77:1f:3e 은 8:0:20:77:1f:3e이 됩니다).

/etc/ethers에 호스트를 추가하려 한다면, 요청을 받을 때마다 파일을 점검하므로 rarpd 서비스를 다시 시작할 필요가 없습니다.

호스트 이름 해석 : /etc/hosts

/etc/ethers에 있는 각 항목에 호스트 이름이 붙어있다면 네트워크 부팅 서버에서는 각 호스트 이름을 IP 주소로 해석할 수 있어야합니다. 두가지 방법으로 해결할 수 있는데, /etc/hosts 파일을 쓰거나 네트워크 부팅 서버에서 사용하는 이름 서버를 활용하는 방법입니다.

호스트 이름을 해석하는 /etc/hosts 항목은 네트워크 부팅 서버에 젠투를 설치했을때 이미 본 것과 매우 유사해보입니다. 우리 예제에서는 sparc-netboot.gentoo.org 호스트의 IP 주소가 10.0.1.15라고 가정하며 /etc/hosts 항목의 모습은 다음과 같습니다:

파일 /etc/hosts
10.0.1.15  sparc-netboot.gentoo.org
참고
환경에 따라 네트워크 관리자에게 적당한 IP 주소 또는 네트워크 부팅을 처리할 호스트의 주소를 달라고 요청해야 할 수도 있습니다.

이름 서버를 활용한다면 DNS 서버 관리자는 호스트 이름에 대한 레코드를 등록해야합니다. sparc-netboot.gentoo.org의 경우 적당한 IP 주소를 가리키려면 DNS 서버 관리자에게 문의하거나 DNS 서버의 DNS 프로그램 문서를 찾아 엔트리에 추가하는 방법을 알아보십시오.

참고
/etc/hosts 와 이름 서버 둘 다 호스트에 대한 항목을 네트워크 부팅 처리한다면 /etc/hosts 을 먼저 활용합니다(/etc/nsswitch.conf에 나타난 승인 순서는 기본으로, 바뀌지 않습니다).

rarpd 설정

우선 rarpd에 사용할 옵션을 결정해야합니다. 우리가 다룰 옵션 외에 다른 옵션도 있지만, rarpd 에 대한 init.d 스크립트가 현재 없으면 rarpd 서비스를 부팅할 때마다 활성화하려는 경우 /etc/conf.d/local.start에 추가해야 하기 때문에, 여기서 다룰 옵션으로 시작합니다. 예제 설정 항목은 다음과 같습니다:

파일 /etc/conf.d/local.start
/usr/sbin/rarpd -v -e eth0

위의 rarpd 옵션에 대한 설명은 다음과 같습니다(맨 페이지에서 가져온 그대로입니다):

  • -v 자세하게 뿌림.
  • -e 부팅 이미지가 있는지 여부는 확인하지 말고 /etc/ethers 데이터베이스와 DNS를 활용하여 MAC 주소를 유효한 IP 주소로 변환할 경우에 응답할 것.
  • eth0은 rarpd에서 바인딩해야 할 인더페이스를 나타냄.

더 많은 옵션은 man 8 rarpd를 참고하십시오.

tftpd 데몬

TFTP 데몬에 대해 두 가지 선택지가 있는데, 하나는 net-ftp/atftp, 다른 하나는 net-ftp/tftp-hpa입니다. 제대로 된 기능을 사용하려면 이 중 하나를 설치해야합니다.

tftpd 일반 요소 설정

각 TFTP 데몬은 tftp 클라이언트에 내용물을 전달할 디렉터리가 필요합니다. 우리가 이 설명서에서 언급한 목적으로 사용할 디렉터리는 /tftpboot 입니다. 이 디렉터리는 클라이언트 입장에서 요청에 대한 응답을 받을 때 루트 (/) 디렉터리처럼 나타납니다. 또한 TFTP 데몬을 nobody 사용자 및 그룹으로 실행하도록 설정하겠습니다.

현재 없는 디렉터리를 선택했다면 mkdir 명령으로 디렉터리를 만들어야 합니다. /tftpboot 디렉터리를 만드는 예제 명령은:

root #/bin/mkdir /tftpboot

다음 /tftpboot의 소유주를 바꾸어 소유 사용자와 소유 그룹을 nobody로 설정해야합니다:

root #chown nobody:nobody /tftpboot

atftp 데몬

우선 다음과 같이 net-ftp/atftp 꾸러미를 설치하십시오;

root #emerge --ask net-ftp/atftp

atftp를 설치하고 나면 설정해야합니다. tftpd 서비스를 부팅할 때 시작하려 한다면 init.d, inetd, xinetd 자체에 atftp가 없으니 추가해야합니다. tftpd 서비스를 관리할 때 inetd 또는 xinetd를 이용하려 한다면 관련 맨 페이지를 참조하십시오.

하단은 /etc/conf.d/local.start에 있는 atftpd 항목 예제입니다.

파일 /etc/conf.d/local.start
/usr/sbin/in.tftpd -v --daemon /tftpboot

위에 대한 설명은 다음과 같습니다(맨 페이지에서 가져온 그대로입니다):

  • -v 는 로깅 수준을 설정하거나 끌어올립니다. 인자를 붙이지 않으면 현지 값을 1로 증가합니다. 기본은 LOG_NOTICE입니다. 로그 레벨 옵션은 syslog(3)을 참고하십시오 현재 값 범위는 0 (LOG_EMERG) 부터 7 (LOG_DEBUG)까지입니다.
  • --daemon은 데몬으로 실행하도록 하는 옵션입니다. atftpd를 inetd 기반으로 실행하는 경우에는 이 옵션을 사용하지 마십시오.

더 많은 옵션은 man 8 atftpd를 참고하십시오.

tftp-hpa 데몬

우선 net-ftp/tftp-hpa 꾸러미를 설치하십시오:

root #emerge --ask net-ftp/tftp-hpa

tftp-hpa는 /etc/init.d 스크립트와 관련 /etc/conf.d 설정 파일이 딸려옵니다. /etc/conf.d/in.tftpd에서 INTFTPD_PATH 변수와 INTFTP_OPTS 변수 값이 아래와 일치하는지 확인하십시오:

파일 /etc/conf.d/in.tftpd
INTFTPD_PATH="/tftpboot"
INTFTPD_OPTS="-s -v -l ${INTFTPD_PATH}"

TFTP 데몬은 init.d 스크립트로 시작할 수 있습니다:

root #/etc/init.d/in.tftpd start

더 많은 옵션은 man 8 tftpd를 참고하십시오.

클라이언트에서 활용할 tftpboot 이미지 준비

네트워크 부팅에 사용할 이미지를 가지고 있는지 확인하십시오. 적당한 이미지를 받을로컬 젠투 배포 파일 미러를 확인하십시오. gentoo-sparc64-20100128.tftpboot 이미지를 활용하여 부팅해보겠습니다.

이미지를 받았으면 /tftpboot에 복사하십시오:

root #cp gentoo-sparc64-20100128.tftpboot /tftpboot
root #chmod 644 /tftpboot/gentoo-sparc64-20100128.tftpboot

이제 클라이언트에서 TFTP에 네트워크 부팅을 요청할 때, 현재 IP 주소를 16진수로 나타낸, 그리고 .ARCH 플랫폼 이름이 붙은 파일을 찾습니다. 16진수는 대문자로 사용하십시오.

여기 예제에서 10.0.1.15 IP 주소 대신 동일한 16진수 표기를 살펴보도록 하겠습니다:

user $printf "%.2X%.2X%.2X%.2X\n" 10 0 1 15
코드 IP 주소 예제
decimal       10  0   1   15
hexadecimal   0A  00  01  0F

네트워크 부팅 클라이언트의 예제에서 tftp 부팅을 진행할 때 0A00010F 파일을 찾을 것입니다.

정말 (저처럼) 엄청나게 귀찮고 게으르다면 네트워크 부팅 서버 로그로부터 클라이언트가 찾고자 하는 파일 이름을 찾을 목적으로 네트워크 부팅을 처리할 수 있습니다.

rarpd와 여러분이 선택한 TFTP 데몬이 현재 동작중인지 확인하시고 클라이언트 넷부팅에 설명한 대로 호스트를 통해 부팅하십시오.

boot net 명령을 실행하고 나면 클라이언트가 멈춘것 처럼 보일 것입니다. 이때 네트워크 부팅 서버에서 in.tftpd에 대한 시스템 로그를 살펴보십시오.

sysklogdtftp-hpa가 실행중인 네트워크 부팅 서버에서의 로그 항목 예제는 다음과 같습니다:

코드 netboot 서버의 기록 항목
Jan  3 22:48:59 stargazer in.tftpd[8368]: RRQ from 10.0.1.15 filename 0A00010F

위의 경우 로그 항목에서 나타난 filename 다음의 파일 이름은 0A00010F 입니다.

위의 방법을 통해 어떤 네트워크 부팅 이미지를 사용하는지 찾아보았고, 여러 대의 머신에서 동일한 네트워크 부팅 이미지를 사용할 수 있도록, 16진수 값을 이용하여 파일에 소프트 링크를 걸어둘 수 있습니다. sparc64 예제 호스트와 gentoo-sparc64-20100128.tftpboot를 활용하여 소프트 링크를 만들려면 다음 명령을 사용하십시오:

root #/bin/ln -s /tftpboot/gentoo-sparc64-20100128.tftpboot /tftpboot/0A00010F

이제 네트워크 부팅 준비가 다 되었습니다!

클라이언트 넷부팅

SPARC의 OpenBoot PROM(OBP)에서 다음 명령을 입력하십시오:

okboot net

이런 머신에서 다른 방법이 있다면:

okboot net-tpe
참고
시스템을 부팅할 때 OBP가 나타나지 않는다면, 시스템에서 OS로 부팅하기 전에 Stop + A 키를 누르거나, 직렬 콘솔로 중단 시그널을 보내야합니다. 만약 시스템에서 OS를 찾지 못한다면, 네트워크 인터페이스를 통해 (우리가 원하는대로) 부팅을 시도하거나 OBP 프롬프트를 띄워야합니다.

이 조치를 통해 네트워크 부팅 과정을 초기홯바니다. 16진수 숫자를 일관되게 바꿨을 때 바꾼 결과가 나타나야 합니다. 이미지 불러오기가 끝나면 커널을 취하고 OS 부팅 과정을 시작합니다. sparc64 설치 이미지를 활용하는 경우 어떤 설치 과정을 시작할 수 있는지 나타난 쉘 프롬프트 상태에서 대기합니다.

문제 해결

필수 프로그램 빌드

네트워크 부팅 서버가 젠투 리눅스 시스템이고 rarpd와 tftpd 꾸러미를 설치한 다음에 문제가 발생했다면 젠투 포럼젠투 버그질라에서 이미 다른 사람이 발견한 문제인지 확인하십시오. 만약 그렇지않거나 발견한 해결책이 도움이 되지 않는다면 새 문제점 보고서를 작성하십시오.

boot net 명령을 실행했는데 멈춰있는 것 같네요.

불러올 파일이 tftpboot 서버에 없는 것 같습니다. SPARC 시스템에서는 다음처럼 나타날수도 있습니다:

코드 대기 상태에 걸린 부팅 과정
Rebooting with command: boot
Boot device: net  File and args:

클라이언트가 필요로 하는 파일이 /tftpboot에 있는지 다시 확인하십시오. 시스템 로그를 살펴보고 클라이언트가 요청하는 파일 이름을 확인할 수 있습니다. 또한 이 파일이 있으면 클라이언트에서는 불러오려합니다. 때로는 파일이 원래 빠져있을 경우 파일 다운로드 메시지가 뜬 이후 멈춥니다. 이 문제를 해결하려면 OBP 프롬프트로 돌아가서 boot net 명령을 다시 실행하십시오. 그러면 호스트에서 tftpboot 이미지 다운로드를 시작하고 OS를 부팅합니다.

네트워크 부팅을 하려는데요, 항상 "Timeout waiting for ARP/RARP packet" 메시지가 나타나네요.

몇가지 다른 문제 때문에 일어날 수 있는 문제입니다:

  1. /etc/ethers 에 질문을 해결해줄 항목이 있는지 확이하십시오. MAC 주소가 잘못됐거나 네트워크 부팅 서버에서 클라이언트의 호스트 이름을 해석할 수 없다면 필요한 정보로 응답할 수 없습니다.
  2. 네트워크 부팅 서버와 클라이언트가 자유롭게 RARP 트래픽을 처리할 수 있도록 연결했는지 네트워크 허브 또는 스위치를 확인하십시오. 만약 클라이언트 요청이 서버에 도달하지 않거나 그 반대의 경우라면, 호스트는 그 다음 동작을 계속 진행할 수 없습니다.
  3. RARPD 응답이 없는건 어떤 서비스도 대기중이 아니기 때문입니다. rarpd 서비스를 띄워놓았고 동작중인지 확인하십시오.
  4. 클라이언트의 NIC가 네트워크 허브 또는 스위치에 연결한 것 같지 않습니다. NIC 및 네트워크 허브 또는 스위치의 포트에 불이 들어왔는지 확인하십시오. 불이 들어와있으면 OBP에서 printenv tpe-link-test? 명령을 내려 tpe-link-test? 의 설정 값을 확인하십시오. tpe-link-test? false true와 같은 결과가 떠야합니다. 첫번째 내용은 매개변수 이름, 두번째 내용은 매개변수 현재 값, 세번째 내용은 매개변수의 기본값을 나타냅니다. 위 예제에서 현재 값이 false로 되어 있음을 확인할 수 있으며, 클라이언트와 네트워크 허브 또는 스위치가 RARP 요청을 처리하기 전에 연결을 처리할 수 있는지 검사를 안한다는 의미가 되겠습니다. 종종 이 설정이 문제를 야기할 수 있습니다.

tpe-link-test?의 값을 바꾸려면 OBP 프롬프트에서 다음 명령을 실행해보십시오:

oksetenv tpe-link-test? true
tpe-link-test? =      true
이제 tpe-link-test? 값을 true로 설정했습니다. 클라이언트의 네트워크 부팅을 다시 시도해보십시오.
This article is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: weeve, nightmorph
They are listed here as the Wiki history does not allow for any external attribution. If you edit the Wiki article, please do not add yourself here; your contributions are recorded on the history page.