实验的目的通过网络安装系统。
NFS 服务器:mysqlndb02.lianhua.com (192.168.0.31) 
安装目录:  /isolinux
本机IP地址:192.168.0.31
一般情况下,我们都是利用软驱或光驱引导Linux后,再通过本地的光驱安装Linux,如果是碰到无光驱时呢?
什么是PXE 
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为 client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜 单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。 
PXE协议的成功运行需要解决以下两个问题: 

(1)、既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
(2)、  通过什么协议下载Linux内核和根文件系统 

对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地 址,不过由于这里是给PXE Client分配IP地址,所以在配置 DHCP Server时,需
要增加相应的PXE特有配置。 

至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。 
一、安装过程
 PXE安装,需要如下步骤:
1.      配置DHCP服务器,用于给客户端提供IP地址和其他信息
2.      配置TFTP服务器,用于提供客户端PXE引导所必须的文件
3.      配置NFS服务器 ,用于存放安装源
4.      配置kickstart,用于无人职守的安装(可选)
5.      使用PXE功能引导客户端
第一步,配置DHCP服务器
贴出配置:
#定义所支持的DNS的动态更新类型(必选)
ddns-update-style interim;
#忽略客户端更新DNS记录
ignore client-updates;
指定tftp-serverIP地址是多少
next-server 192.168.0.31;
指定pxelinux启动文件的位置
filename "pxelinux.0";
#定义作用域是192.168.0.0/24
subnet 192.168.0.0 netmask 255.255.255.0 {

# --- default gateway
#为DHCP客户设置网关
        option routers                  192.168.0.1;
#为DHCP客户设自豪子网掩码
        option subnet-mask              255.255.255.0;
#为DHCP客户设置NIS的域名,没有定义;
#       option nis-domain               "domain.org";
#为DHCP客户设置DNS服务器的域名
        option domain-name              "lianhua.com";
#为DHCP客户设置DNS服务器的IP地址
        option domain-name-servers      192.168.0.25;
#指定时区的设置为格林威治时间
        option time-offset              -18000; # Eastern Standard Time
#定义DHCP的地址池
        range dynamic-bootp 192.168.0.40 192.168.0.50;
#定义最小租约期是21600秒,6个小时
        default-lease-time 21600;
#定义最大的租约期12个小时
        max-lease-time 43200;
#设置主机声明
        host ns {
#设置用于定义服务器从引导文件中装入的主机名,用于无盘工作站
                next-server marvin.redhat.com;
#指定DHCP客户的MAC地址
                hardware ethernet 12:34:56:78:AB:CD;
#对指定的MAC地址分配固定的IP地址
                fixed-address 207.175.42.254;
        }
}
第二步安装NFS

[root@mysqlndb02 /]# mkdir isolinux
[root@mysqlndb02 /]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@mysqlndb02 /]# cp -r  /mnt/cdrom/* /isolinux
把/isolinux这个目录共享出来
[root@mysqlndb02 /]#vi /etc/exports
/isolinux      192.168.0.0/24(ro)
使192.168.0.0 这个网段的所有机器都能读;
[root@mysqlndb02 /]# exportfs -a
重新加载NFS
[root@mysqlndb02 /]# showmount -e 192.168.0.31
Export list for 192.168.0.31:
/isolinux    192.168.0.0/24
/var/ftp/pub 192.168.0.25
第三步 配置tftp服务器
1、[root@mysqlndb02 /]#yum install tftp-server
TFTP是由xinetd管理的服务,编辑 /etc/xinetd.d/tftp


 
      1 # default: off    (默认是没有激活的)
      2 # description: The tftp server serves files using the trivial file transfer \
      3 #       protocol.  The tftp protocol is often used to boot diskless \
      4 #       workstations, download configuration files to network-aware printers, \
      5 #       and to start the installation process for some operating systems.
      6 service tftp
      7 {
      8         socket_type             = dgram
      9         protocol                = udp
     10         wait                    = yes
     11         user                    = root
     12         server                  = /usr/sbin/in.tftpd
     13         server_args             = -s /tftpboot
     14         disable                 = yes
     15         per_source              = 11
     16         cps                     = 100 2
     17         flags                   = IPv4
     18 }

