Linux kickstart: 无人值守。 在安装linux的过程中,它允许通过nfs,http或ftp协议来进行网络安装,但是在一般情况下需要一个安装引导介质(引导光盘,引导软盘,u盘等)
Kickstart安装centos:
安装centos时候需要annconda (分区,语言,键盘,主机名,网络等相关的设置信息)把它们放到一个文件中,称为ks.cfg
Ks.cfg可以放在服务器中,也可以放到本地硬盘中(u盘等)
在服务器中需要写
boot:linux ks=url
如果再本地硬盘需要
linux =hd:da1:/目录/文件
实验环境:
版本:CentOS release 6.5
内核:2.6.32-431.el6.i686
实验拓扑:
服务器的创建:
[root@wang ~]mkdir /media/cdrom
[root@wang ~]# mount /dev/cdrom /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only 先挂载光盘
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install vsftpd lftp ftp dhcp -y 安装必要的软件包(安装过就不需要重复安装)lftp ftp软件包是供测试用。
[root@wang ~]# service vsftpd start 启动vsftp服务器
[root@wang ~]# chkconfig vsftpd on 设置为开机启动
[root@wang ~]# lftp 127.0.0.1
lftp 127.0.0.1:~> dir
drwxr-xr-x 2 0 0 4096 Mar 01 2013 pub
lftp 127.0.0.1:/> 测试是否可用
[root@wang ftp]# cd /media/cdrom/
[root@wang cdrom]# cp -rf . /var/ftp/ 将光盘文件拷贝的ftp文件里面
接下来做ks.cfg
需要安装system-config-kickstart 软件包
[root@wang cdrom]# cd Packages/
[root@wang Packages]# ll |grep kickstart 搜索
-r--r--r--. 2 root root 316464 Nov 25 2013 pykickstart-1.74.14-1.el6.noarch.rpm
-r--r--r--. 2 root root 944648 Feb 24 2013 system-config-kickstart-2.8.6.5-1.el6.noarch.rpm
[root@wang Packages]# yum --disablerepo=\* --enablerepo=c6-media install system-config-kickstart 安装软件包
[root@wang Packages]# system-config-kickstart 运行(基于图形界面运行,带图形端的xshell也可运行)
我用图形界面运行
出现红色方框的东西时需要
[root@wang Packages]# cd /etc/yum.repos.d/ 进入这个目录
[root@wang yum.repos.d]# ll
total 16
-rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo
-rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
[root@wang yum.repos.d]# mkdir a
[root@wang yum.repos.d]# mv CentOS-Base.repo a
[root@wang yum.repos.d]# mv CentOS-Debuginfo.repo a
[root@wang yum.repos.d]# mv CentOS-Vault.repo a 把除了CentOS-Media.repo外其他的文件删除或者挪走,这里我挪到了a文件夹里
[root@wang yum.repos.d]# vim CentOS-Media.repo 编辑这个文件改成这样
enabled=1 启用该设置
gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-6 密钥的位置设置正确
然后重新执行
然后设置
设置成这样既可
安装的软件包。需要什么安装什么
后面2项暂时不需要
保存即可
[root@wang ~]# ls
Desktop Music Templates install.log
Documents Pictures Videos install.log.syslog
Downloads Public anaconda-ks.cfg ks.cfg
查看,文件已经产生
[root@wang ~]# cp ks.cfg /var/ftp/ 将ks.cfg文件复制到ftp根目录
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install dhcp 安装dhcp
[root@wang ~]# vim /etc/dhcp/dhcpd.conf 编辑dhcp.conf文件
以上面的方式读取例子
:36,$d删除36行之后的东西
写上这些,其他的删除
[root@wang ~]# service dhcpd configtest 然后测试下语法是否有错误
[root@wang ~]# service dhcpd start
Starting dhcpd: [ OK ]
开启dhcp
[root@wang ~]# netstat -tupln |grep 67 查看67端口是否用着
udp 0 0 0.0.0.0:67 0.0.0.0:* 2421/dhcpd
[root@wang ~]# chkconfig dhcpd on
[root@wang ~]# service iptables stop 关闭防火墙
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@wang ~]# setenforce 0 把防御策略设置为警告级别
然后打开需要安装的机器,需要插上光盘引导,不插光盘的方式在下面介绍
我这里用虚拟机做演示
打开电源
按esc键
输入这回车
开始安装了
如果没有光盘可以制作引导盘
制作引导光盘
[root@wang ~]# cd /media/cdrom/
[root@wang cdrom]# cd isolinux/
[root@wang isolinux]# ll
total 35407
-r--r--r--. 1 root root 2215 Nov 29 2013 TRANS.TBL
-r--r--r--. 1 root root 2048 Nov 29 2013 boot.cat
-r--r--r--. 2 root root 84 Nov 29 2013 boot.msg
-r--r--r--. 2 root root 142 Nov 27 2013 grub.conf
-r--r--r--. 2 root root 31742048 Nov 27 2013 initrd.img
-r--r--r--. 2 root root 24576 Nov 29 2013 isolinux.bin
-r--r--r--. 2 root root 936 Nov 29 2013 isolinux.cfg
-r--r--r--. 2 root root 165080 Nov 29 2013 memtest
-r--r--r--. 2 root root 151230 Nov 29 2013 splash.jpg
-r--r--r--. 2 root root 162860 Nov 29 2013 vesamenu.c32
-r-xr-xr-x. 4 root root 4002656 Nov 29 2013 vmlinuz
挂载硬盘进入硬盘isolinux目录下 发现isolinux目录下是引导启动的必要组件
[root@wang cdrom]# mkdir /tmp/iso
[root@wang cdrom]# cp -r isolinux/ /tmp/iso/ 将isolinux文件拷出来
[root@wang cdrom]# cd /tmp/iso/
[root@wang iso]# ll
total 4
dr-xr-xr-x. 2 root root 4096 Jul 22 03:28 isolinux
[root@wang iso]# cp /root/ks.cfg ./
[root@wang iso]# ls
isolinux ks.cfg 将ks.cfg也拷贝到iso文件中
[root@wang 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 .
制作引导盘的命令必须在iso的目录下执行
[root@wang iso]# ll
total 35796
dr-xr-xr-x. 2 root root 4096 Jul 22 03:28 isolinux
-rw-r--r--. 1 root root 1036 Jul 22 03:29 ks.cfg
-rw-r--r--. 1 root root 36646912 Jul 22 03:34 myiso.iso
命令执行后生成了myiso.iso文件
然后装linux的时候放入引导光盘
从光盘启动
输入ks.cfg在光盘的路径即可安装
如果不输入boot安装可以这样做:
[root@wang iso]# cd isolinux/
[root@wang isolinux]# vim isolinux.cfg 编辑vim isolinux.cfg 文件
将其改成这样 default linux ks=cdrom:/ks.cfg 默认使用光盘的ks.cfg文件
prompt 1 出现boot
timeout 10 默认启动的等待时间
[root@wang iso]# ll
total 35796
dr-xr-xr-x. 2 root root 4096 Jul 22 04:06 isolinux
-rw-r--r--. 1 root root 1036 Jul 22 03:29 ks.cfg
-rw-r--r--. 1 root root 36646912 Jul 22 03:34 myiso.iso
[root@wang iso]# rm -rf myiso.iso 删除以前烧录的muiso.iso文件重新烧录
[root@wang 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 .
然后挂载新烧录的启动盘装机即可什么都不需要输入直接安装
(三)如果没有光驱需要使用PXE引导安装
Pxe 预启动执行环境 是RPL的升级产品,
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
这是bios的pxe选项
实验拓扑:
[root@wang ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only 挂载光驱
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install dhcp vsftpd tftp-server -y
安装必要的软件包
[root@wang ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@wang ~]# chkconfig vsftpd on
[root@wang ~]# cp -r /media/cdrom/. /var/ftp/ 启动vsftpd服务,将系统的安装文件拷贝到/var/ftp中
[root@wang cdrom]# vim /etc/dhcp/dhcpd.conf 编辑dhcpd..conf文件同上
注意这个是做tftp的需要在 subnet 192.168.1.0 netmask 255.255.255.0 {
34 range 192.168.1.20 192.168.1.50;
35 option routers 192.168.1.254; 36
36 next-server 192.168.1.3; 说明tftp地址
37 filename "pxelinux.0"; 文件驱动的位置
[root@wang cdrom]# service dhcpd configtest 检测语法
Syntax: OK
[root@wang cdrom]# service dhcpd start
Starting dhcpd: [ OK ]
[root@wang cdrom]# chkconfig dhcpd on
[root@wang cdrom]# rpm -ql tftp-server 查询tftp文件
/etc/xinetd.d/tftp
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-0.49
/usr/share/doc/tftp-server-0.49/CHANGES
/usr/share/doc/tftp-server-0.49/README
/usr/share/doc/tftp-server-0.49/README.security
/usr/share/doc/tftp-server-0.49/README.security.tftpboot
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
[root@wang cdrom]# vim /etc/xinetd.d/tftp 编辑tftp文件
将disable改为no
[root@wang cdrom]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
重启超级守护进程
[root@wang cdrom]# chkconfig xinetd on
[root@wang cdrom]# yum --disablerepo=\* --enablerepo=c6-media install syslinux 安装syslinux数据包
[root@wang cdrom]# rpm -ql syslinux| grep pxelinux
/usr/share/doc/syslinux-4.02/pxelinux.txt
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0 搜索pxelinux的位置
[root@wang cdrom]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 将pxe驱动拷贝到tftp根目录
[root@wang cdrom]# cd /var/lib/tftpboot/ 进入tftp根目录
[root@wang tftpboot]# ll
total 28
-rw-r--r--. 1 root root 26828 Jul 22 06:04 pxelinux.0
[root@wang tftpboot]# mkdir pxelinux.cfg 新建个pxelinux.cfg文件夹(存放驱动的目录)
[root@wang tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default 将配置文件拷贝到pxelinux.cfg文件夹里,并改名称为default
[root@wang tftpboot]# cp /media/cdrom/isolinux/vmlinuz ./ 将内核文件拷贝到tftp根目录
[root@wang tftpboot]# cp /media/cdrom/isolinux/initrd.img ./ 拷贝驱动到根目录
[root@wang tftpboot]# cd pxelinux.cfg/
[root@wang pxelinux.cfg]# ll
total 4
-r--r--r--. 1 root root 936 Jul 22 06:09 default
[root@wang pxelinux.cfg]# vim default 编辑default文件
将default 默认设置为linux
Ks=ftp://192.168.1.3/ks.cfg 的位置说明下
然后安装每个主机的时候主机名什么的需要不一样,但是机器是无人值守的,所以需要编辑脚本将机器的名字改下,这里设想去ip地址的最后一个值作为名称的一部分来解决问题
[root@wang ~]# vim test.sh 编辑vim test.sh
#!/bin/bash
STRING1=`ifconfig eth0|grep 'inet\>'|awk '{print $2}'`
NUM1=${STRING1##*.}
sed -i -e "s@HOSTNAME.*@HOSTNAME=station$NUM1.a.com@" /etc/sysconfig/network
sed -i -e "s@BOOTPROTO.*@BOOTPROTO=static\nIPADDR=192.168.1.$NUM1\nNETMASK=255.255.255.0@" /etc/sysconfig/network-scripts/ifcfg-eth0
即脚本文件
[root@wang ~]# cd /etc/yum.repos.d/
[root@wang yum.repos.d]# ll
total 16
-rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo
-rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
[root@wang yum.repos.d]# rm *
rm: remove regular file `CentOS-Base.repo'? y
rm: remove regular file `CentOS-Debuginfo.repo'? y
rm: remove regular file `CentOS-Media.repo'? n
rm: remove regular file `CentOS-Vault.repo'? y
[root@wang yum.repos.d]# vim CentOS-Media.repo
删除yum.repos.d目录下的文件,直留一个CentOS-Media.repo并编辑
如此即可
[root@wang yum.repos.d]# yum install system-config-kickstart -y 安装此软件包
在桌面系统下运行[root@wang yum.repos.d]# system-config-kickstart
这个选项和前面的一样只是最后一项多个
最有一项,写上脚本,然后保存
打开ks.cfg检查是否有问题[root@wang mnt]# vim ks.cfg
查看脚本是否正确
[root@wang mnt]# cp ks.cfg /var/ftp/ 把ks.cfg放入/var/ftp中
[root@wang mnt]# cd /var/lib/tftpboot/
[root@wang tftpboot]# cd pxelinux.cfg/
[root@wang pxelinux.cfg]# vim default 从default文件可以看出来为什么把ks.cfg放入/var/ftp中
显示ks的路径在ftp服务器的根目录里
[root@wang pxelinux.cfg]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@wang pxelinux.cfg]# setenforce 0
关闭防火墙,设置防御策略为警告级别
然后进行测试,把光盘都拔出
将 network boot from(从网络启动置顶)
F10 保存退出
成功进行安装linux
查看主机名
以修改
查看ip配置文件
地址已经修改为静态ip