第一章 DHCP服务安装

1. 环境检查

[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@m01 ~]# uname -r
2.6.32-642.el6.x86_64
[root@m01 ~]# getenforce
Disabled
[root@m01 ~]# /etc/init.d/iptables stop
[root@m01 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@m01 ~]# hostname -I
10.0.0.61 172.16.1.61

2. 检查dhcp服务是否安装
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。

rpm -qa |grep dhcp
yum -y install dhcp

2. 配置DHCP动态分配ip地址网段

cat>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {range 172.16.1.100 172.16.1.200;option subnet-mask 255.255.255.0;default-lease-time 21600;max-lease-time 43200;next-server 172.16.1.61;filename "/pxelinux.0";
}
EOF

3. 查看DHCP服务端口号

[root@m01 ~]# /etc/init.d/dhcpd restart
Starting dhcpd:
[root@m01 ~]# netstat -tunlp|grep dhcp
udp        0      0 0.0.0.0:67    0.0.0.0:*      2083dhcpd

第二章 TFTP服务安装

1. 安装tftp服务(简单的文件传输协议)

[root@m01 ~]# yum -y install tftp-server

2. 让xinetd管理其启动

sed -i '14s#yes#no#' /etc/xinetd.d/tftp

4. tftp端口号69

[root@m01 ~]# netstat -tlunp| grep 69
udp  0   0 0.0.0.0:69   0.0.0.0:*   2133/xinetd 

第三章 APACHE服务安装

1. 使用yum下载

[root@m01 ~]# yum install httpd -y

2. 启动httpd服务 是否有80端口占用kill杀掉

