virtualbox采用vsftpd+tftp+dhcp+kickstart
一、系统环境
IP 地址: 192.168.210.2
操作系统: Centos 6.7.i386
主 机 名: kickstart
二、安装和配置所需服务的程序:
1、[root@kickstart ~]# mount /dev/cdrom /var/ftp/pub #挂载系统光盘;
[root@kickstart ~]# vim /etc/yum.repos.d/CentOS-Base.repo #系统原有的yum源全部注释了即可,sed -i 's/^/#/g' CentOS-Base.repo后再添加本地安装包参数配置: [base]
name=CentOS-$releasever - Base #仓库名称;
baseurl=file:///var/ftp/pub #修改光盘挂载点;
enable=1
gpgcheck=1 #是否检查GPG,一种秘钥方式签名;
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #GPG公钥存放位置;
[root@kickstall ~]# yum -y clean all #清除yum缓存;
2、将光盘内容挂载去/var/ftp/pub下
mkdir /var/ftp/pub #存放挂载的光盘内容,不用更改/var/ftp的权限,不然导致anonymous获取不了资源
mount /dev/cdrom1 /var/ftp/pub/
3. 安装PXE所需服务;
dhcp: 分配给客户端提供的IP地址;
tftp-server: tftp服务器端, 提供系统安装所需文件;
xinetd: tftp服务超级守护进程, 用于唤醒tftp服务;
vsftpd: 基于ftp服务提供安装源;
syslinux: 提供pxelinux.0文件, 此文件用于引导系统, 相当于bootloader;
[root@kickstart ~]# yum -y install dhcp tftp-server xinetd syslinux vsftpd ftp
4、配置dhcp服务和tftp服务;
dhcp服务的配置文件默认是/etc/dhcp/dhcpd.conf, 但此文件默认是没任何配置的, 此服务提供了一个参考文件/usr/share/doc/dhcp*/dhcpd.conf.sample,复制此文件覆盖原配置文件, 直接修改即可。
[root@PXE ~]# vim /etc/dhcp/dhcpd.conf #dhcp服务配置
====================================================
subnet 192.168.210.0 netmask 255.255.255.0 { #提供dhcp服务的网段;
range 192.168.210.3 192.168.210.5; #地址池;
#option domain-name "internal.example.org"; #分配dns域,由于只是虚拟机上的搭建,注释吧
option routers 192.168.210.1; #网关;
next-server 192.168.210.2; #tftp服务器地址;
filename "pxelinux.0"; #PXE引导文件;
default-lease-time 600; #默认租约时长;
max-lease-time 7200; #最大租约时长;
option domain-name-servers 192.168.210.1; #分配dns地址,一般是写真实dns地址,家中的路由器开启了自动获取,所以virtualbox使用了host-only的网络;
}
将/etc/xinetd.d/tftp里disable的值原为yes改成 no
====================================================
[root@kickstart ~]# service dhcpd configtest #测试配置dhcp语法是否有误;
Syntax: OK
[root@kickstart ~]# service dhcpd start #启动dhcp服务;
Starting dhcpd: [ OK ]
[root@kickstart ~]# chkconfig dhcpd on #将dhcp服务设置开启自启;
[root@kickstart ~]# service vsftpd configtest #测试配置dhcp语法是否有误;
Syntax: OK
[root@kickstart ~]# service vsftpd start #启动dhcp服务;
Starting dhcpd: [ OK ]
[root@kickstart ~]# chkconfig vsftpd on #将dhcp服务设置开启自启;
[root@kickstart ~]# service xinetd configtest #测试配置xinetd语法是否有误;
Syntax: OK
[root@kickstart ~]# service xinetd start #启动xinetd服务;
Starting dhcpd: [ OK ]
[root@kickstart ~]# chkconfig xinetd on #将xinetd服务设置开启自启;
5、复制kickstart所需文件:
[root@kickstart ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@kickstart ~]# cp /var/ftp/pub/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@kickstart ~]# cp /var/ftp/pub/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
[root@kickstart ~]# cp /var/ftp/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@kickstart ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@kickstart ~]# ls /var/lib/tftpboot/
boot.msg pxelinux.0 splash.jpg vmlinuz
initrd.img pxelinux.cfg vesamenu.c32
提供kickstart文件
kickstart文件可以自己创建(需安装system-config-kickstart.noarch工具,,由于要安装太多依赖包,我不采取这一步), 复制系统文件直接修改(此文件/root/anaconda-ks.cfg)。
[root@kickstart ~]# cp anaconda-ks.cfg /var/ftp/kickstart/ks.cfg
[root@kickstart ~]# vim /var/ftp/kickstart/ks.cfg
================重新修改如下===================
# Kickstart file automatically generated by anaconda.
#version=DEVEL
#Firewall configuration
firewall --disabled
# Install OS insread of Upgrade
install
# Use network installation
url --url=ftp://192.168.210.2/pub
#repo --name="Centos" --baseurl=ftp://192.168.210.2/pub --cost=100
# Root password
rootpw 123456
# System keyboard
keyboard us
# System language
lang zh_CN.UTF-8
# Network information
network --onboot yes --device eth0 --bootproto dhcp --noipv6
#authconfig --enable shadow --passalgo=sha512
# System keyboard
keyboard us
#SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
key --skip
bootloader --append="rhgb quiet" --location=mbr --driveorder=sda
#bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# Clear the Master Boot Record
zerombr #这个是自动选择最小化安装的提示初始化硬盘这一步,很关键的设置,不然会卡在初始化硬盘的界面
# Partition clearing information
#clearpart --drives=sda,sdb,sdc,sdd --initlabel
clearpart --initlabel --all --drives=sda #这个是自动选择最小化安装的提示初始化硬盘这一步,很关键的设置,不然会卡在初始化硬盘的界面
# Disk partitioning information
part /boot --fstype="ext4" --size=500 --ondrive=sda
part / --fstype="ext4" --size=13000 --ondrive=sda
part swap --size=1024 --ondrive=sda
part /home --fstype="ext4" --size=6000 --ondrive=sda
#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=10000 --maxsize=10000
#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1152 --maxsize=1152
#part / --fstype="ext4" --grow --size=1
#part swap --size=1024
#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1
#repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages --nobase
@core
@chinese-support
reboot
%end
====================================================
为了启动时能够加载kickstart文件, 还需要修改/var/lib/tftpboot/pxelinux.cfg/default文件, 添加ks文件的位置。
[root@PXE ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
====================================================
default linux #加载下面第一个linux的lable配置
#prompt 1
timeout 50 #原来是600秒,要是等待开始安装需要几分钟时间
display boot.msg
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 or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.210.2/kickstart/ks.cfg ##指定ks文件;
还有下面几个label用不上,所以省略掉
kickstart主服务器和需要新装的机器,以virtualbox为例,是家里的网络:
主需要将光驱挂载,网络设置和新机器的一样
这样的启动设置,是因为避免完成安装又再进入pxe来自动安装
[root@kickstart ~]# tail /var/log/messages
Feb 21 13:55:49 kickstart dhcpd: DHCPDISCOVER from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:50 kickstart dhcpd: DHCPOFFER on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:50 kickstart dhcpd: DHCPREQUEST for 192.168.210.4 (192.168.210.2) from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:50 kickstart dhcpd: DHCPACK on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPDISCOVER from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPOFFER on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPREQUEST for 192.168.210.4 (192.168.210.2) from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPACK on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 14:00:53 kickstart dhcpd: DHCPREQUEST for 192.168.210.4 from 08:00:27:ce:d1:f6 via eth0
Feb 21 14:00:53 kickstart dhcpd: DHCPACK on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
等待安装结束即可