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的工作过程:

  1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
  2. DHCP服务器返回分配给客户起的IP,以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上);
  3. PXE Client 向本网络的TFTP服务器索取pxelinux.0文件;
  4. PXE Client 取得pxelinux.0文件后执行该文件;
  5. 根据pxelinu.0的执行结果,通过TFTP服务器加载内核和文件系统;
  6. 进入安装画面,此时可以通过选择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

  1. #Kickstart Configurator by Benjamin Yang
  2. #platform=x86, AMD64, or Intel EM64T
  3. #System language
  4. lang en_US
  5. #System keyboard
  6. keyboard us
  7. #System timezone
  8. timezone Asia/Shanghai
  9. #Root password
  10. #rootpw --iscrypted $default_password_crypted
  11. rootpw --iscrypted $$opa-node$7hqdpgEmIE7Z0RbtQkxW20
  12. #Use text mode install
  13. text
  14. #Install OS instead of upgrade
  15. install
  16. #Use NFS installation Media
  17. #url --url=$tree
  18. url --url=http://10.0.0.7/CentOS-7.1-x86_64
  19. #System bootloader configuration
  20. bootloader --location=mbr
  21. #Clear the Master Boot Record
  22. zerombr
  23. #Partition clearing information
  24. clearpart --all --initlabel
  25. #Disk partitioning information
  26. part /boot --fstype xfs --size --ondisk sda
  27. part swap --size --ondisk sda
  28. part / --fstype xfs --size --grow --ondisk sda
  29. #System autorization information
  30. auth --useshadow --enablemd5
  31. #Network information
  32. #$SNIPPET(‘network_config’)
  33. network --bootproto=dhcp --device=eth0 --onboot=on
  34. # Reboot after installation
  35. reboot
  36. #Firewall configuration
  37. firewall --disabled
  38. #SELinux configuration
  39. selinux --disabled
  40. #Do not configure XWindows
  41. skipx
  42.  
  43. #Package install information
  44. %packages
  45. @ base
  46. @ core
  47. sysstat
  48. iptraf
  49. ntp
  50. lrzsz
  51. ncurses-devel
  52. openssl-devel
  53. zlib-devel
  54. OpenIPMI-tools
  55. mysql
  56. nmap
  57. screen
  58. %end
  59.  
  60. %post
  61. systemctl disable postfix.service
  62. %end

四、配置HTTP安装方式

系统的安装方式可以选择HTTP、FTP、NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,可以自行百度。

4.1 安装并配置HTTP

  1. #yum install httpd -y
  2.  
  3. #rpm -qa|grep httpd

开启服务并设置开机启动

  1. # /etc/init.d/httpd start
  2.  
  3. # chkconfig --level httpd on

4.2 加载ISO镜像

将iso文件挂载至/mnt/

  1. [root@linux-node1 ~]# mount /dev/cdrom /mnt
  2.  
  3. mount: block device /dev/sr0 is write-protected, mounting read-only

4.3 复制光盘全部内容至http 的根目录/var/www/html/ 下

  1. # mkdir /var/www/html/CentOS-7.1-x86_64
  2.  
  3. # cp -a /mnt/cdrom/ /var/www/html/CentOS-7.1-x86_64

HTTP部分设置完毕。

4.4 安装httpd 和 创建yum仓库的createrepo

  1. # yum install -y httpd createrepo

五、配置TFTP

5.1 安装tftp-server

  1. # yum install tftp-server -y

5.2 启用tftp服务

  1. # vi /etc/xinetd.d/tftp
  2.  
  3. service tftp
  4.  
  5. {
  6.  
  7. socket_type = dgram
  8.  
  9. protocol = udp
  10.  
  11. wait = yes
  12.  
  13. user = root
  14.  
  15. server = /usr/sbin/in.tftpd
  16.  
  17. server_args = -s /var/lib/tftpboot
  18.  
  19. disable = no
  20.  
  21. per_source =
  22.  
  23. cps =
  24.  
  25. flags = IPv4
  26.  
  27. }
  28.  
  29. disable 设置为no

5.3 启动tftp服务

因为tftp服务时挂载在超级进程xinetd下的,所以通过启动xinetd来启动tftp服务。

  1. # /etc/init.d/xinetd restart

设置开机启动xinetd

  1. # chkconfig xinetd on

