pxe+kickstart 无人值守安装CentOS7.1
CentOS6.6下PXE+Kickstart无人值守安装CentOS7.1操作系统
一.简介
1.1 什么是PXE
Pxe(Pre-boot Execution Environment,预启动执行环境)是由Inter公司开发的最新技术,工作与Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过
网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE并不是一种安装方式,而是一种引导方式。进行PXE安装的必要条件是在要安装的计算机中必须包含一个pxe支持的网卡(NIC),即网卡必须要有PXE Client。PXE协议可以使计算机通过网络启动。此协议分为Client端和server端,而PXEclient 则在网卡的ROM中。当计算机引导时。BIOS把PXE Client调入内存中执行,然后由PXE client将放置在远端的文件通过网络下载到本地执行。运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器会给PXE Client(将要安装系统的主机)分配一个IP地址,由于是给PXE Client分配地址,所以在配置DHCP服务器时需要增加相应的PXE设置,此外,在PXEClient的ROM中,已经存在了TFTP Client,那么它就可以通过TFTP协议到TFTP Server上下载所需的文件了。
PXE的工作过程:
- PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
- DHCP服务器返回分配给客户起的IP,以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上);
- PXE Client 向本网络的TFTP服务器索取pxelinux.0文件;
- PXE Client 取得pxelinux.0文件后执行该文件;
- 根据pxelinu.0的执行结果,通过TFTP服务器加载内核和文件系统;
- 进入安装画面,此时可以通过选择HTTP.FTP、NFS方式之一进行安装;
详细工作流程,请参考下面这幅图:
1.2 什么是Kickstart
kicstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录的典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
PXE+Kickstart无人值守安装操作系统完整过程如下:
二、系统安装
实验环境:VMware Workstation 12
系统平台:CentOS release 7.1( 最小化安装)
网络模式:NAT模式(共享主机的IP地址)
DHCP /TFTP IP: 10.0.0.7
HTTP/FTP/NFS IP: 10.0.0.7
防火墙已关闭/iptables:Firewall is not running:
SELINUX=disabled
三、编写kickstart配置文件
CentOS-7.1-x86_64.cfg
- #Kickstart Configurator by Benjamin Yang
- #platform=x86, AMD64, or Intel EM64T
- #System language
- lang en_US
- #System keyboard
- keyboard us
- #System timezone
- timezone Asia/Shanghai
- #Root password
- #rootpw --iscrypted $default_password_crypted
- rootpw --iscrypted $$opa-node$7hqdpgEmIE7Z0RbtQkxW20
- #Use text mode install
- text
- #Install OS instead of upgrade
- install
- #Use NFS installation Media
- #url --url=$tree
- url --url=http://10.0.0.7/CentOS-7.1-x86_64
- #System bootloader configuration
- bootloader --location=mbr
- #Clear the Master Boot Record
- zerombr
- #Partition clearing information
- clearpart --all --initlabel
- #Disk partitioning information
- part /boot --fstype xfs --size --ondisk sda
- part swap --size --ondisk sda
- part / --fstype xfs --size --grow --ondisk sda
- #System autorization information
- auth --useshadow --enablemd5
- #Network information
- #$SNIPPET(‘network_config’)
- network --bootproto=dhcp --device=eth0 --onboot=on
- # Reboot after installation
- reboot
- #Firewall configuration
- firewall --disabled
- #SELinux configuration
- selinux --disabled
- #Do not configure XWindows
- skipx
- #Package install information
- %packages
- @ base
- @ core
- sysstat
- iptraf
- ntp
- lrzsz
- ncurses-devel
- openssl-devel
- zlib-devel
- OpenIPMI-tools
- mysql
- nmap
- screen
- %end
- %post
- systemctl disable postfix.service
- %end
四、配置HTTP安装方式
系统的安装方式可以选择HTTP、FTP、NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,可以自行百度。
4.1 安装并配置HTTP
- #yum install httpd -y
- #rpm -qa|grep httpd
开启服务并设置开机启动
- # /etc/init.d/httpd start
- # chkconfig --level httpd on
4.2 加载ISO镜像
将iso文件挂载至/mnt/
- [root@linux-node1 ~]# mount /dev/cdrom /mnt
- mount: block device /dev/sr0 is write-protected, mounting read-only
4.3 复制光盘全部内容至http 的根目录/var/www/html/ 下
- # mkdir /var/www/html/CentOS-7.1-x86_64
- # cp -a /mnt/cdrom/ /var/www/html/CentOS-7.1-x86_64
HTTP部分设置完毕。
4.4 安装httpd 和 创建yum仓库的createrepo
- # yum install -y httpd createrepo
五、配置TFTP
5.1 安装tftp-server
- # yum install tftp-server -y
5.2 启用tftp服务
- # vi /etc/xinetd.d/tftp
- service tftp
- {
- socket_type = dgram
- protocol = udp
- wait = yes
- user = root
- server = /usr/sbin/in.tftpd
- server_args = -s /var/lib/tftpboot
- disable = no
- per_source =
- cps =
- flags = IPv4
- }
- 将disable 设置为no
5.3 启动tftp服务
因为tftp服务时挂载在超级进程xinetd下的,所以通过启动xinetd来启动tftp服务。
- # /etc/init.d/xinetd restart
设置开机启动xinetd
- # chkconfig xinetd on
5.4 将cfg文件上传
- [root@linux-node1 ~]# cd /var/www/html/CentOS-7.1-x86_64/
- [root@linux-node1 CentOS-7.1-x86_64]# rz
- rz waiting to receive.
- Starting zmodem transfer. Press Ctrl+C to cancel.
- Transferring CentOS-7.1-x86_64.cfg...
- % KB KB/sec :: Errors
5.5 验证kickstart文件是否能访问
- # curl --head http://10.0.0.7/CentOS-7.1-x86_64/CentOS-7.1-x86_64.cfg
- HTTP/1.1 OK
- Date: Fri, Nov :: GMT
- Server: Apache/2.2. (CentOS)
- Last-Modified: Fri, Nov :: GMT
- ETag: "9ff44-508-55ec1c03dc8a0"
- Accept-Ranges: bytes
- Content-Length:
- Connection: close
- Content-Type: text/plain; charset=UTF-
- 出现200 ok表示成功
5.6 修改dhcp 配置文件
- # cd /usr/share/doc/dhcp-4.1./
- # cp dhcpd.conf.sample /etc/dhcp/dhcpd.conf
- # vim /etc/dhcp/dhcpd.conf
- subnet 10.0.0.0 netmask 255.255.255.0 {
- range dynamic-bootp 10.0.0.100 10.0.0.200;
- option subnet-mask 255.255.255.0;
- next-server 10.0.0.7;
- filename "pxelinux.0";
- }
5.7 重启httpd、 xinetd服务
- # /etc/init.d/httpd restart
- # /etc/init.d/xinetd restart
5.8 创建本地yum源
- -p以整洁的格式输出xml文件。
- -d该选项指定使用SQLite来存储生成的元数据,默认项。
- -o 指定元数据的输出位置
- # createrepo -pdo /var/www/html/CentOS-7.1-x86_64/ /var/www/html/CentOS-7.1-x86_64/
- 创建组信息
- # createrepo -g `ls /var/www/html/CentOS-7.1-x86_64/repodata/*-comps.xml` /var/www/html/CentOS-7.1-x86_64/
六、配置支持PXE的启动程序
6.1 安装syslinux
说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
- # yum install -y syslinux
6.2 复制pxelinux.0文件至/var/lib/tftpboot/ 文件夹中
- # cp /usr/share/syslinux/pxelinux. /var/lib/tftpboot/
- 说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:syslinux是一个小型的linux操作系统,它的母的是简化首次安装linux的时间,并建立维护或其他特殊用途的启动盘。
6.3 复制iso镜像中的/isolinux/*.msg 至/var/lib/tftpboot/文件夹中
- # cp /mnt/isolinux/* /var/lib/tftpboot/
6.4 在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录
- # mkdir /var/lib/tftpboot/pxelinux.cfg
6.5 将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default
- # cd /var/lib/tftpboot/pxelinux.cfg/
- # cp /mnt/isolinux/isolinux.cfg default
6.6 修改default文件
- # vim default
- label ks
- menu label ^AUTO Install CentOS
- kernel vmlinuz
- append initrd=initrd.img ks=http://10.0.0.7/CentOS-7.1-x86_64/CentOS-7.1-x86_64.cfg
七、创建系统
7.1 查看日志,检查系统发现情况。
- [root@linux-node1 dhcp-4.1.]# tail -f /var/log/messages
- Nov :: linux-node1 in.tftpd[]: tftp: client does not accept options
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished boot.msg
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vesamenu.c32
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished splash.png
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vmlinuz
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished initrd.img
- Nov :: linux-node1 root: [euid=root]:root pts/ -- : (10.0.0.1):[/usr/share/doc/dhcp-4.1.]-- :: rootvim /etc/dhcp/dhcpd.conf
- Nov :: linux-node1 dhcpd: DHCPDISCOVER from :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 dhcpd: ns1.example.org: host unknown.
- Nov :: linux-node1 dhcpd: ns2.example.org: host unknown.
- Nov :: linux-node1 dhcpd: DHCPOFFER on 10.0.0.100 to :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 dhcpd: DHCPREQUEST for 10.0.0.100 (10.0.0.7) from :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 dhcpd: DHCPACK on 10.0.0.100 to :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 in.tftpd[]: tftp: client does not accept options
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished boot.msg
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vesamenu.c32
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished splash.png
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vmlinuz
- Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished initrd.img
- Nov :: linux-node1 dhcpd: DHCPDISCOVER from :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 dhcpd: DHCPOFFER on 10.0.0.101 to :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 dhcpd: DHCPREQUEST for 10.0.0.101 (10.0.0.7) from :0c::cb:b0:c7 via eth0
- Nov :: linux-node1 dhcpd: DHCPACK on 10.0.0.101 to :0c::cb:b0:c7 via eth0
- 说明:出现10.0.0.101说明dhcp自动分配ip成功
7.2 安装系统
选择自定义
下一步——》下一步-----》稍后安装操作系统
下一步——》下一步——》取名test
一直点击下一步最后点完成
开启创建的test虚拟主机
选择配置文件里定义的AUTO Install CentOS 7
over thanks!
pxe+kickstart 无人值守安装CentOS7.1的更多相关文章
- PXE+Kickstart无人值守安装---CentOS7.
1.安装一台CentOS7.x桌面版本系统的服务器,关闭selinux和防火墙: 2.在服务器安装pxe+kickstart无人值守需要的软件 : yum install dhcp tftp-serv ...
- CentOS 6.5下PXE+Kickstart无人值守安装操作系统centos7.3
CentOS 6.5下PXE+Kickstart无人值守安装操作系统centos7.3 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行 ...
- CentOS 6.6下PXE+Kickstart无人值守安装操作系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- PXE+kickstart无人值守安装CentOS 7
kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...
- (转)PXE+kickstart无人值守安装CentOS 7
kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...
- [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- 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的网络模式,支持 ...
- 【转载】CentOS 6.4下PXE+Kickstart无人值守安装操作系统
[转载]CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转自:CentOS 6.4下PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园 http ...
随机推荐
- C#与Javascript变量、函数之间的相互调用
原文地址:http://blog.csdn.net/wonsoft/article/details/2595743 C#与Javascript变量.函数之间的相互调用 一.javascript调用C ...
- 手动修改PHP页面返回状态码
<?php //比如当前页面要返回404状态码 header("HTTP/1.1 404 Not Found"); header("Status: 404 Not ...
- Delphi 检查文件是否存在
Delphi下检查文件是否存在,我们可以使用FileExists函数 其原形如下: Function FileExists(const FileName: string): Boolean; 示例: ...
- Antlr 在 idea 中正确使用的方式
问题 Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN ...
- bug 跟蚊子的相似之处
bug 跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是在你即将睡觉休息的时候出现. 2 A:最近在看<一拳超人>,觉得咱们程序猿跟埼玉老师有点像啊! B:哪里像了? ...
- [学习笔记]扩展LUCAS定理
可以先做这个题[SDOI2010]古代猪文 此算法和LUCAS定理没有半毛钱关系. [模板]扩展卢卡斯 不保证P是质数. $C_n^m=\frac{n!}{m!(n-m)!}$ 麻烦的是分母. 如果互 ...
- ext radiogroup如何取值和设值
var radios = Ext.create('Ext.form.Panel', { title: 'RadioGroup Example', width: 300, height: 125, bo ...
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A
A. Bear and Game time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- UVA 11995 STL 使用
There is a bag-like data structure, supporting two operations: 1 x Throw an element x into the bag. ...
- Idea 怎么远程debug
注意的问题:远程debug别人的服务器只能开一个debug,所以当你的同事比你先远程debug同一台服务器时,你应该报Error running 某某ip地址 .unable to open debu ...