这几天学习了如何在虚拟机中安装了一个CentOS 7系统,然后将它作为一个PXE服务器。
那么PXE是什么呢?
PXE(preboot executeenvironment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。它可以自动的帮你安装系统,而不用人工一步步的操作!
先测试虚拟机能不能上网:
ping www.baidu.com
更新yum仓库源:
yum repolist
批量安装dhcpd、tftp、syslinux、wget和vsftpd:
yum install -y dhcp tftp tftp-server syslinux wget vsftpd
关闭SELinux和防火墙
修改/etc/selinux/config
vim /etc/selinux/config
【或者setenforce 0 使得SELINUX=Permissive(暂时性,下次开机后失效)】
systemctl disable firewalld
systemctl stop firewalld (关闭防火墙)
随便设置个虚拟机IP地址。
nmcli con show 查看网卡
nmcli con modi ens33 ipv4.method manual ipv4.addresses 192.168.1.1/24
#我的网卡接口id是ens33。于是将它的IP设为192.168.1.1。
nmcli con up ens33
nmcli con show
ip a #确认192.168.1.1已经成功设置。
设置DHCP服务器
rm /etc/dhcp/dhcpd.conf(删除文件)
【原先存在有该文件,但无法保证以下复制的配置文件内容格式正确所有先删除原先的文件,在重新创建并复制以下内容】
Vim /etc/dhcp/dhcpd.conf
确保配置文件内容如下:
ddns-update-style interim;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
allow unknown-clients;
#A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.2 192.168.1.253;
option domain-name-servers 192.168.1.1;
option domain-name "server1.example.com";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
#PXE SERVER IP
next-server 192.168.1.1; # DHCP server ip
filename "pxelinux.0";
}
至此,上文的filename所指的pxelinux.0目前还没有部署到位。最终它的位置是/tftpboot/pxelinux.0,但不要在这里使用路径,仅使用这个名称就好。上面的每一行结尾都是一个分号(;)。
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = yes
per_source = 11
cps = 100 2
flags = IPv4
}
再创建两个路径:
mkdir /tftpboot/pxelinux.cfg
mkdir /tftpboot/netboot/
点击屏幕右下方光盘图标,在短菜单中选择“连接到主机”
lsblk查看光盘挂载的路径,如sr0 /run/media/root/CentOS 7 x86_64
创建一个新文件夹
mkdir -p /var/ftp/pub
将光盘里的内容全部复制到该文件中:
cp -r /run/media/root/‘CentOS 7 x86_64’/* /var/ftp/pub
“CentOS 7 x86_64”要用引号括起来,否则会出错。
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
#Install OS instead of upgrade
install
#Use NFS installation media
url --url="ftp://192.168.1.1/pub/"
rootpw --plaintext 123456
#root的密码设为123456
#Use graphical install
graphical
firstboot disable
#System keyboard
keyboard us
#System language
lang en_US
#SELinux configuration
selinux disabled
#Installation logging level
logging level=info
#System timezone
timezone Asia/Shanghai
#System bootloader configuration
bootloader location=mbr
clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=200
part pv.01 --size=1 --grow
volgroup rootvg01 pv.01
logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow
%packages
@core
wget
%end
%post
%end
保存后,用ksvalidator检查一下是否有语法错误。
ksvalidator /var/ftp/pub/ks.cfg
default的内容如下:
default menu.c32
prompt 0
timeout 30
MENU TITLE Togogo.net Linux Training
LABEL centos7_x64
MENU LABEL CentOS 7 X64
KERNEL /netboot/vmlinuz
APPEND initrd=/netboot/initrd.img inst.repo=ftp://192.168.1.1/pub ks=ftp://192.168.1.1/pub/ks.cfg
最后这个APPEND写成一行,中间不要断行
重新启动以下服务:
systemctl restart vsftpd
systemctl restart dhcpd
systemctl restart tftp
在VMware中创建一个新的虚拟机,以充当验证PXE服务器的客户机。将其网络适配器的网络连接设为“桥接模式”。
结果:
没有找到操作系统 ……这就尴尬了
应该是网络的问题,但我不知道应该怎么解决,改了好几个地方的配置文件还是没有用。无奈之下只好恢复快照,重新再搞一遍,在第二遍的时候成功了。都是同样的步骤,但是我还是找出了跟第一遍操作不同的地方,不知道是不是这些地方导致网络的问题:
但我之前做的好像不是这样子的啊!!!虽然是最小化安装,最后也是文本界面,但是我跟着做的是有跳到图形界面里自动安装的,它会自动下一步,我只要等他最后面reboot就好了……自闭了。
记一次失败的安装笔记?。。。