CentOS installation as kickstart pxe server
Contents
Introduction
Installation of Centos 5.2 as a PXE server to install Centos Servers via the network.
The reason for this project is that we need to teach the students Linux Clustering, and the students need to install a CentOS cluster. This server will reduce the time needed to install several cluster nodes.
Installation of CentOS 5.2
Find a suitable server with at least 1GB of ram and two NIC's of which one should be 1000BASET.
Harddisk partitionering
SATA Harddisk sda 115 GB SATA Harddisk sdb 305 GB
Harddisk | Mount point | Type | Size |
---|---|---|---|
sda | / | ext3 | 5.000 MB |
sda | /boot | ext3 | 4.000 MB |
sda | swap | swap | 5.000 MB |
sda | /tmp | ext3 | 25.000 MB |
sda | /usr | ext3 | 40.000 MB |
sdb | /home | ext3 | 100.000 MB |
sdb | /var | ext3 | 100.000 MB |
sdb | swap | swap | 5.000 MB |
Choosing installation categories
- Desktop - Gnome
- Desktop - KDE
- Server
- Server - GUI
No Selinux firewall. Running in secure environment.
Post installation
Upgrading software
Update the installed software to newest versions.
[root@localhost]# <input>yum update</input>
Permit ssh login as root
Uncomment the #PermitRootLogin yes line in /etc/ssh/sshd_config file and restart sshd
[root@localhost ~]# <input>vi +/PermitRootLogin /etc/ssh/sshd_config</input>
[root@localhost ~]# <input>service sshd restart</input>
Changing hostname
Changing the hostname to ks.tekkom.dk
[root@localhost ~]# <input>hostname ks.tekkom.dk</input>
[root@localhost ~]# <input>vi /etc/sysconfig/network</input>
Preparing for network installation
Copying the ISO images to the server
Make a directory for NFS export or FTP access. Copy the dvd or the six cd's iso image to it.
Prepare for centos installation
[root@localhost home]# <input>mkdir -p /var/ftp/install/centos52</input>
[root@localhost home]# <input>dd if=/dev/hda of=/var/ftp/install/centos52/disk1</input>
[root@localhost home]# <input>dd if=/dev/hda of=/var/ftp/install/centos52/disk2</input>
[root@localhost home]# <input>dd if=/dev/hda of=/var/ftp/install/centos52/disk3</input>
[root@localhost home]# <input>dd if=/dev/hda of=/var/ftp/install/centos52/disk4</input>
[root@localhost home]# <input>dd if=/dev/hda of=/var/ftp/install/centos52/disk5</input>
[root@localhost home]# <input>dd if=/dev/hda of=/var/ftp/install/centos52/disk6</input>
export ISO images directory via NFS
Export /home/iso directory read-only and start NFS daemons. Now and permanently.
[root@ks init.d]# <input>echo "/home/iso *(ro,no_root_squash)" >> /etc/export</input>
[root@ks init.d]# <input>chkconfig --level 345 nfs on</input>
[root@ks init.d]# <input>service nfs start</input>
Starter NFS-tjenester: [ O.k. ]
Starter NFS-kvoter: [ O.k. ]
Starter NFS-dæmonen: [ O.k. ]
Starter NFS mountd: [ O.k. ]
start ftp server
vsftpd homedirectory /var/ftp. Start vsftp now and permanently.
[root@ks ~]# <input>chkconfig --level 345 vsftpd on</input>
[root@ks ~]# <input>service vsftpd start</input>
Starter vsftpd for vsftpd: [ O.k. ]
Network access
edit /etc/sysconfig/network-scripts/ifcfg-eth1 to contain
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:0e:0c:cf:d2:cb
NETMASK=255.255.255.0
IPADDR=172.20.0.1
TYPE=Ethernet
NAT through the server
Allow masqerading from eth1 (172.20.0.0/24) network to outside eth0 (dhcp) network. Add the following lines to /etc/rc.local
# Enable IP Forwading between Interfaces (Routing)
echo "1" > /proc/sys/net/ipv4/ip_forward
# Allow the internal hosts to connect to any IP address on the outside 0.0.0.0/24
iptables -t nat -A POSTROUTING -s 172.20.0.0/24 -d 0.0.0.0/0 -o eth0 -j MASQUERADE
Installing additional services
[root@ks init.d]# yum install tftp-server
[root@ks init.d]# yum install dhcp
TFTP server setup
Edit /etc/xinetd.d/tftp and change disable from yes to no, and restart xinetd.
[root@ks ~]# <input>vi /etc/xinetd.d/tftp</input>
[root@ks ~]# <input>service xinetd restart</input>
Stopper xinetd: [ O.k. ]
Starter xinetd: [ O.k. ]
DHCPD server setup
Change /etc/dhcpd.conf to the contain the scope shown below:
ddns-update-style interim;
authoritative;
option domain-name "tekkom.dk";
option domain-name-servers 172.16.4.77;
option subnet-mask 255.255.255.0;
subnet 172.20.0.0 netmask 255.255.255.0 {
authoritative;
range 172.20.0.10 172.20.0.90;
next-server 172.20.0.1;
option routers 172.20.0.1;
allow unknown-clients;
allow booting;
allow bootp;
filename "pxelinux.0";
}
Start the dhcpd daemon now and permanently.
[root@ks ~]# <input>chkconfig --level 345 dhcpd on</input>
[root@ks ~]# <input>service dhcpd start</input>
Starter dhcpd: [ O.k. ]
Preparing for PXE boot
Copy pxe boot files to tftp server directory
Copy the PXE boot file to TFTP directory. Create /tftpboot/centos52 directory and copy the pxeboot files from CentOS installation cd 1 (or DVD)
[root@ks ~]# <input>cp /usr/lib/syslinux/pxelinux.0 /tftpboot</input>
[root@ks ~]# <input>mkdir /tftpboot/centos</input>
[root@ks ~]# <input>cp /media/CentOS_5.2_Final/images/pxeboot/* /tftpboot/centos52/</input>
Create the PXE menu
Copy the COM executable file to tftp server root. And create directory to hold menufile.
[root@ks ~]# <input>cp /usr/lib/syslinux/menu.c32 /tftpboot</input>
[root@ks ~]# <input>mkdir /tftpboot/pxelinux.cfg</input>
Create /tftpboot/pxelinux.cnf/default configuration file with the following content.
default menu.c32
prompt 0
timeout 300
MENU TITLE Mercantec PXE Menu for Tekkom.
LABEL CentoS 5.2 i386
MENU LABEL CentOS 5.2 i386
KERNEL centos/i386/5.2/vmlinuz
append vga=normal initrd=centos5.2/initrd.img ramdisk_size=32768 method=ftp://172.20.0.1/install/centos5.2
Create kickstart auto configuration files
run: system-config-kickstart and save files in /var/ftp/install/centos52/kickstart (vsftp default homepath is /var/ftp).
Add the menuitem below to /tftpboot/pxelinux.cnf/default file
LABEL CentoS 5.2 i386 Full cluster software automatic
MENU LABEL CentOS 5.2 i386 Full cluster software automatic
KERNEL centos52/vmlinuz
append vga=normal initrd=centos52/initrd.img ramdisk_size=32768 method=ftp://192.168.22.4/install/centos52 ks=ftp://192.168.22.4/install/centos52/kickstart/fullcluster.cfg