环境:
IP: 172.16.0.11 centos 7.2
一. tftp
安装tftp服务端和客户端 [root@localhost ~]# yum -y install tftp tftp-server 启动tftp [root@localhost ~]# systemctl start tftp.socket [root@localhost ~]# systemctl enable tftp.socket [root@localhost ~]# ss -unl | grep :69 UNCONN 0 0 :::69 :::* 在tftp工作目录下准备一个文件,进行测试 [root@localhost ~]# ls /var/lib/tftpboot/ [root@localhost ~]# cp /etc/grub2.cfg /var/lib/tftpboot/ 先切换到本地/tmp目录, 因为tftp不支持lcd命令 [root@localhost ~]# cd /tmp 下载grub2.cfg文件 [root@localhost tmp]# tftp 172.16.0.11 tftp> get grub2.cfg tftp> quit 查看本地目录: [root@localhost tmp]# ls fstab grub2.cfg nginx.conf 删除测试文件 [root@localhost tmp]# rm /var/lib/tftpboot/grub2.cfg
二. dhcp
[root@localhost tmp]# cd /etc/dhcp
[root@localhost dhcp]# vim dhcpd.conf
注释掉host配置项
#host hostname { #名称标识 和客户端hostname可以不同
# hardware ethernet 00:0c:29:f9:98:20; #客户端mac
# fixed-address 172.16.100.10; #给上面的mac固定ip地址
#}
option domain-name "magedu.com"; #搜索后缀
option routers 172.16.0.254; #网关, 配置成实际的网关
option domain-name-servers 202.106.0.20; #dns地址
subnet 172.16.0.0 netmask 255.255.0.0 { #子网
range 172.16.100.101 172.16.100.130; #地址池
filename "pxelinux.0";
next-server 172.16.0.11;
}
[root@localhost dhcp]# systemctl restart dhcpd.service
[root@localhost dhcp]# ss -unl | grep :67
UNCONN 0 0 *:67 *:*
三. yum 仓库
使用光盘做yum仓库, 最好拷贝到某个目录,而不是直接挂载光盘, 此处直接挂载 [root@localhost dhcp]# mkdir -pv /var/www/html/centos/7/x86_64 [root@localhost dhcp]# mount -r /dev/cdrom /var/www/html/centos/7/x86_64 [root@localhost dhcp]# ls /var/www/html/centos/7/x86_64/ CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL [root@localhost dhcp]# systemctl start httpd.service
四. kickstart
制作kickstart文件










[root@localhost ~]# ksvalidator centos7.cfg [root@localhost dhcp]# mkdir /var/www/html/kickstarts [root@localhost dhcp]# vim /var/www/html/kickstarts/centos7.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts # old format: keyboard us # new format: keyboard --vckeymap=us --xlayouts='us' # Root password rootpw --iscrypted $1$hgfvQffN$tXNj5mQldgQt4ziW1QhNF0 # Use network installation url --url="http://172.16.0.11/centos/7/x86_64" # System language lang en_US # Firewall configuration firewall --disabled # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # System services services --disabled="chronyd" ignoredisk --only-use=sda # Network information network --bootproto=dhcp --device=eno16777984 # Reboot after installation reboot # System timezone timezone Asia/Shanghai --ntpservers=3.centos.pool.ntp.org,0.centos.pool.ntp.org,2.centos.pool.ntp.org,1.centos.pool.ntp.org # System bootloader configuration bootloader --location=mbr --boot-drive=sda # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --asprimary --fstype="xfs" --size=1000 part swap --fstype="swap" --size=8000 part / --fstype="xfs" --grow --size=1 %packages @^minimal @core %end
五. pxeliunx
配置yum仓库, 使用公网yum仓库亦可
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=file:///var/www/html/centos/7/x86_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost Packages]# yum -y install syslinux
[root@localhost Packages]# rpm -ql syslinux | grep "pxelinux.0"
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
拷贝pxelinux到tftp工作目录
[root@localhost Packages]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
拷贝内核和initrd文件
[root@localhost ~]# cp /var/www/html/centos/7/x86_64/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
准备字符界面需要的文件
[root@localhost ~]# cp /usr/share/syslinux/{chain.c32,menu.c32,memdisk,mboot.c32} /var/lib/tftpboot/
准备引导界面目录
[root@localhost tftpboot]# cd
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
chain.c32 initrd.img mboot.c32 memdisk menu.c32 pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://172.16.0.11/centos/7/x86_64
LABEL linux_autoinst
MENU LABEL Install CentOS 7 x86_64 auto
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://172.16.0.11/centos/7/x86_64 ks=http://172.16.0
.11/kickstarts/centos7.cfg
启动httpd服务(之前启动过,此处应不需要重启)
[root@localhost pxelinux.cfg]# systemctl start httpd.service
六. 验证
创建虚拟机并启动




注意: 此处网关设置得不太合理, 并不是pxe服务器作为网关,导致无法上网, 签名配置文件中已改成正确的网关
问题: yum -y install syslinux时,报Error downloading packages:
syslinux-4.05-13.el7.x86_64: [Errno 256] No more mirrors to try.
解决方法:
[root@localhost Packages]# rm -fr /var/cache/yum/* [root@localhost Packages]# yum clean all
原创文章,作者:hansj,如若转载,请注明出处:http://www.178linux.com/77410

