用pxe安装自己定制的发行版快速部署系统环境

Thu 02 February 2012

自己的发行版出来之后如何快速应用到企业中,可以使用PXE网络安装实现无人值守安装. 先解释下PXE安装,这是由Intel开发的一项技术,支持通过网络从远程服务器下载启动文件系统本机,从而实现网络安装操作系统.

这里需要网络传输就需要ip,所以需要DHCP服务器,传输文件需要简单的传输协议就需要tftp服务器,安装的过程中需要传输安装文件就需要一个文件服务器(ftp/http/nfs等) 基本流程就是通过DHCP获取ip并获取下一步的服务器地址(也就是tftp),然后下载启动文件,通过启动文件获取指定的下一个服务器的地址(安装文件的远程路径)

使用环境:CentOS 5.5 32位

使用系统:根据CentOS定制的发行版ColdOS 0.1 32位

ip: 静态ip192.168.3.1

本文使用dhcpd分配ip,使用tftp-server提供下载启动文件,apache提供下载安装文件 1.安装配置tftp

安装tftp-server

yum -y install tftp-server

配置tftp-server,编辑/etc/xinetd.d/tftp

vi /etc/xinetd.d/tftp

修改配置文件

 

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot      # 根目录
        disable                 = no                # 把yes改为no启动tftp
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

启动tftp

service xinetd restart
Stopping xinetd: [  OK  ]
Starting xinetd: [  OK  ]

2.在tftp根目录下创建启动文件供客户端下载:

# 复制网卡启动文件
cp /usr/lib/syslinux/pxelinux.0 /tftpboot

将安装光盘上/image/pxeboot/initrd.img和vmlinux复制到/tftpboot/中

# 挂载光盘
mount /dev/hdc /mnt
# 复制文件
cp /mnt/isolinux/vmlinuz /tftpboot/
cp /mnt/isolinux/initrd.img /tftpboot/

创建pxe启动菜单:

# 创建存放启动菜单的目录
cd /tftpboot
mkdir pxelinux.cfg
# 从安装光盘内复制启动菜单命名为default
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

编辑启动菜单:

vi /tftpboot/pxelinux.cfg/default
default ColdOS
prompt 1
timeout 600
label ColdOS
  kernel vmlinuz
  append ks=http://192.168.3.1/cold/isolinux/ks.cfg initrd=initrd.img text # 指定ks文件位置

3.安装配置dhcp服务器 安装

yum -y install dhcp

配置

# 创建配置文件
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
# 编辑配置文件
vi /etc/dhcpd.conf
# 修改配置文件:
ddns-update-style interim;
ignore client-updates;
next-server 192.168.3.1;             # 指定tftp服务器
filename "/pxelinux.0";              # 指定启动文件

subnet 192.168.3.0 netmask 255.255.255.0 {

        option routers                  192.168.3.1;
        option subnet-mask              255.255.255.0;

        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      192.168.1.1;

        option time-offset              -18000; # Eastern Standard Time

        range dynamic-bootp 192.168.3.128 192.168.3.254;
        default-lease-time 21600;
        max-lease-time 43200;

}
# 启动dhcp服务器
service dhcpd start
Starting dhcpd: [ OK ]

4.安装配置http服务器 安装:

yum -y install httpd

首先把安装光盘里的内容拷到本地服务器上:

# 创建目录
mkdir -p /pxe/cold/
# 复制文件
( cd /mnt/ && tar -cf - . ) ¦ (cd /pxe/cold && tar -xvf - )

配置apache

# 编辑配置文件:
vi /etc/httpd/conf/httpd.conf
# 更改apache根目录(将配置文件中的两处/var/www改成/pxe)
DocumentRoot "/pxe"
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory "/pxe">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

配置完成后启动apache

service httpd start

5.更改ks文件(ks文件可在CentOS图形界面下用kickstart程序直接生成,这里不做介绍)

因为网络安装,又需要部署cfengine的话,就需要更改cfengine的获取方式,首先要将文件夹打包:

