PXE方式安装linux系统
1、PXE简介:
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
说白了,就是当公司批量采购一些服务器时,要批量安装相同的操作系统(如linux)时,一种更加便捷的安装方式。无需去每一台服务器上插拔光驱或者系统光盘,而是将安装光盘中的文件放到一台类似文件服务器中,来实现系统的安装。但是,单单采用PXE方式安装,必须手动执行安装配置过程,它并不能实现全自动化安装;
kickstart简介:
由红帽推出,给用户提供了一种自动化安装红帽企业Linux的方法。
许多系统管理员宁愿使用自动化的安装方法来安装红帽企业 Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在正常安装过程中所遇到的问题的答案。
Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择。
说白了,将正常安装过程中的配置选择过程结果放入脚本中,在执行安装时,就无需再手动选择配置参数了,而是直接读取这个kickstart脚本文件,去实现自动化安装。需要结合PXE的方法来实现无人值守安装;
kickstart文件的获取:
方式1:复制模板/root/anaconda-ks.cfg,而后使用vim编辑修改一下;
方式2:使用system-config-kickstart(需要安装)来生成,建议也使用/root/anaconda-ks.cfg作为模板来进行(简单些);
该命令通过xshell使用后,会在windows上看到linux的操作窗口界面,进行点击配置即可(必须xshell);
或者,在linux的图形界面下,输入上面命令,也能打开;
也可以读进来一个配好的配置文件进行修改;
ksvalidator:检测手动创建的ks文件是否有语法错误;
格式:ksvalidator + ks.xx.cfg文件;(没有报错就没有问题了)
centos5和centos6的ks文件是不一样的,使用检测也会各自报错。语法不完全兼容;
方式3:
Red Hat提供了一个样例文件。在Red Hat Linux 文档光盘中 RH-DOCS 目录里的 sample.ks 文件。你可以基于该样例来创建你自己的配置kickstart文件
2、配置环境:
准备两台虚拟机,一台安装http、dhcp、tftp服务。另一台用来测试pxe安装;
操作系统:centos 6.5 x86_64;
虚拟机网卡一定要能支持基于网络启动;
关闭selinux、关闭防火墙;
3、无人值守自动化执行安装原理:
4、服务部署:
1、安装dhcp服务:
作用:提供给客户端ip地址,及告诉客户端如何获得系统安装树的路径;
2、安装tftp:
作用:存放系统引导文件。提供kickstart自动化脚本;
3、安装http服务:
作用:提供安装树(类似系统光盘);
5、安装配置步骤:
环境准备:
1、 首先,我们在PXE服务端上添加两个网卡,一个是管理,一个是给DHCP服务使用;
2、闭linux防火墙和N额头workManager服务:
3、关闭selinux
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
4、给eth1提供配置文件,并启用eth0和eth1两个网卡:
[root@localhost ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:0C:29:B2:B7:30 (先看看识别出的mac是多少)
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:7308 (7.1 KiB)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:0C:29:B2:B7:30
TYPE=Ethernet
UUID=5f4cb50c-7024-46b3-afc1-d49a1a1d992c
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=1.1.1.1
NETMASK=255.255.255.0
:这里的配置是我从eth0那边复制过来的,改成了eth1和mac地址;
5、安装服务:
[root@localhost ~]# yum -y install dhcp*
[root@localhost ~]# yum -y install tftp*
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# yum -y install xinetd
6、服务配置:
配置dhcp:
[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 1.1.1.0 netmask 255.255.255.0 {
range 1.1.1.2 1.1.1.10;
option routers 1.1.1.1;
next-server 1.1.1.1; :指定tftp服务器的ip地址;
filename "pxelinux.0"; :指定系统安装文件名;
}
[root@localhost ~]# service dhcpd start
正在启动 dhcpd: [确定]
配置tftp:
[root@localhost ~]# mkdir /test
[root@localhost ~]# mount /dev/cdrom /test
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cp /test/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@localhost ~]# cp /test/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp /test/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# :将系统光盘中的文件复制到tftp中,作为安装时的引导文件;
[root@localhost ~]# vim /etc/xinetd.d/tftp
disable = no
[root@localhost ~]# chkconfig tftp on
[root@localhost ~]# service xinetd restart
[root@localhost ~]# chkconfig --list
tftp: 启用 :启用tftp,有超级守护进程负责监督;
配置http:
[root@localhost ~]# mkdir /var/www/html/centos6
[root@localhost ~]# mount --bind /test/ /var/www/html/centos6/
[root@localhost ~]# service httpd restart
:在http服务的根文件路径下创建安装树(也就是复制光盘文件到目录下),保证安装树可被访问;
7、开始PXE客户端测试:
保证测试机网卡第一启动项是基于网络的:
查看dhcp日志,发现ip已经下发给PXE客户端了:
客户端已经进入安装界面了:
指定安装方法,也就是指定安装树的位置:因为安装树我们放到了http根目录里面,所以选“URL”;
启用基于ipv4的网络,关闭ipv6:
指定安装数的路径,很重要:
指定正确之后,开始下载引导文件,接着就会进入熟悉的安装界面了:
ok,接下去,手动配置安装即可:
ok,这里基于PXE引导安装linux系统完成了,接下去,完成无人值守的安装方式:PXE+kickstart;
接下来一定要基于上面的配置环境进行:
1、制作kickstart文件;
这里,我们基于linux图像化界面使用system-config-kickstart去修改anaconda-ks.cfg的方式获得kickstart文件;
(注意:每一次我们安装完系统之后,都会在root家目录下面生成一个基于kickstart的anaconda-ks.cfg配置文件,可以借助这个文件来做修改,再给别的机器使用;)
[root@localhost ~]# yum -y install system-config-kickstart :安装kickstart脚本生成命令;
[root@localhost ~]# system-config-kickstart :执行命令,进入图形界面进行参数配置;
1、利用该工具,去打开位于/root下面的anaconda-ks.cfg做参数修改,更加方便些,也可以自己重新配置:
修改基本配置:
修改安装方法:指定安装树的目录位置,位于http://1.1.1.1/centos6/下面(重要);
修改引导装载选项:
修改分区信息:为新系统做好分区,可以依自己定义;
修改网络配置:这里有了,就无需修改了;
保存配置到/root目录下面,然后退出即可:
2、根据生成的ks.cfg文件,做修改:
[root@localhost ~]# pwd
/root
[root@localhost ~]# ll
总用量 104
-rw-------. 1 root root 1595 3月 26 19:33 anaconda-ks.cfg
-rw-r--r--. 1 root root 45537 3月 26 19:33 install.log
-rw-r--r--. 1 root root 10033 3月 26 19:28 install.log.syslog
-rw-r--r-- 1 root root 1594 4月 4 08:03 ks.cfg
drwxr-xr-x 2 root root 4096 4月 4 07:45 公共的
drwxr-xr-x 2 root root 4096 4月 4 07:45 模板
drwxr-xr-x 2 root root 4096 4月 4 07:45 视频
drwxr-xr-x 2 root root 4096 4月 4 07:45 图片
drwxr-xr-x 2 root root 4096 4月 4 07:45 文档
drwxr-xr-x 2 root root 4096 4月 4 07:45 下载
drwxr-xr-x 2 root root 4096 4月 4 07:45 音乐
drwxr-xr-x 2 root root 4096 4月 4 07:45 桌面
[root@localhost ~]# vim ks.cfg
repo --name="CentOS" --baseurl=http://1.1.1.1/centos6 --cost=100 :这里要改成安装树的位置;
:注意:这里一定要改成安装树的位置,不然自动装包时找不到;
[root@localhost ~]# cp ks.cfg /var/www/html/
[root@localhost ~]# :最后,将ks.cfg复制到httpd根目录下,注意要有读的权限,测试访问一下;
3、修改引导文件,使PXE支持kickstart:
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://1.1.1.1/ks.cfg :添加ks.cfg路径位置;
4、重启服务:
[root@localhost ~]# service httpd restart
[root@localhost ~]# service dhcpd restart
[root@localhost ~]# service xinetd restart
5、客户端进行测试:
当客户端拿到dhcp下发的ip地址后则进入了安装界面,此时倒计时60秒进入安装,无需任何操作;
根据dncp指示,找到tftp,加载系统引导文件;
加载安装镜像:
初始化安装了:
开始装包了:共计1105个包;
包装完了之后,系统会自动重启,然后即可远程登陆了;
ok,pxe+kickstart 搭建就这样完成了;
结束!