[질문] Diskless linux가 제대로 실행이 되지 않네요.
지금 diskless 리눅스를 네트워크로 부팅 할라고 합니다.
서버에 tftp, dhcpd, nfs를 설치하고 세팅까지 했습니다.
그리고 전부 데몬을 띄운 후 클라이언트를 부팅을 하면 DHCP로 ip까지는 받아 옵니다.
그런데 그 다음에 아래의 메시지를 뿌리고 끝납니다.
---------------------------------------------------------------------
PXE - E79 : NBP is too big to fit in free base memory
PXE - M0F : Exiting Intel Boot Agent
Boot Failure System Halted
---------------------------------------------------------------------
제 생각에는 tftp 설정이 뭔가 잘못된거 같은데 뭐가 잘못됬는지 모르겠습니다.
고수님들의 많은 지도 편달 부탁드립니다.
참조.
서버와 클라이언트는 같은 네트웍에 존재하며 서버의 ip는 190.1.171.1 클라이언트의 ip는 190.1.171.2 입니다.
-----------------------------------------------------------------
tftp 세팅 정보
-----------------------------------------------------------------
#vi /etc/xinet.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
disable = no
bind = 190.1.171.1
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
}
-----------------------------------------------------------------
-----------------------------------------------------------------
/var/log/messages 중 마지막 부분
-----------------------------------------------------------------
Oct 9 11:03:37 koux1 dhcpd: from the dynamic address pool for WORKSTATIONS
Oct 9 11:03:37 koux1 dhcpd: DHCPREQUEST for 190.1.171.2 from 00:03:47:31:de:d6 via eth0
Oct 9 11:03:37 koux1 dhcpd: DHCPACK on 190.1.171.2 to 00:03:47:31:de:d6 via eth0
Oct 9 02:03:37 koux1 in.tftpd[4332]: tftp: client does not accept options
-----------------------------------------------------------------
koux1 은 서버의 host명 입니다.
"tftp: client does not accept options" 이 메시지를 보고 tftp가 잘못되었다는 생각을 해봅니다.
-----------------------------------------------------------------
netstat -lnu 정보입니다.
-----------------------------------------------------------------
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
....중략...
udp 0 0 190.1.171.1:69 0.0.0.0:*
....중략...
-----------------------------------------------------------------
혹시 State 에 LISTEN 이 뜨지않아서 그런가요?
[quote]PXE - E79 : NBP is too big to fit
저도 예전에 노트북에 리눅스 깔면서
TFTP 땜에 한 참 삽질했었는데,
저도 여기서 한 번 헤맸었죠.
문제는 부팅 이미지가 너무 "커서" 입니다.
용량이 정확히 기억 나진 않지만...
랜카드의 boot ROM 이 수용할 수 있는 최대 용량이
640K인듯하더군요 ^^
(제가 사용하는 노트북의 랜카드는 eepro100 입니다. )
그리고, 7~8000원 정도 하는 realtek 계열 저가 랜카드 는
아예 boot ROM 이 없으므로 네트웍 부팅이 안되는점 참고 하시기
바랍니다. 그런 랜카드에 보면 칩이 꽂히지 않은 큰 슬롯(?) 이
보이는데 그게 boot ROM 자리더군요~
해결 방법을 말씀 드리자면,
일단 님께서 시도하는 컴에 꽂힌 랜카드에 boot ROM 이 장착된게
맞는지 일단 확인을 해보시구요. 맞다면,
서버의 TFTP 부트 이미지를 지정할때
배포본 CD 1번장(레드햇 기준입니다)의
.....images/pxeboot/initrd.img
이 파일로 해줘야 합니다.
처음에 이름만으로 bootnet.img 이미지로 시도하다가
한참 삽질 했었죠 ~
그럼~~~~~성공하시길 바랍니다. ^^
##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.
잘 안되서 그러는데요......ㅡㅡ;
제가 쓰고있는 LAN카드는 "Intel Server Board SE7501HG2" 보드에
딸려있는 "Dual Intel PRO 1000 Ethernet Connect Ethernet Connect"
이것 입니다.
판 사람 말로는 rom booting이 된다고 말했고 보드에서 CMOS에서 지원하는 기능으로 부팅을 하는데 이것이 정확히 boot rom이 있는지는 모르겠습니다.
그래서 일단 boot rom이 있다고 생각하고 님이 말씀하신 대로 레드헷 7.3 배포판 CD의 "/mnt/cdrom/images/pxeboot/initrd.img" 이 파일을 /tftpboot/vmlinuz로 이름을 바꾸어 복사를 했습니다.
그리고 다시 부팅을 해도 똑같이 않되는데요.
제가 뭘 잘못한건가요?
에러 메세지도 그대로인가요????
에러 메세지도 그대로인가요????
##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.
이걸 보고 고쳐서 해보세요.
1. /etc/dhcpd.conf 설정 내용
allow booting;
allow bootp;
option subnet-mask 255.255.255.0;
option domain-name "cluster.com";
option broadcast-address 192.168.2.255;
default-lease-time 21600;
max-lease-time 43200;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.4;
}
group {
next-server 192.168.2.1;
filename "pxelinux.0";
host node02s {
hardware ethernet 00:07:E9:D5:17:08;
fixed-address 192.168.2.2;
}
host node03s {
hardware ethernet 00:07:E9:F6:CB:D1;
fixed-address 192.168.2.3;
}
host node04s {
hardware ethernet 00:07:E9:F6:B9:09;
fixed-address 192.168.2.4;
}
}
위의 파일에서 nfs 서버의 ip는 192.168.2.1 이고 나머지 것들은 2.2~ 2.4
까지입니다. 물론 실제는 더 많은데 네개만 썼죠. 여기서 부팅이 잘되게 할려면
eepro100의 mac address를 제대로 다 적어주기 바랍니다.
각각의 hostname은 node01s, node02s, node03s, node04s 등입니다.
2. /etc/xinetd.d/tftp 는 다음과 같읍니다.
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
}
/tftpboot 아래에는 다음과 같은 파일들을 둡니다.
1. bzImage-2.4.20-nfsroot : nfs root 마운트가 가능한 커널 (새로
컴파일 했읍니다.)
2. initrd-2.4.18-3.img ( /boot 아래에 있는 것을 복사 )
3. pxelinux.0 : syslinux 에서 다운받은 pxebooting 실행파일 (syslinux가 아주 깔끔하게 잘 되더군요)
4. pxelinux.cfg 디렉토리 생성
5. /tftproot/pxelinux.cfg/default : pxelinux 부팅 설정파일
default 파일의 설정내용은 다음과 같읍니다.
LABEL linux
KERNEL bzImage-2.4.20-nfsroot
APPEND init=/sbin/init root=/dev/nfs ip=:192.168.2.1::255.255.255.0::eth1:'bootp'192.168.2.1:/tftpboot/%s
그리고, /tftpboot 아래에 192.168.2.2, 192.168.2.3, 192.168.2.4 등의 디렉토리를 만들고 거기에 /bin /etc 등등 실제 client 에서 / 아래에 들어갈 파일들을 전부 둡니다. 이 내용은 diskless cluster에 관한 파일을 살펴보시면 됩니다.
이상과 같이 설정하면 다음과 같은 부팅과정을 거쳐서 클라이언트는 부팅을 하게 되지요.
1. dhcp를 통해서 ip를 받아온다.
2. tftp를 통해서 /tftpboot 아래의 pxelinux.0 파일을 로딩하고 이것이 부트로더의 역할을 한다.
3. pxelinux.0는 /tftpboot/pxelinux.cfg/default 를 읽어들인다.
4. pxelinux.0는 default 에 따라서 /tftpboot/bzImage-2.4.20-nfsroot와
initrd-2.4.18-3.img를 다운로드 받아서 부팅을 시작한다.
5. 그리고 default 안에 있듯이 /tftpboot/%s (여기서 %s가 dhcp로 받아온 ip로 대체됨) 디렉토리 안의 내용을 /로 nfs 마운트 한다.
이상의 과정을 거치게 되는 것이지요.
물론 각각의 192.168.2.x 디렉토리 안의 /etc/ 안에는 그 클라이언트에 적합한 ip address, hostname 등등을 다 바꿔서 둬야겠지요.
날잡아서 정리해야하는데... 게을러서...
부팅커널을 만들때는 module을 사용해서 네트웍 드라이버를 올리면 안됩니다. 왜냐면, 네트웍 모듈이 따로 있으면, nfs마운트를 해야만 네트웍 모듈을 올리게
되는데, 네트웍 모듈이 안올라오면 nfs마운트가 안되므로 부팅에 성공할 수
없지요. 따라서 nfs-root 마운트 커널을 만들때는 모듈을 사용하지 않고 커널에
bulti-in을 해야합니다.
그리고, 인텔의 eepro100 계열은 버퍼사이즈가 충분하고 네트웍 부팅커널이
부팅롬에 올라가는 것이 아니므로 커널의 크기 여부는 상관이 없읍니다. 단지
네트웍에서 로딩하는것은 pxelinux.0 라는 부트로더뿐입니다. 이 부트로더가
네트웍으로 커널을 다운받아서 자신의 메모리에 올리게 됩니다.
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
아 한가지가 더 있군요...앞서 질문올리신 내용을 보니 e1000 드
아 한가지가 더 있군요...
앞서 질문올리신 내용을 보니 e1000 드라이버인데
PXE는 OS independent하니까 일단 아이피를 받아오는데는 문제가 없지만, OS를 받아온다음에는 다시 부팅에 실패하지요. 왜냐면,,, 레드햇 7.3시디안에 들어있는
이미지에서는 e1000 드라이버가 없으니까요. 따라서 커널을 새로 받아서(2.4.18에 있는 e1000은 동작불능 버전입니다.) - 2.4.20 이 좋겠네요 - 네트웍모듈까지 다 넣어서 컴파일해서 pxe 부팅커널이미지로 만들어서 tftpboot 안에 넣어둬야합니다.
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
댓글 달기