Linux安装-kickstart无人值守安装
Linux安装-kickstart无人值守安装
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
大家做运维估计都避免不了时不时会去机房安装一台linux服务器,但是服务器启动的特别慢,有的要2分钟,有的要5分钟,甚至时间刚才,我个人比较喜欢的服务器是Dell,相对来说启动的还算是快的,像华为服务器,IBM服务器启动的到加载bootloader是特别慢的一个时间。然后等到这些流程走完了还要安装操作系统,格式化又得等时间,想了想要是能把系统的服务器都提前指定好,让它自己安装就好了,查阅了相关资料,发现/root目录下有“anaconda-ks.cfg”这么一个配置文件,凡是你安装操作系统都会有这个文件。它到底是干啥用的呢?我会在下面的内容中一一揭晓,请带着你的好奇心往下看。
在我们切入正式话题之前,我们也得先了解一些基本原理,因为原理是一通百通的,以下我只是用centos环境为实验,大家也可以用ubantu,windows这些用户常用的系统来做,其原理都大同小异,这只是自动化安装系统的冰山一角,详情请参考redhat官网,那里面有700多页的关于这个的介绍,感兴趣的朋友可以去官网看下,下面跟着我一起来学习如何配置一个无人值守安装的OS(Operating System)吧。
[root@yinzhengjie ~]# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda. #version=DEVEL
install #命令段:用于配置系统,install就类似于标识符。
cdrom #指定安装树
lang en_US.UTF-8 #执行语言选项的
keyboard us #键盘类型
network --onboot yes --device eth0 --bootproto dhcp #定义网络属性
rootpw --iscrypted $1$wFJh7rT6$omn0IhuHv7a95SYMx/K640 #管理员的密码
# Reboot after installation
reboot #安装后会自动重启,如果不想其自动重启可以注释掉。
firewall --service=ssh #防火墙开启SSH功能
authconfig --useshadow --enablemd5 #认证的相关配置(用户密码在shadow里去找,加密算法用md5)
selinux --enforcing #selinux为开启模式
timezone --utc America/Los_Angeles #选择时区
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #指定你的MBR
# 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 --all --initlabel #清楚所有分区,如果你是双系统的这个要注意用哟! #part /boot --fstype=ext4 --size=300 #指定分区/boot的分区信息,以下2行类似
#part / --fstype=ext4 --grow --size=3000
#part swap --grow --maxsize=1984 --size=1984 repo --name="CentOS" --baseurl=cdrom:sr1 --cost=100 #指定安装参考,明确指明安装树的路径 %packages #软件包:指定要安装的程序包(程序包名)及程序包组(@组名)
@Base #使用@指定包组,表示安装Base这个包组。
@Core
@Desktop
@Fonts
@General Purpose Desktop
@Internet Browser
@Printing client
@perl-runtime #在程序包前加-,不安装相关包,就说明这个包组不安装runtime这个软件包
@X Window System
binutils
gcc
kernel-devel #在程序包前加-,不安装相关包,就是这个程序包中不安装该包
make
patch
python %end #软件包结束 %post #所有的软件完成之后执行的脚本
if [ -f /boot/grub/menu.lst -a ! -h /boot/grub/menu.lst ]; then cp /boot/grub/menu.lst /boot/grub/menu.lst.bak && sed -i 's/ rhgb//' /boot/grub/menu.lst; fi
if [ -f /boot/grub/grub.conf -a ! -h /boot/grub/grub.conf ]; then cp /boot/grub/grub.conf /boot/grub/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub/grub.conf; fi
if [ -f /boot/grub2/grub.conf -a ! -h /boot/grub2/grub.conf ]; then cp /boot/grub2/grub.conf /boot/grub2/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub2/grub.conf; fi
if [ -f /etc/rc.d/rc.local ]; then cp /etc/rc.d/rc.local /etc/rc.d/rc.local.backup; fi
cat >>/etc/rc.d/rc.local <<EOF
#!/bin/bash
echo
echo "Installing VMware Tools, please wait..."
if [ -x /usr/sbin/getenforce ]; then oldenforce=\$(/usr/sbin/getenforce); /usr/sbin/setenforce permissive || true; fi
mkdir -p /tmp/vmware-toolsmnt0
for i in hda sr0 scd0; do mount -t iso9660 /dev/\$i /tmp/vmware-toolsmnt0 && break; done
cp -a /tmp/vmware-toolsmnt0 /opt/vmware-tools-installer
chmod 755 /opt/vmware-tools-installer
cd /opt/vmware-tools-installer
mv upgra32 vmware-tools-upgrader-32
mv upgra64 vmware-tools-upgrader-64
mv upgrade.sh run_upgrader.sh
chmod +x /opt/vmware-tools-installer/*upgr*
umount /tmp/vmware-toolsmnt0
rmdir /tmp/vmware-toolsmnt0
if [ -x /usr/bin/rhgb-client ]; then /usr/bin/rhgb-client --quit; fi
cd /opt/vmware-tools-installer
for s in sr0 sr1; do eject -s /dev/\$s; done
./run_upgrader.sh
if [ -f /etc/rc.d/rc.local.backup ]; then mv /etc/rc.d/rc.local.backup /etc/rc.d/rc.local; else rm -f /etc/rc.d/rc.local; fi
rm -rf /opt/vmware-tools-installer
sed -i 's/3:initdefault/5:initdefault/' /etc/inittab
if [ -f /boot/grub/menu.lst.bak ]; then mv /boot/grub/menu.lst.bak /boot/grub/menu.lst; fi
if [ -f /boot/grub/grub.conf.bak ]; then mv /boot/grub/grub.conf.bak /boot/grub/grub.conf; fi
if [ -f /boot/grub2/grub.conf.bak ]; then mv /boot/grub2/grub.conf.bak /boot/grub2/grub.conf; fi
if [ -x /usr/sbin/getenforce ]; then /usr/sbin/setenforce \$oldenforce || true; fi
if [ -x /bin/systemd ]; then systemctl restart prefdm.service; else telinit 5; fi
EOF
chmod 755 /etc/rc.d/rc.local
if [ -x /bin/systemd ]; then systemctl enable rc-local.service; fi
/usr/sbin/adduser yinzhengjie
/usr/sbin/usermod -p '$1$wFJh7rT6$omn0IhuHv7a95SYMx/K640' yinzhengjie
/usr/bin/chfn -f "yinzhengjie" yinzhengjie
/bin/echo done
%end #表示软件包结束
[root@yinzhengjie ~]#
详解anaconda-ks.cfg配置文件
#debug --graphics
default=0
splashimage=@SPLASHPATH@ #读取splash配镜图像的
timeout 5
hiddenmenu #隐藏菜单
title @PRODUCT@ @VERSION@
kernel @KERNELPATH@
initrd @INITRDPATH@
title Install system with basic video driver
kernel @KERNELPATH@ xdriver=vesa nomodeset askmethod
initrd @INITRDPATH@
title rescue
kernel @KERNELPATH@ rescue askmethod
initrd @INITRDPATH@ '''
其实这个信息显示的并不完全准确,因为它是被“isolinux”和“isolinux.cfg”二次包装过
'''
iso镜像isolinux目录下grub.conf配置文件
default vesamenu.c32 #加载“vesamenu.c32”这个应用程序
#prompt 1
timeout 600 display boot.msg menu background splash.jpg #设置菜单背景图
menu title Welcome to CentOS 6.6! #这是标题信息
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 linux #linux的标签名称,在启动过程中,你可以敲击Esc键,然后输入该标签名称,就会启动该选项,而且还可以在后面加一些参数,如你不想启用图像界面 可以输入:linux text
menu label ^Install or upgrade an existing system #定义标题的名称,“^Install”其中这个“^”表示你敲击I就能选择这一项
menu default #默认选择这项
kernel vmlinuz #启动内核文件
append initrd=initrd.img #启动rd文件,也是内核文件
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa nomodeset #后面有参数,nomodeset表示不适用任何额外的模式
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue #表示启动救援模式
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest #内核测试程序
append -
iso镜像isolinux目录下isolinux.cfg配置文件
'''
启动安装界面时,boot提示符后,可以向安装内核传递许多的配置参数,用于指定安装过程的特性
boot:
test:文本安装界面
graphical:图形安装界面
askmethod:提示用户指定安装方法,让用户选择使用的安装树
asknetword:提示用户在安装过程中使用网络功能,并提示用户配置网络地址
dd:提示用户指定一个驱动程序所在的设备
ks=:指定一个安装过程使用的kickstart文件
ks={http|https}://<sevrer>/<path>
ks=cdrom:/<path>
ks=nfs:<server>:/<path>
repo=:指定安装树位置
repo=ftp://<path>
repo={http|https}://<path>
repo=nfs:<path>
ip:
netmask:
gateway:
dns:
noipv6:
'''
手动启动安装界面时,boot提示符后操作参数详解
'''
提示:
如果你的服务器是通过光盘安装的话,在启动的时候可以手动制动ks文件的所在路径,它就会去找那个路径,并根据文件的内容安装相应的软件包.
如:
'''
四.利用完整玩系统自带的kickstart文件配置自动安装系统
[root@yinzhengjie ~]# mkdir /yinzhengjie/media
[root@yinzhengjie ~]# mount /dev/sr0 /yinzhengjie/media/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@yinzhengjie ~]# mkdir /yinzhengjie/linux_iso
[root@yinzhengjie ~]# cp -r /yinzhengjie/media/isolinux/ /yinzhengjie/linux_iso
[root@yinzhengjie ~]# cat /root/anaconda-ks.cfg > /yinzhengjie/linux_iso/ks.cf
[root@yinzhengjie ~]# ll /yinzhengjie/linux_iso/
total 8
dr-xr-xr-x. 2 root root 4096 May 24 23:01 isolinux
-rw-r--r--. 1 root root 3350 May 24 23:03 ks.cfg
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# cd /yinzhengjie/linux_iso/isolinux/
[root@yinzhengjie isolinux]# more isolinux.cfg #适当修改一些参数
default vesamenu.c32
#prompt 1
timeout 600 display boot.msg menu background splash.jpg
menu title CentOS 6.6 made in china by yinzhengjie! #修改一个标题
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 linux
menu label ^Install CentOs6.6 by yinzhengjie #修改安装选项名称
menu default
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ks.cfg #在这里指定kickstart的位置所在。
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append - [root@yinzhengjie isolinux]#
[root@yinzhengjie ~]# cd /yinzhengjie/ #修改
[root@yinzhengjie yinzhengjie]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CENTOS" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/yinzhengjie.iso linux_iso/
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage 1.1.9 (Linux)
Scanning linux_iso/
Scanning linux_iso/isolinux
Excluded: linux_iso/isolinux/TRANS.TBL
Excluded by match: linux_iso/isolinux/boot.cat
Writing: Initial Padblock Start Block 0
Done with: Initial Padblock Block(s) 16
Writing: Primary Volume Descriptor Start Block 16
Done with: Primary Volume Descriptor Block(s) 1
Writing: Eltorito Volume Descriptor Start Block 17
Size of boot image is 4 sectors -> No emulation
Done with: Eltorito Volume Descriptor Block(s) 1
Writing: Joliet Volume Descriptor Start Block 18
Done with: Joliet Volume Descriptor Block(s) 1
Writing: End Volume Descriptor Start Block 19
Done with: End Volume Descriptor Block(s) 1
Writing: Version block Start Block 20
Done with: Version block Block(s) 1
Writing: Path table Start Block 21
Done with: Path table Block(s) 4
Writing: Joliet path table Start Block 25
Done with: Joliet path table Block(s) 4
Writing: Directory tree Start Block 29
Done with: Directory tree Block(s) 2
Writing: Joliet directory tree Start Block 31
Done with: Joliet directory tree Block(s) 2
Writing: Directory tree cleanup Start Block 33
Done with: Directory tree cleanup Block(s) 0
Writing: Extension record Start Block 33
Done with: Extension record Block(s) 1
Writing: The File(s) Start Block 34
25.74% done, estimate finish Thu May 25 01:07:14 2017
51.39% done, estimate finish Thu May 25 01:07:14 2017
77.11% done, estimate finish Thu May 25 01:07:14 2017
Total translation table size: 4701
Total rockridge attributes bytes: 1438
Total directory bytes: 2654
Path table size(bytes): 26
Done with: The File(s) Block(s) 19284
Writing: Ending Padblock Start Block 19318
Done with: Ending Padblock Block(s) 150
Max brk space used 0
19468 extents written (38 MB)
[root@yinzhengjie yinzhengjie]#
修改参数后,效果图如下:
[root@yinzhengjie yinzhengjie]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CENTOS(可改,这里只是个卷标名称)" -b isolinux/isolinux.bin(这里要写相对路径) -c isolinux/boot.cat(这里要写相对路径) -o /root/yinzhengjie.iso(这里只是个文件名称,定义生成映像的文件名) linux_iso/ (这里要写对那个目录进行源镜像文件) 注意:光盘中的背景图片也是可以更改的,但是要求大小:640*480
五.手动自作kickstart文件
C.手动配置“kickstart”文件
#!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com [root@yinzhengjie ~]# cd Desktop
[root@yinzhengjie Desktop]# ll
total 4
-rw-r--r--. 1 root root 1394 May 25 03:33 ks.cfg
[root@yinzhengjie Desktop]# ksvalidator ks.cfg
[root@yinzhengjie Desktop]# '''
注意:
ksvalidator 检查kickstart文件的配置是否存在问题, centos 6和5的语法上并不完全兼容 '''
六.系统故障排除之:bash程序文件损坏
[root@yinzhengjie ~]# mv /bin/bash /tmp/ #模拟bash被删除掉的场景,然后断电重启服务器
解决方案一:
1.将光盘加载进去,启动紧急救援模式
2.选择语言
3.选择键盘类别
4.不开启网络功能
5.点击继续
6.点击OK,
7.继续点击OK
8.启动bash,点击OK
9.安装bash
#!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com '''
1.启动紧急救援模式
2.获取到bash的rpm包:
#mkdir -p /yinzhengjie/media #创建挂载点
#mount -r /dev/dvd /yinzhengjie/media #以只读的方式挂载
#rpm -ivh bash-*.rpm --replacepkgs --root=/mnt/sysimage/ #安装bash,参数--root=/mnt/sysimage/ 表示你的操作系统在这个光盘启动shell的挂载点。
紧急救援模式:启动了一个工作于光盘上的linux,要注意的是你救援光盘要和你的光盘最好保持一致。
'''
Linux安装-kickstart无人值守安装的更多相关文章
- 《Linux就该这么学》培训笔记_ch19_使用PXE+Kickstart无人值守安装服务
<Linux就该这么学>培训笔记_ch19_使用PXE+Kickstart无人值守安装服务 文章最后会post上书本的笔记照片. 文章主要内容: 无人值守系统 部署相关服务程序 配置DHC ...
- KickStart 无人值守安装系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- 烂泥:kickstart无人值守安装CentOS6.5
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在本次实验进行之前,首先我们要把公司的网络环境进行介绍. 注意这个网络拓扑图,也是生产环境的一个实例.同时服务器192.168.1.214已关闭ipta ...
- CentOS6 PXE+Kickstart无人值守安装
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- RHEL7下PXE+NFS+Kickstart无人值守安装操作系统
RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...
- CentOS 6.6下PXE+Kickstart无人值守安装操作系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- 【转载】CentOS 6.4下PXE+Kickstart无人值守安装操作系统
[转载]CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转自:CentOS 6.4下PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园 http ...
随机推荐
- 关于对springboot程序配置文件使用jasypt开源工具自定义加密
一.前言 在工作中遇到需要把配置文件加密的要求,很容易就在网上找到了开源插件 jasypt (https://github.com/ulisesbocchio/jasypt-spring-boot# ...
- Scapy的使用
0.前言 最近现场测试项目时,突如其来需要伪造IGMP报文,骗取交换机相关组播流量,慌忙之下学习了Scapy的使用,以及相关快速学习的方法,在这里分享下. 1.Scapy库安装 github地址:ht ...
- sqlalchemy 使用pymysql连接mysql 1366错误
一.错误情况 mysql 5.7.2 \python35\lib\site-packages\pymysql\cursors.py:166: Warning: (1366, "Incorre ...
- Spring框架最简单的定时任务调用
package org.jeecgframework.core.timer; import org.springframework.scheduling.annotation.Scheduled; i ...
- Solution of wireless link "PCI unknown" on Centos 7.1
Pick From http://www.blogjava.net/miaoyachun/archive/2015/09/17/427366.html After Centos 7.1 tobe in ...
- 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1. TCP/IP是 ...
- Mac上brew&thrift安装 以及在thrift架构下,自己新作了maven的小例 Demo
1.缘由 前几天偶尔在网上看到thrift的信息,其内容和作用极大的引起了我的兴趣,因为我也是做iOS开发的,通过在网上的查询发现信息虽然很多实用的很少,容易误导他人,经过自己的成功实践,做了笔录,为 ...
- xhtml和html的差別
xhtml和html主要區別: 元素必須正確嵌套: 元素必須正確閉合: 必須要有根元素: 元素必須使用小寫. xhtml語法: 屬性名必須小寫: 屬性值必須帶引號: 使用id代替name: lang屬 ...
- matplotlib之直接保存图片
自动保存图表:pyplot.savefig('D:\\pic.png'),替代了 pyplot.show(). # 使用matplotlib.pyplot.scatter绘制散点 import mat ...
- matplotlib之scatter绘制散点
# 使用matplotlib.pyplot.scatter绘制散点 import matplotlib.pyplot as plt from pylab import mpl # 设置默认字体,解决中 ...