운영체제/리눅스
(리눅스) 무인 원격 설치 서버
by Cloud_Park
2018. 11. 26.
Kickstart란?
킥스타트란 네트워크 부팅을 통하여 OS를 자동으로 설치하는 설치 방법
이러한 환경을 PXE 또는 PXE 서버라고 함 (Pre-boot eXecution Enviroment)
구성
PXE 서버 : OS 이미지 및 설치 정보를 전달해줄 서버 NFS, DHCP
TFTP 서버 : 부트 이미지를 전달해줄 서버 TFTP
PXE 클라이언트 : 네트워크 인터페이스가 포함된 시스템
TFTP
1) 설치
yum install -y tftp tftp-server xinetd
2) 설정
vi /etc/xinetd.d/tftp
disable = no 로 변경
systemctl restart xinetd
3) 확인
/var/lib/tftpboot 에 파일을 생성
다른 위치에서 tftp [서버IP] -c get [생성한 파일 이름]
파일이 다운되면 성공
DHCP
1) DHCP란?
Dynamic Host Configuration Protocol, 동적으로 IP주소를 할당해주는 프로토콜, DHCP를 이용해서 사용자들에게
동적으로 IP를 임대해주는 서버가 DHCP 서버이다.
2) DHCP 프로토콜
(1) DHCP Discover
메시지 방향: 단말 -> DHCP 서버
브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
의미: 단말이 DHCP 서버를 찾기 위한 메시지입니다. 그래서 LAN상에(동일 subent상에) 브로드캐스팅을 하여 "거기 혹시 DHCP 서버 있으면 내게 응답 좀 해 주세요~"라고 단말이 외칩니다.
(2) DHCP Offer
메시지 방향: DHCP 서버 -> 단말
브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트일수 있습니다. 이는 단말이 보낸 DHCP Discover 메시지 내의 Broadcast Flag의 값에 따라 달라지는데, 이 Flag=1이면 DHCP 서버는 DHCP Offer 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
의미: DHCP 서버가 "저 여기 있어요~"라고 응답하는 메시지입니다. 단순히 DHCP 서버의 존재만을 알리지 않고, 단말에 할당할 IP 주소 정보를 포함한 다양한 "네트워크 정보"를 함께 실어서 단말에 전달합니다.
(3) DHCP Request
메시지 방향: 단말 -> DHCP 서버
브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
의미: 단말은 DHCP 서버(들)의 존재를 알았고, DHCP 서버가 단말에 제공할 네트워크 정보(IP 주소, subnet mask, default gateway등)를 알았습니다. 이제 단말은 DHCP Request 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에게 "단말이 사용할 네트워크 정보"를 요청합니다.
(4) DHCP Ack
메시지 방향: DHCP 서버 -> 단말
브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있으며 이는 단말이 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
의미: DHCP 절차의 마지막 메시지로, DHCP 서버가 단말에게 "네트워크 정보"를 전달해 주는 메시지입니다. 앞서 설명드린 DHCP Offer의 '네트워크 정보"와 동일한 파라미터가 포함됩니다.
3) DHCP 서버 설치
yum install -y dhcp
3) DHCP 서버 설정
vi /etc/dhcp/dhcpd.conf 파일 수정
subnet 192.168.240.0 netmask 255.255.255.0 {
range 192.168.240.101 192.168.240.199;
option domain-name-servers 8.8.8.8;
option routers 192.168.240.2;
option broadcast-address 192.168.240.255;
default-lease-time 600;
max-lease-time 7200;
}
systemctl restart dhcpd
4) DHCP 서버 확인
다른 시스템에서 dhcp로 IP 할당
NFS
1) NFS란?
Network File System, 서버의 특정 디렉토리를 클라이언트의 특정 디렉토리와 연결시켜주는 기술
2) 설정
mkdir /share
touch /share/a
vi /etc/exports
/share 192.168.240.*(rw)
systemctl restart nfs
3) 확인
무인 원격 설치 설정
1) 설치 파일 준비
ISO 이미지 삽입
/run/media/sjb/CentOS 7 x86_64/isolinux에서
initrd.img와 vmlinuz을 복사
yum install syslinux 설치하고
/usr/share/syslinux에서
menu.c32와 pxelinux.0를 복사
2) tftp 설정
vi /etc/xinetd.d/tftp
server_args = -s /tftpboot
mkdir /tftpboot
menu.c32와 pxelinux.0를 복사
mkdir /tftpboot/CentOS7
initrd.img와 vmlinuz을 복사
mkdir /tftpboot/ks
cp /root/anaconda-ks.cfg /tftpboot/ks/ks.cfg
mkdir /tftpboot/pxelinux.cfg
vi default
DEFAULT menu.c32
timeout 100
menu title ### OS Installer Boot Menu ###
LABEL CentOS7
kernel CentOS7/vmlinuz
append ksdevice=link load_ramdisk=1 initrd=CentOS7/initrd.img unsupported_hardware text network ks=nfs:192.168.240.100:/tftpboot/ks/ks.cfg text
3) DHCP 설정
vi /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;
option domain-name-servers 8.8.8.8;
option ip-forwarding false;
option mask-supplier false;
ddns-update-style none;
next-server 192.168.240.100;
filename "pxelinux.0";
subnet 192.168.240.0 netmask 255.255.255.0 {
option routers 192.168.240.2;
range 192.168.240.101 192.168.240.199;
}
4) NFS 설정
cp -r /run/media/sjb/CentOS\ 7\ x86_64/* /iso
vi /etc/exports
/tftpboot/ks 192.168.240.* (ro)
/iso 192.168.240.* (ro)
각 각 공유
5) Kickstart 설정
vi /tftpboot/ks/ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
install
# Use graphical install
text
nfs --server=192.168.240.100 --dir="/iso"
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=kr --xlayouts='kr'
# System language
lang ko_KR.UTF-8
# Network information
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$3KSzSujoZ4nUIyYR$.mcWCH5rgKH2aWqeuAi02KNGd2iYxcszlyXvpthozU0maaaq5KG5mPjxi1Ti6jOu1/vD/ChvCFFwKYP8.hLW3/
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Seoul --isUtc
# X Window System configuration information
xconfig --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sda
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
권한 에러
chmod -R 777 /tftpboot
타임아웃
systemctl stop firewalld
setenforce 0