作者:Scanz
更新版本:V1(20180403初版,待更新格式)
----------------------------------------------
传统装机的局限性
服务器本机没有光驱?
因测试需要,经常要安装新的操作系统?
为一批服务器安装操作系统?
网络装机的优势
规模化:同时装配多台主机
自动化:装系统、配置各种服务
远程实现:不需要光盘、U盘等物理安装介质
什么是PXE网络
PXE,Pre-boot eXecution Environment
预启动执行环境,在执行操作系统之前运行
可用于远程安装、构建无盘工作站
工作模式
PXE client集成在网卡ROM中
当计算机引导时,BIOS把PXE client调入内存执行,
获取PXE server配置、显示菜单、根据用户选择将远程操作系统下载到本机运行
PXE组件及过程分析
需要那些服务?
DHCP,分配IP地址、定位引导程序(指定找谁下载系统启动和初始化文件next-server pxelinux.0 tftp-server(UDP))
DNS服务,为客户机分配主机名
TFTP服务,提供引导程序下载
FTP服务(或HTTP/NFS),提供yum安装源
客户机应具备的条件
网卡ROM必须支持PXE协议
主板支持网络启动
整体配置思路
装机条件准备
准备安装源(FTP方式YUM库)
启动DNS服务(可选)
启用DHCP服务
next-server TFTP服务地址;
filname"引导文件名";
PXE引导配置
启用TFTP服务,提供装机用的内核、初始化文件
提供PXE引导程序、配置启动菜单
客户端 网卡支持PXE
客户端 选择网卡启动
PEX发送
DHCP 分配IP 告知BootServer并ftp
/*
[root@svr5 ~]# yum search pxelinux
已加载插件:product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
============================== Matched: pxelinux ===============================
syslinux.x86_64 : Simple kernel loader which boots from a FAT filesystem
*/
server端:
配置IP yum仓库
yum -y install dhcp tftp-server bind bind-chroot xinetd vsftpd|httpd
vim/etc/dhcp/dhcpd.conf
see "/usr/share/doc/xxx/"
----------------------------------------------无人值守安装------------------------------------------
什么是kickstart技术
无人值守/自动应答
预先提供应答文件,定义好各种安装设置
免去交互过程,实现全自动化安装
添加%post脚本,可执行安装后的各种配置
应答文件从那来
两种方法
/root/anaconda-ks.cfg 找一台客户机获取应答文件模板
system-config-kickstart 安装工具创建新的应答文件
生成应答文件的客户机、YUM库的版本应该与待安装系统一致
修改后部署到PXE服务器的 /var/ftp/ks-el6.cfg
确保客户机可成功下载ftp://xxx/ks-el6.cfg
创建安装RHEL6系统的应答文件:
1. 找一台支持图形桌面的RHEL6的计算机
2. 安装system-config-kickstart
3. 整理YUM仓库设置(只保留RHEL6库、禁用其他库)
4. 启动system-config-kickstart,建立新的应答文件
PXE必须具备条件
DHCP and TFTP Server
PXE Server
PXE 安装包,配置文件
BIOS支持
NIC支持
PXE介绍
PXE:名词解释为预启动执行环境,他是基于TCP/IP、DHCP、TFTP等Internet协议之上的扩展网络协议,是一种新技术,PXE技术提供的从网络启动的功能
DHCP工作原理
DHCP 允许您通过本地网络上的DHCP服务器IP地址数据库为客户端动态指派IP地址;
TFTP介绍安装
Tftp全称为Trivial File Transfer Protocol,中文名叫简单文件传输协议。大家可以从它的名称上看出,它适合传送“简单”的文件。与FTP不同的是,它使用的是UDP的69端口,因此它可以穿越许多防火墙。不过它也有缺点,比如传送不可靠、没有密码验证等
如果你的Server上没有安装TFTP,那么需要如下文件:tftp-server-0.32-4rpm
DHCP and TFTP Server > PXE Server > Client
DHCP and TFTP Server > PXE Server > Client
DHCP and TFTP Server > Client
DHCP and TFTP Server > Client
PXE实现方法
Liunx环境
Windows环境
Linux PXE installation process
1.Download PXE rpm package and configure file ,as below;
pxe-0.1-31.99.7.3.i386.rpm
pxe-1.4.2.tar.gz
2.Copy the RPM and configure file to a temp
pxe-0.1-31.99.7.3.i386.rpm
pxe-1.4.2.tar.gz
pxeconf.tgz
3.Installation PXE run the command as below
rpm -ivh pxe-0.1-31.99.7.3.i386.rpm
4.Tar the pxeconfig.tgz file from the temp
tar zxvf pxeconfig.tgz
tftpboot/X86PC/UNDI/pxelinux/pxelinux.cfg/default
5.Below is pre-install pxe state
cd tftpboot/
cd tftpboot/X86PC/UNDI
6.Below is after install the pxe state
cd tftpboot/X86PC/UNDI/pxelinux/
7.Copy the all tar file to root boot directory
cp * / -rf
cd /tftpboot/X86PC/UNDI/pxelinux/
8.Copy Linux boot file and kernel to pxelinux
pwd ../pxelinux/
cp initrd.img u332/
cp vmlinuz u32/
vim pxelinux.cfg/defaul
9.Edit the configure file
vim pxelinux.cfg/defaul
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label linux
kerner vmlinuz
append initrd=initrd.img
label u332
kerner u332/vmlinuz
append initrd=u332/initrd.img ks=http://10.141.38.88/ks/ks.cfg
配置TFTP Server
vim /etc/xinetd.d/tftp
disable = no 开机自启
server_args = -s /tftpboot 根目录
启动服务及禁用防火墙
启动TFTP服务:
service xinerd restart
启动PXE服务:
service pxe restart
禁用防火墙:
service iptables stop
service ip6tables stop
重新启动服务器时自动禁用防火墙:
chkconfig iptabls off
chkconfig ip6tables off
远程启动PXE
启动Client,确保BIOS设置正确
确保LAN ROM 支持 PXE
在BIOS自检时按F12从这个Network引导,实现远程安装或启动
执行Pxelinux.0
调用配置PXE文件
启动PXE所需文件介绍
pxelinux.0为bootstrap文件,负责系统的引导和启动,
Bootstrap文件pxelinux.0放置在/tftpboot中。Linux内核以及Linux根文件系统也放置在/tftpboot。pxelinux.0在执行过程中,要读配置文件。
所有配置文件都放在/tftpboot/X86PC/UNDI/pxelinux/pxelinux.cfg/目录下
安装Linux所需要引导文件
Vmlinuz
Linitrd.img
以上两个Linux启动文件可通过RedHat第一张光盘/images/pxeboot/下可找到
实验拓扑:
rh6_node1
-----CentOS6.7(private1)----------(private1)
rh6_node2
实验一:案例环境准备:
KVM虚拟化服务器,真机或高配虚拟机(内存>4G)
主机名:kvmsvr.tarena.com
分区示例:
/boot 200MB、SWAP 8GB、/ 100GB、
操作系统:CentOS 6.5 ==> 关闭 iptables 防火墙、关闭SELinux机制,进图形桌面
==> 关闭 NetworkManager 服务
[root@kvmsvr ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=kvmsvr.tarena.com
[root@kvmsvr ~]# hostname kvmsvr.tarena.com
[root@kvmsvr ~]# grep kvmsvr /etc/hosts
192.168.4.1 kvmsvr.tarena.com
[root@kvmsvr ~]# iptables -F //清除iptables防火墙
[root@kvmsvr ~]# service iptables save
[root@kvmsvr ~]# vim /etc/sysconfig/selinux //关闭Selinux
...
SELINUX=disabled
...
[root@kvmsvr ~]# setenforce 0
[root@kvmsvr ~]# getenforce
Disabled
实验二:基于CentOS 6.5构建KVM服务器平台
安装KVM虚拟化条件:
首先CPU要支持虚拟化(Intel是vmx,AMD是svm)
[root@kvmsvr ~]# egrep '(vmx|svm)' --color /proc/cpuinfo
确保BIOS里开启VT
Intel(R) Virtualization Tech [Enabled]
[root@kvmsvr ~]# yum repolist
[root@kvmsvr ~]# echo $LANG
[root@kvmsvr ~]# LANG=en
安装 KVM 虚拟化相关软件、启用服务
[root@kvmsvr ~]# yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"
//不要用/etc/init.d/libvirtd start
[root@kvmsvr ~]# service libvirtd restart
[root@kvmsvr ~]# chkconfig libvirtd on
建议:把vmnet1的ip修改为192.168.5.1
[root@kvmsvr ~]# ifconfig vmnet1
[root@kvmsvr ~]# virt-manager //调出kvm控制台
实验三:添加virbr1隔离接口
[root@kvmsvr ~]# service NetworkManager stop
[root@kvmsvr ~]# chkconfig NetworkManager off
1.虚拟系统管理器 --> 编辑 --> "Connection Details"
单击"+"号 --> network1 --> 192.168.4.0/24
不要启用KVM自带的DHCP
!!!! 避免VMware Workstation的虚拟网卡的冲突
2.确认新添加的虚拟网卡
[root@kvmsvr ~]# ifconfig virbr1
...192.168.4.1
实验四:添加br0桥接接口、准备虚拟机存储
1. 建立桥接网卡 br0
[root@kvmsvr ~]# cp /etc/sysconfig/network-scripts/ifcfg-{eth0,br0}
[root@kvmsvr ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 //调整 br0 配置
DEVICE=br0 //新建的连接名称
TYPE=Bridge //连接类型
ONBOOT=yes
NM_CONTROLLED=no //不接受NetworkManager管理
BOOTPROTO=dhcp //参考原eth0网卡的IP地址
.. ..
[root@kvmsvr ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 //调整 eth0 配置
DEVICE=eth0
TYPE=Ethernet
.. ..
BRIDGE=br0 //桥接到br0
[root@kvmsvr ~]# service network restart
[root@kvmsvr ~]# ifconfig br0
br0 Link encap:Ethernet HWaddr 00:0C:29:F9:C9:F8
inet addr:172.30.6.173 Bcast:192.168.20.255 Mask:255.255.255.0
.. ..
2.准备虚拟机磁盘
建立一个不小于40G的文件系统,挂载到 /data/
[root@kvmsvr ~]# fdisk -l /dev/sda
[root@kvmsvr ~]# fdisk -l /dev/sda |grep sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes
/dev/sda1 * 1 26 204800 83 Linux
/dev/sda2 26 31897 256000000 83 Linux
/dev/sda3 31897 32917 8192000 82 Linux swap / Solaris
/dev/sda4 32917 60801 223986208+ 5 Extended
/dev/sda5 32917 38139 41953660+ 83 Linux
[root@kvmsvr ~]# partx -a /dev/sda
[root@kvmsvr ~]# mkfs.ext4 /dev/sda5
[root@kvmsvr ~]# mkdir /data/
[root@kvmsvr ~]# echo "/dev/sda5 /data ext4 defaults 0 0" >> /etc/fstab
[root@kvmsvr ~]# mount -a
[root@kvmsvr ~]# mkdir -p /data/images
[root@kvmsvr ~]# df -hT |grep /data
/dev/sda5 ext4 40G 176M 38G 1% /data
[root@kvmsvr ~]# dd if=/dev/zero of=/data/images/node1.img bs=10M count=1000
.. .. //用来装第一个RHEL 6.5虚拟机
实验五:准备PXE服务器(修改一下dhcp监听接口,其他步骤略...)
服务范围:virbr1 网络
目标功能:客户机可选装RHEL6.5、CentOS6.5系统,kickstart自动应答
1.为客户机准备软件源(RHEL6.5)
1)安装并启用vsftpd服务
2)发布yum仓库配置文件,供客户机下载
2.配置dhcpd服务
1)能够为192.168.4.0/24网段的客户机分配IP地址
2)告知 TFTP 服务器相关信息
next-server 192.168.4.1;
filename "pxelinux.0";
3)调整dhcpd服务的监听接口(避免影响真机网络)
[root@kvmsvr ~]# vim /etc/sysconfig/dhcpd
DHCPDARGS="virbr1 vmnet1"
[root@kvmsvr ~]# service dhcpd restart
3. 配置tftp-server
1)为PXE客户机提供启动配置、RHEL6内核及引导文件
2)提供CentOS 6.5和RHEL 6.5的kickstart应答文件
实验六:KVM虚拟机管理(virt-manager工具)
1. 运行虚拟机管理器
!!!! 桌面环境 --> 应用程序 --> 系统工具 --> 虚拟系统管理器
!!!! 或直接运行virt-manager命令打开
—— 默认连接到本机的KVM服务平台进行管理
2. 新建一台虚拟机
名称:rh6_n1
内存:1024M
网卡:virbr1
磁盘:/data/images/node1.img
3. 通过PXE方式为此虚拟机安装系统
安装过程全自动,完成后登入系统
检查 YUM 等安装后设置是否自动配置好
.. ..
实验七:在Host OS ssh Guest OS不需要输入密码
管理机(私钥) --> KVM服务器(公钥)
1.在物理机上创建SSH秘钥对,并部署公钥文件
[root@pxesvr ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
2.把生成的公钥上传到虚拟机里面去
[root@pxesvr ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.4.9
3.测试
[root@pxesvr ~]# ssh -X root@192.168.4.9
Last login: Tue Jan 20 15:53:18 2015 from 192.168.4.1
[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 52:54:00:D3:A2:B3
inet addr:192.168.4.9 Bcast:192.168.4.255 Mask:255.255.255.0
COMMENTS | NOTHING