ubuntu14安装kickstart

第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文件

  1. 创建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,出现如下界面,说明测试成功

 

1
如无特殊说明,文章均为本站原创,转载请注明出处
  • 转载请注明来源:ubuntu14安装kickstart
  • 本文永久链接地址:https://www.xionghaier.cn/archives/14.html

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到