如何为一批服务器安装操作系统?
因为测试需要,经常要安装新的操作系统?
服务器本机没有光驱?
如何实现无人值守,开机即可自动装机?
下面我们就探讨一下如何实现以上这些需求
PxeServer采用Red Hat Enterprise 5.9 来做实验:
实验拓扑:
-----PXE Server(vmnet1)-------------Client(vmnet1)------
实验:搭建PXE Server
服务器IP为192.168.8.253,可以给192.168.8.0/24安装RHEL5.9
分别给每台客户端分配主机名,格式如下
stationx.pengpeng.com192.168.8.x
安装所需要的软件包存放在/data/iso/rhel5.9
一、搭建Pxe Server
1、首先配置服务端IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
重启network
[root@localhost ~]# service network restart
查看IP地址
[root@localhost ~]# ifconfig eth0 | grep "inet addr:"
inet addr:192.168.8.253 Bcast:192.168.8.255 Mask:255.255.255.0
2、接下来配置DHCP(给需要安装系统的主机分配IP)
先来看一下系统有没有安装dhcp,
[root@localhost ~]# rpm -q dhcp
package dhcp is not installed
发现没有安装,为避免软件包依赖关系,直接来配YUM安装吧
[root@localhost ~]# cd /etc/yum.repos.d/ (进入YUM的配置文件目录)
[root@localhost yum.repos.d]# ls
rhel-debuginfo.repo
[root@localhost yum.repos.d]# cp rhel-debuginfo.repo rhel5.9.repo (拷贝下来作为模板)
[root@localhost yum.repos.d]# ls
rhel5.9.repo rhel-debuginfo.repo
[root@localhost yum.repos.d]# vim rhel5.9.repo (修改一下YUM配置)
[rhel-server]
name=Red Hat Enterprise Linux Server
baseurl=file:///misc/cd/Server (仓库就选系统盘了)
enabled=1 (启用此YUM)
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
查看一下YUM配置是否正确
[root@localhost yum.repos.d]# yum clean all (先清理一下缓存)
[root@localhost yum.repos.d]# yum list | wc -l (查看一下软件包数量)
3347
配置好YUM 下面就好安装dhcp了:
[root@localhost ~]# yum -y install dhcp
安装完毕,修改一下配置文件
[root@localhost ~]# vim /etc/dhcpd.conf
保留有效配置的最终语句
ddns-update-style interim;
next-server 192.168.8.253; (TFTP服务器的IP地址)
filename "pxelinux.0"; (网卡引导文件名)
subnet 192.168.8.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name "pengpeng.com";
option domain-name-servers 192.168.8.253;
range dynamic-bootp 192.168.8.10 192.168.8.20;
default-lease-time 21600;
max-lease-time 43200;
}
重启一下dhcp服务
[root@localhost ~]# service dhcpd restart
启动 dhcpd: [确定]
设置dhcp服务开机启动
[root@localhost ~]# chkconfig dhcpd on
查看dhcp67端口是否被监听
[root@localhost ~]# netstat -tulnp | grep 67
udp 0 0 0.0.0.0:67 0.0.0.0:* 25545/dhcpd
3.配置TFTP
先查看是否安装tftp-server
[root@localhost ~]# rpm -q tftp-server
tftp-server-0.49-2
由于TFTP服务由xinetd服务管理,监听UDP69端口
所以修改它的配置如下
[root@localhost ~]# vim /etc/xinetd.d/tftp
...
server_args = -s /tftpboot (服务根目录)
disable = no (改为no以启用)
...
重启一下xinetd服务
[root@localhost ~]# service xinetd restart
停止 xinetd: [确定]
启动 xinetd: [确定]
确保该服务开机启动
[root@localhost ~]# chkconfig xinetd on
查看端口是否被监听
[root@localhost ~]# netstat -tulnp | grep :69
udp 0 0 0.0.0.0:69 0.0.0.0:* 25782/xinetd
4、部署linux内核、镜像
从RHEL关盘中拷贝,复制到TFTP根目录
[root@localhost ~]# cd /misc/cd/images/pxeboot/
[root@localhost pxeboot]# cp initrd.img vmlinuz /tftpboot/
[root@localhost pxeboot]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ (拷贝网卡引导文件到tftp目录下)
[root@localhost pxeboot]# mkdir /tftpboot/pxelinux.cfg 创建pxelinux.cfg文件夹
[root@localhost pxeboot]# cp /misc/cd/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default (拷贝并改名为default)
5、配置NFS共享
[root@localhost ~]# mkdir -p /data/iso/rhel5.9 (递归创建一个目录)
[root@localhost ~]# cp -rf /misc/cd/* /data/iso/rhel5.9/
[root@localhost ~]# vim /etc/exports (配置NFS)
/data/iso/rhel5.9 *(ro)
重启portmap、nfs服务
[root@localhost ~]# service portmap restart
停止 portmap: [确定]
启动 portmap: [确定]
[root@localhost ~]# service nfs restart
关闭 NFS mountd: [失败]
关闭 NFS 守护进程: [失败]
关闭 NFS quotas: [失败]
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS 守护进程: [确定]
启动 NFS mountd: [确定]
Stopping RPC idmapd: [确定]
正在启动 RPC idmapd: [确定]
确保两个服务开机启动
[root@localhost ~]# chkconfig portmap on
[root@localhost ~]# chkconfig nfs on
5、配置DNS (可选)
先检查相关软件bind、bind-chroot、caching-nameserver是否安装
[root@localhost ~]# rpm -q bind bind-chroot caching-nameserver
package bind is not installed
package bind-chroot is not installed
package caching-nameserver is not installed
都没安装,利用YUM 进行安装
[root@localhost ~]# yum -y install bind bind-chroot caching-nameserver
安装完毕,进入虚拟根环境目录:
[root@localhost ~]# cd /var/named/chroot/var/named/
拷贝模板,用来配置控制文件
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
修改named.conf
listen-on port 53 { 192.168.8.253; };
...
allow-query { any; };
allow-query-cache { any; };
...
match-clients { any; };
match-destinations { any; };
定义正反向解析文件:
[root@localhost etc]# vim named.rfc1912.zones
zone "pengpeng.com" IN {
type master;
file "pengpeng.com.zone";
};
zone "8.168.192.in-addr.arpa" IN {
type master;
file "pengpeng.com.arpa";
};
检查主控制文件有无语法错误:
[root@localhost etc]# named-checkconf named.conf
[root@localhost etc]#
无反馈,则正常
进入虚拟配置目录,拷贝模板配置文件,改名为之前定义的正反向解析文件名:
[root@localhost etc]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p named.local pengpeng.com.zone
[root@localhost named]# cp -p named.local pengpeng.com.arpa
修改两个文件:
[root@localhost named]# vim pengpeng.com.zone
$TTL 86400
@ IN SOA pengpeng.com. root.pengpeng.com. (
2014090101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns1.pengpeng.com.
dns1 IN A 192.168.8.253
$GENERATE 10-20 station$ IN A 192.168.8.$
(分别给每台客户端分配主机名,格式如下 stationx.pengpeng.com192.168.8.x 在此实现)
[root@localhost named]# vim pengpeng.com.arpa
$TTL 86400
@ IN SOA pengpeng.com. root.pengpeng.com. (
2014090101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns1.pengpeng.com.
253 IN PTR dns1.pengpeng.com.
$GENERATE 10-20 $ IN PTR station$.pengpeng.com
分别检查配置是否正确
[root@localhost named]# named-checkzone pengpeng.com pengpeng.com.zone
zone pengpeng.com/IN: loaded serial 2014090101
OK
[root@localhost named]# named-checkzone pengpeng.com pengpeng.com.arpa
zone pengpeng.com/IN: loaded serial 2014090101
OK
已通过
重启服务,确保服务开机启动,并验证DNS解析情况
[root@localhost named]# service named restart
停止 named: [确定]
启动 named: [确定]
[root@localhost named]# chkconfig named on
[root@localhost named]# host station10.pengpeng.com 192.168.8.253
Using domain server:
Name: 192.168.8.253
Address: 192.168.8.253#53
Aliases:
station10.pengpeng.com has address 192.168.8.10
[root@localhost named]# host 192.168.8.10 192.168.8.253
Using domain server:
Name: 192.168.8.253
Address: 192.168.8.253#53
Aliases:
10.8.168.192.in-addr.arpa domain name pointer station10.pengpeng.com.8.168.192.in-addr.arpa.
[root@localhost named]#
以上配置完成,就可以在同一网络内,开启一台客户机;选择从网卡启动:
客户机首先会获取到由PXE服务器DHCP服务分配的IP地址;
其次获取到由PXE服务器TFTP提供的启动文件;
最后再获取到PXE服务器nfs提供的操作系统镜像。
接着就是根正常装机一样的步骤,一步一步往下装。
但是这样装机,只不过是系统启动文件和镜像来源和我们通常的不同,也是需要一步一步往下安装。
怎样才能不需要这种交互式的操作,客户机只要开机,就可以全自动的安装,一直到我们需要输入用户名、密码
进入系统呢?
二、Kickstart无人值守安装
首先需要安装一个软件 system-config-kickstart
检查系统有没有安装此软件
[root@localhost ~]# rpm -q system-config-kickstart
package system-config-kickstart is not installed
利用YUM进行安装:
[root@localhost ~]yum -y install system-config-kickstart
安装完毕
要实现客户机无人值守安装,服务端就需要提供给客户机相关的配置文件,
配置文件放在服务端哪里? 为了更好的利用linux的网络服务,我们将安装由apache提供的web服务站点上
安装httpd
[root@localhost ~]# yum -y install httpd
创建无人值守配置文件ks.cfg
启动system-config-kickstart
[root@localhost ~]# system-config-kickstart 回车即启动
配置页面如下列图片:
选择在文本模式中执行安装,速度将会非常快:
拷贝此文件到web默认存放位置
[root@localhost ~]# cp /root/ks.cfg /var/www/html/
启动web服务
[root@localhost ~]# service httpd restart
停止 httpd: [失败]
启动 httpd: [确定]
确保web服务开机启动
[root@localhost ~]# chkconfig httpd on
为了防止自动安装时需输入序列号,而暂停安装,需要在配置文件中加一条语句:
[root@localhost ~]# vim /var/www/html/ks.cfg
key --skip (自动跳过输入序列号)
最后还要在引导文件配置中加一条,引导文件改为ks.cfg
[root@localhost ~]# vim /tftpboot/pxelinux.cfg/default
...
label linux
kernel vmlinuz
append ks=http://192.168.8.253/ks.cfg initrd=initrd.img
...
下面开始验证无人值守安装:
将客户机bios调整为从网卡启动,下边就不用管了,喝喝茶,玩玩游戏,等着输入用户名密码就可以了。。。
可以在客户机这边看一下,安装速度非常快
最后系统安装好了:输入用户名root及之前定义好的密码,进入系统:
打开伪字符终端,查看机器名和IP地址的对应关系,即满足之前的实验要求
如图
本人初学linux,菜鸟一个,日后还会发表一些自己做的实验及学习心得, 望各位前辈多多指教,
谢谢!