kickstart无人值守安装

    本片文章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 INPUT

iptables -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里


创建一个新的虚拟机,引导介质(先拿系统盘来实现)
esc

boot: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   
     以上步骤完成后就应该能实现批量安装了。。。。。。。。。 
  
  
  
  
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值