pxe安装centos系统

环境:

系统:centos7.1

平台:VirtualBox虚拟机

所安装的系统:centos6.7、centos7.1

大体的过程:

1、由dhcp为客户机分配地址,并提供客户机启动所需的文件和tftp服务器地址。

2、客户机自动从tftp下载bootloader第一阶段所需的文件。pxelinux.0文件

3、自动开始从tftp下载bootloader第二阶段所需的文件(提供窗口菜单,并启动相应内核和传递参数)。

isolinux.cfg ,splash.jpg,esamenu.c32,vmlinuz,initrd.img。

4、内核运行之后,启动anaconda安装程序并加载kickstart文件,从http服务器下载程序开始安装。



一、安装centos6.7.

1、安装配置dhcp、tftp与httpd服务。

[[email protected] ~]# yum install httpd tftp-server tftp dhcp -y

配置dhcpd。配置目录/etc/dhcp/。  复制dhcp配置样例文件:

[[email protected] dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  dhcpd.conf
cp: overwrite ‘dhcpd.conf’? y

配置结果:

#option domain-name "star.com";        #指定搜索域,在我们这里用不到,注释了。
#option domain-name-servers 192.168.40.100;            #DNS
default-lease-time 3600;                                    # 默认租约
max-lease-time 7200;                                         #最长租约
log-facility local5;                                                #日志。 要在/etc/rsyslog.conf中添加local5日志设施。也可以默认不用修改。
subnet 192.168.40.0 netmask 255.255.255.0 {        #添加作用域。
        range 192.168.40.10 192.168.40.20;                #地址池
        filename "pxelinux.0";                                        #客户端要去找的文件。
        next-server 192.168.40.100;                              #客户端去哪里找filename的文件。
}
#host node1 {                                                        #如果作地址保留,或只是为单台主机安装系统。就只设置这个。
#       hardware ethernet 0:0:c0:5d:bd:95;            #
#       filename "pxelinux.0";
#       next-server 192.168.40.100;
#}

启动的时候如果有问题,可以一直启动dhcpd,会显示哪些行有错误。

启动完成 ss -unl查找67端口是否打开,没问题我们用客户机测试一下。

看起来工作正常。

启动tftpd,在centos7里面,systemd就已经有xinetd的特性了,不用再来使用xinetd启动tftp。我们只要启动socket就可以, 主程序systemd会带为启动。

systemctl start tftpd.socket    , 启动并查看69/UDP是否开启。

启动httpd。默认配置就可以了。

2、复制所需文件启动安装。

安装syslinux。 这个程序里面是一堆的bootloader文件。其中也包括pxe网络的bootloader。相当于是grub的第一阶段引导。

cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/                    #pxelinux.0就是syslinux生成的。
cp /mnt/cdrom/isolinux/{splash.jpg,vesamenu.c32} /var/lib/tftpboot/        #centos6光盘中的文件。用来生成引导窗口,并通过配置文件加载对应内核和传递参数。相当于是grub的第二阶段所需的文件。 
cp /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/     #用于pxe引导的内核与initrd文件, 不过我这里用md5sum发现光盘里正常的内核与initrd文件与pxe目录里面的一样,centos7也是。
mkdir /var/lib/tftpboot/pxelinux.cfg/                                                    #这个里面就是要放vesamenu.c32的配置文件。
cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

这里的pxelinux.0加载完成以后,它就会再从相同位置加载第二阶段所需的文件。第二阶段再加载内核与initrd。

那么现在用于引导的第一和第二阶段就已经好了。就剩在配置菜单中为内核传递ks参数。不过在此之前我们就先来提供ks文件与软件仓库,软件仓库这里就用光盘了。

传递给内核的ks参数是anacoda程序要用的,也是自动安装的关键。

我这里的ks文件内容:

firewall --disabled 
install                                            
url --url="  
rootpw --iscrypted $6$3hHx9zVZ$ShB3kPo0UeHpetxNXEJr2GynXg2rcg2lgCflfTbuxN1yfUbrUmBJu3P/ncD/X467M1jN2yxiNWnBExozzjafg1  
text
firstboot --disable
keyboard us
lang en_US
selinux --disabled
reboot
timezone  Asia/Shanghai
bootloader --append="rhgb crashkernel=auto quiet" --location=mbr --driveorder="sda"
zerombr 
clearpart --all  
part /boot --fstype="ext4" --size=200
part pv.008 --size=61440
volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
%packages
@base
@core
%end

这个文件中有的内容也不是很清楚, 直接复制马哥的,自己给简化了一下。可以安装system-config-kickstart程序来设置ks文件。

文件放在httpd服务器的主目录里。 anaconda支持http协议,不用再使用tftp了。

[[email protected] ~]# ls /var/www/html
centos6  centos6.cfg

同时ks文件中所指定的url就是仓库的位置,我这里就在相同目录的centos6下面。

设置引导菜单。

vim /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32
#prompt 1
timeout 20

menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install CentOS6
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.40.100/centos6.cfg

把用不到的都删除了。 并且添加参数ks。 就是从哪里下载ks文件。

现在我们引导的第一阶段和第二阶段看起来都完成了。内核如果加载顺利,并启动anaconda,然后再成功下载ks文件,anaconda如果可以顺利的按着ks文件安装完成,也就算安装完成了。

在这里倒数第二行可以看到为什么要在pxelinux.cfg/default里面放菜单。 pxelinux.0默认读取的文件就是这个。

开始安装了。结果也正常。

二、安装centos7.1。

个人以为在一般情况下,第一二阶段的引导与系统版本的关系并不是必须。起码在同是centos系统的6和7版本之间还可以通用。

那么即然上面我们的引导都做好了,这里也就只剩复制一下内核文件,添加启动菜单,ks文件与软件仓库了。

ks文件:

install
keyboard --vckeymap=cn --xlayouts=‘cn‘
reboot
rootpw --iscrypted $6$3hHx9zVZ$ShB3kPo0UeHpetxNXEJr2GynXg2rcg2lgCflfTbuxN1yfUbrUmBJu3P/ncD/X467M1jN2yxiNWnBExozzjafg1
timezone Asia/Shanghai
url --url="http://192.168.40.100/centos7"
lang zh_CN
firewall --disabled
network  --bootproto=dhcp --device=eth0
auth  --useshadow  --passalgo=sha512
text
firstboot --disable
selinux --permissive
ignoredisk --only-use=sda
bootloader --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot --asprimary --fstype="xfs" --size=512
part swap --fstype="swap" --size=2048
part /usr --fstype="xfs" --size=20480
part / --fstype="xfs" --size=20480
%packages
@base
@core
%end

来看一下现在的httpd的根目录:

[[email protected] html]# ls
centos6  centos6.cfg  centos7  centos7.cfg

复制一下内核文件 : 当前目录在tftp根目录。

cp /mnt/cdrom1/images/pxeboot/initrd.img initrd.7.img
cp /mnt/cdrom1/images/pxeboot/vmlinuz vmlinuz.7
[[email protected] tftpboot]# ls
initrd.7.img  initrd.img  pxelinux.0  pxelinux.cfg  splash.jpg  vesamenu.c32  vmlinuz  vmlinuz.7

注意:不要复制成centos6的内核了。

修改启动菜单。

default vesamenu.c32
timeout 100                            #时间改长了一点,现在是10秒。

menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install CentOS6
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.40.100/centos6.cfg

label linux
  menu label ^Install CentOS7
  kernel vmlinuz.7
  append initrd=initrd.7.img ks=http://192.168.40.100/centos7.cfg
~

也就是多了4行用于centos7的菜单。menu default是用于默认启动的。

我们来缕一下,dhcp发送启动引导文件。客户机收到文件启动引导,开始加载第二阶段。成功以后,会开始加载内核文件,内核文件再启动anaconda。anaconda加载ks文件,开始安装过程。

我们来测试一下:

看起来工作正常。重新进入6也工作正常 。 下面是7的。

格式化成功,并开始安装程序了,我们也可以看到一共469个包。

这里时间有点长,耐心等一下。 结果也正常。重启进入系统。



不知道为什么用centos7光盘里面的引导文件就会有问题。可能是传递内核参数的方式不一样吧。这里就不是很了解了。朋友们有兴趣可以试一下,vesamenu.c32文件和isolinux.cfg菜单文件。



那么即然7的引导不好用,有时候只是想安装7,而又没有6的光盘。 可以用syslinux包里带的一些文件。

cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}

