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

来源:互联网 发布:淘宝拍卖的房子利弊 编辑:程序博客网 时间:2024/06/05 08:44

用到的主要文件

这些文件主要在光盘里面
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.cfginitrd=initrd.img text ks=cdrom:/myks.cfgcp /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 httpdsystemctl start httpdsystemctl enable tftp.socket (centos6:chkconfig tftp on)systemctl start tftp.socket (centos6:service xinetd restart)systemctl enable dhcpdmkdir /var/www/html/centos/7mount /dev/sr0 /var/www/html/centos/7

3.准备ks文件

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

4.配置DHCP服务并启动

vi /etc/dhcp/dhcpd.confoption 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/defaultdefault 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 syslinuxchkconfig tftp onchkconfig xinetd onchkconfig httpd onchkconfig dhcpd onservice httpd startservice 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.cfgchmod 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/tftpbootcd /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/defaultvim /var/lib/tftpboot/pxelinux.cfg/defaultdefault vesamenu.c32 指定菜单风格timeout 600display boot.msgmenu background splash.jpgmenu title Welcome to wang CentOS 6menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label automenu label ^Automatic Install Centos6kernel vmlinuzappend initrd=initrd.img ks=http://192.168.100.100/centos/ks/centos6.cfglabel manualmenu label ^Manual Install Centoskernel vmlinuzappend initrd=initrd.img inst.repo=http://192.168.100.100/centos/6label localmenu defaultmenu label Boot from ^local drivelocalboot 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.confoption 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详解