PXE:
Preboot Excution Environment 预启动执行环境
Intel公司研发
- 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统
- PXE可以引导和安装Windows,linux等多种操作系统
1 centos系统的启动流程
启动流程
bootloader -->kernel(initramfs) -->rootfs-->/sbin/init
anaconda:系统安装程序
- centos安装程序启动过程
MBR: isolinux/bootcat
stage2: isolinux/isolinux.bin
配置文件: isolinux/isolinux.cfg
每一个对应的菜单选项:
加载内核:isolinux/vmlinuz
向内核传递参数:append initrd=initrd.img ...
状态根文件系统并启动anaconda
默认启动GUI接口
若是显示指定使用TUI接口:向内核传递text参数即可
1 按tab键,在后面添加text
2 按ESC键: boot:linux text
2 准备
- 系统安装
启动安装过程一般位于引导设备,后续的anaconda及其安装用到的程序包等可来自下面的几种方式:
本地方式
本地光盘
NFS(network file system)
URL:
ftp server: yum repository
http server: yum repository
如果想要手动指定安装源:
boot: linux askmethod
- kickstart 文件的位置
DVD drive: ks=cdrom:/path/to/kickstart_file
hard drive: ks=好的:device:/directory/kickstart_file
http server: ks=http://host:port/path/to/kickstart_file
ftp server: ks=ftp://hosts:port/path/to/kickstart_file
nfs server: ks=nfs:host:/path/to/kickstart_file
- kickstart 文件创建
创建kickstart文件的方式
直接手动编辑
依据root家目录下的anaconda-ks.cfg 文件进行编辑修改
可使用创建工具 system-config-kickstart
依据某模板修改并生成新配置
/root/anaconda-ks.cfg
检查ks文件语法是否有错:ksvalidator
ksvalidator kickstart_file
- 系统光盘中isolinux目录列表
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压缩)
- DHCP服务
同网段多个DHCP服务
dhcp服务必须基于本地
先到先得的原则
相关协议: arp(地址解析协议) rarp(反地址解析)
- dhcp的实现
Linux DHCP协议实现程序:dhcp,dnsmasq(dhcp,dns)
DHCP server 应用程序及配置文件
/usr/bin/dhcpd
/etc/dhcp/dhcpd.conf --> /etc/initd/dhcpd
/etc/dhcp/dhcpd6.conf --> /etc/initd/dhcpd6
dhcp server 监听端口:67/udp
dhcp client 端口: 68/udp
dhcpv6 client:546/udp
DHCP client
dhclient
自动获取IP信息: /var/lib/dhclient
dhcp的配置文件,需要从安装的程序包中复制
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
option domain-name ""; dns的搜索名称
option domain-name-servers ip1,ip2; dns的地址
default-leasetime time(second);默认地址租期
max-lease-time time(second);最大地址租期
subnet licalnet netmask local_mask {
range IP1 IP2;表示此dhcp服务提供的ip范围
option routers ip;得到ip的默认路由
filename "pxelinux.0"; 指明引导文件名称
next-server ip; 指明引导文件的服务器IP地址,使用tftp server
}
- 安装syslinux 我们需要 pxelinux.0和一些菜单风格
- 使用 http作为我们yum源的服务
yum install httpd
1 创建目录方式光盘
mkdir /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7
2 准备kickstart文件
mkdir /var/www/html/ksdir/
cp /path/to/kickstart /var/www/html/ksdir/ks7.cfg
将centos7的kickstart文件复制到此目录下,注意权限,需要读权限
- 配置 tftp server
安装tftp server yum install tftp-server
默认的文件目录/var/lib/tftpboot
1 mkdir /var/lib/tftpboot/pxelinux.cfg 放置default(pxelinux.cfg)文件
2 将syslinux的包的部分文件复制到指定目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
3 将光盘的文件拷到此目录下
cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot
cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
4 修改default 文件,符合我们的需求
default menu.c32
timeout 600
menu title PXE INSTALL MENU
label auto
menu label Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://ip:port/ksdir/ks7.cfg
启动 tftp,dhcp,httpd服务
systemctl start tftp-server dhcpd httpd
然后就可以启动一台新电脑,进行自动化安装
2 将服务升级可以同时实现centos7和centos6的自动化安装
配置centos6 的yum源
1 创建目录方式光盘
mkdir /var/www/html/centos/6
mount /dev/sr0 /var/www/html/centos/6
2 准备kickstart文件
cp /path/to/kickstart6 /var/www/html/ksdir/ks6.cfg
将centos7的kickstart文件复制到此目录下,注意权限,需要读权限
删除/var/lib/tftpboot的目录下所有文件,重新创建
1 mkdir /var/lib/tftpboot/{pxelinux.cfg,centos6,centos7} 放置default(pxelinux.cfg)文件
2 将syslinux的包的部分文件复制到指定目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
3 将centos6和centos7光盘的文件拷到此目录下,指定目录
cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6
cp /var/www/html/centos/7/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
cp /isolinux_point/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default(哪张光盘都可以)
4 修改default 文件,符合我们的需求
default menu.c32
timeout 600
menu title PXE INSTALL MENU
label auto
menu label Auto Install CentOS 7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://ip:port/ksdir/ks7.cfg
menu label Auto Install CentOS 6
kernel centos6/vmlinuz
append initrd=centos6/initrd.img ks=http://ip:port/ksdir/ks6.cfg
- 重新启动服务进行测试
systemctl restart dhcpd tftp-server httpd