第1章ubuntu14安装kickstart
1. 简介
什么是PXE
PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。
PXE Client向DHCP发送请求
PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
DHCP服务器提供信息
DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
PXE客户端请求下载启动文件
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
Boot Server响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
请求下载自动应答文件
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
1.1系统环境准备
root@linux-node1:~# cat /etc/os-release NAME="Ubuntu" VERSION="14.04.5 LTS, Trusty Tahr" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 14.04.5 LTS" VERSION_ID="14.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL=http://bugs.launchpad.net/ubuntu/ root@linux-node1:~# ifconfig eth0|awk -F "[ :]+" 'NR==2 {print $4}' 192.168.56.20 root@linux-node1:~# hostname linux-node1.example.com
1.2安装包
apt-get install isc-dhcp-server tftpd-hpa apache2 -y
1.3DHCP配置文件
cp /etc/dhcp/dhcpd.conf{,.ori}做好备份 root@linux1-node1:~# cat /etc/dhcp/dhcpd.conf option domain-name "example.com"; option domain-name-servers 192.168.56.2; ddns-update-style none; authoritative; default-lease-time 600; max-lease-time 7200; log-facility local7; next-server 192.168.56.20; filename "pxelinux.0"; subnet 192.168.56.0 netmask 255.255.255.0 { range 192.168.56.128 192.168.56.250; option routers 192.168.56.2; option broadcast-address 192.168.56.255; } # 注释 range 192.168.56.128 192.168.56.250; # 可分配的起始IP-结束IP option subnet-mask 255.255.255.0; # 设定netmask default-lease-time 21600; # 设置默认的IP租用期限 max-lease-time 43200; # 设置最大的IP租用期限 next-server 192.168.56.20;; # 告知客户端TFTP服务器的ip filename "pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件 注意:** 本来软件装完后都要加入开机自启动,但这个Kickstart系统就不能开机自启动,而且用完后服务都要关闭,防止未来重启服务器自动重装系统了。** ** 如果机器数量过多的话,注意dhcp服务器的地址池,不要因为耗尽IP而导致dhcpd服务器没有IP地址release的情况。**
1.4创建安装源
mkdir /var/www/html/ubuntu mount /dev/sr0 /var/www/html/ubuntu/
1.5创建PXE启动文件
cp -a /var/www/html/ubuntu/install/netboot/* /var/lib/tftpboot/ \cp /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/txt.cfg /var/lib/tftpboot/pxelinux.cfg/default sed -i 's@initrd.gz@initrd.gz ks=http://192.168.56.20/ks.cfg url=http://192.168.56.20/ks.seed@g' /var/lib/tftpboot/pxelinux.cfg/default echo "d-i live-installer/net-image string http://192.168.80.100/ubuntu/install/filesystem.squashfs" >/var/www/html/ks.seed /var/lib/tftpboot/pxelinux.cfg/default的配置文件 root@linux-node1:~# cat /var/lib/tftpboot/pxelinux.cfg/default default install label install menu label ^Install menu default kernel ubuntu-installer/amd64/linux append vga=788 initrd=ubuntu-installer/amd64/initrd.gz ks=http://192.168.56.20/ks.cfg url=http://192.168.56.20/ks.seed --- quiet label cli menu label ^Command-line install kernel ubuntu-installer/amd64/linux append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz ks=http://192.168.56.20/ks.cfg url=http://192.168.56.20/ks.seed --- quiet
浏览器访问http://192.168.56.20/ubuntu/检验配置是否正确。
1.6创建ks.cfg文件
- 创建ks.cfg文件
通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。
生成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).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。
方法3、阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。
root@linux-node1:~# cat /etc/dhcp/dhcpd.conf option domain-name "example.com"; option domain-name-servers 192.168.56.2; ddns-update-style none; authoritative; default-lease-time 600; max-lease-time 7200; log-facility local7; next-server 192.168.56.20; filename "pxelinux.0"; subnet 192.168.56.0 netmask 255.255.255.0 { range 192.168.56.128 192.168.56.250; option routers 192.168.56.2; option broadcast-address 192.168.56.255; } root@linux-node1:~# vim /var/www/html/ index.html ks.cfg ks.seed ubuntu/ root@linux-node1:~# vim /var/www/html/ks.cfg # 先生成一个密码备用 root@linux-node1:~# perl -e 'print crypt("123456",q($1$password)),"\n"' $1$password$7ZK8mMeLGXxbNPeJEFJOU0 root@linux-node1:~# cat /var/www/html/ks.cfg #Generated by Kickstart Configurator #platform=x86 #System language lang en_US #Language modules to install langsupport zh_CN --default=en_US #System keyboard keyboard us #System mouse mouse #System timezone timezone Asia/Shanghai #Root password rootpw --iscrypted $1$password$7ZK8mMeLGXxbNPeJEFJOU0 #Initial user user --disabled #user ubuntu --fullname "ubuntu" --iscrypted --password $1$password$7ZK8mMeLGXxbNPeJEFJOU0 #Reboot after installation reboot #Use text mode install text #Install OS instead of upgrade install #Use Web installation url --url http://192.168.56.20/ubuntu #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr yes #Partition clearing information clearpart --all --initlabel #Disk partitioning information part swap --size 1000 part /home --fstype ext4 --size 5000 part / --fstype ext4 --size 1 --grow #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=dhcp --device=eth0 #Firewall configuration firewall --enabled --trust=eth0 --ssh #Do not configure the X Window System skipx #Installation package %packages vim openssh-server %post ifconfig -a |egrep "^em[1-4]|eth[0-3]|p[0-9]p[0-9]" |awk '{print $1,$NF}' >/root/$(ip route |grep kernel |awk '{print $NF}' |head -1) sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config 7.2 ks.cfg详解 官网自带中文版,选一下语言即可 ks.cfg文件组成大致分为3段
命令段
键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项
软件包段
%packages
@groupname:指定安装的包组
package_name:指定安装的包
-package_name:指定不安装的包
在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。
-
脚本段(可选)
%pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少) %post:安装系统后执行的命令或脚本(基本支持所有命令)
关键字 含义 |
install 告知安装程序,这是一次全新安装,而不是升级upgrade。 |
url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。 |
url --url="http://10.0.0.7/CentOS-6.7/" |
url --url ftp://<username>:<password>@<server>/<dir> |
nfs 从指定的NFS服务器安装。 |
nfs --server=nfsserver.example.com --dir=/tmp/install-tree |
text 使用文本模式安装。 |
lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8 |
keyboard 设置系统键盘类型。keyboard us |
zerombr 清除mbr引导信息。 |
bootloader 系统引导相关配置。 |
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" |
--location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。 |
--driveorder,指定在BIOS引导顺序中居首的驱动器。 |
--append=,指定内核参数.要指定多个参数,使用空格分隔它们。 |
network 为通过网络的kickstart安装以及所安装的系统配置联网信息。 |
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 |
--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和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解析. |
timezone 设置系统时区。timezone --utc Asia/Shanghai |
authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512 |
设置密码加密方式为sha512 启用shadow文件。 |
rootpw root密码 |
clearpart 清空分区。clearpart --all --initlabel |
--all 从系统中清除所有分区,--initlable 初始化磁盘标签 |
part 磁盘分区。 |
part /boot --fstype=ext4 --asprimary --size=200 |
part swap --size=1024 |
part / --fstype=ext4 --grow --asprimary --size=200 |
--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。 |
--asprimary,强迫把分区分配为主分区,否则提示分区失败。 |
--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。 |
--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。 |
firstboot 负责协助配置redhat一些重要的信息。 |
firstboot --disable |
selinux 关闭selinux。selinux --disabled |
firewall 关闭防火墙。firewall --disabled |
logging 设置日志级别。logging --level=info |
reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。 |
1.7重启服务
service tftpd-hpa restart service apache2 restart service isc-dhcp-server restart iptables -F
第2章安装新机进行测试
1.点击文件—新建虚拟机,然后进行测试
2,然后点击下一步,配置如下界面,点击开启虚拟机
2,出现如下界面,说明测试成功
- 转载请注明来源:ubuntu14安装kickstart
- 本文永久链接地址:https://www.xionghaier.cn/archives/14.html