本片文章kickstart无人值守安装的各种步骤,由于是在虚拟机上的操作,并且是以linux的Centos6.9版本为例,途中会有各种软件的辅助,如有错误,敬请谅解,我还很菜!!!
kickstart无人值守安装:
kickstart无人值守安装所要实现的是在以本地磁盘,优盘,外部服务器为安装源,自动安装系统的过程
而空白客户户机则需要被引导而实现安装系统 linux ks=cdrom:/ks.cfg //ks.cfg 是在光盘上 ks=nfs:服务器地址或名称:/目录/ks.cfg //ks.cfg nfs服务器 ks=ftp://服务器地址或名称/目录/ks.cfg //ks.cfg在ftp服务器上 ks=http://服务器地址或名称/目录/ks.cfg //ks.cfg在http服务器上 ks=harddisk:分区:目录/ks.cfg //ks.cfg在硬盘上
基本步骤:
mkdir /media/cdrom 创建光驱挂载点 mount /dev/cdrom /media/cdrom 挂载光驱 yum --disablerepo=\* =enablerepo=c6-media install vsftpd system-config-kickstart -y 安装vsftpd包 和 为了产生ks.cfg的system-config-kickstart包 service vsftpd start 开启vsftpd服务器 iptables -F INPUTiptables -F OUTPUT 清理防火墙规则(以后是加规则)
这里要特别声明,清理防火墙规则是为了我自己能链接到ftp服务器,毕竟这是虚拟机不是真机,所以如果是真机的情况下我们往往是增加防火墙的规则而不是清理防火墙规则,这是要让你们了解的 。
如果需要知道要把安装树放在虚拟机的哪里了,电脑网络搜索虚拟机假设的ftp地址,安装树放入目录就行了。 cd var/ftp cp -rf /media/cdrom/. ./ 表示将光盘上的所有目录拷贝到当前目录下 /var/ftp目录下
system-config-kickstart 这个指令是需要在图形界面上执行的 下载个Xmanager
这里提到的Xshell与Xmanagar则是连接至服务器与设置个性化系统的辅助文件,大家可以去相对了解一下,这里不过多介绍。
刚开始由于基于网络协议的原因Xmaganager的包文件显示不了(因为设置的本地)那么就设置yum,这里是指从本地获取下载地址的情况下,当能连上因特网的话就不用。
cd /etc/yum.repos.d/
ll
进入后会看见几个.repo结尾的文件,其中只有CentOS-Media.repo是我们需要的,其他的都是和因特网相关的,所以创建一个目录,把他们都先放进去,再单独把Media.repo挪出来
mkdir dir1 创建一个目录dri1 mv * dir1 将/etc/yum.repos.d/中所有.repo文件都放进去 cd dir1 进入dri1目录 mv CentOS-Media.repo /etc/yum.repos.d/ 或者 ../ 表示将dri1中的CentOS-Media.repo挪到他的上一个目录中 去/etc/yum.repos.d/ vim CentOS-Media.repo 编辑CentOS-Media.repo enable=1 表示这个本地的yum是要启用的system-config-kickstart 命令后在Xmanager中配置
以上一部分是没有连接因特网而用本地光驱直接设置Xmanager,如果拥有互联网,可忽略些许步骤。
cd /root ll 进入root目录查看是否产生ks.cfg vim ks.cfg 编辑ks.cfg
poweroff 表示编辑成安装完后自动关闭系统 退出保存
yum --disablerepo=\* =enablerepo=c6-media install dhcp -y 安装dhcp包 vim /etc/dhcp/dhcpd.conf 编辑dhcp :r usr/shall/ doc/dhcp-补齐/dhcpd.conf.sample(可补齐) 控制用域 subnet{........}(删除) 设置IP地址,子网掩码; 地址范围(rannge); 网关(option routers)地址 同网段(通常第一个或者最后一个);
NDS服务器(option domain-name-serverrs1.1.1.1,2.2.2.2) 保存退出
service dhcp start 开启dhcp服务器 cp ks.kfg /var/ftp root下将ks.kfg放到/var/ftp里 创建一个新的虚拟机,引导介质(先拿系统盘来实现) escboot:Linux ks=ftp://192.168.2.200/ks.cfg
如果没有系统盘,只想做个引导盘做成一个引导光盘 iso在服务器service上 cd /media/cdrom/ ll cd isolinux/ 查看isolinux 这个文件很重要 ll 查看(vmlinuz是个内核,initrd.img如同小驱动盘,这两个东西都要 存在) cp -r /media/cdrom/isolinux/ tmp/iso 把isolinux目录拷贝到tmp目录下的iso目录中 cd /media/cdrom/tmp/iso/isolinux/ cd .. 退到iso目录下下面进行操作
mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T ./ 针对当前目录进行操作
在这其中(mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/)这是个制作iso镜像的指令,具体情况,我只能呵呵,不了解。
引导光盘完成 用Xftp将这个景象文件拿出来(Xftp是个能将服务器文件下载和上传到其他设备的软件,大家可以直接去了解)
安装时不用系统盘,找到做成的镜像文件 boot:Linux ks=ftp://192.168.2.200/ks.cfg 如果iso在客户端上 cp /root/kscfg ./ 将root目录下的ks.kfg拷贝到iso目录中 cd /media/cdrom/tmp/iso/ 在搜目录下 mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T 刷新用Xftp提取 root:Linux ks=cdrom:/ks.cfg 在安装系统开机时要est以后输入Linux ks=,如果你连这都想省了直接开机安装,那么我服,这种方法是有的!!! 连esc都不用输入的方法: vim iso/isolinux/isolinux.cfg default Linux=cdrom:/ks.cfg 加入的指令 #prompt 1 将#去掉 修改 timeout 600 将timout的大小更改 600秒改为6秒 修改
但问题来了,即使自动安装那也得一台一台装的,能不能同时完成多台安装呢,所以这里向大家介绍pxe批量自动安装,
pxe批量自动安装
pxe批量自动安装的基本思路以及过程:
发送
1.client(客户端)——————>dhcpdiscovr 是为了找到网络当中是可以提供地址(广播方式,网络中所有都能接收到) 发出 2.server(服务器)——————>dhcpoffer 服务器从地址池中发出一个dhcp广播(地址的提供,只有一个地址掩码) 3.client(客户端)——————>dhcprequest 客户端想知道更多地址所要安装的东西 发出 4.server(服务器)——————>dhcpack 一旦服务器允许你使用这个地址则发出dhcpack广播 5.client(客户端)通过 tftp 下载引导程序 (pxelinux.0) 6.client(客户端) 通过引导程序的设置进而去下载内核以及驱动客户端如何知道服务器中的tftp在哪呢(在服务器中的dhcp配置文件中做一行指令告诉客户端在哪)
服务器所要具备条件:1.安装树 2.下载服务器 3.dhcp服务器也是tftp服务器
安装过程:客户端获得服务器地址,找到tftp,下载网络引导所需要的文件 yum --disablerepo=\* =enablerepo=c6-media install vsftpd -y 安装vsftpd包 yum --disablerepo=\* =enablerepo=c6-media install syslinux -y 安装syslinux包,为了以后产生pxelinux.0引导程序 service vsftpd start 开启vsftpd服务器 iptables -F INPUT iptables -F OUTPUT 清理防火墙规则(为了方便) 如果需要知道要把安装树放在那里,电脑网络搜索虚拟机假设的ftp地址, 安装树放入目录就行了。 cd var/ftp cp -rf /media/cdrom/. ./ 表示将光盘上的所有目录拷贝到当前目录下 /var/ftp yum --disablerepo=\* =enablerepo=c6-media install dhcp tftp-server -y 安装dhcp和tftp-servr包 vim /etc/xinetd.d/tftp tftp-servr是依赖超级守护进程的,所以要 编辑/etc/xinetd.d/tftp disaable=no 将disable=yes改为no 其中disable可以理解为用户访不唤醒么? service xinted start 开启超级守护进程 69端号 tftp根目录 /var/lib/tftpboot/ cd /var/lib/tftpboot/ 进入到tftp的根目录下 cp /media/cdrom/isolinux/vmlinuz ./或者/var/lib/tftpboot/ 为了让客户端找到内核,将内核放到tftp的目录下 cp /media/cdrom/isolinux/initrd ./或者/var/lib/tftpboot/ 这是把驱动放到tftp目录下 cd /usr/share/syslinux/ ll 进入/usr/share/syslinux/ 查看到pxelinux.0 cp pxelinux.0 var/lib/tftpboot/ 将pxelinux.0拷贝到tftp的根目录中 mkdir pxelinux.cfg 装配置文件所需要的目录 cd pxelinux.cfg/ cp /media/cdrom/tmp/iso/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 将配置文件放在一个叫default目录中
在这里我们的tftp目录中就有了vmlinuz内核,initrd驱动,pxelinux.0引导程序,同时配置文件完成
vim /etc/dhcp/dhcpd.conf 配置dhcp
:r usr/shall/ doc/dhcp-补齐/dhcpd.conf.sample(可补齐) 控制用域 subnet{........}(删除) 设置IP地址,子网掩码 ; 地址范围(rannge); 网关(option routers)地址 同网段(通常第一个或者最后一个); NDS服务器( option domain-name-servers1.1.1.1,2.2.2.2) next-server 192.168.2.200 failename "pxelinux.0"; 保存退出 service xinetd restart 确保tftp服务器都开启 service dhcp start 确保dhcp服务器开启 service vsftpd restart 确保vsftpd服务器开启 yum --disablerepo=\* =enablerepo=c6-media install system-config-kickstart -y 产生ks.cfg cd /etc/yum.repos.d/ll 进入后会看见几个.repo文件,其中只有CentOS-Media.repo是我们需要的,其他的都是和因 特网相关的,所以创建一个目录,把他们都先放进去,再单独把Media.repo挪出来
mkdir dir1 创建一个目录dri1 mv * dir1 将/etc/yum.repos.d/中所有.repo文件都放进去 cd dir1 进入dri1目录 mv CentOS-Media.repo /etc/yum.repos.d/ 或者 ../ 表示将dri1中的CentOS-Media.repo挪到他的上一个目录中 去/etc/yum.repos.d/ vim CentOS-Media.repo 编辑CentOS-Media.repo enable=1 表示这个本地的yum是要启用的
客户端获得地址后名字的自动修改(%post,后续修改脚本) ifconfig eth0 查询地址 ifconfig eth0 |grep inet 把地址过滤出来,但还是有多余的 ifconfig eth0 |grep ’inet\>‘ 这叫做词尾牟定 init后就什么都没有了 ifconfig eth0 |grep ’inet\>‘ |awk '{print $2}' 我要现实$几的内容 awk默认的分隔符就是空格 排在第一个叫$1 第二个$2..... string=`ifconfig eth0 |grep ’inet\>‘ |awk '{print $2}'` 给他赋值一个变量,要赋值的东西用反引号``括住,指令取代
enco $string 显示变量的值 如显示的是:192.168.2.200
echo ${string##*.} 以 192.168.2.200为例,就是显示最后一点前的全不要,只显示最后一点后的100 但编程时应该写num=${string##*.} echo $num ll etc/sysconfig/network 主机名所在的文件 cat etc/sysconfig/network 在其中可查看主机名 set -e "s/HOSNAME.*'/HOSNAME=station$num.a.com/" /etc/sysconfig/network 只对输出做出修改 set -i -e "s/HOSNAME.*'/HOSNAME=station$num.a.com/" /etc/sysconfig/network 对源头做出修改 cat etc/sysconfig/network
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=none 将none改为dhcp 客户机用dhcp
那就没有地址,没有子网掩码,没有网关,没有DNS 保存退出
set -e "s/BOOTPROTO.*'/BOOTPROTO=none或者static\nIPADDR=192.168.2.$num\nNATMASK=255.255.255.0\nGATEWAY=192.168.2.254\nDNS1=1.1.1.1"/etc/sysconfig/network-scripts/ifcfg-eth0
我们可以将之前的工作集合到一个脚本中去 将脚本写入一个新的文件中去 vim 1.sh #bin/bash 保存退出去修改文件权限 chmod +x 1.sh 修改权限 vim 1.sh #bin/bash 第一行写入脚本的运行环境 #get host ip address string=`ifconfig eth0 |grep ’inet\>‘ |awk '{print $2}'` #get ip address last number num=${string##*.} #change hostnam set -i -e "s/HOSNAME.*'/HOSNAME=station$num.a.com/" /etc/sysconfig/network #change host ip addess set -e "s/BOOTPROTO.*'/BOOTPROTO=static\nIPADDR=192.168.2.$num\nNATMASK=255.255.255.0\nGATEWAY=192.168.2.254\nDNS1=1.1.1.1"/etc/sysconfig/network-scripts/ifcfg-eth0 保存退出 vim etc/sysconfig/network
HPSTNAME=localhost 保存退出
在Xmanager中后期脚本中将1.sh的脚本放进去,运行环境为 bin/bash
#bin/bash 保存退出去修改文件权限 chmod +x 1.sh 修改权限 vim 1.sh #bin/bash #get host ip address string=`ifconfig eth0 |grep ’inet\>‘ |awk '{print $2}'` #get ip address last number num=${string##*.} #change hostnam set -i -e "s/HOSNAME.*'/HOSNAME=station$num.a.com/" /etc/sysconfig/network #change host ip addess set -e "s/BOOTPROTO.*'/BOOTPROTO=static\nIPADDR=192.168.2.$num\nNATMASK=255.255.255.0\nGATEWAY=192.168.2.254\nDNS1=1.1.1.1"/etc/sysconfig/network-scripts/ifcfg-eth0 vim ks.cfg 在里面添加一个 poweoff cp ks.cfg /car/ftp cd /var/lib/tftpboot/pxelinux cd pxelinux.cfg/ vim default defalult linux 默认就改为linux #prompt 1 去掉# timeout 6 600改成6 append 。。。。 后追加 ks=ftp://192.168.2.100/ks.cfg 以上步骤完成后就应该能实现批量安装了。。。。。。。。。