1、原理
1)首先了解下安装linux的系统启动过程:
BIOS=>引导介质=>用于安装环境的linux内核(vmlinuz)和驱动模块(initrd.img)=>安装程序(anaonda)=>寻找安装介质=>由安装程序从安装介质获取所需安装文件=>完成安装配置(普通配置, IPTABLES, SELinux)=>重启=>进入系统
其中引导介质包含以下几种:CDROM、Hard Disk、U盘、NIC(俗称网卡)
这里重点讲的是以网卡作为引导介质安装linux的方法。
2)如何通过网卡作为引导安装linux
网卡要能作为安引导介质,必须有一个叫做Preboot Execution Environment(预启动执行环境)的模块,简称PXE。(参考:http://zh.wikipedia.org/wiki/预启动执行环境)
PXE的功能有:通过IP, TCP, UDP, TFTP等协议连接到远程服务器上。执行PXE固件上预定义好的API。
现在关键的是如何让PXE模块连接到我们的安装服务器上?
要连接网络,首先必须有一个IP。但是网卡的PXE模块并没有让用户自定义静态IP的功能,它只能够通过DHCP协议获取IP。于是要求我们的安装环境里面有一台能够提供DHCP服务的服务器。
PXE模块安装到服务器上后,我们需要把安装用的程序(vmlinuz, initrd.img, 等等)传输到待安装机器上来,我选择用TFTP协议。
具备以上条件后,我们已经可以在待安装机器启动安装程序了。
3)什么是kickstart?
Kickstart是一种无人值守的安装方式。主要用在Red Hat系列以及基于Red Hat的发行版本的自动安装工具集(http://en.wikipedia.org/wiki/Kickstart_(Linux) )
它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg的文件。
查看 /root/anaconda-ks.cfg 文件,这个文件是安装完linux,安装程序留下来的基于本机配置的kickstart安装脚本
system-config-kickstart 这个是kickstart的配置工具
4)执行PXE+KickStart安装需要的设备为:
1、DHCP服务器
2、TFTP服务器
3、KickStart所生成的ks.cfg配置文件
4、一台存放系统安装文件的服务器,如NFS,HTTP或FTP服务器(这里使用HTTP服务器)
5、一个带有PXE支持网卡的主机
2、操作
1)挂在光盘到安装服务器上
[root@host /]# mount /dev/cdrom /mnt
2)安装HTTP服务器,将光盘内容复制到站点目录下
[root@host /]# yum -y install httpd* [root@host /]# cp -rf /mnt/* /var/www/html
3)安装tftp-server,并启用tftp服务,同时启动xinetd进程
[root@host /]# rpm -ivh tftp-server-0.49-2.el5.centos.x86_64.rpm
#编辑超级守护进程xinetd [root@host /]# vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no #将disable值yes改no per_source = 11 cps = 100 2 flags = IPv4 } #重启xinetd服务 [root@host /]# service xinetd restart
4)配置PXE启动程序
#创建tftpboot文件夹 [root@host /]# mkdir -p /tftpboot #复制pxelinux.0 文件到tftpboot文件夹中 [root@host /]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ #复制光盘上的images/pxeboot/initrd.img 和vmlinuz 到tftpboot文件夹中 [root@host /]# cp /mnt/images/pxeboot/initrd.img /tftpboot/ [root@host /]# cp /mnt/images/pxeboot/vmlinuz /tftpboot/ #复制光盘上的isolinux/*.msg到tftpboot目录下 [root@host /]# cp /mnt/isolinux/*.msg /tftpboot/ #在tftpboot新建一个pxelinux.cfg目录 [root@host /]# mkdir pxelinux.cfg #将光盘上的isolinux目录中的isolinux.cfg复制到pxelinux.cfg中,同时更改文件名为default [root@host /]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
5)安装DHCP服务器
#安装DHCP并复制配置文件样本 [root@host /]# rpm -ivh /mnt/CentOS/dhcp-3.0.5-23.el5.x86_64.rpm [root@host /]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf #修改配置文件 [root@host /]# vim /etc/dhcpd.conf ddns-update-style interim; ignore client-updates; next-server 192.168.1.109;#PXE服务器IP地址 filename "/pxelinux.0"; subnet 192.168.1.0 netmask 255.255.255.0 { # --- default gateway option routers 192.168.1.1; option subnet-mask 255.255.255.0; option nis-domain "domain.org"; option domain-name "domain.org"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time # option ntp-servers 192.168.1.1; # option netbios-name-servers 192.168.1.1; # --- Selects point-to-point node (default is hybrid). Don't change this unless # -- you understand Netbios very well # option netbios-node-type 2; range dynamic-bootp 192.168.1.128 192.168.1.254; default-lease-time 21600; max-lease-time 43200; # we want the nameserver to appear at a fixed address #host ns { # next-server marvin.redhat.com; # hardware ethernet 12:34:56:78:AB:CD; # fixed-address 207.175.42.254; #} } [root@host /]# service dhcpd start
6)安装并配置KickStart
[root@host /]# yum install system-config-kickstart #在gnome环境下配置KickStart [root@host /]# system-config-kickstart #如果gnome环境未安装,需执行以下命令 [root@host /]# yum -y groupinstall "X Window System" [root@host /]# yum -y groupinstall 'GNOME Desktop Environment'
7)将配置完的KickStart的ks.cfg保存在/var/www/html下
8)修改/tftpboot/pxelinux.cfg/default文件
default ks #修改默认方式 prompt 1 timeout 6 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz append initrd=initrd.img label text kernel vmlinuz append initrd=initrd.img text label ks kernel vmlinuz append ks initrd=initrd.img http://192.168.1.109/ks.cfg #修改地址 label local localboot 1 label memtest86 kernel memtest append -
9)客户端重新引导安装