设为首页 收藏本站
查看: 762|回复: 0

[经验分享] 基于pxe+kickstart 全自动化安装centos系统

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-30 09:26:13 | 显示全部楼层 |阅读模式
前言:
    想当年,我还是一个萌新的时候(其实,现在也还是萌新)。经常干的一件事情就是安装操作系统,有次听别人说可以实现全自动安装,感觉甚屌~今天,我们就来玩玩这个吊炸天的东东。

正文:
    我们先大概描述一下安装系统的流程,一般来讲,我们是用光盘或者U盘来装系统,第一步我们要从U盘启动,而u盘或者光盘里面本身就会存在一个小的linux系统,通过这个小的系统把linux安装到我们的硬盘上。为了实现全自动话安装,我们就得把上面所有的过程实现自动化。我们想象一下,如果一个网络中有100台主机需要装centos系统,我们不可能拿光盘或者U盘一个一个的插去安装系统,所以我们有第三种选择就是通过网络引导安装,这就以为者我们得有一个东东才存放安装系统所用到的镜像源。所有我们网络中得有一个ftp服务器或者http服务器来为网络安装提供源。不过安装之前我们得加载一个小系统来为我们系统安装提供一些必要的基础。这个就得用到我们的主角,pxe了~pxe是一个预启动执行环境,它主要的作用是引导操作系统。不过在引导客户端主机之前,我们得先从一个TFTP服务器上下载启动软件包到客户机的内存中执行。我们所有的行为都是基于网络的,所以我们的还得给终端机分配ip地址,就得用到一个DHCP服务器了。所以,我们再完整的总结一下这个过程:

    当一个客户机开机之后会先从dhcp服务器上获取一个ip地址,并且dhcp服务器告诉客户机去哪找pxe,接着从pxe上获得启动一个基础系统所需要的文件,然后启动系统并从http服务器或httpd服务器上获取安装完整系统所需要的资源,开始系统的安装过程。这个安装过程也是可以全自动进行的,此时就得用到kickstart生成一个交互脚本,让安装过程自动化进行。

    现在我们已经知道了,实现整个自动化过程我们得需要如下几个服务:tftp dhcp httpd,接下来我们就变配置边解释了~

    先介绍一下环境,我们在192.168.6.0/24这个网络中,提供服务的主机ip为192.168.6.100,系统是centos7,我们要配置自动化安装centos6(后面会说7怎么安装)假如我们的网关为192.168.6.1,dns服务器为114.114.114.114。

    第一步,先来安装我们要用到的服务(自己配置好yum源哦~)
1
yum install httpd tftp-server dhcp



    以及,我们用到的程序,后面结束怎么用。

1
yum install syslinux system-config-kickstart



    我们先来配置dhcp服务,dhcp的配置文件在/etc/dhcp/dhcp.conf,编辑此文件,里面应该是没有什么配置内容的,我们就直接添加配置把

1
2
3
4
5
6
7
8
9
10
11
12
13
#/etc/dhcp/dhcp.conf
option domain-name "xiaofengfeng.cn";     #域名
option routers 192.168.6.1;               #网关
option domain-name-servers 144.144.144.144;   #域名服务器

default-lease-time 43200;                    #默认的租约时间
max-lease-time 86400;                        #最大租约时间
log-facility local7;                        
subnet 192.168.6.0 netmask 255.255.255.0 {   
        range 192.168.6.101 192.168.6.199;    #地址池范围
        filename "pxelinux.0";                #pxe文件名
        next-server 192.168.6.100;            #pxe的服务器地址
}



    然后开启dhcp服务
1
systemctl start dhcpd



接下来得配置我们的tftp即pxe那个东东,tftp直接启动就好,并且tftp的工作目录为/var/lib/tftpboot/
1
systemctl start tftp.socket



