103、kickstart自动化安装操作系统
103.1、前言:
作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。
常规的办法有:
光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数。用USB外置光驱,插来插去也醉了。
U盘安装系统===>还是同样的问题,要一台一台服务器插U盘。
103.2、pxe介绍:
PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。
103.3、pex工作流程:
1.PXE Client向DHCP发送请求:
PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
2.DHCP服务器提供信息:
DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端
分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
3.PXE客户端请求下载启动文件:
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
4.Boot Server响应客户端请求并传送文件:
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动
安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
5.请求下载自动应答文件:
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),
则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
这里有个问题,在第2步和第5步初始化2次网络了,这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。因此PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次获取IP地址过程,但IP地址在DHCP的租期内是一样的。
6.客户端安装操作系统:
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。
OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
103.4、批量装机软件介绍:
Redhat系主要有两种Kickstart和Cobbler。
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。
如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果
没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者
完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。
Cobbler集中和简化了通过网络安装操作系统需要使用到的DHCP、TFTP和DNS服务的配置。Cobbler不仅有一个命令行界面,还提
供了一个Web界面,大大降低了使用者的入门水平。Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。
简单的说,Cobbler是对kickstart的封装,简化安装步骤、使用流程,降低使用者的门槛。
103.5、系统环境准备:
[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)
[root@m01 ~]# uname -r
2.6.32-754.3.5.el6.x86_64
[root@m01 ~]# getenforce
Disabled
[root@m01 ~]# /etc/init.d/iptables status
iptables:未运行防火墙。
[root@m01 ~]# ifconfig eth0 | awk -F "[ :]+" 'NR==2{print $4}'
10.0.0.61
[root@m01 ~]# hostname
m01
注意:因为是使用的虚拟机进行实验,eth0网卡使用的nat,需要将dhcp功能去掉,防止冲突;
103.6、dhcp服务安装:
dhcp工作流程:
[root@m01 ~]# yum install dhcp -y
[root@m01 ~]# rpm -qa dhcp
dhcp-4.1.1-63.P1.el6.centos.x86_64
[root@m01 ~]# rpm -ql dhcp | grep "dhcpd.conf"#查看dhcp配置文件的位置;
/etc/dhcp/dhcpd.conf
/usr/share/doc/dhcp-4.1.1/dhcpd-conf-to-ldap
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
/usr/share/man/man5/dhcpd.conf.5.gz
[root@linux-node1 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
[root@m01 ~]# \cp -av /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
"/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample" -> "/etc/dhcp/dhcpd.conf"
103.6.1、dhcp服务参数配置:
[root@m01 ~]# egrep -v "^$|#" /etc/dhcp/dhcpd.conf
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.200; #可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; #设定netmask
default-lease-time 21600; #单位:分钟,设置默认的IP租用期限15天
max-lease-time 43200; #单位:分钟,设置最大的IP租用期限30天
next-server 10.0.0.61; #告知客户端TFTP服务器的ip
filename "/pxelinux.0"; #告知客户端从TFTP根目录下载pxelinux.0文件
}
[root@m01 ~]# /etc/init.d/dhcpd start
正在启动 dhcpd: [确定]
[root@m01 ~]# netstat -tunlp|grep dhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 3921/dhcpd
[root@m01 ~]# chkconfig dhcpd off
103.6.2、补充说明:
本来软件装完后都要加入开机自启动,但这个Kickstart系统就不能开机自启动,而且用完后服务都要关闭,防止未来重启服务器自动重装系统了。
如果机器数量过多的话,注意dhcp服务器的地址池,不要因为耗尽IP而导致dhcpd服务器没有IP地址release的情况。
dhcp服务默认是开机不启动的;
dhcp启动后如果是多网卡的情况下默认监听的是所有的网卡,且在配置地址池的地址时要和网卡的地址在同一个网段内才会生效,这里监听的eth0;
dhcp指定监听网卡:
[root@m01 ~]# vim /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth1
103.7、安装tftp服务:
103.7.1、tftp服务简介:
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、
开销不大的文件传输服务。端口号为69。
103.7.2、tftp服务安装:
[root@m01 ~]# yum install tftp-server -y
[root@m01 ~]# rpm -qa tftp-server
tftp-server-0.49-8.el6.x86_64
103.7.3、tftp服务配置:
[root@m01 ~]# egrep -v "^$|#" /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot #指定的目录,保持默认,不用更改;
disable = no #由原来的yes改为no;
per_source = 11
cps = 100 2
flags = IPv4
}
[root@m01 ~]# /etc/init.d/xinetd start
正在启动 xinetd: [确定]
[root@m01 ~]# netstat -tunlp|grep xinetd
udp 0 0 0.0.0.0:69 0.0.0.0:* 4452/xinetd
[root@m01 ~]# chkconfig xinetd off
103.8、配置http服务:
103.8.1、安装apache软件:
[root@m01 ~]# yum install httpd -y
[root@m01 ~]# rpm -qa httpd
httpd-2.2.15-69.el6.centos.x86_64
[root@m01 html]# sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf
[root@m01 html]# mkdir /var/www/html/CentOS-6.7 -p #创建镜像挂载目录;
[root@m01 html]# mount /dev/cdrom /var/www/html/CentOS-6.7/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@m01 html]# df -h
/dev/sr0 3.7G 3.7G 0 100% /var/www/html/CentOS-6.7
[root@m01 html]# /etc/init.d/httpd start
正在启动 httpd: [确定]
测试浏览器访问:
103.8.2、配置说明:
可以使用nginx搭建web服务器;
不管怎么弄,只要把安装光盘内容能通过web发布即可。因为是演示,如果复制镜像就有点浪费时间。但生产环境就一定要复制了,
光盘读取速度有限。
103.9、配置支持pxe的启动程序:
103.9.1、bootstrap介绍:
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,
并建立修护或其它特殊用途的启动盘。
103.9.2、安装syslinux:
[root@m01 html]# yum -y install syslinux
[root@m01 html]# rpm -qa syslinux
syslinux-4.04-3.el6.x86_64
103.9.3、配置linux启动文件:
[root@m01 ~]# \cp -av /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
"/usr/share/syslinux/pxelinux.0" -> "/var/lib/tftpboot/pxelinux.0"
[root@m01 ~]# \cp -av /var/www/html/CentOS-6.7/isolinux/* /var/lib/tftpboot/
"/var/www/html/CentOS-6.7/isolinux/boot.cat" -> "/var/lib/tftpboot/boot.cat"
"/var/www/html/CentOS-6.7/isolinux/boot.msg" -> "/var/lib/tftpboot/boot.msg"
"/var/www/html/CentOS-6.7/isolinux/grub.conf" -> "/var/lib/tftpboot/grub.conf"
"/var/www/html/CentOS-6.7/isolinux/initrd.img" -> "/var/lib/tftpboot/initrd.img"
"/var/www/html/CentOS-6.7/isolinux/isolinux.bin" -> "/var/lib/tftpboot/isolinux.bin"
"/var/www/html/CentOS-6.7/isolinux/isolinux.cfg" -> "/var/lib/tftpboot/isolinux.cfg" #启动时显示的引导界面;
"/var/www/html/CentOS-6.7/isolinux/memtest" -> "/var/lib/tftpboot/memtest"
"/var/www/html/CentOS-6.7/isolinux/splash.jpg" -> "/var/lib/tftpboot/splash.jpg"
"/var/www/html/CentOS-6.7/isolinux/TRANS.TBL" -> "/var/lib/tftpboot/TRANS.TBL"
"/var/www/html/CentOS-6.7/isolinux/vesamenu.c32" -> "/var/lib/tftpboot/vesamenu.c32"
"/var/www/html/CentOS-6.7/isolinux/vmlinuz" -> "/var/lib/tftpboot/vmlinuz"
[root@m01 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg #创建一个pxelinux.cfg目录,存放客户端的配置;
[root@m01 ~]# \cp -av /var/www/html/CentOS-6.7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
"/var/www/html/CentOS-6.7/isolinux/isolinux.cfg" -> "/var/lib/tftpboot/pxelinux.cfg/default"
[root@m01 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 #默认加载第一个菜单;
#prompt 1 #开启会显示命令行boot:提示符,prompt指为0时在不提示,将会直接启动‘default’参数中指定的内容;
timeout 600 #引导时等待时间;
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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 #指定要启动的内核,默认是tftpboot目录;
append initrd=initrd.img #指定追加给内核的参数,initrd.img是一个最小的linux系统;
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img 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 -
103.10、此时pxe安装完成,可以手动安装linux了:
103.10.1、选择url模式安装:
103.10.2、禁用ipv6
103.10.3、输入http的地址:
103.10.4、进行安装:
103.11、配置kickstart服务:
103.11.1、kickstart简介:
通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,
只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安
装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。
103.11.2、生成kickstart配置文件的三种方法:
方法1、 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统
类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)
方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。
kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5)。
方法3、阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。
103.11.3、centos系统中anaconda-ks.cfg文件:
[root@m01 ~]# egrep -v "^$|#" anaconda-ks.cfg
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
network --onboot no --device eth1 --bootproto dhcp --noipv6
rootpw --iscrypted $6$uzBPN.vSUjJ0A6k6$IV6fpwO67zbMeGydfrPRilV7e8ZQKxpvrFE8eI5iWiPG/L9hwDXR2tPuP3MsqFyfWzR626nW8cabikwdWey8Y1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages
@base
@compat-libraries
@core
@debugging
@development
@server-policy
@workstation-policy
python-dmidecode
sgpio
device-mapper-persistent-data
systemtap-client
%end
103.11.4、手动编写ks.cfg文件:
[root@m01 ~]# grub-crypt #生成root用户的加密密码,类似/etc/shdowpass
Password: #密码,123456;
Retype password:
$6$UW3dXT35pL2NEPoI$TUBlyW9BSre2lAgcA0mmw0EVy76eyBmJmFfeYpKa8CrdLNUjz5jO1SvFbQF/wtmFvmtvpaUNxgw/Rg9guA9Ze1
[root@m01 ~]# mkdir /var/www/html/ks_config -p #创建ks配置文件;
[root@m01 ~]# vim /var/www/html/ks_config/CentOS-6.7-ks.cfg
##############################################################
# Description: Linux system initialization
#Author:Lc
##############################################################
install #告知安装程序,这是一次全新安装,而不是升级upgrade。
url --url="http://10.0.0.61/CentOS-6.7/" #通过FTP或HTTP从远程服务器上的安装树中安装
#url --url ftp://<username>:<password>@<server>/<dir>
text #使用文本模式安装
lang en_US.UTF-8 #设置在安装过程中使用的语言
keyboard us #设置系统键盘类型。keyboard us
zerombr #清除mbr引导信息
##############################################################
#bootloader,系统引导配置
#--location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
#--driveorder,指定在BIOS引导顺序中居首的驱动器。
#--append=,指定内核参数.要指定多个参数,使用空格分隔它们。
#centos7改卡的参数:--append="net.ifnames=0 biosdevname=0 crashkernel=auto rhgb quiet"
##############################################################
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
##############################################################
#network,为通过网络的kickstart安装以及所安装的系统配置联网信息。
#--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp
#static方法要求在kickstart文件里输入所有的网络信息。
#network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
#请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
#--ip=,要安装的机器的IP地址.
#--gateway=,IP地址格式的默认网关.
#--netmask=,安装的系统的子网掩码.
#--hostname=,安装的系统的主机名.
#--onboot=,是否在引导时启用该设备.
#--noipv6=,禁用此设备的IPv6.
#--nameserver=,配置dns解析.
##############################################################
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai #设置系统时区
authconfig --enableshadow --passalgo=sha512 #设置密码加密方式为sha512 启用shadow文件
#root密码
rootpw --iscrypted $6$UW3dXT35pL2NEPoI$TUBlyW9BSre2lAgcA0mmw0EVy76eyBmJmFfeYpKa8CrdLNUjz5jO1SvFbQF/wtmFvmtvpaUNxgw/Rg9guA9Ze1
clearpart --all --initlabel #从系统中清除所有分区,初始化磁盘标签;
##############################################################
#part 磁盘分区
#--fstype,为分区设置文件系统类型.有效的类型为ext2,ext3,ext4 xfs,swap和vfat。
#--asprimary,强迫把分区分配为主分区,否则提示分区失败。
#--size,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
#--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。
##############################################################
part /boot --fstype=ext4 --asprimary --size=200 #boot分区为200m
part swap --size=1024 #交换分区为1G
part / --fstype=ext4 --grow --asprimary --size=200 #根分区使用剩余的所有空间
firstboot --disable #负责协助配置redhat一些重要的信息。
selinux --disabled #关闭selinux
firewall --disabled #关闭防火墙
logging --level=info #设置日志级别
#设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。
reboot
##############################################################
#%packages
#@groupname:指定安装的包组
#package_name:指定安装的包
#-package_name:指定不安装的包
##############################################################
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
iptraf
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
screen
%end
%post #%post:安装系统后执行的命令或脚本(基本支持所有命令)
wget -O /tmp/optimization.sh http://10.0.0.61/ks_config/optimization.sh >/dev/null 2>&1
/bin/sh /tmp/optimization.sh
%end #结束
103.11.5、创建优化脚本:
[root@m01 ~]# vim /var/www/html/ks_config/optimization.sh
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
##############################################################
# Description: Linux system initialization
#Author:Lc
##############################################################
. /etc/init.d/functions #functions方法用于设置linux的umask,时区,color等参数;
# Defined result function
function Msg(){
if [ $? -eq 0 ];then
action "$1" /bin/true
else
action "$1" /bin/false
fi
}
# Defined IP function
function ConfigIP(){
Suffix=`ifconfig eth0|awk -F "[ .]+" 'NR==2 {print $6}'`
cat >/etc/sysconfig/network-scripts/ifcfg-eth0 << END
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.0.0.$Suffix
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no
DNS2=8.8.8.8
GATEWAY=10.0.0.253
DNS1=114.114.114.114
END #该end前面不能出现任何的空格,否则会报错;
Msg "config eth0"
}
# Defined Hide the system version number Functions
function HideVersion(){
>/etc/issue
Msg "Hide issue"
> /etc/issue.net
Msg "Hide issue.net"
}
# Defined OPEN FILES Functions
function openfiles(){
echo '* - nofile 65535' >> /etc/security/limits.conf
Msg "open files"
}
# Defined System Startup Services Functions
function boot(){
for lc in `chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE "crond|network|rsyslog|sshd|sysstat"`
do
chkconfig $lc off
done
Msg "BOOT config"
}
# Defined Time Synchronization Functions
function Time(){
echo "#time sync by lc at $(date +%F)" >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
Msg "Time Synchronization"
}
# Defined Hisitory、LoginTime
function History(){
echo "export TMOUT=1200" >>/etc/profile
Msg "TMOUT"
echo "export HISTFILESIZE=20" >>/etc/profile
Msg "HISTFILESIZE"
echo "export HISTSIZE"=20 >>/etc/profile
Msg "HISTSIZE"
source /etc/profile
Msg "source /etc/profile"
}
# Defined main Functions
function main(){
ConfigIP
HideVersion
openfiles
boot
Time
History
}
main #调用main方法,执行所有的脚本;
[root@m01 ~]# chmod u+x /var/www/html/ks_config/optimization.sh
[root@m01 ~]# ls -l /var/www/html/ks_config/optimization.sh
-rwxr--r-- 1 root root 2271 12月 18 17:14 /var/www/html/ks_config/optimization.sh
103.12、整合default文件配置;
[root@m01 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
label linux
menu label ^Install Optimization Linux System By LC
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://10.0.0.61/ks_config/CentOS-6.7-ks.cfg ksdevice=eth0
#当客户端有多块网卡时,从第一块网卡启动;
103.13、安装系统:
1、新建一台虚拟机,稍后安装操作系统,网卡使用eth0,我这里使用的nat指向eth0网卡;
2、启动虚拟机:
103.14、总结:
最小的启动系统:.cfg文件(界面)和最小的内核系统.img,.vmlinuz文件
安装操作系统主要依靠的是最小的启动系统,然后再安装其它的包文件;
pxe不过是将包安装包放在了远端的服务上,最小的启动系统在客户端上;
自动化安装不过是将操作系统的交互模式通过配置文件转化为了非交互模式;