pxe 부팅을 이용할 경우에는 첫번째 CD의 images 디렉토리가 필요하므로 추가로 이 디렉토리도 복사해주어야한다.
cp -arv /mnt/cdrom/images /export/centos
iso 이미지를 이용하면 더 간편하다. 아래와 같은 형태를 이용하면 된다.
mount -o loop CD1.iso /location/of/disk/space/disc1/
cd /root/iso
mount -o loop CentOS-4.3-i386-bin1of4.iso /export/centos/disc1
mount -o loop CentOS-4.3-i386-bin2of4.iso /export/centos/disc2
mount -o loop CentOS-4.3-i386-bin3of4.iso /export/centos/disc3
mount -o loop CentOS-4.3-i386-bin4of4.iso /export/centos/disc4
그런데 NFS를 이용하는 경우 ISO 이미지를 NFS 설치디렉토리에 복사해두면 훨씬 더 간편하다. 위에서 /export/centos/ 에 iso 이미지 네장을 넣어두고 설치시 이 디렉토리를 지정하면 된다. 그렇지만 아래에서 pxe 부팅을 세팅할때 이미지파일, 커널등을 복사해야하기때문에 특정 디렉토리로 몰아넣는 것이 좋다. loop 로 mount 한 것이 nfs에서는 보이지 않는 문제도 있다. 이유는???
네트워크설치를 하려면 설치시 askmethod 옵션을 이용하면 된다.
linux askmethod
설치에 지정하는 디렉토리는RedHat/ (또는CentOS) 배포 디렉토리를 포함하지 않고 이 디렉토리까지에 이르는 하부 디렉토리들을 의미합니다. 예를 들어 Red Hat Enterprise Linux 4 설치 파일이 설치 서버에서 /export/rhel/에 위치한다면, /location/of/disk/space/는 /export/rhel/이 됩니다. 미러한 사이트의 경우 centos/4.4/os/i386/ 가 될 것입니다. centos 앞의 디렉토리는 미러한 디렉토리에 따라 다르겠지요.
설치는 nfs를 이용. 아래에서 설치방법은 nfs 를 이용하고 있으며 server, dir만 설정에 따라 조정하면 된다. X-windows 설정은 제외하였다. network는 dhcp 이용. 고정 ip를 등록해놓고 부팅후 바꾸어도 된다. root 비밀번호는 암호화해서 저장함. 파티션부분은 시스템마다 다를 수 있으므로 주석처리하면 설치시 물어봄. 아래는 sda 에서 ext3 로 /boot 100M를 만들고 나머지 공간을 물리적 볼륨, 볼륨 그룹으로 할당한후 로지컬 볼륨으로 swap 256M , 나머지 공간 / 로 할당한다. 패키지 목록은 admin-tools, editors(vi때문에 필요), x 윈도우 관련하여 base-x 와 gnone-desktop (서버운영할 목적이라면 x는 빼도 됨), legacy-software-development (이전 버전과의 호환성을 위해 필요), development-tools (개발을 위해 필요. gcc 등) 등을 선택하였다.
서버용이라면 아래의 그룹과 패키지만 선택해도 될 것이다.
설치패키지그룹 admin-tools editors development-tools
추가 패키지 vsftpd (mysql-server) (httpd) (php) (php-mysql) sysstat mc
post는 설치후 작업하는 스크립트이며 불필요한 서비스를 자동으로 내리는 역할을 한다. nameser를 지정하고 ssh 키를 가져오는 부분이 있다. psot는 chroot 환경에서 작동을 하며 이 상태에서는 아직 dns정보를 가지고 있지 않다. 그래서 코넷의 dns를 지정하고 /root/.ssh 디렉토리를 만든후 cent.tunelinux.pe.kr 서버의 root 계정의 공개키를 복사하여 cent.tunelinux.pe.kr 서버에서 root로 자동로그인하도록 한 것이다. 초기 작업은 root 권한이 많이 필요한데 좀더 편안하게 작업을 할 수 있도록 해 놓은 것이다.
# Kickstart file automatically generated by anaconda.
install
nfs --server=192.168.202.100 --dir=/home/taejun/iso
lang ko_KR.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8 ko_KR.UTF-8
keyboard us
#xconfig --card "VMWare" --videoram 16384 --hsync 31.5-37.9 --vsync 50-70 --resolution 800x600 --depth 16 --startxonboot --defaultdesktop gnome
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$Q.jKpF0a$lxii4oW6QbxBRdIGZhxty1
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Asia/Seoul
bootloader --location=mbr --append="rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.2 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=256 --grow --maxsize=512
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@ admin-tools
@ editors
@ gnome-desktop
@ ftp-server
@ network-server
@ legacy-software-development
@ base-x
@ development-tools
%post
#!/bin/bash
for target in `ls /etc/init.d/ /etc/xinetd.d/ | egrep -v "/etc/init.d|/etc/xinetd.d" | egrep -v "rpmsave|rpmnew" | egrep -v 'auth|functions|halt|killall|single'`
do
/sbin/chkconfig --level 345 $target off
done
SERVICE="crond irqbalance network sshd syslog sysstat vsftpd xinetd"
/sbin/chkconfig --level 345 auth off
for service_target in $SERVICE
do
/sbin/chkconfig --level 345 $service_target on
done
echo "nameserver 168.126.63.1" > /etc/resolv.conf
cd /root
mkdir .ssh
cd .ssh
wget http://cent.tunelinux.pe.kr/authorized_keys
chmod 600 authorized_keys
설정에서 네임서버를 포함하여 고정ip로 하였다면 %post 섹션에서 ip 주소를 질의할 수 있지만 dhcp로 설정을 한 경우에는 /etc/resole.conf 파일이 생성되지 않은 상태이므로 스크립트에서 다른 서버에 접속할 일이 있다면 ip로 질의를 해야한다.
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/s1-kickstart2-postinstallconfig.htmlIf you configured the network with static IP information, including a nameserver, you can access the network and resolve IP addresses in the %post section. If you configured the network for DHCP, the /etc/resolv.conf file has not been completed when the installation executes the %post section. You can access the network, but you can not resolve IP addresses. Thus, if you are using DHCP, you must specify IP addresses in the %post section.
system-config-netboot 를 이용하여 세팅하겠음 상세 내용은 참고자료를 이용함. 이 프로그램을 실행하고 네트워크 설치를 골라서 1차 진행함.
이 화면에서 Operating system identifier 에 적당한 이름을 입력하고 필요에 따라 킥스타트 파일이름을 적고 프로토콜, 서버 ip 주소와 위치를 지정하면 해당 ip와 위치에서 부팅에 필요한 파일을 가져와 /tftpboo/linux-install/Operating system identifier 에 initrd.img vmlinuz 를 복사한다. 여기서 Operating system identifier 에는 cent 를 넣었다고 하고 진행. (한글화면일 경우에는 설정-네트워크 설치)
PXE Boot Configuration
Adding PXE Hosts
이렇게 진행하면 여러가지 디렉토리와 파일을 손댄다.
/tftpboot/linux-install/centos 디렉토리를 생성하고 부팅관련한 파일을 복사함. /tftpboot/linux-install/pxelinux.cfg 디렉토리에 default, pxeos.xml 파일 생성하며 여기서 pxeos.xml은 설정내용을 저장하고 있고 default 가 부팅되고나서의 옵션을 정함. /tftpboot/linux-install/msgs 파일에 해당 OS 추가
여기서 설정하는 kickstart 파일도 원격에서 이용할 수 있으므로 nfs:192.168.40.11:/export/centos/ks222.cfg 와 같이 지정하면 편리하게 사용할 수 있다.
이제 특정 네트워크 또는 ip와 앞에서 정의한 os를 연결시켜주는 작업을 해야 한다.
여기서 호스트명에 192.168.40.0 이라고 넣으면 해당 네트워크 대역을 모두 포함하는 것이다. (c 클래스)
여기서도 킥스타트파일을 넣어주는 것이 있다. 그러나 여기 넣어준다고 바로 작동하지 않는다. /tftp/linux-install/pxelinux.cfg/ 디렉토리에 아래와 같은 내용이 생기는데 이것을 참고로 해서 위의 default 파일을 수정해주든지 하면 된다. pxelinux.0 프로그램에서 설정파일을 읽을때 가장 먼저 찾는것을 이용한다. 클라이언트의 ip를 가지고 10진수를 16진수로 바꾸어 이에 해당하는 파일명을 찾는다. 예를 들어 192.168.0.11 은C0A8000B이다. 해당파일이 없으면 default 파일을 읽는다. 일반적으로 여러대의 서버에 설치를 할 경우에는 이 방식을 쓸 필요는 없고 default 파일을 조정하여 같은 버전이라고 하더라도 kickstart 파일만 여러개 지정하여 이용하도록 하면 될 것이다.
위와 같이 하여 모든 테스팅을 마쳤다면 자기 상황에 맞게 조절하여 사용하자. 위에서 OS버전별로 구분할 수도 있고 웹, 메일 등 서버의 기능에 따라 분리할 수도 있다. OS버전에 따라서 조정을 하고 kickstart 파일을 조정하여 세부 세팅을 하면 편리하게 이용이 가능하다.
여기서 좀 더 나간다면 새로운 서버를 추가하거나 삭제하는 경우 서버등록, dns 등록, ip 부여등을 자동으로 하는 스크립트등을 만들어서 이용할 수 있을 것이다.
http://www.systemrescuecd.org/http://tunelinux.pe.kr/zboard/view.php?id=tip&no=42systemrescuecd 는 간단히 말해 리눅스용 고스트프로그램으로 생각하면 되며 시스템에 문제가 발생하였을 경우 cd에서 부팅해 작업할 수 있는 프로그램이고 partimage 를 이용하여 파티션을 다른 곳으로 옮기거나 복구할 수 있다. 이 cd를 다운로드받아 pxe로 부팅되는 것을 확인해보았다. systemrescuecd 는 젠투기반이며 라이브cd같은것을 생각하면 된다. Knoppix 등 다른 배포판도 동일하게 작업을 할 수 있으리라 예상이 된다.