1.1. 原理

无人值守自动安装Linux操作系统,在部署好服务环境后,拥有PXE功能网卡的机器(Client)开机时能够选择网络引导安装。首先Client开机后会ARP广播请求IP地址,DHCP服务响应IP请求的同时,指定了next-server(tftp)的IP和需要Client下载的pxelinux.0文件位置。下载执行pxelinux.0后获取系统启动的相关vmlinuz和initrd文件,相当于启动了一个小型无盘操作系统。执行pxelinux.cfg/default文件时找到ks.cfg位置并下载,通过ks.cfg的配置指定了软件包源路径和安装配置,而后自动安装操作系统。

  • PXE Client向DHCP Server发送请求 PXE Client(需要安装系统的机器)从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP发送一个ARP广播请求,向本网络中的DHCP服务器请求IP等信息。

  • DHCP服务器提供信息 DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过后它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、子网掩码、网关、pxelinux启动程序(TFTP)位置,以及配置文件所在位置等相关信息。

  • PXE客户端请求下载启动文件 客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

  • Boot Server(tftp)响应客户端请求并传送文件 BootROM由TFTP通讯协议从tftp Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

  • 请求下载自动应答文件 客户端通过pxelinux.cfg/default文件成功的引导Linux运行内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

  • 客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到系统安装所需要的软件源服务器,并按照该文件的配置请求下载安装过程需要的软件包。

1.2. 步骤

安装配置DHCP服务

作用:分配IP地址和指定next-server(tftp)等信息

yum -y install dhcp
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf

修改/etc/dhcp/dhcpd.conf

subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.200;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.0.0.7;  #tftp 服务器
filename "/pxelinux.0"; #tftp服务上/var/lib/tftpboot/pxelinux.0
}

绑定DHCP分配IP网卡接口(多网卡机器需要配置) 修改/etc/sysconfig/dhcpd

# Command line options here
DHCPDARGS=“eth0”

启动DHCP服务

/etc/init.d/dhcpd start

netstat -tunlp|grep dhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 1573/dhcpd

安装tftp服务

作用:提供vmlinuz、initrd等内核文件下载

安装tftp-server

yum -y install tftp-server

修改tftp配置/etc/xinetd.d/tftp

disable = no # 由原来的yes改为no

启动tftp-server

/etc/init.d/xinetd restart

netstat -tunlp|grep 69`
udp 0 0 0.0.0.0:69 0.0.0.0:* 1106/xinetd`

服务内核镜像(PE)

syslinux有很多变种(都是官方的)适用于各种媒质,如syslinux用于从微软的文件系统fat 16/32引导,isolinux用于从光盘引导,pexlinux用于从网络引导,extlinux用于从ext2/3文件系统引导。

isolinux.cfg 文件是干什么的 ISOLINUX是 SYSLINUX项目的一系列引导程序中的一个,简单的说就是类似GRUB的一个东西,就是启动然后引导内核。ISOLINUX的特点如其名,区别于 GRUB LILO等的地方,就是他可以认出iso9660文件系统,所以可以读出cd上的内核镜像和inird 镜像,然后引导。

ISOLINUX启动后,默认会去读出cd光盘根目录的一个isolinux.cfg 文件,isolinux.cfg 类似grub的menu.lst,指定的内核镜像位置等。

yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/isolinux/\* /var/lib/tftpboot/

新建一个pxelinux.cfg目录,存放客户端的配置文件。
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

ls /var/lib/tftpboot
pxelinux.0   #网络引导grub
vesamenu.c32 #引导菜单文件
vmlinuz      #内核镜像
initrd.img   #初始化进程镜像
splash.jpg   #背景图片
boot.msg     #引导文件
isolinux.cfg/default #类grub配置文件

修改default文件

default vesamenu.c32
#prompt 1
timeout 60  #60-->6秒(1/10秒)

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.3!
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 linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append ks=http://10.0.0.1/ks.cfg initrd=initrd.img #指定ks.cfg位置
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append 

安装vsftp/http服务

作用:提供操作系统安装时软件的下载服务

yum -y install httpd
/etc/init.d/httpd start
cp -r /dev/cdrom/* /var/www/html
配置一个ks.cfg

开机安装

作用:开启启动通过网卡引导自动安装

配置文件

  • ks.cfg
# Kickstart file automatically generated by anaconda.
#键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择

#version=DEVEL

#指定默认执行内容,是安装install还是升级upgrade
install

#文本方式安装,图像graphical
text

#安装方式,一般是ISO镜像挂载的目录。如果是网络安装的话可以写成 
#url ––url ftp://192.168.1.254/dir
#nfs --server=192.168.0.241 --dir=/centosinstall
#cdrom
url --url=http://10.0.0.1/

#如果是redhat的系统,会要求输入key,这里配置为跳过,如果不配置安装时会停在那里要求用户输入key
key –skip

#语言
lang en_US.UTF-8

#键盘样式
keyboard us

#网络配置 配置具体参数样例:network –onboot yes --bootproto=static --ip=192.168.1.1 --netmask=255.255.255.0 其他网关,DNS等格式。是按照号操作系统后对ifcfg-eth0的配置,在pxelinux.cfg/default之前会还有多种下载方式,可以研究如何下载
#network --onboot yes --device eth0 --bootproto static --ip=10.0.0.101 --netmask=255.255.255.0

network --onboot no --device eth0 --bootproto dhcp --noipv6

#管理员密码,是加密过的 要是使用不加密的方式则这样写:rootpw 123456
rootpw  --iscrypted $6$.U.Eg6dK4XP3FjND$t88vA623WNOtosCHQyV1.B7j7sm3R.W6dhOw1xRq3DNHowild41YcHcFIKeFRPARuKcH5PhgSoimBDuk2YzWr/

#开启防火墙,并打开ssh端口。关闭使用--disabled
firewall --service=ssh

#快速启动,不进行磁盘检测
fastboot --disabled

#用户认证和密码加密方式
authconfig --enableshadow --passalgo=sha512

#强制打开selinux。禁用使用--disabled
selinux --enforcing

#时区设置
timezone --utc Asia/Shanghai

#清空磁盘的mbr
zerombr yes

#引导程序相关参数
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

#初始化磁盘,清楚磁盘所有数据
clearpart –-all –-initlabel

#磁盘分区,单位是MB --grow会将剩下的全部分配给指定的分区
part swap --fstype=swap ---size=2048
part /boot --fstype=ext3 --size=1048
part / --fstype=ext3 --grow --size=1


#repo位置
#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100 

#安装完后自动reboot
reboot

#============================================================
#在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系
#%packages
#@groupname:指定安装的包组
#package_name:指定安装的包
#-package_name:指定不安装的包

%packages
@base
@console-internet
@core    #mini安装就只会安装核心软件包组core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
pax
oddjob
sgpio
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
gcc
gcc-c++
make
cmake
#=======================================================================
#脚本段(可选):

#%pre:预安装脚本(由于只依赖于启动镜像,支持的命令很少)

#%post:后安装脚本(基本支持所有命令)
%post

cat >> /etc/yum.repos.d/base.repo <<eof  #配置yum源
[base]
name=baseserver
baseurl=http://10.0.0.1
gpgcheck=0
enable=1
eof

/etc/init.d/network restart
%end

http://blog.oldboyedu.com/autoinstall-kickstart/

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-06-19 08:59:50

results matching ""

    No results matching ""