Linux用PXE自动化安装系统和制作引导盘

用到的主要文件

这些文件主要在光盘里面
solinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
isolinux.cfg: isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
vesamenu.c32:是光盘启动后的安装图形界面,也属于SYSLINUX项目, menu.c32版本是纯文本的菜单
Memtest:内存检测,这是一个独立的程序
splash.jgp:光盘启动界面的背景图
vmlinuz:是内核映像
initrd.img是ramfs (先cpio,再gzip压缩)

制作引导光盘

创建引导光盘:

只做启动引导,ks默认是光盘里的myks.cfg文件,可以在菜单界面手动输入ks文件路径

cp -r /misc/cd/isolinux/ /tmp/myiso/
vim /tmp/myiso/isolinux/isolinux.cfg
initrd=initrd.img text ks=cdrom:/myks.cfg
cp /root/myks.cfg /tmp/myiso/
cd /tmp;mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/

注意:以上命令的路径都是相对于光盘的根, 而和工作目录无关,/misc/cd代表光盘路径

mkisofs选项:
-o 指定映像文件的名称。
-b 指定在制作可开机光盘时所需的开机映像文件。
-c 制作可开机光盘时,会将开机映像文件中的 no-eltoritocatalog 全部内容作成一个文件。
-no-emul-boot 非模拟模式启动。
-boot-load-size 4 设置载入部分的数量
-boot-info-table 在启动的图像中现实信息
-R 或 -rock 使用 Rock RidgeExtensions
-J 或 -joliet 使用 Joliet 格式的目录与文件名称
-v 或 -verbose 执行时显示详细的信息
-T 或 -translation-table 建立文件名的转换表,适用于
不支持 Rock Ridge Extensions 的系统上

PXE安装

因为centos6和centos7命令有所不同,安装的过程会有差异

centos7

1.安装前准备:关闭防火墙和SELINUX, DHCP服务器配置静态IP

2.所需软件包并启动服务

systemctl enable httpd
systemctl start httpd
systemctl enable tftp.socket (centos6:chkconfig tftp on)
systemctl start tftp.socket (centos6:service xinetd restart)
systemctl enable dhcpd
mkdir /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7

3.准备ks文件

/var/www/html/ks/ks6.cfg #注意:权限
kickstart详细介绍

4.配置DHCP服务并启动

vi /etc/dhcp/dhcpd.conf
option domain-name "example.org";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
filename "pxelinux.0";
next-server 192.168.100.100;
}

systemctl start dhcpd

5.准备相关文件

mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

6.弄好后的文件列表如下:

/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz

7.准备启动菜单

vi /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 #启动菜单样式简约版
timeout 600 #等待60s进入默认菜单
menu title PXE INSTALL MENU #启动菜单大标题
label auto
 menu label Install CentOS 7 Auto
 menu default
 kernel vmlinuz #内核文件,路径以tftpboot目录为根目录
 append initrd=initrd.img ks=http://192.168.100.100/ks/ks7.cfg #kickstart文件路径
label manual
 menu label Install CentOS 7 Manual
 kernel vmlinuz
 append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7 #远程yum源

centos6

1.安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP

yum install dhcp httpd tftp-server syslinux
chkconfig tftp on
chkconfig xinetd on
chkconfig httpd on
chkconfig dhcpd on
service httpd start
service xinetd start

2.准备Yum 源和相关目录

mkdir -pv /var/www/html/centos/{6,ks}
mount /dev/sr0 /var/www/html/centos/6

3.准备kickstart文件

/var/www/html/centos/ks/centos6.cfg
chmod 644 /var/www/html/centos/ks/centos6.cfg

4.准备相关的启动文件

mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cd /misc/cd/images/pxeboot/
cp vmlinuz initrd.img /var/lib/tftpboot
cd /misc/cd/isolinux/
cp boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot

5.准备启动菜单文件

cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 指定菜单风格
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to wang CentOS 6
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label auto
menu label ^Automatic Install Centos6
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.100.100/centos/ks/centos6.cfg
label manual
menu label ^Manual Install Centos
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.100.100/centos/6
label local
menu default
menu label Boot from ^local drive
localboot 0xffff

6.目录结构如下:

tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.msg
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│ └── default
├── splash.jpg
├── vesamenu.c32
└── vmlinuz

7.配置dhcp服务并启动

vim /etc/dhcp/dhcpd.conf
option domain-name "hello.com"; #域名
option domain-name-servers 192.168.100.1;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200; #分配IP地址范围
option routers 192.168.100.1; #网关
filename "pxelinux.0"; #网络启动引导文件
next-server 192.168.100.100; #TFTP服务器IP
}

service dhcpd start

如果是实验要重新开一个虚拟网络,以防干扰现在的网络,虚拟机内存要大于1G,然后启动电脑进入BIOS选择网络启动

总结

PXE安装的整体流程:

主机–>dhcp服务器–>获取IP–>访问TFTP服务器IP–>获取pxelinux.0–>内核、驱动、ks文件路径–>访问ks文件–>获取yum源路径–>下载系统所需安装包

过程中注意事项都在过程中详细列出,想了解kickstart文件格式请看 anaconda详解

你可能感兴趣的:(自动化安装系统)