环境准备
NO. | Title | Link |
---|---|---|
1、 | CentOS系统 | CentOS7系统安装 |
2、 | VsFTP系统 | CentOS7下使用vsftpd搭建FTP服务器 |
3、 | Kickstart软件配置 | Red Hat Enterprise Linux 7 Installation Guide |
4、 | CentOS安装镜像 | CentOS7.4安装镜像-阿里云 |
5、 | TigerVNC | 各系统,各版本的TigerVNC |
软件安装
本文通过YUM
方式安装各应用软件。
yum install -y epel-release #安装扩展源
yum install -y nginx #安装nginx(如果采用http方式提供安装源)
yum install -y vsftpd #安装FTP(如果采用FTP方式提供安装源,二者任选)
yum install -y tftp tfpt-server #安装TFTP(无论以上哪种方式,这个是**必需**的。
yum install -y xinetd
yum install -y syslinux #安装Linux引导系统(必须,用于客户机引导启动)
yum install -y dhcp #安装DHCP,无人值守下,必须。用于给客户机自动分配IP
yum install -y system-config-kickstart # 安装kickstart (可选,这个需要图形界面支持)
yum groupinstall -y "X Window System" "GNOME Desktop" #安装桌面环境(主要用来配合kickstart,可选)
#安装VNC远程环境(用于桌面环境连接,因为我的环境是搭建在远程服务器上,故此安装此服务)
yum install -y tigervnc tigervnc-server
软件配置
挂载安装镜像
1、首先把安装光盘内的所有文件放置一个所有用户可访问目录,我这里放置到了/var/ftp/pub/(VsFTP的默认目录)下面。
既可以直接挂载到这个目录下,也可把光盘下所有文件复制到这里。
mkdir -p /var/ftp/pub/dvd #创建安装镜像挂载目录
mount /dev/sr0 /var/ftp/pub/dvd #挂载光盘镜像到指定目录,/dev/sr0 是我这里的虚拟机的光盘镜像。
配置Nginx
1、Nginx 基本不用修改,只把网站目录
指向光盘挂载目录
,然后打开目录浏览
权限。
vi /etc/nginx/nginx.conf
# 在默认配置文件中找到 server,修改root
#root /usr/share/nginx/html; #更改为
root /var/ftp/pub/dvd/ #42行
# 在location / {} 项,在中间添加一句 `autoindex on;`
location / { #47行
autoindex on; # 在没有网站主页的情况下,显示网站目录,这里显示的是光盘的目录。
}
FTP和HTTP二选一,哪个配置好了都能用。
2、启动Nginx
systemctl start nginx # 启动nginx
systemctl enable nginx # 添加到自启动
配置VsFTPd
1、因为已经把安装文件挂载到FTP默认目录下了,VsFTP完全不用修改,直接使用默认设置就可以了,这个时候就可以使用匿名账号登录了。
2、启动vsftpd
systemctl start vsftpd
systemctl enable vsftpd
FTP和HTTP二选一,哪个配置好了都能用。
配置TFTP服务
TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。
我们这里用TFTP
传输Linux的无人值守安装配置文件
,和Linux启动必须的启动文件syslinux
1、修改TFTP的配置文件。主要是在配置文件中打开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 /var/lib/tftpboot #这里是目录,可以修改,也可以不改。
disable = no # 这里原为yes,改为no,即不关闭。
per_source = 11
cps = 100 2
flags = IPv4
}
2、启动TFTP,老版本需要启动 xinetd 这个守护程序,新版本直接启动TFTP就行了。
systemctl start tftpd
systemctl enable tftpd
配置PXE启动文件
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。
1、把我们刚才安装 syslinux
里面的文件复制到TFTP目录下,用于引导客户端启动
# 创建pxelinux.cfg启动菜单文件夹
mkdir -p /var/lib/tftpboot/pxelinux.cfg
# 把pxelinux复制到TFTP的根目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 安装光盘中的isolinux.cfg配置文件复制到启动菜单文件下,并命名为defautl,以便默认安装菜单。
cp /var/ftp/pub/dvd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 把安装光盘中isolinux文件中的所有文件复制到TFTP根目录。
cp -a /var/ftp/pub/dvd/isolinux/* /var/lib/tftpboot/
cp /var/ftp/pub/dvd/images/pxeboot/* /var/lib/tftpboot
cp -a /usr/share/syslinux/{menu.c32,vesamenu.c32} /var/lib/tftpboot
#修改文件权限
chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
修改/var/lib/tftpboot/pxelinux.cfg/default
文件 的61-71行,如下(这里是系统安装的默认选择菜单):
vi /var/lib/tftpboot/pxelinux.cfg/default
label linux
menu label ^Install CentOS 7
menu default
kernel vmlinuz
# 这一行是系统安装源。
append initrd=initrd.img repo=http://172.17.0.238/dvd ks=http://172.17.0.238/ks.cfg
label check
menu label Test this ^media & install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
配置DHCP服务
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
1、这里我们给客户端分配IP并配置使其网络启动后下载指定文件(指向下一跳主机)。
subnet 172.17.1.0 netmask 255.255.255.0 { # 配置给客户端分配的IP段
range 172.17.1.35 172.17.1.45; # 指定IP地址池
option domain-name-servers 172.17.1.12; # 指定DNS服务器
option routers 172.17.1.12; # 指定网关(路由出口)
default-lease-time 600; # 给客户机分配IP的默认时长
max-lease-time 7200; # 给客户机分配IP的最大时长
next-server 172.17.1.12; # 网络的下一跳路由(这里指向,我们的服务器)
filename "pxelinux.0"; # 在下一跳路由要访问的文件,这里是pxelinux的启动菜单文件
}
2、启动DHCP服务
systemctl start dhcpd
systemctl enable dhcpd
使用kickstart配置安装选项(可选)
1、图形配置,请参考下方文章引用
2、最终生成的文件
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade(安装或升级)
install
# Keyboard layouts(键盘方案)
keyboard 'us'
# Root password(用户密码)
rootpw --iscrypted $1$1oNf8Vo9$evw1Q2hY2qLIDQaeemys31
# Use network installation(采用网络安装及安装路径)
url --url="http://172.17.0.238/dvd"
# System language(安装语言)
lang en_US
# Firewall configuration(防火墙配置)
firewall --disabled
# System authorization information(用户密码加密方式)
auth --useshadow --passalgo=sha512
# Use text mode install(安装模式,图形或文本)
text
# SELinux configuration(selinux 配置)
selinux --disabled
# Do not configure the X Window System(是否安装图形界面)
skipx
# Reboot after installation(安装完成后执行重启)
reboot
# System timezone(时区)
timezone Asia/Shanghai
# System bootloader configuration(引导分区及方式)
bootloader --location=mbr
# Clear the Master Boot Record(清除原有引导分区)
zerombr
# Partition clearing information(清除分区)
clearpart --all --initlabel
# Disk partitioning information(重新分区,lvm方式,200G硬盘)
part pv.154 --fstype="lvmpv" --ondisk=sda --size=204239
part /boot --fstype="xfs" --ondisk=sda --size=500
volgroup centos --pesize=4096 pv.154
logvol / --fstype="xfs" --size=144964 --name=root --vgname=centos
logvol swap --fstype="swap" --size=8064 --name=swap --vgname=centos
logvol /home --fstype="xfs" --size=51200 --name=home --vgname=centos
##安装完成后执行,这里添加了一个修改IP的脚本。
%post
#!/bin/bash
cat >>/root/n<<bof
#!/bin/sh
################
##获取网卡名称##
################
## 获取当前系统网卡ID号,生成相应路径并备份原有配置。
iphard=\$(ip a | grep en |grep -v lo |awk -F ": " '{print \$2}')
echo \$iphard
ippath=/etc/sysconfig/network-scripts/ifcfg-\$iphard
echo \$ippath
\cp -a \$ippath \$ippath.bak
# 等待输入新的IP最后一段,并生成网卡配置文件
read -t 30 -p "Please input IP " -n 15 ipaddr
echo -e "\n"
echo \$ipaddr
cat > \$ippath << EOF
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=\$iphard
DEVICE=\$iphard
ONBOOT=yes
IPADDR=172.17.0.\$ipaddr
NETMASK=255.255.255.0
GATEWAY=172.17.0.254
DNS1=202.106.0.20
DNS2=202.106.196.115
EOF
# 显示生成的网卡配置文件,并最终确认。
cat \$ippath
read -t 60 -p "Please check the IP, and input y or n " istrue
case \$istrue in
[yY][eE][sS]|[yY])
echo "Your selected is yes"
cat /etc/sysconfig/network-scripts/ifcfg-\$iphard
systemctl restart network
#service network restart
rm -rf ~/n
ls
;;
[nN][oO]|[nN])
echo "Your selected is no"
;;
*)
echo "Your slected is other"
;;
esac
bof
# 修改新生成的文件可执行权限
chmod +x /root/n
%end
# 需要安装的软件,这里选择了mini安装。
%packages
@^minimal
%end
新建虚拟机测试
关闭firewall selinux,重启一下。
systemctl stop firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
最好重启一下所有服务。
systemctl restart httpd xinetd dhcpd
新建个虚拟机,测试一下,安装正常。
文章引用
http://www.linuxidc.com/Linux/2015-11/125040.htm PXE+Kickstart实现无人值守批量安装Linux
http://blog.csdn.net/taiyang1987912/article/details/42176709 kickstart配置文件详解和system-config-kickstart
https://www.cnblogs.com/ssooking/p/6501782.html CentOS 7下PXE+Kickstart无人值守安装操作系统
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin