利用kickstart实现自动化安装

这两天学习kickstart的部署,采用 pxe + dhcp + tftp + nfs 的方式,下面把整个流程简要地列出来。

我这里用的系统是rhel6.5,对于rhel5/centos5系列的系统略有不同。

先简单描述一下通过网络启动安装的过程:

  1. 客户端设置为通过网络启动,可能需要在bios中设定开启该功能
  2. 启动之后在局域网内发出广播
  3. dhcp服务器响应该广播,客户端获得IP地址,以及一些额外信息,比如tfpt服务器的IP,需要下载的文件等
  4. 客户端从tftp服务器中获取需要的启动文件(pxelinux.0)及其配置文件
  5. 客户端通过指定方式获取自动应答文件(ks.cfg),然后开始自动化安装

下面是完整过程:

dhcp服务:

安装

yum install -y dhcp

修改配置文件/etc/dhcp/dhcpd.conf,内容如下:

subnet 192.168.80.0 netmask 255.255.255.0 {
  range 192.168.80.100 192.168.80.110;
  option domain-name-servers 192.168.80.12;
  option domain-name "fhjjabba.com";
  option routers 192.168.80.2;
  option broadcast-address 192.168.80.255;
  default-lease-time 600;
  max-lease-time 7200;
  
  next-server 192.168.80.12;
  filename "/pxelinux.0";
}

上面的配置中除了最后两句之外,其它的配置项都可以直接从示例配置中复制过来修改,示例文件是/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample,关于dns的配置不是必须的(据说是)。

next-server用于指定tftp服务器的地址,filename则指定要从该服务器下载的文件,其中的路径"/"并非指操作系统的根,而是tftp服务自己的根,下面讲到tftp服务配置时再细说。

配置好了以后可以启动服务了

service dhcpd start

这里需要注意的是,dhcpd.conf中必须至少有一个subnet与当前主机处于同一网段,否则dhcp服务将启动失败。根据以上配置,我当前的主机必须有一个192.168.80.0/24的地址。

tftp服务:

安装

yum install -y tftp-server

因为tftp服务是由xinetd管理的,所以其配置文件是/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
        per_source     = 11
        cps        = 100 2
        flags       = IPv4
}

其实只是将disable = yes改成了disable = no,然后重启xinetd

service xinetd restart

检验tftp服务是否已经启动

netstat -ulnp | grep :69

能看到结果说明tftp正常启动了。

这里重点关注一下tftp配置文件中的server_args项,后面的值是/var/lib/tftpboot,这就是tftp服务的根目录,所以上面提到的"/pxelinux.0"文件的完整路径应该是/var/lib/tftpboot/pxelinux.0。

接下来为客户端准备一些必要文件。

包括内核vmlinuz,内存映像initrd.img,引导程序pxelinux.0。

首先挂载系统光盘到/mnt/cdrom

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

复制其中的内核和内存映像

cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot

另外还有很多教程说要复制/mnt/cdrom/isolinux/下的boot.msg和vesamenu.c32两个文件,这些都不是必须的,boot.msg是系统启动时输出的一些提示信息,vesamenu.c32是一个菜单。这里我就不复制了,待会修改配置时把它们去掉就好。

然后是引导程序pxelinux.0,它是由syslinux包提供的,所以要安装syslinux

yum install -y syslinux

装好后就可以复制了

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

客户端下载了pxelinux.0后还会下载其配置文件,该配置文件规定放在tftp根目录下的名为pxelinux.cfg的目录中,所以先创建这个目录

mkdir /var/lib/tftpboot/pxelinux.cfg

配置文件可以直接复制/mnt/cdrom/isolinux下的isolinux.cfg,名称默认为default

cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

然后为了修改这个配置文件,还需要修改其权限

chmod u+w /var/lib/tftpboot/pxelinux.cfg/default

我的配置如下:

#default vesamenu.c32
default linux
prompt 0

#display boot.msg

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=nfs:192.168.80.12:/nfs_share/ks.cfg

有两行以“#”开头的是注释,就是刚才没有复制到的两个文件。

注意第二行default linux和下面的label linux,这两项是对应的,表示默认就使用label linux下面的配置。重点关注label linux下面第四行的ks=...这一项,是我自己加上的,意思是指定系统安装过程中的自动应答文件,根据实际情况自己填写,如果是http或ftp的话格式就是http://ip/path/to/ks.cfg。

nfs服务:

安装

yum install -y nfs-utils

然后设置需要共享的目录,我设的是/nfs_share,配置文件是/etc/exports

mkdir /nfs_share
echo "/nfs_share    *(ro,async,nohide,crossmnt)" >> /etc/exports

exports文件说明了nfs需要共享的目录,这里建议加上nohide和crossmnt两个选项,不然客户端有可能无法挂载。

然后在共享目录中提供自动应答文件,我直接复制/root下的anaconda-ks.cfg了

cp ~/anaconda-ks.cfg /nfs_share/ks.cfg

然后手动编辑ks.cfg。

里面具体每一项我就不多说了,下面是我的配置:

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
text
key --skip

nfs --server=192.168.80.12 --dir=/nfs_share/cdrom

lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$9ZnVhZodnRm03BDB$0bVVH1uMQeHmUbKTRuaNas2wrJYebJwIa6RQTcdqOFVn0Qw/fVwowbcdGx9zhs9xL7/kvSouyeVkUbAefZtO60
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --permissive
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
reboot
clearpart --all --drives=sda
zerombr

part /boot --fstype=ext3 --size=100
part / --fstype=ext3 --size=5120
part /usr --fstype=ext3 --size=10240
part /home --fstype=ext3 --size=5120
part swap --size=1024

%packages --nobase
@core
%end

注意nfs那一项,指定了nfs服务器的ip和系统镜像所在的目录(即系统安装过程中需要下载的各种安装包),我把系统光盘挂在了/nfs_share/cdrom下,这里就要指定这个目录而不是/nfs_share。另外,因为这个目录是/nfs_share的子目录,所以在/etc/exports中就要指定nohide和crossmnt两个选项。

因为此前系统光盘已经挂在了/mnt/cdrom下,所以可以用下面的方式再次挂载

mount --bind /mnt/cdrom /nfs_share/cdrom

这样就同时存在有两个入口了。

还有那个rootpw项就是设置root密码的,后面一长串是我设的密码加密后的结果,你可以根据自己需要设置,利用grub-crypt命令即可

# grub-crypt
Password:
Retype password:
$6$eHcHyEchzEgZAkMl$dUvm9Ik06ZeYfIlFPeYsNhGqczu7SbkP19bupWj2RUQnZzjKrr9SJ03/Q9e8gHRTXCWDkcZHsExH6WtzIMiCe.

就是把最后的结果复制粘贴进去即可。

如果忘记做这一步,那么登陆系统就要输入我设置的密码咯,所以你要改密码,可以在grub引导界面给内核添加一个启动参数,在后面加上“1”或“s”即可,具体方法还是去google一下吧,忘记root密码的人太多了。。。

因为这个配置文件是从root的家目录复制出来的,所以还要修改权限让所有人可读,否则客户端将无法下载该文件

chmod +r /nfs_share/ks.cfg

然后启动nfs服务即可

service nfs start

好了,完整配置过程已经完成,接下来就可以新建一台机器做实验了。

不过还有几点需要说明一下:

  • 新建的虚拟机要与dhcp服务器在同一个局域网中,而且尽量不要出现多个dhcp服务器,所以最好就是把两台虚拟机放在host-only网络中。
  • 新建虚拟机时的虚拟磁盘要马上分配足够大小的空间,否则安装时会出现无法分配足够磁盘空间的错误。例如我的ks.cfg中配置的分区加起来有21+G,那么新建虚拟磁盘最好就立即分配25G,然后才能顺利安装。
  • 如果客户端获得ip地址后无法连接tftp服务器,即出现连接超时的情况,就把selinux和iptables都关掉。

第一次在51CTO上写博客,做得不好的地方还请各位见谅,哪里写得不对请委婉指出,有问题可以提出来一起讨论。

时间: 2024-08-29 09:22:00

利用kickstart实现自动化安装的相关文章

PXE+HTTP+tftp+kickstart 网络自动化安装centos6.5