cd /pxe/cold
tar -cvf cfengine.tar cfengine/

然后编辑ks文件

# 编辑ks文件
vi /pxe/cold/isolinux/ks.cfg
install
cdrom
lang en_US.UTF-8
keyboard us
rootpw --iscrypted $1$OKNHES6P$tPdz9HxIp6.QUvulqxNwa.
firewall --disable
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Chongqing
bootloader --location=mbr --driveorder=sda
url --url http://192.168.3.1/cold/              # 添加指定安装文件的语句
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --linux --drives=sda
part / --fstype ext3 --size=1 --grow --maxsize=4096
part /usr --fstype ext3 --size=1 --grow
part swap --size=1 --grow --maxsize=512

%packages
@core
@useful
@cfengine

%post --nochroot
mkdir -p /mnt/sysimage/var/cfengine/masterfiles
mkdir -p /mnt/sysimage/var/cfengine/inputs
mkdir -p /mnt/sysimage/var/cfengine/outputs
mkdir -p /mnt/sysimage/var/cfengine/bin

wget  http://192.168.3.1/cold/cfengine.tar    # 更改cfengine获取方式
tar -xvf cfengine.tar
cp /cfengine/sbin/cf-* /mnt/sysimage/var/cfengine/bin/
cp -r /cfengine /mnt/sysimage/usr/local/

6.测试 开启另一台设备测试,机器启动时一般按F12即可进入网卡启动.

Category: Linux Tagged: 网络安装 网卡启动 无人值守 pxe Linux cfengine

comments


将cfengine集成到自己定制的发行版

Thu 19 January 2012

上一篇文章介绍如何定制自己的发行版,并且完全根据CentOS进行定制,我们看到了用cfengine管理Linux系统的优势,如何快速部署cfengine呢,我们把cfengine集成到自己的定制的Linux中. 本文根据编译好的cfengine来进行定制,大家都知道编译之前会有很多依赖,所以我们需要安装系统的时候把依赖装好,然后把编译好的二进制文件复制到当前系统中.

本文完全根据上一篇文章而来,挂载光驱安装工具等等这里就不介绍了.

首先.记录cfengine依赖包的依赖关系,然后把这些包复制到定制发行版的目录下,cfengine所依赖的包如下:

# 把依赖包添加到cfpkgs.list
vi cfpkgs.list
# 添加如下内容
keyutils-libs-devel
zlib-devel
e2fsprogs-devel 
libsepol-devel
libselinux-devel
db4-devel
pcre-devel
krb5-devel
flex
openssl-devel 
# 然后根据cfpkgs.list把包复制到发行版的CentOS目录下:
for i in `cat cfpkgs.list `:; do file=`echo $i ¦ sed 's/://g'`; cp /mnt …

Category: Linux Tagged: 集成 定制 发行版 Linux cfengine

comments

Read More

安装配置cfengine实现自动化配置Linux/Unix服务器

Tue 17 January 2012

cfengine(配置引擎)是一种 UNIX 管理工具,其目的是使简单的管理的任务自动化,使困难的任务变得较容易。Cfengine 适用于管理各种环境,从一台主机到上万台主机的机群均可使用. cfengine的版本2和版本3存在很大差异,这里使用最新版本的cfengine3:

cfengine执行和分发的策略被称为承诺,cfengine建议的结构是:

  • 一个版本控制器(subversion)用来创建策略
  • 多个策略分发器(cfenginehub)用来分发策略----server
  • 多个策略执行器(cfengine host)用来执行策略-----client,

本文使用的环境为:

  • cfhub: 172.16.1.1/24
  • cfhost: 172.16.1.2/24

系统为CentOS 5.5 32位最小化安装,本文将不会解释一些基本命令,如有疑问请移步google.

下载:

wget https://cfengine.com/source-code/download …

Category: Linux Tagged: 自动配置 自动化 服务器 Unix Linux cfengine

comments

Read More
Page 1 of 1

Fork me on GitHub