5.4 将cfg文件上传

  1. [root@linux-node1 ~]# cd /var/www/html/CentOS-7.1-x86_64/
  2.  
  3. [root@linux-node1 CentOS-7.1-x86_64]# rz
  4.  
  5. rz waiting to receive.
  6.  
  7. Starting zmodem transfer. Press Ctrl+C to cancel.
  8.  
  9. Transferring CentOS-7.1-x86_64.cfg...
  10.  
  11. % KB KB/sec :: Errors

5.5 验证kickstart文件是否能访问

  1. # curl --head http://10.0.0.7/CentOS-7.1-x86_64/CentOS-7.1-x86_64.cfg
  2.  
  3. HTTP/1.1 OK
  4.  
  5. Date: Fri, Nov :: GMT
  6.  
  7. Server: Apache/2.2. (CentOS)
  8.  
  9. Last-Modified: Fri, Nov :: GMT
  10.  
  11. ETag: "9ff44-508-55ec1c03dc8a0"
  12.  
  13. Accept-Ranges: bytes
  14.  
  15. Content-Length:
  16.  
  17. Connection: close
  18.  
  19. Content-Type: text/plain; charset=UTF-
  20.  
  21. 出现200 ok表示成功

5.6 修改dhcp 配置文件

  1. # cd /usr/share/doc/dhcp-4.1./
  2.  
  3. # cp dhcpd.conf.sample /etc/dhcp/dhcpd.conf
  4.  
  5. # vim /etc/dhcp/dhcpd.conf
  6.  
  7. subnet 10.0.0.0 netmask 255.255.255.0 {
  8.  
  9. range dynamic-bootp 10.0.0.100 10.0.0.200;
  10.  
  11. option subnet-mask 255.255.255.0;
  12.  
  13. next-server 10.0.0.7;
  14.  
  15. filename "pxelinux.0";
  16.  
  17. }

5.7 重启httpd、 xinetd服务

  1. # /etc/init.d/httpd restart
  2.  
  3. # /etc/init.d/xinetd restart

5.8 创建本地yum源

  1. -p以整洁的格式输出xml文件。
  2.  
  3. -d该选项指定使用SQLite来存储生成的元数据,默认项。
  4.  
  5. -o 指定元数据的输出位置
  6.  
  7. # createrepo -pdo /var/www/html/CentOS-7.1-x86_64/ /var/www/html/CentOS-7.1-x86_64/
  8.  
  9. 创建组信息
  10.  
  11. # 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的时间,并建立修护或其它特殊用途的启动盘。

  1. # yum install -y syslinux

6.2 复制pxelinux.0文件至/var/lib/tftpboot/ 文件夹中

  1. # cp /usr/share/syslinux/pxelinux. /var/lib/tftpboot/
  2.  
  3. 说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:syslinux是一个小型的linux操作系统,它的母的是简化首次安装linux的时间,并建立维护或其他特殊用途的启动盘。

