pxe自动化安装linux

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

你可能感兴趣的:(pxe自动化安装linux)