上面这几个文件,用到的也就menu.c32文件,其它另外的两个c32文件不知道是干什么用的,另外memdisk好像是一个内核文件。

我这里只用menu.c32和一个菜单文件就可以用了。

菜单文件还是那个default,只不过要自己定了。与centos6上面的差不多。

default menu.c32                #启动menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu

LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz.7
APPEND initrd=initrd.7.img ks=http://192.168.40.100/centos7.cfg

我现在的tftp目录:

initrd.7.img  initrd.img  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz  vmlinuz.7
当然可以忽略centos6的initrd与内核了。

工作正常。 不过用它安装centos6的时候有时候会在选择键盘的那里要手动。也不知道是不是刚才设置有问题,现在倒是自动安装了。

加上6以后:

现在的菜单文件:

default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu

LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz.7
APPEND initrd=initrd.7.img ks=http://192.168.40.100/centos7.cfg

LABEL linux
MENU LABEL Install CentOS 6 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img ks=http://192.168.40.100/centos6.cfg



这就完成了。现在是在虚拟机中做的, 在实际环境中可能又会有各种各样的毛病。 而且有时候可能要安装多个版本的系统,如ubuntu, fedora...... 。这时就要使用cobbler来安装。

cobbler其实是pxe的二次封装,一些文件或配置可以自动生成,使用起来很方便。



