码迷,mamicode.com
首页 > 系统相关 > 详细

pxe+kickstart部署多个版本的Linux操作系统(下)---实践篇

时间:2017-11-17 16:15:07      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:add   end   将不   strong   fst   用户   -name   组件   传输协议   

    我们在企业运维环境中,难免会遇到使用多个Linux操作系统的情况,如果每天都需要安装不同版本的Linux系统的话,那么使用Kickstart只能安装一种版本的Linux系统的方法则显得有些捉襟见肘。
    下面介绍使用Kickstart同时部署Centos6、Centos7。
 
*安装条件*
DHCP服务器:为 PXE-client 分配 IP ,获得安装程序文件位置
TFTP服务器:传输安装文件、内核、菜单文件等给 PXE-client
Kickstart:生成的ks.cfg配置文件
HTTP/NFS/FTP 服务中的任意一种,本次采用FTP文件传输协议,用于传送安装源文件给 PXE-client

系统环境

实验环境:DELL720服务器
系统平台:CentOS Linux release 7.2.1511 (Core)
上述安装条件的涉及服务全部部署在同一台服务器(Server端)

安装步骤

1、准备工作:关闭 防火墙 和 SELINUX

  1. [root@PxeServer ~]# systemctl stop firewalld.service #关闭当前系统防火墙
  2. [root@PxeServer ~]# systemctl disable firewalld.service #关闭防火墙开机启动
  3. [root@PxeServer ~]# systemctl status firewalld.service #查看防火墙的状态
  1. [root@PxeServer ~]# sed -i ‘s/^SELINUX=.*/SELINUX=disabled/‘/etc/selinux/config
  2. [root@PxeServer ~]# setenforce 0

2、配置DHCP服务

  1. [root@PxeServer ~]# yum -y install dhcp
  2. [root@PxeServer ~]# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #复制配置模板文件到DHCP的配置目录中
  3. [root@PxeServer ~]# vi /etc/dhcp/dhcpd.conf
  4. #default-lease-time 600; #默认租约期限
  5. #max-lease-time 7200; #最长租约期限
  6. #log-facility local7; #日志反动地址
    subnet 10.9.1.0 netmask 255.255.255.0 {
                   range 10.9.1.150 10.9.1.200;    # 可分配的起始IP-结束IP
                   option subnet-mask 255.255.255.0;   # 设定netmask
                   option routers    10.9.0.1;         # 客户端的默认网关的地址
                   default-lease-time 21600;           # 设置默认的IP租用期限
                   max-lease-time 43200;               # 设置最大的IP租用期限
                   next-server 10.9.1.252;             # 告知客户端TFTP服务器的ip
                   filename "pxelinux.0";              # 告知客户端从TFTP根目录下载pxelinux.0文件
    }
    

      

设置开机自启动,启动DCHP服务
 
 
  1. [root@PxeServer ~]# systemctl enable dhcpd
  2. [root@PxeServer ~]# systemctl start dhcpd
查看DCHP端口是否启动
 
  1. [root@PxeServer ~]# ss -lntup|grep 67

3、配置FTP(共享文件)服务

 
  1. [root@pxeserver ~]# yum install -y vsftpd
设置开机自启动,启动FTP服务
  1. [root@pxeserver ~]# systemctl enable vsftpd
  2. [root@pxeserver ~]# systemctl start vsftpd
查看FTP端口是否启动
 
 
  1. [root@noc ~]# ll -h /opt/CentOS-*
  2. -rwxr-xr-x 1 root root 4.2G102817:25/opt/CentOS-6.5-x86_64-bin-DVD1.iso
  3. -rwxr-xr-x 1 root root 4.1G102817:27/opt/CentOS-7.2-x86_64-DVD-1511.iso
在mnt下创建不同挂载点,挂载镜像:
 
 
  1. [root@pxeserver ~]# mkdir -p /mnt/{6,7}
  2. [root@pxeserver ~]# mount /opt/CentOS-6.5-x86_64-bin-DVD1.iso  /mnt/6-o loop
  3. [root@pxeserver ~]# mount /opt/CentOS-7.2-x86_64-DVD-1511.iso  /mnt/7-o loop
在ftp下创建不同目录,将不同版本的安装文件拷贝到对应目录(相对于直接挂载,可以提升读写速度)
 
 
  1. [root@pxeserver ~]# mkdir -p /var/ftp/{CentOS6.5,CentOS7.2}
  2. [root@pxeserver ~]# cp -a /mnt/6/*/var/ftp/CentOS6.5/
  3. [root@pxeserver ~]# cp -a /mnt/7/*/var/ftp/CentOS7.2/
