Difference between revisions of "CentOS installation as kickstart pxe server"

From Teknologisk videncenter
Jump to: navigation, search
m (Harddisk partitionering)
m (DHCPD server setup)
 
(28 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
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.
 
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 =
 
= 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 ==
 
== Harddisk partitionering ==
  
Single harddisk 40GB (Quite small, but the only one i could find)
 
{|border=1 ;style="margin: 0 auto; text-align: center; cellpadding="5" cellspacing="0"
 
|+ Hard disk partitions
 
|- bgcolor=lightgrey
 
! Mount point !!Type !!  Size
 
|-
 
|/ || ext3 || align="right"| 1.000 MB
 
|-
 
|/boot || ext3 || align="right"| 1.000 MB
 
|-
 
|/var || ext3 || align="right"| 4.000 MB
 
|-
 
|/tmp || ext3 || align="right"| 1.000 MB
 
|-
 
|/usr || ext3 || align="right"| 10.000 MB
 
|-
 
|/home || ext3 || align="right"| 15.000 MB
 
|-
 
|swap || swap || align="right"| 2.000 MB
 
|-
 
|}
 
=== New Machine found ===
 
 
SATA Harddisk sda 115 GB
 
SATA Harddisk sda 115 GB
 
SATA Harddisk sdb 305 GB  
 
SATA Harddisk sdb 305 GB  
Line 39: Line 18:
 
|sda || /boot || ext3 || align="right"| 4.000 MB
 
|sda || /boot || ext3 || align="right"| 4.000 MB
 
|-  
 
|-  
|sda || /var || ext3 || align="right"| 25.000 MB
+
|sda || swap || swap || align="right"| 5.000 MB
|-  
+
|-
 
|sda || /tmp || ext3 || align="right"| 25.000 MB
 
|sda || /tmp || ext3 || align="right"| 25.000 MB
 
|-  
 
|-  
 
|sda || /usr || ext3 || align="right"| 40.000 MB
 
|sda || /usr || ext3 || align="right"| 40.000 MB
 
|-  
 
|-  
|sdb || /home || ext3 || align="right"| 150.000 MB
+
|sdb || /home || ext3 || align="right"| 100.000 MB
|-  
+
|-
|sda || swap || swap || align="right"| 5.000 MB
+
|sdb || /var || ext3 || align="right"| 100.000 MB
 +
|- 
 
|sdb || swap || swap || align="right"| 5.000 MB
 
|sdb || swap || swap || align="right"| 5.000 MB
 
|-  
 
|-  
Line 58: Line 38:
 
*Server - GUI
 
*Server - GUI
  
[[Category:Linux]]
+
No Selinux firewall. Running in secure environment.
 +
= Post installation =
 +
== Upgrading software ==
 +
Update the installed software to newest versions.
 +
<source lang=cli>
 +
[root@localhost]# <input>yum update</input>
 +
</source>
 +
== Permit ssh login as root ==
 +
Uncomment the ''#PermitRootLogin yes'' line in ''/etc/ssh/sshd_config'' file and restart ''sshd''
 +
<source lang=cli>
 +
[root@localhost ~]# <input>vi +/PermitRootLogin /etc/ssh/sshd_config</input>
 +
[root@localhost ~]# <input>service sshd restart</input>
 +
</source>
 +
== Changing hostname ==
 +
Changing the hostname to ''ks.tekkom.dk''
 +
<source lang=cli>
 +
[root@localhost ~]# <input>hostname ks.tekkom.dk</input>
 +
[root@localhost ~]# <input>vi /etc/sysconfig/network</input>
 +
</source>
 +
= 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 ===
 +
<source lang=cli>
 +
[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>
 +
</source>
 +
 
 +
== export ISO images directory via NFS ==
 +
Export ''/home/iso'' directory ''read-only'' and start NFS daemons. Now and permanently.
 +
<source lang=cli>
 +
[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.    ]
 +
</source>
 +
== start ftp server ==
 +
''vsftpd'' homedirectory ''/var/ftp''. Start vsftp now and permanently.
 +
<source lang=cli>
 +
[root@ks ~]# <input>chkconfig --level 345 vsftpd on</input>
 +
[root@ks ~]# <input>service vsftpd start</input>
 +
Starter vsftpd for vsftpd:                                [    O.k.    ]
 +
</source>
 +
 
 +
== Network access ==
 +
edit ''/etc/sysconfig/network-scripts/ifcfg-eth1'' to contain
 +
<source lang=cli>
 +
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
 +
</source>
 +
== 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
 +
<source lang=cli>
 +
#  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
 +
</source>
 +
== Installing additional services ==
 +
<source lang=cli>
 +
[root@ks init.d]# yum install tftp-server
 +
[root@ks init.d]# yum install dhcp
 +
</source>
 +
 
 +
=== TFTP server setup ===
 +
Edit ''/etc/xinetd.d/tftp'' and change disable from ''yes'' to ''no'', and restart ''xinetd''.
 +
<source lang=cli>
 +
[root@ks ~]# <input>vi /etc/xinetd.d/tftp</input>
 +
[root@ks ~]# <input>service xinetd restart</input>
 +
Stopper xinetd:                                            [    O.k.    ]
 +
Starter xinetd:                                            [    O.k.    ]
 +
</source>
 +
 
 +
=== DHCPD server setup ===
 +
Change ''/etc/dhcpd.conf'' to the contain the scope shown below:
 +
<source lang=cli>
 +
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";
 +
}
 +
</source>
 +
Start the dhcpd daemon now and permanently.
 +
<source lang=cli>
 +
[root@ks ~]# <input>chkconfig --level 345 dhcpd on</input>
 +
[root@ks ~]# <input>service dhcpd start</input>
 +
Starter dhcpd:                                            [    O.k.    ]
 +
</source>
 +
 
 +
= 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)
 +
<source lang=cli>
 +
[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>
 +
</source>
 +
== Create the PXE menu ==
 +
Copy the COM executable file to tftp server root. And create directory to hold menufile.
 +
<source lang=cli>
 +
[root@ks ~]# <input>cp /usr/lib/syslinux/menu.c32 /tftpboot</input>
 +
[root@ks ~]# <input>mkdir /tftpboot/pxelinux.cfg</input>
 +
</source>
 +
Create ''/tftpboot/pxelinux.cnf/default'' configuration file with the following content.
 +
<source lang=cli>
 +
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
 +
</source>
 +
== 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
 +
<source lang=cli>
 +
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
 +
</source>
 +
 
 +
= Links =
 +
[http://shirwablog.com/?p=26 Nice page describing PXE from Centos Kickstart]
 +
{{Source cli}}
 +
 
 +
 
 +
[[Category:Linux]][[Category:Cluster]][[Category:CentOS]][[category:PXE]]

Latest revision as of 06:31, 25 April 2012

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