Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66145
  • 博文数量: 11
  • 博客积分: 521
  • 博客等级: 中士
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-31 00:32
文章分类

全部博文(11)

文章存档

2011年(1)

2010年(1)

2009年(1)

2007年(2)

2006年(6)

我的朋友

分类: LINUX

2010-08-22 10:25:36

                               FAI
 
   Debian的批量安装为FAI(Fully Automatic Installation),下面我简单说下我的FAI的建立,希望能对大家有点帮助,如在测试中有问题请指出。
    生产环境及FAI的实现目标
    OS:debian_lenny_5.0.2a 64位
实现目标就是在这个FAI服务器上能装32位debian 5.0 和 64位 debian 5.0,并且安装的时候通过FAI服务器的最小镜像源来安装,这样在安装的client的时候可以不用连网来安装。
 
1.    装好一个基本的debian系统,在能联网的情况下,我们需要的任何软件都可以通过apt源下载,我用的mirrors.163.com还有在网上找的一个202.108.12.69,这个我用的速度比较快。
Vi /etc/apt/sources.list
deb lenny main contrib non-free
#deb lenny main
2.    我的网络环境是这样的,win7系统装的虚拟机,通过小区宽带上网,win7 IP:192.168.1.100 路由器的IP为192.168.1.1 虚拟机debian的地址为192.168.1.250
Cat /etc/network/interfaces
faiserver:/media# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.1.250
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 202.106.0.20
3.    开始安装配置FAI服务器
下载fai包记得更新下源
faiserver:~# apt-get update
faiserver:~# apt-get install fai-quickstart
执行完后会自动安装所需要的包,包括dhcp nfs openssh-server tftp
Fai服务有2个重要配置的文件,一个是/etc/fai/fai.conf 一个是/etc/fai/make-fai.nfsroot.conf
 
Fai.conf几个重要的参数
FAI_DEBMIRROR:  Access to Debian mirror via NFS mounted directory
If FAI_DEBMIRROR is defined, install clients mount it to $MNTPOINT,这个主要是要安装的机器访问debian mirror通过NFS方式,如果这个选项被使用,客户端将会通过/etc/fai/fai.conf的另一个参数MNTPOINT指定的地方挂载。这个参数也不是必须定义的,如果能联网,客户端可以通过访问指定源的地址安装据需要的包。
FAI_CONFIGDIR:FAI配置文件的位置
FAI_CONFIG_SRC:访问FAI配置的文件的方式,支持nfs,file,cvs,cvs+ssh,svn+file,svn+http,git,git+http
 
Make-fai-nfsroot.conf的几个重要参数
FAI_DEBOOTSTRAP:FAI服务器建立nfsroot环境去mirror源下载基本包
 
4,之前我说过要做一个FAI,32位和64位的系统都能装,这样我们就需要32和64 两种配置文件,执行fai-setup时我们能生成2种nfsroot环境。
  
     1)默认的FAI配置文件在/etc/fai 我们这里建立/etc/fai-i386 /etc/fai-amd64     
for dir in /etc/fai-i386 /etc/fai-amd64
  do
        mkdir $dir
        cd $dir
        ln /etc/fai/fai.conf
        ln /etc/fai/NFSROOT
        mkdir $dir/apt
        ln /etc/fai/apt/sources.list apt/
        ln /etc/fai/menu.lst
        cp /etc/fai/make-fai-nfsroot.conf .
  done