浏览器测试是否可以通过ftp服务访问:
技术分享图片

4、配置Kickstart一键安装应答文件

生成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配置文件。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
创建CentOS6.5和7.2各自的ks.cfg文件(最终同样需要通过ftp服务访问):
 
 
  1. [root@pxeserver ~]# mkdir /var/ftp/ks -p
  2. [root@pxeserver ~]# touch /var/ftp/ks/centos{6.5,7.2}_ks.cfg
给ks.cfg文件加上读权限
  1. [root@pxeserver ~]# chmod +r /var/ftp/ks/centos{6.5,7.2}_ks.cfg

#---编辑CentOS6.5_ks.cfg

 
  1. # Kickstart Configurator for CentOS 6.5 by author Mr.Gao!
  2. #-------------------分割线-------------------------#
  3. #this is new install,is not upgrade
  4. install
  5. #通过 FTP或HTTP协议 从远程服务器上的安装源中提取安装配置
  6. url --url="ftp://10.9.1.252/CentOS6.5/"
  7. #安装方式,文本界面,图形的话graphy
  8. text
  9. #设置在安装过程中使用的语言或者说系统语言类型
  10. lang en_US.UTF-8
  11. #键盘类型
  12. keyboard us
  13. #清除mbr-主引导记录
  14. zerombr
  15. #bootloader:系统引导相关配置
  16. # --location=,指定引导记录被写入的位置. 有效的值如下:mbr(缺省);partition(在包含内核的分区的第一个扇区安装引导装载程序);none(不安装引导装载程序)
  17. # --driveorder,指定在BIOS引导顺序中首位的驱动器
  18. # --append=,指定内核参数.要指定多个参数,使用空格分隔它们
  19. bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
  20. #为通过网络的kickstart安装以及所安装的系统配置联网信息
  21. #--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的;static方法要求在kickstart文件里输入所有的网络信息
  22. #!请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行
  23. #--ip=,要安装的机器的IP地址.
  24. #--gateway=,IP地址格式的默认网关.
  25. #--netmask=,安装的系统的子网掩码.
  26. #--hostname=,安装的系统的主机名.
  27. #--onboot=,是否在引导时启用该设备.
  28. #--noipv6=,禁用此设备的IPv6.
  29. #--nameserver=,配置dns解析.
  30. #network --bootproto=dhcp --device=eno16777736 --onboot=yes --noipv6 --hostname=hjl_nb_V6.5
  31. network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --nameserver=8.8.8.8--hostname=hjl_nb_V6.5
  32. #时区
  33. timezone --utc Asia/Shanghai
  34. #系统认证信息:设置密码加密方式为sha512 启用shadow文件
  35. authconfig --enableshadow --passalgo=sha512
  36. #root密码:可从首次安装后的"~/anaconda-ks.cfg"中提取(若root密码已修改请重新生成一次)
  37. rootpw --xxx(密)
  38. #清空分区:--all 从系统中清除所有分区;--initlable 初始化磁盘标签
  39. #clearpart --none --initlabel
  40. clearpart --all --initlabel
  41. #-------part:磁盘分区--------#
  42. #--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat
  43. #!--asprimary,强迫把分区分配为主分区,否则提示分区失败
  44. #--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB
  45. #!--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值
  46. part /boot --fstype=ext4 --asprimary --size=300--ondisk=sda
  47. part swap --fstype=swap --size=32768--ondisk=sda
  48. part /--fstype=ext4 --asprimary --grow --size=300--ondisk=sda
  49. #负责协助配置centos一些重要的信息
  50. firstboot --disable
  51. #首次安装关闭selinux、防火墙
  52. selinux --disabled
  53. firewall --disabled
  54. #设置日志级别
  55. logging --level=info
  56. #!!设定安装完成后重启,此选项必须存在,否则kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机
  57. reboot
  58. #软件包段
  59. %packages
  60. #基本系统组件
  61. @base
  62. @chinese-support
  63. @compat-libraries
  64. @debugging
  65. @development
  66. net-tools
  67. #bind-utils
  68. wget
  69. tree
  70. nmap
  71. sysstat
  72. lrzsz
  73. dos2unix
  74. #脚本段:安装系统后执行的命令或脚本
  75. %post
  76. wget -O /tmp/optimization.sh ftp://10.9.1.252/fresh/optimization.sh &>/dev/null
  77. /bin/sh /tmp/optimization.sh
  78. %end
 

