1.2 목적 #
Kickstart system을 이용하여 리눅스 시스템을 자동 설치하며
네트웍 부팅을 이용한 설치로 리눅스 설치CD가 전혀 필요 없으며
새로운 버전이나 다양한 버전의 리눅스 설치시에 아주 유용하게 사용할 수 있다.
부팅만 시켜두면 이것저것 설정할 필요가 없으므로 아주 짧은 시간에 리눅스를 셋업할수 있다.
네트웍 부팅을 이용한 설치로 리눅스 설치CD가 전혀 필요 없으며
새로운 버전이나 다양한 버전의 리눅스 설치시에 아주 유용하게 사용할 수 있다.
부팅만 시켜두면 이것저것 설정할 필요가 없으므로 아주 짧은 시간에 리눅스를 셋업할수 있다.
1.3.1 필요한 것들 #
- DHCP 서버: 리눅스가 설치될 클라이언트에게 IP를 할당해주고 TFTP서버에서 이미지를 받게 해주는 역할을 한다.
- TFTP 서버: PXE 부팅시 리눅스 부팅용 커널과 램디스크 이미지를 제공
- NFS 혹은 FTP,HTTP 서버: 설치용 파일들을 제공.
1.3.2 Kickstat 로 설치되는 과정의 이해 #
1. 설치할 시스템 네트워크 부팅(왠만한 컴퓨터는 PXE 부팅을 지원한다. bios에서 설치 순서를 network로 가장 먼저 잡아준다.)
2. 시스템은 DHCP에 IP를 request 하고 IP를 할당 받음
3. DHCP 에 설정된 TFTP 서버에서 pxelinux.0 파일을 다운받아 실행함.
4. pxelinux.0 은 pxelinux.cfg 디렉토리에 설정된 파일(ex. /tftboot/pexlinux.cfg/default) 로딩
5. 커널 로딩 및 ks 파일 로딩
6. Kickstart config 파일에 설정된 대로 자동으로 리눅스 설치
2. 시스템은 DHCP에 IP를 request 하고 IP를 할당 받음
3. DHCP 에 설정된 TFTP 서버에서 pxelinux.0 파일을 다운받아 실행함.
4. pxelinux.0 은 pxelinux.cfg 디렉토리에 설정된 파일(ex. /tftboot/pexlinux.cfg/default) 로딩
5. 커널 로딩 및 ks 파일 로딩
6. Kickstart config 파일에 설정된 대로 자동으로 리눅스 설치
1.3.3.1 DHCP 서버 설치 및 설정 #
1. yum install dhcp
2. vi /etc/dhcpd.conf
/etc/init.d/dhcp start
2. vi /etc/dhcpd.conf
ddns-update-style ad-hoc;
allow booting;
allow bootp;
default-lease-time 60;
max-lease-time 60;
option subnet-mask 255.255.255.0;
option domain-name-servers 네임서버IP;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server TFTP서버;
filename "pxelinux.0";
}
#Windows 클라이언트 클래스 설정
class "ms-clients" {
match if substring (option vendor-class-identifier, 0, 4) = "MSFT";
}
# DHCP 서버가 돌고 있는 리눅스 머신 클래스 설정
class "linux-dhcp" {
match if substring (option vendor-class-identifier, 0, 5) = "Linux";
}
subnet 네트워크주소(ex.192.168.0.0) netmask 255.255.255.0 {
option routers GATEWAY주소;
option broadcast-address 브로드캐스트 주소;
pool {
deny members of "ms-clients";
deny members of "linux-dhcp";
range dynamic-bootp 192.168.0.1 192.168.0.10 ;(dhcp로 할당할 아이피 범위)
}
}
3. DHCP 서버 구동/etc/init.d/dhcp start
1.3.3.2 TFTP 서버 설치 및 설정 #
1. TFTP 서버 설치
yum install tftp-server
2. vi /etc/xinetd.d/tftp
/etc/init.d/xinetd start or restart
yum install tftp-server
2. vi /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
flags = IPv4
}
3. TFTP서버 데몬 구동/etc/init.d/xinetd start or restart
1.3.3.3 NFS 서버 설치 및 설정 #
1.NFS 서버 설치
각 버전별로 설치 지원을 위해서 디렉토리를 만들고 거기에 CD이미지를 복사해 준다.
vi /etc/exports
/etc/init.d/nfs start
yum install nfs-utils
2. NFS 서비스를 위한 디렉토리 생성 및 CD 이미지 복사각 버전별로 설치 지원을 위해서 디렉토리를 만들고 거기에 CD이미지를 복사해 준다.
mkdir /pub/CentOS/{4,5,6}
mkdir /ks //ks.cfg 파일을 저장할 디렉토리
cp -a CD이미지 /pub/CentOS/4
3.NFS 서버 공유 설정vi /etc/exports
/pub/CentOS *(ro) //읽기 전용으로 공유 /ks *(ro)4. NFS 서버 시작
/etc/init.d/nfs start
1.3.3.4 PXE boot 설정 #
1. pxelinux.0 복사
설치할 시스템이 부팅되면서 dhcp에서 IP를 할당 받고 tftp 서버에서 pxelinux.0 파일을 읽게 된다.
pxelinux.0 파일은 syslinux 패키지에 들어있으며 대부분의 시스템에는 기본적으로 설치가 되어 있을것이다.
pxelinux.0 은 쉽게 생각하자면 grub 또는 lilo 와 같은 역할을 하는 파일로
네트웍 부팅을 위한 부트 로더 프로그램이다.
설치할 시스템이 부팅되면서 dhcp에서 IP를 할당 받고 tftp 서버에서 pxelinux.0 파일을 읽게 된다.
pxelinux.0 파일은 syslinux 패키지에 들어있으며 대부분의 시스템에는 기본적으로 설치가 되어 있을것이다.
pxelinux.0 은 쉽게 생각하자면 grub 또는 lilo 와 같은 역할을 하는 파일로
네트웍 부팅을 위한 부트 로더 프로그램이다.
pxe boot 파일을 복사해 준다. cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ pxelinux 프로그램이 읽어들일 커널 이미지 및 램디스크 이미지 복사. 보통 설치CD/images/pxeboot/ 디렉토리에 네트워크 부팅을 위한 커널과 램디스크 이미지 파일이 있다. 필자는 여러 버전을 선택적으로 설치하게 하려고 디렉토리를 각각 설정했다. cp /설치CD/images/pxeboot/vmlinuz /tftpboot/CentOS4/ cp /설치CD/images/pxeboot/initrd.img /tftpboot/CentOS4/
2. pxelinux.0 파일이 읽어들일 config 파일 생성.
pxelinux.0 프로그램은 기본적으로 클라이언트의 맥어드레스 또는 네트웍주소 등을 이용해서
config 파일을 로딩하게 된다.
설정을 보면 알겠지만 lilo 설정과 거의 같다.
00-0E-0C-66-FC-BE 형태의 클라이언트 맥어드레스 파일
또는 네트워크 주소의 HEX 값 예를 들면 192.168.0.0 네트웍에 있는 클라이언트들에게 제공할 pxelinux config 파일은 /tftboot/pxelinux.cfg/C0A800 이런식으로 파일을 만들어 주면 된다.
pxelinux.0 프로그램은 기본적으로 클라이언트의 맥어드레스 또는 네트웍주소 등을 이용해서
config 파일을 로딩하게 된다.
설정을 보면 알겠지만 lilo 설정과 거의 같다.
00-0E-0C-66-FC-BE 형태의 클라이언트 맥어드레스 파일
또는 네트워크 주소의 HEX 값 예를 들면 192.168.0.0 네트웍에 있는 클라이언트들에게 제공할 pxelinux config 파일은 /tftboot/pxelinux.cfg/C0A800 이런식으로 파일을 만들어 주면 된다.
sh#ls -al /tftboot/pxelinux.cfg/ default(기본 부팅 셋업 파일) C0A800(192.168.0.0 네트웍의 클라이언트를 위한 부팅 셋업 파일) 00-0E-0C-66-FC-BE (특정 맥어드레스를 가진 클라이언트를 위한 부팅 셋업 파일)
sh# printf "%02X%02X%02X" 192 168 0
vi /tftpboot/pxelinux.cfg/default timeout=30 default CentOS4 label CentOS4 kernel CentOS4/vmlinuz append ksdevice=link load_ramdisk=1 initrd=CentOS4/initrd.img network ks=nfs:NFS서버주소:/ks/ks.cfg label CentOS5 kernel CentOS5/vmlinuz append ksdevice=link load_ramdisk=1 initrd=CentOS5/initrd.img network ks=nfs:NFS서버주소:/ks/ks.cfg
ks= 항목은 kickstart config 파일의 위치를 잡아주면 된다.
위의 예제는 nfs 서버에 있는 ks 파일을 로딩하는 예제이며 ftp,http 등등을 사용할 수 있다.
필자의 경우에는 nfs를 이용했다
위의 예제는 nfs 서버에 있는 ks 파일을 로딩하는 예제이며 ftp,http 등등을 사용할 수 있다.
필자의 경우에는 nfs를 이용했다
1.3.3.5 Kickstart config 파일 생성 #
ks= 이후에 있는 ks.cfg 파일의 내용이며 이 부분을 이해한다면 본인이 원하는 대로 셋업이 가능할것이다.
예제)vi /ks/ks.cfg nfs 서버에서 export 한 디렉토리에 생성한다
예제)vi /ks/ks.cfg nfs 서버에서 export 한 디렉토리에 생성한다
install //install 할것인지 upgrade 할 것인지 적어준다. url --url nfs://NFS서버/pub/CentOS/5 //OS설치 이미지의 경로를 적어준다. lang en_US.UTF-8 //기본적으로 사용할 언어 선택 langsupport --default=ko_KR.UTF-8 en_US.UTF-8 //기본 언어 이외에 추가할 언어 선택 keyboard us //키보드 선택 skipx //X-Windows 환경으로 설치하는것을 skip한다. network --device eth0 --bootproto static --ip 192.168.0.100--netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 192.168.0.200 --hostname www1.abc.com //네트워크 설정 rootpw --iscrypted $1$5yAFuaK5$w8CB23gcyKeSZzU/wZbuW1 //설치시 기본 root 패스워드 firewall --disabled //firewall 사용 안함 selinux --disabled //selinux 사용안함 authconfig --enableshadow --enablemd5 //shadow 패스워드 및 md5 사용 timezone Asia/Seoul //서버 시간 설정 bootloader --location=mbr //boot 로더를 어디에 설치할 것인지에 대한 내용이다 MBR 에 설치함. clearpart --all //기존 모든 파티션을 삭제함. part / --fstype ext3 --size=1 --grow --ondisk=sda//grow 옵션은 사용가능한 공간을 모두 사용하겠다는 의미이다. ondisk 옵션은 파티션을 생성할 디스크명 이다. part swap --size=4000 --ondisk=sda part /var --fstype ext3 --size=1 --grow --ondisk=sdb %packages --resolvedeps//설치할 패키지 또는 패키지 그룹 // - 표시는 설치하지 않겠다는 의미이며 앞에 @ 가 붙어있는것은 패키지 그룹을 의미한다. e2fsprogs grub kernel @ everything -firefox %post //패키지 설치 후에 실행할 스크립트 chmod 700 /usr/bin/wget chkconfig --add mysqld
1.4 마무리 #
이제 모든 설정은 끝났으며 설치할 클라이언트를 네트웍 부팅을 하면 리눅스를 자동으로 설치할 수 있을것이다. 이제 수십대던 수백대던 한번에 셋업이 가능하게 되었다.^^;
처음 설치를 하는 사람도 이해할 수 있도록 설명해주시면 안될까요?ㅠㅠ
DHCP설정 시작부터 어디서 어떻게 하는지 이해를 못하겠어요 -- ㅠㅠ 2010-03-02
DHCP설정 시작부터 어디서 어떻게 하는지 이해를 못하겠어요 -- ㅠㅠ 2010-03-02
좋은 자료 감사합니다.
오래전 설정하고, 문서 정리를 안해서 몇가지 과정을 잊고 있었는데, 도움 되었습니다. -- 이진성 2010-09-16
오래전 설정하고, 문서 정리를 안해서 몇가지 과정을 잊고 있었는데, 도움 되었습니다. -- 이진성 2010-09-16
좋은 데이터 감사합니다.
내용 블로그로 퍼갑니다.^^ -- 페두라 2011-04-15
내용 블로그로 퍼갑니다.^^ -- 페두라 2011-04-15
감사합니다. ㅇ_ㅇ''' -- shint 2012-02-08
[[FootNote]]







