CentOS installation as kickstart pxe server

From Teknologisk videncenter
Jump to: navigation, search

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

Hard disk partitions
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

Links

Nice page describing PXE from Centos Kickstart