#---编辑CentOS7.2_ks.cfg

 
  1. #version=HQHY-CentOS7.2_v1.0
  2. #-------------------分割线-------------------------#
  3. #this is new install,is not upgrade
  4. install
  5. #通过 FTP或HTTP协议 从远程服务器上的安装源中提取安装配置
  6. url --url="ftp://10.9.1.252/CentOS7.2"
  7. # Use text mode install--安装方式,文本界面,图形的话graphy
  8. text
  9. # System language--安装过程的语言类型
  10. lang en_US.UTF-8--addsupport=zh_CN.UTF-8
  11. # Keyboard layouts--键盘类型
  12. keyboard --vckeymap=us --xlayouts=‘us‘
  13. #清除mbr-主引导记录
  14. zerombr
  15. #bootloader:系统引导相关配置
  16. # --location=,指定引导记录被写入的位置. 有效的值如下:mbr(缺省);parti tion(在包含内核的分区的第一个扇区安装引导装载程序);none(不安装引导装 载程序)
  17. # --driveorder,指定在BIOS引导顺序中首位的驱动器
  18. # --append=,指定内核参数.要指定多个参数,使用空格分隔它们
  19. bootloader --location=mbr --driveorder=sda
  20. # Network information--为通过网络的kickstart安装以及所安装的系统配置联网信息:
  21. #--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的;static方法要求在kickstart文件里输入所有的网络信息
  22. #!请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行
  23. #--ip=,要安装的机器的IP地址.
  24. #--gateway=,IP地址格式的默认网关.
  25. #--netmask=,安装的系统的子网掩码.
  26. #--hostname=,安装的系统的主机名.
  27. #--onboot=,是否在引导时启用该设备.
  28. #--noipv6=,禁用此设备的IPv6.
  29. #--nameserver=,配置dns解析.
  30. #network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto
  31. network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --nameserver=8.8.8.8--hostname=hjl_nb_V7.2
  32. # System timezone
  33. timezone Asia/Shanghai--isUtc --nontp
  34. # System authorization information--加密方式
  35. auth --enableshadow --passalgo=sha512
  36. #root密码:可从首次安装后的"~/anaconda-ks.cfg"中提取(若root密码已修改请重新生成一次)
  37. rootpw --xxxxx(密)
  38. #清空分区:--all 从系统中清除所有分区;--initlable 初始化磁盘标签
  39. #clearpart --none --initlabel
  40. clearpart --all --initlabel
  41. #-------part:磁盘分区--------#
  42. #--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat
  43. #!--asprimary,强迫把分区分配为主分区,否则提示分区失败
  44. #--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数>字后面加MB
  45. #!--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值
  46. part /boot --fstype="ext4"--asprimary --size=300
  47. part swap --fstype="swap"--size=32768
  48. part /--fstype="ext4"--asprimary --grow --size=300
  49. #--负责协助配置一些重要的信息
  50. firstboot --enable
  51. #首次安装关闭selinux、防火墙
  52. selinux --disabled
  53. firewall --disabled
  54. #设置日志级别
  55. logging --level=info
  56. # Reboot after installation #安装后自动重启,如果BIOS中设置从PXE首先启动,那么会重复安装
  57. # 请注意,安装后应设置为从先硬盘启动
  58. reboot #(默认位置)
  59. #设定所需要的软件包,按需要调整
  60. %packages
  61. @^minimal
  62. @base
  63. @compat-libraries
  64. @core
  65. @development
  66. @debugging
  67. kexec-tools
  68. #net-tools
  69. #bind-utils
  70. wget
  71. tree
  72. nmap
  73. sysstat
  74. lrzsz
  75. dos2unix
  76.  
  77. #%end
  78. #安装脚本:Linux安装完成后执行的脚本可以写在这里
  79. #%post
  80. #wget -O /tmp/optimization.sh ftp://10.9.1.252/fresh/optimization.sh &>/dev/null
  81. #/bin/sh /tmp/optimization.sh
  82. %end
  83. %addon com_redhat_kdump --disable --reserve-mb=‘auto‘
  84. %end

5、配置tftp服务

 
  1. [root@pxeserver ftp]# yum -y install tftp-server tftp xinetd
设置开机自启动
  1. [root@pxeserver ftp]# systemctl enable xinetd.service
  2. [root@pxeserver ftp]# sed -i ‘14s#yes#no#‘/etc/xinetd.d/tftp #disable=no 将yes修改no
  3. [root@pxeserver ftp]# systemctl restart xinetd.service
 
 
查看tftp服务端口
 
 
 
  1. [root@pxeserver ftp]# ss -nul |grep 69
  2. UNCONN     0      0            *:69                       *:*                 

6、配置支持PXE的引导加载程序