tftp服务的配置文件中的disable=yes设置成disable=no
重启xinetd

[root@mysqlndb02 /]# service xinetd restart
停止 xinetd:                                              [确定]
启动 xinetd:                                              [确定]
[root@mysqlndb02 /]#chkconfig --level nfs 345 on

2、配置pxe引导
安装tfpt后在根目录上会自动出现tftpboot目录;
1)、把光盘里面的isolinux这个目录下的所有东西复制到/tftpboot这个目录下面去;
[root@mysqlndb02 tftpboot]# cp /mnt/cdrom/isolinux/* .
2)、在/tftpboot/里面创建目录:mkdir pxelinux.cfg
[root@mysqlndb02 tftpboot]#mkdir pxelinux.cfg
因为PXE读取到的是pxelinux.cfg这个文件夹,所有必须创建这个文件夹;
3)、在把pxe的引导文件pexlinux.0给复制过来,这个文件在/usr/lib/syslinux/下面
[root@mysqlndb02 tftpboot]#cp /usr/lib/syslinux/pxelinux.0 .
[root@mysqlndb02 tftpboot]# ll pxelinux.0
-rw-r--r-- 1 root root 13148 08-10 16:13 pxelinux.0

4)、重命名 isolinux.cfg 为default文件并把它移到pxelinux.cfg目录下面
[root@mysqlndb02 tftpboot]#mv isolinux.cfg pxelinux.cfg/default
[root@mysqlndb02 tftpboot]# cd pxelinux.cfg/
[root@mysqlndb02 pxelinux.cfg]#
[root@mysqlndb02 pxelinux.cfg]# ls
default

5)、启动tftp服务:
[root@mysqlndb02 pxelinux.cfg]#chkconfig  tftp on
[root@mysqlndb02 pxelinux.cfg]service xinetd  restart

基本到此就可以实现NFS安装了


填入NFS地址和装载目录就可以了

正常安装!

第四步,配置kickstart的安装

通常我们在安装系统的时候需要大量的人机交互界面,而kickstart的安装可以实现无人职守的自动化安装,我们只需要将kickstart的脚本放在服务器上面,就可以避免繁琐的人机交互界面。

在linux下面,可以通过system-config-kickstart这个图形工具来生成这个kickstart的脚本。我们知道在系统安装完成后会自动的创建一个kickstart的文件,这个文件就记录了系统的真实安装配置。该文件在/root/anaconda-ks.cfg。

现在就使用这个文件,将它复制重命名到/isolinux/ksfile/ksinstall,并改变一下权限。

[root@mysqlndb02 ~]#cd /isolinux

[root@mysqlndb02 ~]#mkdir ksfile

[root@mysqlndb02 ~]#cp /root/anaconda-ks.cfg /isolinux/ksfile/ksinstall.cfg

[root@mysqlndb02 ~]#cd ksfile/

[root@mysqlndb02 ksfile]# ls
ksinstall.cfg

复制完成后,需要改变权限为644,让每个用户都有读取的权限。
[root@mysqlndb02 ksfile]# chmod 644 ksinstall.cfg

[root@mysqlndb02 ksfile]# ll
总计 4
-rw-r--r-- 1 root root 1289 08-10 16:33 ksinstall.cfg


现在只需要稍微修改一下ksinstall.cfg这个文件,

在这个文件中定义安装源的路径,

# Kickstart file automatically generated by anaconda.
install
nfs --server=192.168.0.31 --dir=/isolinux

这个参数告诉系统到服务器192.168.0.31的NFS共享目录/isolinux下去寻找安装介质。


接下来还要在/tftpboot/pxelinux.cfg/default这个文件中定义ks的路径就可以了,

label linux

  kernel vmlinuz

  append ks=nfs:192.168.0.31:/isolinux/ksfile/ksinstall.cfg  initrd=initrd.img


OK,现在kickstart安装配置就完成了。


重新打开一台虚拟机,会自动的安装,不过到磁盘划分哪里要手动,还有安装完毕后重新引导也要手动来操作,省却了我们大量的人机交互操作。

最后感谢chenlong