谢谢浏览。

时间: 2024-10-20 20:53:24

pxe安装centos系统的相关文章

配置pxe自动化安装centos系统

一.配置kickstart应答文件要想配置kickstart ,首先要配置个本地yum源,要不然用system-config-kickstart时选不上包.而且,centos6的yum 源的名字一定是[base],要不然会报:Package selection is disabled due to problems downloading package information.centos7要把仓库名称更改为development[development]name=basebaseurl=fi

cobbler安装centos系统

整个安装系统的流程与pxe还是一样的,只不过由手动变成了自动,各个版本之间也更好管理. 这里还是centos系统的.cobbler的大致基础使用. 环境: 平台:VirtualBox 虚拟机 服务机:CentOS7 所安装的系统:CentOS7, CentOS6 cobbler里面有几个概念要首先了解一下: distro: 用来标识一个发行版.因为安装不同版本的系统起码要用不同的内核与initrd来启动安装程序.这个就是用来区分它们的.注意distro主要是来标识不同的内核与initrd,与整个

PXE自动化安装centos系统

PXE自动化安装centos系统 ①安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP iptables -vnL #查看防火墙状态 systemctl stop firewall #关闭防火墙 getenforce #查看SELinux状态 setenforce 0 #禁用SELinux cat > /etc/sysconfig/network-scripts/ifcfg-ens37 <<EOF DEVICE=ens37 #网卡名称 ONBOOT=yes #开启网卡 BOO

virturalbox 安装centos系统,设置双网卡实现虚拟机上网及主宿互访

一:安装centos系统到virtualbox中,注意事项:安装过程中设置了网络连接信息,将ipv4设置为手动,地址为192.168.56.101,网关为192.168.56.0(以为是host-only 模式) 二:启动centos a.查看 /etc/sysconfig/network-scripts/ifcfg-enp0s* b.检查是否连上网:ping www.baidu.com c.安装常用命令:yum -y install net-tools,yum -y install vim,y

在vmware虚拟机中安装centos系统并使用LNMP安装部署环境

一.介绍:题目有点绕口,大概意思就是分两步完成,首先在vmware虚拟机中安装centos系统,然后在centos系统中使用lnmp安装包安装项目部署环境.      准备工作(很重要,所需安装软件如果都没找对,怎么能安装成功) 1.下载vmware,这个好找,直接百度搜索“vmware 下载”,能找到安装软件. 2.下载CentOS,这个需要注意点: 如果系统是32位就点这个:http://mirror.symnds.com/distributions/CentOS-vault/6.3/iso

yum安装centos系统依赖库

安装centos系统依赖库,安装软件过程中,经常需要的一些库,可以在编译安装软件前执行如下命令: 首先更新系统(这步可以不执行) yum -y update 预安装 编译器及库文件 yum -y install make cmake gcc g++ gcc-c++ gcc-g77 libtool autoconf automake imake libxml2-devel expat-devel yum -y install ncurses ncurses-devel pcre pcre-deve

2、vmware安装centos系统以及基本的系统优化-鑫鑫linux运维网络培训

本节课主要讲解了安装centos系统以及基本的系统优化 更多视频试听课程:http://yunpan.cn/cVSrHAk8ExAd9  访问密码 aa19

CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

笔记内容:CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统笔记日期:2018-03-07 28.5 Centos7上安装KVM 28.6 配置网卡 28.7 创建虚拟机安装CentOS7 28.8 虚拟机管理 Centos7上安装KVM 首先我们需要一台配置较高的CentOS7虚拟机,当然用物理机也可以,我这里用的是虚拟机,配置如下: 硬盘需要新增一个,其中的新硬盘用于在KVM里安装操作系统时需要用到,内存的大小最好有4个G,最低2个G,因为我这里物理机的内存有16G所以就给

安装 CentOs 系统 及 Python 及 Scrapy 框架

1: 先安装Centos 系统: 为什么选择CentOs系统,而不选择Ubuntu ? 我在Ubuntu上尝试了三次安装 python 和 Scrapy ,结果都没成功,在运维老王的建议下 使用CentOs ; ( 忍不住吐槽一下,python 安装包 依赖包  安装起来 真费劲! ) 2: CentOs安装过程 整体安装过程比较顺利  ,  比Ubuntu 简单多了 ;  我选择了一个mini的ios 安装之后 也没有 桌面环境 , 挺好 ,符合需求. 安装好之后的界面: 命令行环境 , 挺好