PXE引导配置(bootstrap)

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
 
  1. [root@pxeserver ftp]# yum -y install syslinux-tftpboot
查看/var/lib/tftpboot下是否存在pxelinux.0这个文件,若不存在,复制引导加载程序pxelinux.0和到tftp下
 
  1. [root@pxeserver ~]# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/ #pxelinux.0最重要的文件一定要有哦
复制启动菜单程序文件,将内核文件和initrd文件加入tftp下不同的引导目录中
 
  1. #因为是多系统引导安装,所以创建两个不同版本的文件夹,存放不同的引导文件
  2. [root@pxeserver ~]# mkdir -p /var/lib/tftpboot/Cent{6,7}
  1. [root@pxeserver ~]# cp /var/ftp/CentOS6.5/isolinux/{vmlinuz,initrd.img}/var/lib/tftpboot/Cent6/
  2. [root@pxeserver ~]# cp /var/ftp/CentOS7.2/isolinux/{vmlinuz,initrd.img}/var/lib/tftpboot/Cent7/

制作启动菜单

创建pxelinux.cfg目录,用于编辑并存放客户端的启动菜单文件
 
  1. [root@pxeserver ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
  2. [root@pxeserver ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
  3. default  vesamenu.c32 #加载菜单
  4. prompt 1 ##显示 ‘boot: ‘ 提示符。为 ‘0‘ 时则不提示,将会直接启动 ‘default‘ 参数中指定的内容。
  5. timeout 100 #控制等待时间,单位是十分之一秒
  6. display boot.msg #boot提示设置文件,可直接vim /var/lib/tftpboot/boot.msg添加自定义提示
  7. menu clear #清除菜单选项
  8. menu background splash.png #菜单背景:宽高=640x480,可自行选择png格式图标上传到/var/lib/tftpboot/下,命名为splash.png
  9. menu title  HQHY PXE BootMenu:InstallCentos6.5 or 7.2! #标题
  10. label 1InstallCentOS7.2
  11. menu label ^InstallCentOSLinux7.2
  12. #kernel 参数指定要启动的内核
  13. kernel Cent7/vmlinuz
  14. #append 指定追加给内核的参数,能够在grub里使用的追加给内核的参数,在这里也可以使用;ksdevice:让安装程序使用第一个网络设备
  15. append initrd=Cent7/initrd.img text ks=ftp://10.9.1.252/ks/centos7.2_ks.cfg ksdevice=em1
  16.  
  17. label 2InstallCentOS6.5
  18. menu label ^InstallCentOSLinux6.5
  19. kernel Cent6/vmlinuz
  20. append initrd=Cent6/initrd.img text ks=ftp://10.9.1.252/ks/centos6.5_ks.cfg ksdevice=em1

检验安装

1、服务端

重启服务,检验端口
[root@pxeserver ~]# systemctl restart dhcpd.service
[root@pxeserver ~]# systemctl restart vsftpd.service
[root@pxeserver ~]# systemctl restart xinetd.service
[root@pxeserver ~]# netstat -tunlp|egrep ‘80|67|69‘

2、客户端

开机按F12选择从PXE网口启动,通过dhcp服务器获取到动态IP
技术分享图片
获取pxe启动文件
 技术分享图片
 加载启动菜单,选择需要安装的系统版本
技术分享图片
加载内核程序
 技术分享图片
 loading.........等待安装完毕
...............
...........
......
...
安装后检验:
  1. [root@hjlnb_V7-2~]# ping baidu.com -c 3
  2. PING baidu.com (111.13.101.208)56(84) bytes of data.
  3. 64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=44.4 ms
  4. 64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=30.6 ms
  5. 64 bytes from 111.13.101.208: icmp_seq=3 ttl=128 time=31.1 ms
  6. --- baidu.com ping statistics ---
  7. 3 packets transmitted,3 received,0% packet loss, time 2004ms
  8. rtt min/avg/max/mdev =30.653/35.437/44.481/6.401 ms
  1. [root@hjlnb_V7-2~]# lsblk
  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. sda 8:00278.9G0 disk
  4. ├─sda1 8:10300M0 part /boot
  5. ├─sda2 8:2031.3G0 part [SWAP]
  6. └─sda3 8:30247.3G0 part /
  7. sr0 11:011024M0 rom
 
参考链接:
 
 
 
 
 
 

pxe+kickstart部署多个版本的Linux操作系统(下)---实践篇

标签:add   end   将不   strong   fst   用户   -name   组件   传输协议   

原文地址:http://www.cnblogs.com/sunhongleibibi/p/7851697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!