본 글의 최신내용은 "http://www.hwport.com/wiki.php/UsingBOOTP (새 창으로 열기)" 에서 보실수 있습니다.
BOOTP를 이용한 원격부팅 (새 창으로 열기)
- 작성자조재혁(
minzkn@minzkn.com) - 고친과정2010년 8월 10일 : 처음씀
시작하기전에
필자는 서버와 넷북을 이용하는데 넷북에는 ODD장치가 없습니다. 이 경우 넷북에 OS한번 설치하려면 매우 복잡해집니다. 서버는 있으니 서버로부터 원격 부팅을 할수 있으면 좋겠다는 생각을 많이 했었는데 그 해답이 있었습니다. 바로 BOOTP가 되겠습니다. 이제 PXE를 지원하는 BIOS를 가진 컴퓨터는 모두 원격부팅할수 있게 환경을 구축해보려고 합니다.Kernel 설정
Gentoo Linux환경에서 Gentoo LiveCD (새 창으로 열기)를 이용한 원격 부팅구축
설명의 편의를 위해서 다음과 같은 환경변수를 사용하겠습니다.export PATH_LIVECD="/mnt/cdrom" export PATH_TEMP="/tftpboot/tmp" export PATH_TFTPROOT="/tftpboot"
mkdir -p ${PATH_LIVECD}
mkdir -p ${PATH_TEMP}
mkdir -p ${PATH_TEMP}/gentoo.init.dir
mkdir -p ${PATH_TFTPROOT}
mkdir -p ${PATH_TFTPROOT}/netboot
mkdir -p ${PATH_TFTPROOT}/netboot/pxelinux.cfg
mkdir -p ${PATH_TFTPROOT}/netboot/gentoo
emerge net-misc/dhcp
option domain-name "example.com";
option domain-name-servers 168.126.63.1, 168.126.63.2, 210.94.0.7, 164.124.101.2, 203.248.252.2, 210.181.1.24, 203.255.112.34;
default-lease-time 600;
max-lease-time 7200;
# <<< 이 부분 추가 >>>
allow booting;
allow bootp;
ddns-update-style none;
log-facility local7;
subnet 10.0.0.0 netmask 255.0.0.0 {
option broadcast-address 10.255.255.255;
option routers 10.0.0.1;
# <<< Booting 에 이용할 pxelinux.0의 위치 및 TFTP server IP주소 설정 >>>
filename "netboot/pxelinux.0";
next-server 10.0.0.1;
pool {
range 10.0.0.100 10.0.0.200;
allow unknown-clients;
}
# group {
# host bootp_client {
# hardware ethernet XX:XX:XX:XX:XX:XX;
# fixed-address 10.0.0.200;
# }
# }
}
emerge net-ftp/tftp-hpa
emerge sys-boot/syslinux
cp /usr/share/syslinux/pxelinux.0 ${PATH_TFTPROOT}/netboot
cp /usr/share/syslinux/memdisk ${PATH_TFTPROOT}/netboot
mount -o loop install-XX-minimal-XXXXXXXX.iso ${PATH_LIVECD}
cp ${PATH_LIVECD}/isolinux/gentoo ${PATH_TFTPROOT}/netboot/gentoo
cd ${PATH_TEMP}/gentoo.init.dir
gunzip -c ${PATH_LIVECD}/isolinux/gentoo.igz | cpio -idv
mkdir -p ${PATH_TEMP}/gentoo.init.dir/mnt/cdrom
cp ${PATH_LIVECD}/isolinux/image.squashfs ${PATH_TEMP}/gentoo.init.dir/mnt/cdrom
cp ${PATH_TEMP}/gentoo.init.dir/init ${PATH_TEMP}/gentoo.init.dir/init.org
-- if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ]
++ if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] && [ "${REAL_ROOT}" != "/" ]
-- elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ]
++ elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ] || [ "${REAL_ROOT}" = "/" ]
-- cache_cd_contents
-- mount -t squashfs -o loop,ro ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd
++ mount -t squashfs -o loop,ro /mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd
cd ${PATH_TEMP}/gentoo.init.dir
find . -print | cpio -o -H newc |gzip -9 -c - > ${PATH_TFTPROOT}/netboot/gentoo/initrd.gz
default gentoo_x86 prompt 1 timeout 600 label gentoo_x86 kernel gentoo/gentoo append initrd=gentoo/initrd.gz ip=dhcp root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/ vga=normal dokeymap label local LOCALBOOT 0



글
댓글을 달아 주세요
댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/573댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/573