基于pxe部署系统

一、前言

在生产环境中,我们经常遇到需要部署部署多台服务器。如果我们每部署一台服务器都要拿着系统盘到机房部署,守在服务器面前,那么我们的效率是十分低下的。况且有时候机房并不在我们身边。那么我们可以通过让机房值班人员为每台服务器配置好远程管理卡,运维人员通过远程管理卡,远程登入服务器进行操作。

二、pxe原理

pxe原理是通过服务器上网卡中支持的pxe启动,通过广播的方式获取ip地址与下一个服务器的ip地址,pxe客户端在tftp服务器上下载pxelinux.0文件,pxe客户端根据pxelinux.0的执行结果,通过tftp服务器加载kernel及ramdisk文件,从而引导系统。具体原理可查考下图

1.png

三、开始部署pxe服务器

3.1  部署dhcp服务

3.1.1 安装dhcp服务器并关闭selinux及iptables

[root@localhost ~]# yum install dhcp –y
[root@localhost ~]# setenforce 0            #设置selinux为permissive模式        
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# service iptables stop   #关闭防火墙

3.1.2 配置dhcp服务器

[root@localhost ~]# mv /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
subnet 192.168.19.0 netmask 255.255.255.0 {
  range 192.168.19.100 192.168.19.200;        #dhcp地址池    
  filename "pxelinux.0"                       #下一个寻找的文件                    
  server-name "192.168.19.136"                #下一个寻找的服务器地址            
}

3.1.3设置开机启动

[root@localhost ~]# chkconfig dhcpd on
[root@localhost ~]# chkconfig --list dhcpd
dhcpd           0:off         1:off         2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# service dhcpd start

3.2 配置tftp服务器

 [root@localhost ~]# yum install -y tftp-server
         service tftp
{
         socket_type        = dgram
         protocol           = udp
         wait               = yes
         user               = root
         server             = /usr/sbin/in.tftpd
         server_args        = -s /var/lib/tftpboot
         disable            = no                    #设置tftp-server开机自动启动                
         per_source         = 11
         cps                = 100 2
         flags              = IPv4
}

3.3配置pxe工作环境

3.3.1安装syslinux

[root@localhost ~]# yum install -y syslinux
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

3.3.2 安装httpd       

[root@localhost tftpboot]# yum install -y httpd
[root@localhost tftpboot]# chkconfig httpd on
[root@localhost tftpboot]# service httpd start

3.3.3提供kernel,ramdisk等文件

[root@localhost tftpboot]# mount /dev/sr0 /mnt/cdrom
[root@localhost tftpboot]# mount --bind /mnt/cdrom /var/www/html/centos/x86_64
[root@localhost tftpboot]# cd /mnt/cdrom/images/pxeboot/
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost isolinux]# cd /mnt/cdrom/isolinux/
[root@localhost isolinux]# cp vesamenu.c32 boot.msg splash.jpg  /var/lib/tftpboot/
[root@localhost isolinux]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost isolinux]# cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

3.3.4提供kickstart文件

4.png

[root@localhost tftpboot]# yum install -y system-config-kickstart
[root@localhost tftpboot]# cp /root/ks.cfg /var/www/html/
#kickstart文件部分示例 
# Firewall configuration
firewall --enabled --service=ssh
# Install OS instead of upgrade
install
# Use network installation
# Firewall configuration
firewall --enabled --service=ssh
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.19.136/centos/x86_64"        #指定安装源    
# Root password
rootpw --plaintext centos                              #设置root密码                            
# System authorization information
auth  --useshadow  --passalgo=md5
# Use text mode install
text                                                   #文本模式安装                                  firstboot --disable
# System keyboard
keyboard us                                            #键盘类型                                     
# System language
lang en_US                                             #语言
# SELinux configuration
selinux --enforcing                                    #selinux模式
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on    #连网方式
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=200                  #创建/boot分区
part / --fstype="ext4" --grow --size=1                 #创建/ 分区

四、测试

关闭vmware的dhcp功能

2.png

从pxe启动后,设置ks文件

3.png

安装

5.png

参考文献:http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html

 

原创文章,作者:成吉思汗,如若转载,请注明出处:http://www.178linux.com/8000

(0)
成吉思汗成吉思汗
上一篇 2015-09-14
下一篇 2015-09-14

相关推荐

  • N26-第五周-孙逸

    1、 显示当前系统上root、fedora或user1用户的默认shell;命令:cat /etc/passwd | grep -E “^(root|fedroa|user1)” | cut -d: -f1,7 2、 找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(…

    2017-03-10
  • N26-第九周

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # # # NUM1=0 NUM2=0 for i in `cut -d: -f7 /etc/passwd` ;do if [[ “$i” = ‘/bin/bash…

    Linux干货 2017-03-15
  • n25 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。   2、取出最后登录到当前系统的用户的相关信息。   3、取出当前系统上被用户当作其默认shell的最多的那个shell。   4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxus…

    Linux干货 2016-12-20
  • 小型网站MYSQL问题一:MyISAM转Innodb的方法

    故事背景:之前公司的数据库存储引擎全部为MyISAM,数据量和访问量都不是很大,也一直没有什么问题。我最近接手一些运维工作,兼DBA,因为业务上面涉及到钱,所以决定换成支持事物的innodb。下面将操作步骤记录以下。 1、导出mydb数据库的表结构 mysqldump -d -uxxx -p mydb &gt…

    Linux干货 2015-12-19
  • Linux的命令使用格式

    ◆Linux命令格式:command [options]  [arguments]command:命令options:  –单词   或   -单字如: ls –allequ      ls -als -a -b -cequ&…

    Linux干货 2016-10-31
  • N25-第5周博客作业

    N25-第5周博客作业 1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; grep -E "^[[:space:]]+[[:alnum:]]+" /boot/grub/grub.conf    grep "^[[:space:]]…

    Linux干货 2016-12-31

评论列表(2条)

  • stanley
    stanley 2015-09-14 09:29

    有下篇吗,过程挺详细,只是步骤好顺利的样子,我们公司原来有同学在折腾这个过程没有预期顺利,总是卡在ip获取上

    • 成吉思汗
      成吉思汗 2015-09-15 08:49

      @stanley无下篇,自己电脑上做的实验,把虚拟机的dhcp功能关闭,只要服务器上dhcp配置好了,就能获取到ip。其实也没文章写的顺利,主要卡在kickstart文件上。