基本流程: 1.网卡作为可引导的启动设备 2.BIOS找到引导设置网卡,激活网卡的PXE功能 3.客户端通过PXE的内置dhcp客户端尝试DHCP广播请求,从DHCP服务器获取IP地址.掩码.网关.网络属性 4.DHCP服务器告知客户端tftp服务器地址(next-server),将 "filename "pxelinux.0";" 参数中指定的文件(pxelinux.0)推送给客户端: 5.PXE的内置tftp客户端到指定tftp服务器下载启动镜像文件pxelin

基于kickstart定制自动化安装的linux镜像系统

使用软件和平台 1.基于平台:                  Vmware workstation 8.0 2.基于系统镜像:               rhel-server-5.8-i386-dvd.iso   3.ISO编辑软件:               UltraISO 4.自定义配置文件:             ks.cfg 5.需要重新编辑的配置文件:      isolinux.cfg 6.其他:                     针对不需要的文件包进行删减 Ki

linux基础学习第二十一天之自动化安装linux系统(kickstart)

内容: 利用kickstart进行自动化安装linux系统 制作光盘.U盘启动盘 一.系统自动化安装: 1.anaconda 由前面的学习我们知道,系统的启动流程: bootloader-->kernel(initramfs)-->rootfs-->/sbin/init 所以,bootloader完全可以由光盘来进行引导,在引导的过程中在借助kickstart来进程自动安装 Anaconda是RedHat.CentOS.Fedora等Linux的安装管理程序.它可以提供文本.图形等安装管

系统自动化安装~PEX

PXE的系统自动化安装----七周目小结 利用PXE实现自动化安装系统 前提条件: 网卡:仅主机,关闭vmware 的dhcp服务 1 HTTP 安装http软件 yum install httpd 启动服务并设置为开机自启 systemctl start httpd systemctl enable httpd 创建镜像挂载目录并挂载 cd /var/www/html mkdir centos/{6,7}/os/x86_64 mount /dev/sr0 /var/www/html/cento

pxe结合kickstart文件实现全自动化安装

PXE是什么? PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用tftp(trivial file transfer protocol)或mtftpmulticast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由

Kickstart自动化安装

Kickstart自动化安装 首先需要安装软件: Yum install –y dhcp* tftp*  nfs-utils Yum install –y syslinux  (没有pxelinux.0需要安装syslinux) 1.配置tftp服务器: Vi /etc/xinetd.d/tftp 把 disable = yes 改为no 就可以了 2.TFTP+PXE配置 要实现远程安装系统,需要在tftpboot目录指定相关PXE内核模块及相关参数.配置步骤如下: Mount /dev/cd

使用kickstart、dchp、tftp、http,实现RHEL 5.5操作系统的无人值守自动化安装

////使用kickstart.dchp.tftp.http,实现RHEL 5.5操作系统的无人值守自动化安装//Server IP:192.168.10.178 操作系统:Red Hat Enterprise Linux Server release 5.5////具体步骤如下: 1. 安装.配置DHCP服务 1.1 使用如下命令检查dhcp是否安装,rhel5系统默认安装dhcp-3.0.5-23.el5 [[email protected] ~]# rpm -qa | grep dhcp

生产环境之CentOS-6.5下KVM利用kickstart批量安装操作系统

KVM 是 kernel-based Virtual Machine 的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少.KVM目前已成为学术界的主流VMM之一. KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术).是基于硬件的完全虚拟化.而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化.但Xen本

Kickstart+NFS+DHCP+PXE+TFTP全自动化安装linux

首先不敢说是原创,是经过网络搜索总结出的比较可靠稳定的设置方法及内容. 安装过程中需要注意的事项,这在其他教程中涉及很少,给初学者造成一定困难. 本教程中的ks.cfg文件严格来说是修改系统中存在的anaconda.cfg文件. 本文中所用系统为RHEL6.4,64位操作系统. 本文中所有操作均在虚拟机中实现,为了达到更好的效果,虚拟机网络采用内部网络.主要是为了避免系统直接给它windows系统服务给它自动分配地址,我们要用linux主机的dhcp服务分配地址. 请关闭防火墙.未关闭会连接超时