CentOS7网络无人值守安装

环境准备

NO.TitleLink
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无人值守安装操作系统


本文结束
生产不易,搬运不易,如果对您有帮助,请打赏一下下。