其实/etc/fai-i386 /etc/fai-amd64 每个文件夹下也不是完全复制/etc/fai的
文件,只是make-fai-nfsroot.conf是必须要复制的,其它文件通过链接就可以被使用,apt/source.list必须是硬链接,或是copy过去的,软连接是不能工作的。这些文件会被copy到client,软链接会没有参照对象。
2)建立i386 64下的apt configs
我们要告诉apt-get去下载各自架构下的包,建立apt_arch.conf在/etc/fai-i386 /etc/fai-amd64.以/etc/fai-i386/arch.conf为例
Vi /etc/fai-i386/arch.conf
APT {
    Architecture "i386";
}
也可以用下面的命令
for arch in i386 amd64 ; do
CONTENT='APT {\n\tArchitecture "$arch";\n}'
echo $CONTENT > /etc/fai-$arch/apt_arch.conf
done
3)配置每个架构下的make-fai-nfsroot.conf
增加—arch i386 或 –arch amd64到FAI_DEBOOTSTRAP_OPTS,以i386为例
FAI_DEBOOTSTRAP_OPTS="--arch i386 --exclude=dhcp-client,info"
    4)建立本地最小镜像源
分别为i386 amd64建立最小镜像源,以i386为例,先确定/etc/fai-i386/fai.conf的配置,FAI_DEBMIRROR选项没有启用,应为注释状态
#MNTPOINT 也要注释掉,另外/etc/fai-i386/apt/sources.lst如下
deb lenny main contrib non-free
以上2个配置文件没有问题后,我们做如下操作,
export FAI_ETC_DIR=/etc/fai-i386
export APT_CONFIG=/etc/fai-i386/apt_arch.conf
apt-get update
fai-mirror -v /media/mirror.i386
 
或者通过以下脚本来完成2个镜像的建立
for arch in i386 amd64 ; do
export FAI_ETC_DIR=/etc/fai.$arch
export APT_CONFIG=/etc/fai.$arch/apt_arch.conf
apt-get update
fai-mirror -v /media/mirror.$arch
done

export -n APT_CONFIG
apt-get update
最后做个软件连接
ln -s mirror.i386 mirror
   5)镜像下载完成后,我们先建立i386的NFSROOT,这里,要改以下的文件
以下是我的/etc/fai-i386/fai.conf make-fai-nfsroot.conf apt/sources.list
faiserver:/etc/fai-i386# vi fai.conf
FAI_DEBMIRROR=192.168.1.250:/media/mirror
LOGUSER=fai
FAI_LOGPROTO=ssh
FAI_CONFIGDIR=/srv/fai/config
FAI_CONFIG_SRC=nfs://192.168.1.250$FAI_CONFIGDIR
MNTPOINT=/media/mirror
FAI=/var/lib/fai/config
faiserver:/etc/fai-i386# vi make-fai-nfsroot.conf
NFSROOT=/srv/fai/nfsroot
TFTPROOT=/srv/tftp/fai
FAI_DEBOOTSTRAP="lenny "
FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
FAI_DEBOOTSTRAP_OPTS="--arch i386 --exclude=dhcp-client,info"
Vi apt/sources.list
deb file:///media/mirror lenny main
以上配置文件确定无误后,执行
Fai-setup –C /etc/fai-i386 –v
配置完成后,会在/srv/fai/ 下成生成nfsroot的目录 这就是i386的
为了以后的方便,我们将nfsroot目录改名,并做软链接
mv /srv/fai/nfsroot /srv/fai/nfsroot.i386
ln –s nfsroot nfsroort.i386 nfsroot
最后一步,我们生成tftp的启动文件
Fai-chboot –Ifv default 输出的文件会在/srv/tftp/fai/pxelinux.cfg/default,如下
label fai-generated
kernel vmlinuz-2.6.26-2-amd64
append initrd=initrd.img-2.6.26-2-amd64 ip=dhcp  root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live  FAI_FLAGS=verbose,sshd,createvt FAI_ACTION=install
同样为了以后的方便的,我们将/srv/tftp目录下的内核文件做个连接,并修改default文件
ln -s initrd.img-2.6.26-2-486  initrd.img
ln -s  vmlinuz-2.6.26-2-486 vmlinuz
修改后的default文件如下
default fai-generated
label fai-generated
kernel vmlinuz
append initrd=initrd.img ip=dhcp root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live FAI_FLAGS=verbose,sshd,syslogd,createvt FAI_ACTION=install
fai基本完成了,剩下的就是搭建PXE启动的网络环境
5.DHCP TFTP NFS的配置
 我的dhcp配置文件如下:
faiserver:~# cat /etc/dhcp3/dhcpd.conf
ddns-update-style none;
option domain-name "zhu.org";
filename "/pxelinux.0";
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.101 192.168.1.150;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.1.255;
  option routers 192.168.1.1;
  option domain-name-servers 202.106.0.20;
  option host-name "fai-test";
  next-server 192.168.1.250;
}
另外修改/etc/inetd.conf,将里面tftp一行尽管为
ftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /srv/tftp/fai
还有/etc/default/tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /srv/tftp/fai"
 NFS服务的配置文件在/etc/exports,fai-set执行完成后会将/srv/fai/config /srv/fai/nfsroot 自动生成配置文件,因为我们还要挂载/media/mirror文件,所以我们要将这个加进配置中去。最后的样子如下:
/srv/fai/config 192.168.1.250/255.255.255.0(async,ro,no_subtree_check)
/srv/fai/nfsroot 192.168.1.250/255.255.255.0(async,ro,no_subtree_check,no_root_squash)
/srv/fai 192.168.1.250/255.255.255.0(async,ro,no_subtree_check,no_root_squash)
/media/mirror 192.168.1.250/255.255.255.0(async,ro,no_subtree_check,no_root_squash)
/media 192.168.1.250/255.255.255.0(async,ro,no_subtree_check,no_root_squash)
重启NFS服务faiserver:~# /etc/init.d/nfs-kernel-server restart
到这里我们的FAI服务器搭建完成,剩下的就是找台机器网络启动安装限可。
 
6.我们编辑如下脚本,可以在32 64位之间选择安装,脚本如下
faiserver:/srv/fai# cat faibit.sh
#!/bin/bash
read -p "Please choice the bits (32/64):" nu
if [ "$nu" == "32" ] ; then
        echo "your choice is the 32bits"
        cd /srv/tftp/fai
        unlink initrd.img && ln -s initrd.img-2.6.26-2-486  initrd.img
        unlink vmlinuz && ln -s  vmlinuz-2.6.26-2-486 vmlinuz
        cd /srv/fai
        unlink nfsroot && ln -s nfsroot.i386 nfsroot
        cd /media
        unlink mirror && ln -s mirror.i386 mirror
        ls -l /srv/tftp/fai/initrd.img
        ls -l /srv/tftp/fai/vmlinuz
        ls -l /srv/fai/nfsroot
        ls -l /media/mirror
elif [ "$nu" == "64" ] ; then
        echo "your choice is the 64bits"
        cd /srv/tftp/fai
        unlink initrd.img && ln -s initrd.img-2.6.26-2-amd64  initrd.img
        unlink vmlinuz && ln -s  vmlinuz-2.6.26-2-amd64 vmlinuz
        cd /srv/fai
        unlink nfsroot && ln -s nfsroot.amd64 nfsroot
        cd /media
        unlink mirror && ln -s mirror.amd64 mirror
        ls -l /srv/tftp/fai/initrd.img
        ls -l /srv/tftp/fai/vmlinuz
        ls -l /srv/fai/nfsroot
        ls -l /media/mirror
else
        echo "I don't know what is your choice , please choice the 32 or 64"
fi
 
                                         2010-08-21 朱晓哲
 
增加安装RHEL CENTOS版本的方法
 
以as4u7为例
#################
#
#     httpd
#
#################
aptitude -y install apache2 
#########################################################
# Change old patch "/var/www/" to new pathc "/media/"
cd /etc/apache2/sites-available/
cp default default.old
mv default default.bak
cat default.bak |sed 's;/var/www/;/media/;g' > default
rm -fr default.bak
/etc/init.d/apache2 reload
sleep 3
修改default文件
label as4u7
kernel as4u7
append initrd=as4u7.img ip=dhcp boot=live ks=
ks.cfg文件放在/media/下
 