还记得那个syslinux不?就是它提供给我们配置pxe所需要的文件。我们直接从syslinux的安装路径复制文件即可,我们还需要centos的一些启动内核呀之类的文件来启动一个小的linux,所以我们还得挂载一个centos6的光盘。
1
2
3
4
5
6
7
8
9
mkdir /media/cdrom            #创建光盘挂载点
mount /dev/sr0 /media/cdrom   #挂载centos6安装光盘
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/            #复制pxe文件
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/   #复制内核文件
cp /media/cdrom/isolinux/{boot.*,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
#复制引导启动文件
mkdir /var/lib/tftpboot/pxelinux.cfg/   #创建放pxe配置的文件
cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default  
#centos6直接复制配置文件即可



我们还得编辑一下/var/lib/tftpboot/pxelinux.cfg/default文件,让它有一个label就好,并且指定kickstart的位置,
1
2
3
4
5
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=  #注意指定ks哦



接下来我们就得创建我们的kickstart文件了,不过在此之前,我们得先创建我们httpd文件来为我们安装系统提供按装源,我们可以直接把centos6安装盘挂载到httpd的工作目录下。
1
2
3
mkdir -p /var/www/html/centos/6/x86_64   #创建挂载点
mount /dev/sr0 /var/www/html/centos/6/x86_64  #挂载
systemctl start httpd                      #开启http服务



我们可以测试一下我们的源,http://192.168.6.100/centos/6/x86_64,如果不能访问也许使我们的防火墙禁止掉了我们的http服务,为了方便可以直接清空防火墙规则或者开启上面所有服务的端口,允许通过。测试能列出centos6安装盘的文件列表就是可用的。接下来我们接来生成kickstart配置文件了,此时就要用上上面安装的system-config-kickstart程序,此程序要用到图形话界面哟~~
1
system-config-kickstart
QQ截图20161230092329.jpg
QQ截图20161230092334.jpg
QQ截图20161230092338.jpg
QQ截图20161230092343.jpg
QQ截图20161230092348.jpg
QQ截图20161230092354.jpg
QQ截图20161230092359.jpg
QQ截图20161230092403.jpg

QQ截图20161230092408.jpg
此时就会在/root目录下生成一个以.cfg结尾的配置文件,把它复制到192.168.6.100/var/www/html/kickstarts目录下,重命名为centos6.cfg。如果kickstarts这个目录不存在,就创建一个
1
mkdir /var/lib/html/kickstarts



当你输入192.168.6.100/kickstarts时,也许会拒绝访问这个文件夹,除了前面的iptables还有个坑爹的东东得关闭就是selinux。我们可以用getenforce查看selinux状态,如果是Enforcing表示开启了selinux,我们得关闭它
1
setenforce 0



如果是在centos7上运行kickstart程序,要注意一点,必须得把yum源的名称改为development,才会有软件列表~
到此我们所有的配置就完成了~直接你打开一个机器,并且这个机器和192.168.6.100在同一个网段就会全自动安装一个centos6系统。一定得记得centos不支持xfs!!设置分区时请选择ext系列的文件系统格式!!


centos7的过程与6类似,不过也有不一样的地方,除了我们要挂载centos7的安装盘以外,一些引导启动文件也不一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
yum -y install syslinux
#记得把centos7安装盘挂载到/media/cdrom哟
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /media/cdrom/Images/pxeboot/{vmlinuz,intrd.img} /var/lib/tftpboot   #复制centos7的内核
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}     #复制引导用到的文件
/var/lib/tftpboot

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

在7中我们得手动差un关键default文件,不过和centos6类似。
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32      
prompt 5
timeout 30
MENU TITLE CENTOS 7 PXE Menu             #最上面的标题

LABEL linux                              #选择界面的标签
MENU LABEL install CentOS 7 x86_64       #选择条目提示信息
KERNEL vmlinuz                           #内核文件
APPEND initrd=initrd.img inst.repo=  ks=http://192.168.6.100/kickstarts/centos7.cfg
centos7必须指定inst.repo哟这就是我们系统的安装源~~



到此我们就完成了centos6 和centos7的全自动化安装了,内容已经是相当的详细了,不过如果依然有问题,或遇到不能解决的问题可以留言,有时间就会回复解答。当然如果很急的话也可以发邮件。
690347460@qq.com
这也是博主的qq号码~如果加好友请注明自己是做什么的~博主好分类~
后记:
    话说我们确实是实现了一个系统的全自动化安装,但是如果我们向有更多的功能呢?比如说即能安装cento6又同时可以选择centos7,更有甚者想安装windows呢?我们将会将下一片博客中来说明如何实现~~~尽请期待~





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321394-1-1.html 上篇帖子: CentOS7下VNC服务器-tigervnc配置 下篇帖子: fedora24下安装flash player
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表