[root@m01 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.16.1.61 for ServerName[  OK  ][root@m01 ~]# sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf
[root@m01 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

第四章 挂载镜像文件


1. 创建系统站点目录

[root@m01 ~]# mkdir /var/www/html/CentOS-6.8
  1. 挂载系统文件到站点目录
[root@m01 ~]# mount /dev/cdrom /var/www/html/CentOS-6.8
[root@CentOS7-111 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  2.5G   46G   6% /
devtmpfs        479M     0  479M   0% /dev
tmpfs           489M     0  489M   0% /dev/shm
tmpfs           489M  6.8M  482M   2% /run
tmpfs           489M     0  489M   0% /sys/fs/cgroup
/dev/sda1      1014M  133M  882M  14% /boot
tmpfs            98M     0   98M   0% /run/user/0
/dev/sr0        4.1G  4.1G     0 100% /var/www/html/CentOS-6.8
  1. 登录查看网页
http://10.0.0.61/CentOS-6.8/
  1. 或curl查看
curl http://10.0.0.61/CentOS-6.8/

第五章 配置支持PXE的启动程序

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。如果没有找到pxelinux.0这个文件,可以安装一下。

  1. 安装syslinux文件
[root@m01 ~]# yum -y install syslinux
  1. 复制文件到/var/lib/tftpboot目录下面
[root@m01 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
  1. 复制一些相关的启动文件
[root@m01 ~]# cp -a /var/www/html/CentOS-6.8/isolinux/* /var/lib/tftpboot/
  1. 创建pxelinux.cfg启动目录
[root@m01 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
  1. 复制启动文件到启动目录
[root@m01 ~]# cp /var/www/html/CentOS-6.8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default[root@m01 ~]# ls /var/lib/tftpboot/
boot.cat  grub.conf   isolinux.bin  memtest     pxelinux.cfg  TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  **pxelinux.0**  splash.jpg    vesamenu.c32

第六章 编写KS文件

/var/lib/tftpboot/pxelinux.cfg/default

[root@linux-node1 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32  # 默认加载一个菜单
#prompt 1             # 开启会显示命令行'boot: '提示符。prompt值为0时则不提示,将会直接启动'default'参数中指定的内容。
timeout 600           # timeout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
# 菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
# label指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动label linux下标记的kernel和initrd.img文件。
label linux       # 一个标签就是前面图片的一行选项。menu label ^Install or upgrade an existing systemmenu defaultkernel vmlinuz  # 指定要启动的内核。同样要注意路径,默认是/tftpboot目录。append initrd=initrd.img # 指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesamenu label Install system with ^basic video driverkernel vmlinuzappend initrd=initrd.img nomodeset
label rescuemenu label ^Rescue installed systemkernel vmlinuzappend initrd=initrd.img rescue
label localmenu label Boot from ^local drivelocalboot 0xffff
label memtest86menu label ^Memory testkernel memtestappend -

创建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配置文件。

查看anaconda-ks.cfg

# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 10.0.0.6 --netmask 255.255.255.0 --gateway 10.0.0.2 --noipv6 --nameserver 10.0.0.2 --hostname centos67
rootpw  --iscrypted $6$2Frfm3Sc/oWdF2Yb$GTS8VbsaeLzAfT46EYJWezKA7VMOnefDAH6anyb12Hu5K1qu1awlpTwBxTjAzXpV/.l983Irdwxo5Rks0QV1p1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none
#part /boot --fstype=ext4 --asprimary --size=200
#part swap --asprimary --size=1024
#part / --fstype=ext4 --grow --asprimary --size=200
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
%packages
@base
@compat-libraries
@core
@debugging
@development
@server-policy
@workstation-policy
python-dmidecode
sgpio
device-mapper-persistent-data
systemtap-client

ks.cfg详解
[root@m01 ks_config]# cat CentOS-6.8-ks.cfg

# Kickstart Configurator for CentOS 6.7 by yao zhang
install
url --url="http://172.16.1.61/CentOS-6.8/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet%post
wget -O /tmp/optimization.sh http://172.16.1.61/ks_config/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end

[root@m01 ks_config]# cat optimization.sh

#!/bin/bash
. /etc/init.d/functionsIp=172.16.1.61
Port=80
ConfigDir=ks_config# Judge Http server is ok?
PortNum=`nmap $Ip  -p $Port 2>/dev/null|grep open|wc -l`
[ $PortNum -lt 1 ] && {
echo "Http server is bad!"
exit 1
}# Defined result function
function Msg(){if [ $? -eq 0 ];thenaction "$1" /bin/trueelseaction "$1" /bin/falsefi
}# Defined IP function
function ConfigIP(){Suffix=`ifconfig eth1|awk -F "[ .]+" 'NR==2 {print $6}'`cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<-ENDDEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED=yesBOOTPROTO=noneIPADDR=10.0.0.$SuffixPREFIX=24GATEWAY=10.0.0.2DNS1=10.0.0.2DEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=noNAME="System eth0"ENDMsg "config eth0"cat >/etc/sysconfig/network-scripts/ifcfg-eth1 <<-ENDDEVICE=eth1TYPE=EthernetONBOOT=yesNM_CONTROLLED=yesBOOTPROTO=noneIPADDR=172.16.1.$SuffixPREFIX=24DEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=noNAME="System eth1"ENDMsg "config eth1"
}# Defined Yum source Functions
function yum(){YumDir=/etc/yum.repos.d[ -f "$YumDir/CentOS-Base.repo" ] && cp $YumDir/CentOS-Base.repo{,.ori} wget -O $YumDir/CentOS-Base.repo http://$Ip:$Port/$ConfigDir/CentOS-Base.repo &>/dev/null &&\wget -O $YumDir/epel.repo http://$Ip:$Port/$ConfigDir/epel.repo &>/dev/null &&\Msg "YUM source"
}# Defined add Ordinary users Functions
function AddUser(){useradd oldboy &>/dev/null &&\echo "123456"|passwd --stdin oldboy &>/dev/null &&\sed  -i '98a oldboy    ALL=(ALL)       NOPASSWD:ALL'  /etc/sudoers &&\visudo -c &>/dev/nullMsg "AddUser oldboy"
}# Defined Hide the system version number Functions
function HideVersion(){[ -f "/etc/issue" ] && >/etc/issueMsg "Hide issue"[ -f "/etc/issue.net" ] && > /etc/issue.netMsg "Hide issue.net"
}# Defined SSHD config Functions
function sshd(){SshdDir=/etc/ssh[ -f "$SshdDir/sshd_config" ] && /bin/mv $SshdDir/sshd_config{,.ori}wget -O $SshdDir/sshd_config http://$Ip:$Port/$ConfigDir/sshd_config &>/dev/null &&\chmod 600 $SshdDir/sshd_configMsg "sshd config"
}# Defined OPEN FILES Functions
function openfiles(){[ -f "/etc/security/limits.conf" ] && {echo '*  -  nofile  65535' >> /etc/security/limits.confMsg "open files"}
}# Defined Kernel parameters Functions
function kernel(){KernelDir=/etc[ -f "$KernelDir/sysctl.conf" ] && /bin/mv $KernelDir/sysctl.conf{,.ori}wget -O $KernelDir/sysctl.conf http://$Ip:$Port/$ConfigDir/sysctl.conf &>/dev/nullMsg "Kernel config"
}# Defined hosts file Functions
function hosts(){HostsDir=/etc[ -f "$HostsDir/hosts" ] && /bin/mv $HostsDir/hosts{,.ori}wget -O $HostsDir/hosts http://$Ip:$Port/$ConfigDir/hosts &>/dev/nullMsg "Hosts config"
}# Defined System Startup Services Functions
function boot(){for oldboy in `chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE "crond|network|rsyslog|sshd"`do chkconfig $oldboy offdoneMsg "BOOT config"
}# Defined Time Synchronization Functions
function Time(){echo "#time sync by zhangyao at $(date +%F)" >>/var/spool/cron/rootecho '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/rootMsg "Time Synchronization"
}# Defined main Functions
function main(){ConfigIPyumAddUserHideVersionsshdopenfileskernelhostsbootTime
}main

06.12 kickstart无人值守安装相关推荐

  1. PXE+Kickstart 无人值守安装系统

    文章目录 无人值守系统 部署安装 创建PXE服务器虚拟机并设置IP地址 配置本地yum源 安装并配置DHCP服务 安装并配置TFTP服务 安装SYSLinux 复制引导文件 安装并配置vsftpd服务 ...

  2. PXE远程安装和Kickstart无人值守安装

    目录 一.PXE概述 二.PXE服务的构建过程 三.配置PXE 安装并配置tftp服务 准备PXE引导镜像文件pxelinux.0 配置default菜单文件 安装ftp服务,准备centos7安装 ...

  3. CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  4. Centos 6.5 Pxe+kickstart 无人值守安装操作系统

    Centos 6.5PXE+kickstart 无人值守安装操作系统 PXE一种引导方式.进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 ...

  5. 烂泥:kickstart无人值守安装CentOS6.5

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在本次实验进行之前,首先我们要把公司的网络环境进行介绍. 注意这个网络拓扑图,也是生产环境的一个实例.同时服务器192.168.1.214已关闭ipta ...

  6. pxe和kickstart无人值守安装

    1.安装dhcp和tftpserver Yum install dhcp tftp-server 编辑tftp-server的配置文件 Vi /etc/xinetd.d/tftp 修改如下,将yes更 ...

  7. KickStart 无人值守安装系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  8. Linux PXE批量网络装机与Kickstart 无人值守安装

    Linux PXE批量网络装机与Kickstart 无人值守安装 一.PXE批量网络装机 二.PXE的三个优点 三.搭建PXE的先前条件 四.配置PXE装机服务器 1.安装并启用 TFTP 服务 2. ...

  9. PXE高效批量安装和Kickstart无人值守安装——真正完成批量自动安装

    PXE高效批量安装和Kickstart无人值守安装--真正完成批量自动安装 一.PXE概述 二.PXE的优点 三.搭建PXE的前提 四.部署PXE远程安装服务 1.安装TFTP服务 2.修改TFTP服 ...

最新文章

  1. C语言文件操作函数大全
  2. 解密微信小程序加密信息
  3. 自动以及手动清除手机垃圾文件
  4. 蓝桥杯第八届省赛JAVA真题----承压计算
  5. Cesium专栏-卫星轨迹
  6. 分布式事务中间件Seata简介
  7. 华为nova 8i渲染图曝光:背部设计神似Mate30
  8. 冷门的linux设备,你可能不知道的6个冷门linux实用命令
  9. 2021年五月下旬推荐文章(2)
  10. UVA - 10474
  11. Python入门--集合元素的判断(in,not in集合元素的增加(add()update())集合元素的删除(remove(),discard(),pop(),clear())遍历(for in)
  12. 小乌龟(TortoiseGit)基本使用详解
  13. configure: error: Jabber library not found
  14. 计算机是不是属于文具类,计算器属于学生文具吗?
  15. 实用化工计算机模拟-matlab在化学工程中的应用的光盘程序_这150款化工常用软件,你会用多少?...
  16. Centos yum安装Mysql
  17. 高德地图引用,搜索定位
  18. 设计一下类似SpringIoC的注入工具~Lind.DI
  19. 大学生怎样求职简历怎么写自我介绍?简历写作秘籍
  20. R及RStudio的安装

热门文章

  1. DX10.1与DX10的简述
  2. “老赖”王思聪、罗永浩、贾跃亭挡住“发币”诱惑
  3. python include_python中的include()是什么?它和进口有什么不同?
  4. XPRIZE宣布启动旨在保护全球热带雨林的新竞赛,奖金总额达1000万美元
  5. Mybatis <choose> <when> <otherwise>
  6. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石
  7. CJ20N - 项目定义屏幕增强(SMOD: CNEX0006)
  8. Pacific Atlantic Water Flow 太平洋大西洋水流问题
  9. 计算机课作业怎么向老师提交,计算机基础课程作业布置与批改方式
  10. 教大家如何破解某款返利机器人最新版1.4.7