另外,这里default文件只能指定一个文件启动,即

#default fai-generated
#label fai-generated
label debian
kernel vmlinuz
append initrd=initrd.img ip=dhcp root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live FAI_FL
AGS=verbose,sshd,syslogd,createvt FAI_ACTION=install
 
label as4u7
kernel as4u7
append initrd=as4u7.img ip=dhcp boot=live ks=
 
中的default得注释掉,所以启动的时候你要在boot:后面输入as4u7才能装,开启default as4u7的话,客户机会自动安装as4u7,不知道debian下有没有rhel一样的boot.msg一样的文件,可以有启动选择界面,有知道帮忙搞下。
 
 
 
增加安装freebsd的方法
Debian系统现版本内核不支持对freebsd分区ufs的读写,因为我们做一个全自动安装的脚本,所以要对freebsd的启动文件mfsroot改写,添加install.cfg,所以就要将FAI服务器的内核重新编译下。
 编译方法如下:
1.首先查看自己的版本内核,下载相对应的内核源代码
faiserver:/srv/fai# uname -a
Linux faiserver 2.6.26-2-amd64 #1 SMP Wed May 12 18:03:14 UTC 2010 x86_64 GNU/Linux
# apt-get install linux-source-2.6.26
下面这几个包是以后编译内核要用到的
#apt-get install ncurses-dev kernel-package linux-source build-essential
# cd /usr/src
# bzip2 -dc linux-source-2.6.26.tar.bz2 |tar xf -
# cd /usr/src/linux-source-2.6.26
# cp /boot/config-2.6.26-2-amd64 .config
#vi .config
CONFIG_UFS_FS_WRITE=y ////添加这行,把对ufs系统的写打开
下面开始编译
# make-kpkg clean
#make-kpkg --initrd --append-to-version=custom1 kernel_image kernel_headers
完成后会有2个内核包
faiserver:/usr/src# ls
linux-headers-2.6.26custom1_2.6.26custom1-10.00.Custom_amd64.deb
linux-image-2.6.26custom1_2.6.26custom1-10.00.Custom_amd64.deb
下面就是安装
#dpkg -i linux-image-2.6.26custom1_2.6.26custom1-10.00.Custom_amd64.deb
 
把新内核设置为默认启动,编辑/boot/grub/menu.lst即可,重启机器,用新内核启动。
 
2.
1)以freebsd7.1 32位安装为例,在/media/下建立7.1文件夹,并将7.1安装盘的内容复制到7.1的目录下。
2)将启动文件pxeboot 复制到tftp目录下
faiserver:/usr/src# cd /media/7.1/boot
faiserver:/media/7.1/boot# cp pxeboot /srv/tftp/fai/
3)编辑mfsroot 以及 loader.conf
加入vfs.root.mountfrom="ufs:/dev/md0c",另外网上都说加在loarder.rc,我试了不行,请有知道的同学指点下。
faiserver:/media/7.1/boot# cp mfsroot.gz mfsroot.gz.bak//备份下
faiserver:/media/7.1/boot# gunzip mfsroot.gz
解压出来的mfsroot就是freebsd最小启动内核,应该和rhel的initrd.img一样,我们最后的目的就是将jumpstart的install文件加入到这个内核当中,使之自动安装。
   挂载mfsroot,加入install.cfg,挂载方法如下。
mount -t ufs -o loop,rw,ufstype=44bsd /media/7.1/boot/mfsroot /mnt/cd1/
将 install.cfg文件copy到/mnd/cd1目录下限可 umount /mnt/cd1
4)因为freebsd的在dhcp中指定的启动文件和debian rhel等不一样,所以我们还要改下dhcp服务,改动如下
#filename "/pxelinux.0";
filename "/pxeboot";
option root-path "/media/7.1/";
将pxelinux.0注释掉,重启dhcp服务,客户端网络安装限可
PS:install.cfg配置文件中安装方式写成NFS安装
 
阅读(2967) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-24 14:50:42

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com