6.3 复制iso镜像中的/isolinux/*.msg 至/var/lib/tftpboot/文件夹中

  1. # cp /mnt/isolinux/* /var/lib/tftpboot/

6.4  在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录

  1. # mkdir /var/lib/tftpboot/pxelinux.cfg

6.5 将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default

  1. # cd /var/lib/tftpboot/pxelinux.cfg/
  2.  
  3. # cp /mnt/isolinux/isolinux.cfg default

6.6 修改default文件

  1. # vim default
  2.  
  3. label ks
  4.  
  5. menu label ^AUTO Install CentOS
  6.  
  7. kernel vmlinuz
  8.  
  9. append initrd=initrd.img ks=http://10.0.0.7/CentOS-7.1-x86_64/CentOS-7.1-x86_64.cfg

七、创建系统

7.1 查看日志,检查系统发现情况。

  1. [root@linux-node1 dhcp-4.1.]# tail -f /var/log/messages
  2.  
  3. Nov :: linux-node1 in.tftpd[]: tftp: client does not accept options
  4.  
  5. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.
  6.  
  7. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
  8.  
  9. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished boot.msg
  10.  
  11. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vesamenu.c32
  12.  
  13. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
  14.  
  15. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished splash.png
  16.  
  17. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vmlinuz
  18.  
  19. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished initrd.img
  20.  
  21. Nov :: linux-node1 root: [euid=root]:root pts/ -- : (10.0.0.1):[/usr/share/doc/dhcp-4.1.]-- :: rootvim /etc/dhcp/dhcpd.conf
  22.  
  23. Nov :: linux-node1 dhcpd: DHCPDISCOVER from :0c::cb:b0:c7 via eth0
  24.  
  25. Nov :: linux-node1 dhcpd: ns1.example.org: host unknown.
  26.  
  27. Nov :: linux-node1 dhcpd: ns2.example.org: host unknown.
  28.  
  29. Nov :: linux-node1 dhcpd: DHCPOFFER on 10.0.0.100 to :0c::cb:b0:c7 via eth0
  30.  
  31. Nov :: linux-node1 dhcpd: DHCPREQUEST for 10.0.0.100 (10.0.0.7) from :0c::cb:b0:c7 via eth0
  32.  
  33. Nov :: linux-node1 dhcpd: DHCPACK on 10.0.0.100 to :0c::cb:b0:c7 via eth0
  34.  
  35. Nov :: linux-node1 in.tftpd[]: tftp: client does not accept options
  36.  
  37. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.
  38.  
  39. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
  40.  
  41. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished boot.msg
  42.  
  43. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vesamenu.c32
  44.  
  45. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default
  46.  
  47. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished splash.png
  48.  
  49. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vmlinuz
  50.  
  51. Nov :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished initrd.img
  52.  
  53. Nov :: linux-node1 dhcpd: DHCPDISCOVER from :0c::cb:b0:c7 via eth0
  54.  
  55. Nov :: linux-node1 dhcpd: DHCPOFFER on 10.0.0.101 to :0c::cb:b0:c7 via eth0
  56.  
  57. Nov :: linux-node1 dhcpd: DHCPREQUEST for 10.0.0.101 (10.0.0.7) from :0c::cb:b0:c7 via eth0
  58.  
  59. Nov :: linux-node1 dhcpd: DHCPACK on 10.0.0.101 to :0c::cb:b0:c7 via eth0
  60.  
  61. 说明:出现10.0.0.101说明dhcp自动分配ip成功

7.2 安装系统

选择自定义

下一步——》下一步-----》稍后安装操作系统

下一步——》下一步——》取名test

一直点击下一步最后点完成

开启创建的test虚拟主机

选择配置文件里定义的AUTO Install CentOS 7

over  thanks!

pxe+kickstart 无人值守安装CentOS7.1的更多相关文章

  1. PXE+Kickstart无人值守安装---CentOS7.

    1.安装一台CentOS7.x桌面版本系统的服务器,关闭selinux和防火墙: 2.在服务器安装pxe+kickstart无人值守需要的软件 : yum install dhcp tftp-serv ...

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

    CentOS 6.5下PXE+Kickstart无人值守安装操作系统centos7.3 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行 ...

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

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

  4. PXE+kickstart无人值守安装CentOS 7

    kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...

  5. (转)PXE+kickstart无人值守安装CentOS 7

    kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...

  6. [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统

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

  7. CentOS6 PXE+Kickstart无人值守安装

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

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

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

  9. 【转载】CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    [转载]CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转自:CentOS 6.4下PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园 http ...

随机推荐

  1. C#与Javascript变量、函数之间的相互调用

    原文地址:http://blog.csdn.net/wonsoft/article/details/2595743 C#与Javascript变量.函数之间的相互调用  一.javascript调用C ...

  2. 手动修改PHP页面返回状态码

    <?php //比如当前页面要返回404状态码 header("HTTP/1.1 404 Not Found"); header("Status: 404 Not ...

  3. Delphi 检查文件是否存在

    Delphi下检查文件是否存在,我们可以使用FileExists函数 其原形如下: Function FileExists(const FileName: string): Boolean; 示例: ...

  4. Antlr 在 idea 中正确使用的方式

    问题 Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN ...

  5. bug 跟蚊子的相似之处

    bug 跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是在你即将睡觉休息的时候出现. 2 A:最近在看<一拳超人>,觉得咱们程序猿跟埼玉老师有点像啊! B:哪里像了? ...

  6. [学习笔记]扩展LUCAS定理

    可以先做这个题[SDOI2010]古代猪文 此算法和LUCAS定理没有半毛钱关系. [模板]扩展卢卡斯 不保证P是质数. $C_n^m=\frac{n!}{m!(n-m)!}$ 麻烦的是分母. 如果互 ...

  7. ext radiogroup如何取值和设值

    var radios = Ext.create('Ext.form.Panel', { title: 'RadioGroup Example', width: 300, height: 125, bo ...

  8. 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 ...

  9. UVA 11995 STL 使用

    There is a bag-like data structure, supporting two operations: 1 x Throw an element x into the bag. ...

  10. Idea 怎么远程debug

    注意的问题:远程debug别人的服务器只能开一个debug,所以当你的同事比你先远程debug同一台服务器时,你应该报Error running 某某ip地址 .unable to open debu ...