wget -O - https://fai-project.org/download/074BCDE4.asc | apt-key add -
echo "deb http://fai-project.org/download stretch koeln" > /etc/apt/sources.list.d/fai.list
apt-get update
aptitude install fai-quickstart -y
apt-get install qemu-user-static -y
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 172.16.1.1
#开启端口转发
echo 1 > /proc/sys/net/ipv4/ip_forward
vi /etc/dhcp/dhcpd.conf
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0 {
interface eth1;
range 192.168.1.100 192.168.1.250;
next-server 192.168.1.1; #指定PXE客户端查找的服务器
filename "fai/pxelinux.0"; #指定启动文件/srv/tftp/
option routers 192.168.1.1;
option domain-name-servers 114.114.114.114;
}
debian9中需要设置ipv4端口
vi /etc/default/isc-dhcp-server
INTERFACESv4="eth1"
vi /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="192.168.1.1:69" #更改为tftp的ip
TFTP_OPTIONS="--secure"
直接使用/etc/apt/sources.list覆盖/etc/fai/apt/sources.list文件
cat /etc/apt/sources.list > /etc/fai/apt/sources.list
修改/etc/fai/fai.conf文件如下内容
LOGUSER=fai
FAI_CONFIG_SRC=nfs://192.168.1.1/srv/fai/config #FAI配置文件的存放路径
修改/etc/fai/nfsroot.conf
# For a detailed description see nfsroot.conf(5)
# "<suite> <mirror>" for debootstrap
FAI_DEBOOTSTRAP="stretch http://mirrors.163.com/debian"
FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
NFSROOT=/srv/fai/debian9
TFTPROOT=/srv/tftp/fai
NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/
NFSROOT_ETC_HOSTS="192.168.1.1"
#FAI_DEBOOTSTRAP_OPTS="--exclude=wget"
FAI_DEBOOTSTRAP_OPTS="--arch amd64 --exclude=info --include=aptitude"
# Configuration space
FAI_CONFIGDIR=/srv/fai/config
fai-setup -v
#新版无需在复制
cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config
fai-chboot -IBv -u nfs://192.168.1.1/srv/fai/config default
修改default配置文件
vi /srv/tftp/fai/pxelinux.cfg/default
default 0
prompt 1
timeout 60
label 0
localboot 0
label debian8
kernel vmlinuz-3.2.0-4-amd64
append initrd=initrd.img-3.2.0-4-amd64 ip=dhcp LOGUSER=fai hostname=localhost root=/dev/nfs nfsroot=/srv/fai/nfsroot aufs FAI_FLAGS=verbose,sshd,reboot FAI_CONFIG_SRC=nfs://192.168.1.20/srv/fai/debian8 FAI_ACTION=install
通过修改/srv/fai/debian8/disk_config/FAIBASE文件指定客户端磁盘分区及指定启动标记
#bootable:1 #将第1个分区标记启动分区。
disk_config disk1 disklabel:msdos bootable:1
primary / 25G ext3rw,errors=remount-ro
primary swap 1Gswaprw
定义客户端需要安装的软件包
vi /srv/fai/debian8_conf/package_config/FAIBASE
PACKAGES aptitude DEBIAN
cron
debconf-utils
file
hdparm
less
linuxlogo
安装GNOME桌面环境可在文件中加入gdm和gnome-core
修改时区
sed -i "s/TIMEZONE=.*/TIMEZONE=Asia\/Shanghai/g" /srv/fai/debian7/class/FAIBASE.var
/etc/init.d/networking restart
/etc/init.d/isc-dhcp-server restart
/etc/init.d/tftpd-hpa restart
/etc/init.d/rpcbind restart
/etc/init.d/nfs-kernel-server restart
/etc/init.d/nfs-common restart
执行自定义脚本
/srv/fai/debian8_conf/scripts/LAST/50-misc
#脚本是在客户端完成所有安装完成后执行的内容,可以在其中加入一些脚本自定义内容。
#fcopy
#将FAI服务器/srv/fai/debian8/live/filesystem.dir/目录下对应目录的内容得到到客户端对应目录,下面是将/srv/fai/debian8/live/filesystem.dir/etc/apt/l*.deb文件复制到客户端/etc/apt目录中。
fcopy -i /etc/apt/l*.deb
#$ROOTCMD
#用于在客户端本地执行的内容。
$ROOTCMD echo "root:debian" | $ROOTCMD chpasswd
Calling task_confdir
Calling task_setup
Calling task_defclass
Calling task_defvar
Calling task_action
Calling task_install
Calling task_partition
Calling task_mountdisks
Calling task_extrbase
Calling task_debconf
Calling task_repository
Calling hook: updatebase.DEBIAN
Calling task_updatebase
Calling hook: instsoft.DEBIAN
Calling task_instsoft
Calling task_configure
Calling task_tests
Calling task_finish
Calling task_chboot
Calling task_savelog
部署kickstart,只需挂载nfsroot,其他环境无需再搭建,tftp目录保持一致,其他目录可以自定,只需修改/etc/exports
#挂载cdrom
mount /dev/sr0 /mnt
#复制到本地目录
cp -rf /mnt /srv/fai/centos7
#把启动文件拷贝到tftp目录下,并根据需求改文件名
cd /srv/fai/centos7/images/pxeboot/
cp initrd.img vmlinuz /srv/tftp/fai/
#把ks文件放入nfs目录
mkdir /srv/fai/centos7_config
cp ks.cfg /srv/fai/centos7_config/
#把2个目录加入nfs
vi /etc/exports
#更改default文件的initrd、vmlinuz、nfs//XX//srv/fai/centos7_config/ks.cfg
vi /srv/tftp/fai/pxelinux.cfg/default
label ct7u2_64
kernel vmlinuz-7u2
append console=ttyS0,9800 console=tty0 load_ramdisk=1 initrd=initrd.img-7u2 ks=nfs://192.168.1.3/s
rv/fai/centos7u2conf/ks.cfg devfs=nomount nofb nodmraid ksdevice=bootif biosdevname=0 net.ifnames=0
ipappend 2