在本文中,我们将带你了解PXE+Kickstart实现无人值守批量安装Linux在这篇文章中,我们将为您详细介绍PXE+Kickstart实现无人值守批量安装Linux的方方面面,并解答linux无人
在本文中,我们将带你了解PXE+Kickstart 实现无人值守批量安装 Linux在这篇文章中,我们将为您详细介绍PXE+Kickstart 实现无人值守批量安装 Linux的方方面面,并解答linux无人值守安装系统常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI、CentOS kickstart lvm、centos6.4 下 PXE+kickstart 网络安装操作系统、centos6.5 pxe kickstart 批量部署。
本文目录一览:- PXE+Kickstart 实现无人值守批量安装 Linux(linux无人值守安装系统)
- CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI
- CentOS kickstart lvm
- centos6.4 下 PXE+kickstart 网络安装操作系统
- centos6.5 pxe kickstart 批量部署
PXE+Kickstart 实现无人值守批量安装 Linux(linux无人值守安装系统)
PXE+Kickstart 实现无人值守批量安装 Linux
一、简介
1.1 什么是 PXE
PXE (Pre-boot Execution Environment,预启动执行环境) 是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配 IP 地址,再用 TFTP(trivial file transfer protocol)或 MTFTP (multicast trivial file transfer protocol) 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client 端和 Server 端,而 PXE Client 则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
PXE 的工作过程:
1. PXE Client 从自己的 PXE 网卡启动,向本网络中的 DHCP 服务器索取 IP;
2. DHCP 服务器返回分配给客户机的 IP 以及 PXE 文件的放置位置 (该文件一般是放在一台 TFTP 服务器上) ;
3. PXE Client 向本网络中的 TFTP 服务器索取 pxelinux.0 文件;
4. PXE Client 取得 pxelinux.0 文件后之执行该文件;
5. 根据 pxelinux.0 的执行结果,通过 TFTP 服务器加载内核和文件系统 ;
6. 进入安装画面,此时可以通过选择 HTTP、FTP、NFS 方式之一进行安装;
详细工作流程,请参考下面这幅图:
1.2 什么是 Kickstart
Kickstart 是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件。如果在安装过程中(不只局限于生成 Kickstart 安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart 生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果 Kickstart 文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后就去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
二、系统环境
实验环境:VMware Workstation 10
系统平台:CentOS release 6.4 (最小化安装)
网络模式:NAT 模式(共享主机的 IP 地址)
DHCP / TFTP IP:192.168.111.130
HTTP / FTP / NFS IP:192.168.111.130
防火墙已关闭 /iptables: Firewall is not running.
SELINUX=disabled
三、准备工作
生成 ks.cfg 文件需要 system-config-kickstart 工具,而此工具依赖于 X Windows,所以我们需要安装 X Windows 和 Desktop 并重启系统,操作如下:
# yum groupinstall "X Window System"
# yum groupinstall Desktop
# reboot
四、配置 HTTP 安装方式
系统的安装方式可以选择 HTTP、FTP、 NFS,我们这里介绍 HTTP 方式的安装,其他两种方式的安装,大家可以自行百度。
4.1 安装并配置 HTTP
# yum install httpd –y
# rpm -qa|grep httpd
开启服务并设置开机启动
# /etc/init.d/httpd start
# chkconfig --level 35 httpd on
4.2 加载 ISO 镜像
在虚拟机中设置加载 ISO 镜像。
将 iso 文件挂载至 /mnt/cdrom.
4.3 复制光盘全部内容至 http 的根目录 /var/www/html/ 下
# cp -r /mnt/cdrom/ /var/www/html/
HTTP 部分设置完毕。
五、配置 TFTP
5.1 安装 tftp-server
# yum install tftp-server –y
5.2 启用 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
per_source = 11
cps = 100 2
flags = IPv4
}

将 disable 设置为 no
5.3 启动 tftp 服务
因为 tftp 服务是挂载在超级进程 xinetd 下的,所以通过启动 xinetd 来启动 tftp 服务。
# /etc/init.d/xinetd restart
设置开机启动 xinetd
# chkconfig xinetd on
六、配置支持 PXE 的启动程序
6.1 复制 pxelinux.0 文件至 /var/lib/tftpboot/ 文件夹中
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
说明:syslinux 是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX 是一个小型的 Linux 操作系统,它的目的是简化首次安装 Linux 的时间,并建立修护或其它特殊用途的启动盘。
6.2 复制 iso 镜像中的 /image/pxeboot/initrd.img 和 vmlinux 至 /var/lib/tftpboot/ 文件夹中
# cp /var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
6.3 复制 iso 镜像中的 /isolinux/*.msg 至 /var/lib/tftpboot/ 文件夹中
# cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/
6.4 在 /var/lib/tftpboot/ 中新建一个 pxelinux.cfg 目录
# mkdir /var/lib/tftpboot/pxelinux.cfg
6.5 将 iso 镜像中的 /isolinux 目录中的 isolinux.cfg 复制到 pxelinux.cfg 目录中,同时更改文件名称为 default
# cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
6.6 修改 default 文件
# vi /var/lib/tftpboot/pxelinux.cfg/default

default ks #默认启动的是 ''label ks'' 中标记的启动内核
prompt 1 #显示 ''boot: '' 提示符。为 ''0'' 时则不提示,将会直接启动 ''default'' 参数中指定的内容。
timeout 6 #在用户输入之前的超时时间,单位为 1/10 秒。
display boot.msg #显示某个文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似 ''/install/boot.msg''这样的,路径+文件名。
F1 boot.msg #按下 ''F1'' 这样的键后显示的文件。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux #''label'' 指定你在 ''boot:'' 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动''label linux'' 下标记的kernel 和initrd.img 文件。
kernel vmlinuz #kernel 参数指定要启动的内核。
append initrd=initrd.img #append 指定追加给内核的参数,能够在grub 里使用的追加给内核的参数,在这里也都可以使用。
label text kernel vmlinuz append initrd=initrd.img text
label ks kernel vmlinuz append ks=http://192.168.111.130/ks.cfg initrd=initrd.img #告诉系统,从哪里获取ks.cfg文件
七、配置 DHCP
7.1 安装 DHCP 服务
# yum -y install dhcp
7.2 复制配置模板文件到 DHCP 的配置目录中
# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
7.3 修改 /etc/dhcp/dhcpd.conf 配置文件,内容如下:

ddns-update-style interim; ignore client-updates;
filename "pxelinux.0"; #pxelinux 启动文件位置;
next-server 192.168.111.130; #TFTP Server 的IP地址;
subnet 192.168.111.0 netmask 255.255.255.0
{ range dynamic-bootp 192.168.111.100 192.168.111.200;
default-lease-time 21600;
max-lease-time 43200; }

7.4 启动 DHCP 服务
# /etc/init.d/dhcpd start
八、生成 ks.cfg 文件
8.1 安装 Kickstart
# yum install system-config-kickstart
8.2 在桌面环境下配置 Kickstart
启动 X Windows 环境
# startx
配置 Kickstart
# system-config-kickstart
A. 设置语言,键盘,时区,Root 密码,安装完毕后重启等。
B. 设置安装方式,这篇文章介绍的是 HTTP 方式的安装,故选择 HTTP
C. 安装 MBR
D. 设置分区
E. 分区总览
F. 配置网络
G. 认证配置
H. SELinux 和防火墙配置
I. 图形环境配置
J. 软件包安装选择
K. 预览
L. 生成 ks.cfg 文件,保存在 /var/www/html/ 文件夹下
我们可以打开 /var/www/html/ks.cfg 文件进行查看并做修改。

platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url=http://192.168.111.130/cdrom/ #这个选项告诉安装程序:到服务器192.168.111.130 的HTTP根目录下的cdrom 文件夹下寻找安装介质 # Root password rootpw --iscrypted $1$vsvtP./e$6PVMNfJd.shq2LgFJjYfA1 # System authorization information auth --useshadow --enablemd5 # Use graphical install graphical firstboot --disable # System keyboard keyboard us # System language lang en_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 # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part / --fstype="ext4" --size=8192 part swap --fstype="swap" --size=1024 part /home --fstype="ext4" --size=2048 %packages @base %end

说明:key --skip 如果是红帽系统,此选项可以跳过输入序列号过程;如果是 CentOS 系列,则可以不保留此项内容;
reboot 此选项必须存在,也必须文中设定位置,不然 kickstart 显示一条消息,并等待用户按任意键后才重新引导;
clearpart --all --initlabel 此条命令必须添加,不然系统会让用户手动选择是否清除所有数据,这就需要人为干预了,从而导致自动化过程失败;
九、测试安装
自动化安装系统配置完毕,下面启动一台新的机器进行测试,网络连接模式选择 NAT 模式。
新建虚拟机,选择自定义(高级)
选择 “稍后安装操作系统”
选择客户机操作系统类型
命名虚拟机
设置此虚拟机的内存
设置网络类型
选择 I/O 控制器类型
选择磁盘类型
选择磁盘
指定磁盘大小,ks.cfg 文件中,我们定义了 / 大小为 8GB,swap 分区为 1GB,/home 分区为 2GB,所以这里的磁盘大小至少要为 12GB。
而且,一定要勾选上 “立即分配所有磁盘空间”,不然在后来安装的时候将提示没有磁盘空间。
指定磁盘文件
虚拟机总览
正在创建磁盘,过程会很慢,虚拟机需要产生一个 20GB 的文件。
启动虚拟机,选择从网卡启动,DHCP 服务器正在给客户机分配 IP 地址。
开始下载 vmlinuz 和 initrd.img
安装过程...
安装过程...
安装过程...
安装完毕,重启后,显示登录界面
登录系统查看,磁盘分区和我们在 ks.cfg 文件中设定的一样。
PXE+Kickstart 无人值守安装操作系统环境搭建完毕。
参考资料
- 抚琴煮酒:http://yuhongchun.blog.51cto.com/1604432/1100567
CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI
前言
一般情况下,新服务器上架。都需要系统管理员手工安装系统,配置 IP 地址,然后远程登陆服务器进行软件安装、配置之类的管理。这种方式,在服务器数量还不多的情况下,是正常的。试想,如果一次上架上百台服务器,再依次安装操作系统,将是一种灾难。很难在规定的时间内将服务器顺利上架并配置完毕。
这就需要在大型机房中,以 DHCP+DNS 模式管理服务器 IP 地址和主机名。服务器上架前,以其 MAC 地址为依据,在 DHCP 中配置主机保留并分配主机名。DHCP 结合 TFTP 提供的 PXE 服务,提供 PXE 引导 Linux 内核和启动镜像,通过自动应答文件来实现操作系统的自动安装和配置。就 Linux 来说,安装后启动 saltstack 客户端 salt-minion 服务即可实现新服务器的自动受控。其余的安装服务便可以通过 saltstack 来完成。自始至终,将不用通过 ssh 形式登陆新服务器,且可以实现软件包的自动化安装和配置管理。
理论描述
自动启动安装过程
服务器从第一次加电到连接到 salt-master 主机,受其集中管理,将经过以下一系列过程:
- 系统管理员在 DHCP 服务器中将其 MAC 地址绑定到特定 IP 地址和主机名,并指定 PXE 启动文件。
- 服务器加电启动,通过 PXE 获取 IP 地址并加载 PXEClient,以 TFTP 的形式获取 Linux 内核和初始化启动映像。
- 服务器加载自动应答脚本,通过网络获取软件包,来自动安装 Linux 系统。安装并开机启动 salt-minion 服务。
- 服务器安装完成并重新启动后,自动获取 IP 地址,连接 salt-master 请求受控。
- salt-master 控制新服务器后,以管理员配置模板自动安装软件包配置服务,管理新主机。
以上过程我们需要架设的服务有 DNS、DHCP、TFTP、HTTP/FTP 服务。其中,DHCP 和 DNS 提供地址和主机名分配,TFTP 提供 PXE 启动映像,HTTP/FTP 作为 Linux 软件仓库提供安装过程中需要的软件包。
DHCP Option 60
DHCP Option 60 Vendor class identifier 为厂商类标识符。这个选项作用于客户端可选地识别客户端厂商类型和配置。这个信息是 N 个 8 位编码,由 DHCP 服务端解析。厂商可能会为客户端选择定义特殊的厂商类标识符信息,以便表达特殊的配置或者其他关于客户端的信息。比如:这个标识符可能编码了客户端的硬件配置。客户端发送过来的服务器不能解析的类规范信息必须被忽略(尽管可能会有报告)。服务器响应厂商规范信息到客户端应该仅仅通过 Option 43 来完成。
此信息需要在 DHCP 服务器上定义,DHCP 服务器通过其判断客户端是不是 PXEClient。并通过其 Arch 代码来判断其平台,以此为依据提供不同的 PXE 引导程序给客户端。
PXE 和 gPXE
PXE:
(preboot execute environment,预启动执行环境) 是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS 把 PXEClient 调入内存中执行,然后由 PXEClient 向 DHCP 服务器请求分配 IP 地址,再用 TFTP 或 MTFTP 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
gPXE:
是一个开源的网络启动器。它提供了一个直接的 PXE 替代方案,并且提供 DNS、HTTP、iSCSI 等多种额外功能。另外,由于 gPXE 存在商业收购风险。其开发者又启动了一个名为 iPXE 的开源项目。作为 gPXE 的一个分支。iPXE 支持 HTTP、ISCSI、FCoE、Wi-Fi、InfiniBand 等多种启动方式。且支持通过脚本来控制启动过程。
BIOS 和 UEFI
BIOS:
(Basic Input/Output System 的缩写、中文:基本输入输出系统),在 IBM PC 兼容机上,是一种业界标准的固件接口。BIOS 这个字眼是在 1975 第一次由 CP/M 操作系统中出现。BIOS 是个人电脑启动时加载的第一个软件。
BIOS 用于计算机开机时执行系统各部分的的自检,并启动引导程序或装载在内存的操作系统。此外,BIOS 还向操作系统提供一些系统参数。系统硬件的变化是由 BIOS 隐藏,程序使用 BIOS 服务而不是直接访问硬件。现代操作系统会忽略 BIOS 提供的抽象层并直接访问硬件组件。
UEFI:
全称 “统一的可扩展固件接口”(Unified Extensible Firmware Interface),是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动操作环境,加载到一种操作系统上。
可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看作是有近 20 多年历史的 BIOS 的继任者。
另外,由于 UEFI 不支持 32 位,所以 UEFI 部分只讨论 x64 平台。由于没有实验环境,不支持安腾架构。
安装所需全部服务
yum install tftp tftp-server dhcp xinetd syslinux
dhcpd 配置文件
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option client-system-arch code 93 = unsigned integer 16;
allow booting;
allow bootp;
default-lease-time 6000;
max-lease-time 72000;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.50 10.1.1.70;
option routers 10.1.1.11;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.1.1.11;
if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
filename "BOOTX64.efi";
} else {
filename "pxelinux.0";
}
}
}
tftp 配置文件
sed -i ''/disable/s/yes/no/'' /etc/xinetd.d/tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
在 tftpboot 中创建需要的目录
- mkdir /var/lib/tftpboot/pxelinux.cfg/
- BIOS 引导所使用的 default 菜单文件目录
-
1 UI pxelinux.cfg/vesamenu.c32 2 prompt 1 3 timeout 60 4 5 display pxelinux.cfg/boot.msg 6 menu background pxelinux.cfg/splash.jpg 7 menu title Welcome to PXE+kickstart auto install systems 8 menu color border 0 #ffffffff #00000000 9 menu color sel 7 #ffffffff #ff000000 10 menu color title 0 #ffffffff #00000000 11 menu color tabmsg 0 #ffffffff #00000000 12 menu color unsel 0 #ffffffff #00000000 13 menu color hotsel 0 #ff000000 #ffffffff 14 menu color hotkey 7 #ffffffff #ff000000 15 menu color scrollbar 0 #ffffffff #00000000 16 17 18 label linux 19 menu label ^Install CentOS7.4 Minimal 20 menu default 21 kernel cores/CentOS/7.4/vmlinuz 22 append initrd=cores/CentOS/7.4/initrd.img ip=dhcp inst.repo=ftp://10.1.1.11/CentOS/7.4 inst.ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-7.x-min.cfg 23 24 label linux 25 menu label ^Install CentOS6.9 Minimal 26 kernel cores/CentOS/6.9/vmlinuz 27 append initrd=CentOS6/initrd.img ip=dhcp repo=ftp://10.1.1.11/CentOS/6.9 ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-6.x-min.cfg 28 29 label linux 30 menu label ^Install Windows10 31 kernel memdisk raw iso 32 append initrd=ftp://10.1.1.11/Windows/10/W10X32_CN_PE.iso 33 34 label local 35 menu label Boot from ^local drive 36 localboot 0xffff
- mkdir -p /var/lib/tftpboot/cores/{CentOS,Ubuntu,Windows}
- 各的系统的内核文件目录
- cd /var/lib/tftpboot/cores/
- mkdir CentOS/{6.9,7.4}
- mkdir Ubuntu/{16,17}
- mkdir Windows/{7,10}
这里只例举无人职守 CentOS 7 Minimaul
挂载镜像文件
mount /dev/cdrom /mnt
复制内核文件
cp -rf /mnt/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/cores/CentOS/7.4
BIOS
复制需要的文件到 /var/lib/tftpboot/ 目录下
cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32,memdisk,gpxelinux.0} /var/lib/tftpboot/
- pxelinux.0 即为 PXE 启动引导程序,
- gpxelinux 为 gPXE 引导程序
- 通过它可以使用快速的 HTTP 协议,而非较慢的 TFTP 协议来下载 Linux 镜像,以加速安装。不过有些硬件对 gPXE 支持不好。例如,IBM X3650 M4。
- memdisk 用来引导 ISO 文件
- vasamenu.c32 用来在绘制 PXE 菜单
UEFI
复制 Centos6 中的 BOOTX64.efi 、BOOTX64.conf 、splash.xpm.gz , conf 文件改名为 efidefault 也就是 UEFI 的引导菜单
(Centos7 中用是 grub2 的方式)
- BOOTX64.efi
- efidefault
-
default=0 splashimage=(nd)/splash.xpm.gz timeout 10 hiddenmenu title CentOS 7.4 UEFI root (nd) kernel /cores/CentOS/7.4/vmlinuz ip=dhcp ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-7.x-min_UEFI.cfg repo=ftp://10.1.1.11/CentOS/7.4 initrd /cores/CentOS/7.4/initrd.img title CentOS 6.9 UEFI root (nd) kernel /cores/CentOS/6.9/vmlinuz ip=dhcp ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-6.x-min_UEFI.cfg repo=ftp://10.1.1.11/CentOS/6.9 initrd /cores/CentOS/6.9/initrd.img title Install system with basic video driver kernel /images/pxeboot/vmlinuz nomodeset askmethod initrd /images/pxeboot/initrd.img title rescue kernel /images/pxeboot/vmlinuz rescue askmethod initrd /images/pxeboot/initrd.img
-
- splash.xpm.gz
vsftp
创建需要的系统目录
- mkdir -p /var/ftp/{CentOS,Ubuntu,Windows,cfgs}
- cd /var/ftp
- mkdir CentOS/{6.9,7.4}
- mkdir Ubuntu/{16,17}
- mkdir Windows/{7,10}
复制完整的镜像文件
cp -rf /mnt/* /var/tfp/CentOS/7.4
二级目录结构
tree /var/ftp
.
├── CentOS
│ ├── 6.9
│ └── 7.4
├── kickstart.cfgs
├── Ubuntu
│ ├── 16
│ └── 17
└── Windows
├── 10
└── 7
Kickstart


1 install
2 url --url=ftp://10.1.1.104/CentOS/7.4
3 text
4 lang en_US.UTF-8
5 keyboard us
6 zerombr
7 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder=sda
8 network --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS7
9 timezone --utc Asia/Shanghai
10 authconfig --enableshadow --passalgo=sha512
11 rootpw --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ0
12 clearpart --all --initlabel
13 part /boot --fstype xfs --size 1024
14 part swap --size 1024
15 part / --fstype xfs --size 8192
16 part /home --fstype xfs --size 1 --grow
17 services --enabled="chronyd"
18 firstboot --disable
19 selinux --disabled
20 firewall --disabled
21 logging --level=info
22 reboot
23
24 %packages
25 @^minimal
26 @core
27 chrony
28 kexec-tools
29
30 %end


1 install
2 url --url=ftp://10.1.1.11/CentOS/7.4
3 text
4 keyboard us
5 lang en_US.UTF-8
6 bootloader --location=mbr
7 zerombr
8 clearpart --all --initlabel
9 part /boot/efi --fstype efi --size 200 --asprimary --ondisk sda
10 part /boot --fstype xfs --size 500 --ondisk sda
11 part swap --size 1024 --ondisk sda
12 part / --fstype xfs --size 8192 --ondisk sda
13 part /home --fstype xfs --size 1 --grow --ondisk sda
14 network --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS7
15 timezone --utc Asia/Shanghai
16 authconfig --enableshadow --passalgo=sha512
17 rootpw --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ0
18 logging --level=info
19
20 %pre
21 parted -s /dev/sda mklabel gpt
22 %end
23
24 %packages
25 @^minimal
26 @core
27 chrony
28 kexec-tools
29 %end
30
31 reboot
因详细的 kickstart 配置文件参数过多,这里不一一表明。
tftp 结构目录
tree /var/lib/tftpboot
.
├── BOOTX64.efi
├── cores
│ ├── CentOS
│ │ ├── 6.9
│ │ │ ├── initrd.img
│ │ │ └── vmlinuz
│ │ └── 7.4
│ │ ├── initrd.img
│ │ └── vmlinuz
│ ├── Ubuntu
│ │ ├── 16
│ │ └── 17
│ └── Windows
│ ├── 10
│ └── 7
├── efidefault
├── gpxelinux.0
├── memdisk
├── pxelinux.0
├── pxelinux.cfg
│ ├── boot.msg
│ ├── default
│ ├── splash.jpg
│ └── vesamenu.c32
└── splash.xpm.gz
启动服务
- systemctl start dhcpd
- systemctl start tftp
- systemctl start xinetd
- systemctl start vsftpd
加入开机自启动
- systemctl enable dhcpd
- systemctl enable tftp
- systemctl enable xinetd
- systemctl enable vsftpd
经过测试 CentOS7 PXE 无人职守安装并无问题,BIOS 和 UEFI 均可。
CentOS kickstart lvm
install url --url=$tree text lang en_US.UTF-8 keyboard us timezone --utc Asia/Shanghai zerombr bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" network --hostname=Cobbler-client.localdomain authconfig --enableshadow --passalgo=sha512 rootpw 123456 clearpart --all --initlabel part /boot --fstype="xfs" --size=200 part swap --fstype=swap --size=2000 part pv.01 --size=10000 --grow --ondisk=sda volgroup vg00 pv.01 logvol / --vgname=vg00 --fstype="xfs" --size=1 --grow --name=lv_root firstboot --disable selinux --disabled firewall --disabled logging --level=info reboot %packages @^minimal @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet net-tools wget vim bash-completion %end %post systemctl disable postfix.service %end
http://landoflinux.com/linux_kickstart_partition.html
centos6.4 下 PXE+kickstart 网络安装操作系统
20150610
centos6.4 下 PXE+kickstart 网络安装操作系统
参考 http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html
基本全部是参照该博客来的
我的基础环境服务器是 centos7 客户端是一台联想一体机,支持 NetWork PXE 启动(试了公司其他 2 种型号电脑都不可以)
主要遇到问题:
1、基本问题:ip 设置问题;centos7 路由重启失效,已通过 baidu 解决 ;
时区设置 cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime ;
查看时区:timedatectl 时区正确,不同步, 无奈 ntpdate ntp.api.bz
centos7 上面的防火墙重启无效,而且服务模式不一样(待确定)
2、安装 nginx 用 rpm 已经装好的 pcre(重写模块),提示 openssl not used,在编译需要时指定
sed -i ''/CFLAGS="$CFLAGS -g"/s/^/#/'' auto/cc/gcc
关闭 selinux echo "/usr/sbin/setenforce 0" >>/etc/rc.local
安装完成无法访问 80,iptabls 关不掉,之后在 iptables 规则中开放 80 端口,重启 iptables
3、网站找 centos6.4 镜像文件并下载(一上午到 1 点多),centos 下挂载 iso 文件 ,并拷贝到 nginx 目录下面
mount -o loop -t iso9660 /usr/local/src/CentOS-6.4-x86_64-bin-DVD1.iso /mnt/
4、有些系统没有 /usr/shar/syslinux/pxelinux.0 文件 (暂时不清楚为啥),还有镜像里面没有支持 PXE 的启动文件(估计是包不全), 比如我自己笔记本还有公司内外服务器;把之前装的 centos7 用来做服务端
5、配了 dhcp,子网分配没用上,因为局域网内有台路由器,客户端从那里获取了,dhcp 还是要的
6、就是配置 centos xbrows 图形界面了,
vim /etc/gdm/custom.conf 添加如下内容
[security]
AllowRemoteRoot=true
[xdmcp]
Port=177
Enable=1
查看 177
netstat -an|grep 177
在 xshell 终端下执行 system-config-kickstart,调出图像界面
7、用 kickstart 生成 ks.cfg 文件时,倒数第 3 部,选择安装包时,没包可用,折腾哇,网上说要配置本地源,/data/www 下面是挂载 cp 的镜像文件,server 是包目录
[ base ]
name=base
baseurl=file:///data/www/Server
enabled=1
gpgcheck=0
,重复并重启还是不行,网友说是包这块建议手动填写,网上搜了下,全部手写好乱,就试着启动图形界面到包部分保存为 ks.cfg, 并安装博客修改,主要添加如下 2 个参数,还有个 url 地址,自己的地址
%packages
@base
8、检查完毕,找电脑测试,第一次随便拿了台一体机测试,启动 ok,由于数据未确定,所以终止安装,又找了 2 种电脑试试了,主板 boot 启动有 network 选项,但没有 PXE 提示,无法安装,所以用另一台搁置比较久的一体机测试安装,ok,速度还可以,毕竟只是基础安装
centos6.5 pxe kickstart 批量部署
使用本地光盘安装 PXE kickstart (自动化无人值守批量安装服务器)
好久没搞这个东西了,最近马上又要用得到,复习一下
完整的步骤记在这里,说明以后再加上
环境 Centos 6.5 ESXI 虚拟机
服务器端 安装dhcp tftp-server nfs 挂载光盘
yum install dhcp -y
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
修改vim /etc/init.d/dhcpd
vim/etc/dhcp/dhcpd.conf #dhcpd.conf #SampleconfigurationfileforISCdhcpd #optiondeFinitionscommontoallsupportednetworks... #Usethistoenble/disabledynamicdnsupdatesglobally. #ddns-update-stylenone; #IfthisDHcpserveristheofficialDHcpserverforthelocal #network,theauthoritativedirectiveshouldbeuncommented. #authoritative; #Usethistosenddhcplogmessagestoadifferentlogfile(youalso #havetohacksyslog.conftocompletetheredirection). log-facilitylocal7; #Aslightlydifferentconfigurationforaninternalsubnet. subnet192.167.1.0netmask255.255.255.0{ range192.167.1.122192.167.1.129; optiondomain-name-servers202.106.0.20,192.167.1.104; #optiondomain-name"internal.example.org"; optionrouters192.167.1.1; #optionbroadcast-address10.5.5.31; default-lease-time600; max-lease-time7200; next-server192.167.1.121; filename"pxelinux.0"; }
报错 &解决办法
=====================================================
yum install tftp-server -y
vim /etc/xinetd.d/tftp
yum install syslinux -y
[root@ccda yum.repos.d]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@ccda yum.repos.d]# cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@ccda yum.repos.d]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@ccda yum.repos.d]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@ccda yum.repos.d]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
[root@ccda yum.repos.d]# vim /var/lib/tftpboot/pxelinux.cfg/default
修改vim /var/lib/tftpboot/pxelinux.cfg/default
defaultlinux #prompt1 timeout600 displayboot.msg menutitleWelcometoCentOS6.5! labellinux menulabel^Installorupgradeanexistingsystem menudefault kernelvmlinuz appendinitrd=initrd.imgks=nfs:192.167.1.121:/ks/ks.cfg labelrescue menulabel^Rescueinstalledsystem kernelvmlinuz appendinitrd=initrd.imgrescue
[root@ccda yum.repos.d]# service xinetd restart
[root@ccda yum.repos.d]# service iptables stop
[root@ccda yum.repos.d]# yum install system-config-kickstart -y
[root@ccda yum.repos.d]# mkdir /ks
[root@ccda ~]# service nfs start
[root@ccda ~]# chkconfig nfs on
[root@ccda ~]# umount /dev/cdrom
[root@ccda ~]# mount /dev/cdrom /media/
选择--> 保存文件到 /ks 目录 名称为ks.cfg
至此kickstart 安装完毕,如果需要减轻服务器压力 可将NFS单独装一台机器分离出去
=====================================================
我生成的ks文件
vim /ks/ks.cfg
#platform=x86,AMD64,或IntelEM64T #version=DEVEL #Firewallconfiguration firewall--enabled--http--ssh #InstallOSinsteadofupgrade install #UseNFSinstallationmedia nfs--server=192.167.1.121--dir=/media #Rootpassword rootpw--iscrypted$1$ZmGYyI0Q$MdJasSrD999guxiZq62mM. #Systemauthorizationinformation auth--useshadow--passalgo=sha512 #Usegraphicalinstall graphical firstboot--disable #Systemkeyboard keyboardus #Systemlanguage langen_US #SELinuxconfiguration selinux--enforcing #Installationlogginglevel logging--level=info #Rebootafterinstallation reboot #Systemtimezone timezoneAsia/Shanghai #networkinformation network--bootproto=dhcp--device=eth0--onboot=on #Systembootloaderconfiguration bootloader--location=mbr #CleartheMasterBootRecord zerombr #Partitionclearinginformation clearpart--all--initlabel #diskpartitioninginformation part/home--fstype="ext4"--size=10240 part/--fstype="ext4"--grow--size=80000 %post /sbin/chkconfig--level2345sshdon mkdir-p/etc/yum.repos.d/bak mv/etc/yum.repos.d/*.repo/etc/yum.repos.d/bak cat<<EOF>>/etc/yum.repos.d/work.repo [centos_6] name=sitvs baseurl=http://192.167.1.121/media #baseurl=http://10.10.6.52/yumdown/ enabled=1 gpgcheck=0 EOF FILE=/opt/ifcfg-eth0 IPADDR=`ifconfigeth0|grep"inetaddr"|awk'{print$2}'|awk-F:'{print$2}'` MAC=`grepHWADDR/etc/sysconfig/network-scripts/ifcfg-eth0` DEVICE=`grepDEVICE/etc/sysconfig/network-scripts/ifcfg-eth0` TYPE=`grepTYPE/etc/sysconfig/network-scripts/ifcfg-eth0` NETMASK=`ifconfigeth0|grep"inetaddr"|awk'{print$4}'|awk-F:'{print$2}'` # # echo"${DEVICE}">>${FILE} echo"BOOTPROTO=\"static\"">>${FILE} echo"${MAC}">>${FILE} echo"NM_CONTROLLED=\"yes\"">>${FILE} echo"ONBOOT=\"yes\"">>${FILE} echo"${TYPE}">>${FILE} echo"IPADDR=\"192.167.1.130\"">>${FILE} echo"NETMASK=\"${NETMASK}\"">>${FILE} echo"GATEWAY=\"192.167.1.254\"">>${FILE} echo"DNS1=\"192.167.1.104\"">>${FILE} echo"DNS2=\"202.106.0.20\"">>${FILE} # cat${FILE}>/etc/sysconfig/network-scripts/ifcfg-eth0 # /etc/init.d/networkrestart %end %packages @base @chinese-support @scalable-file-systems %end
说明
%post/sbin/chkconfig --level 2345 sshd on
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat <<EOF>> /etc/yum.repos.d/work.repo[centos_6]
name=sitvs
baseurl=http://192.167.1.121/media
#baseurl=http://10.10.6.52/yumdown/
enabled=1
gpgcheck=0
EOF
FILE=/opt/ifcfg-eth0
IPADDR=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'`
MAC=`grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth0`
DEVICE=`grep DEVICE /etc/sysconfig/network-scripts/ifcfg-eth0`
TYPE=`grep TYPE /etc/sysconfig/network-scripts/ifcfg-eth0`
NETMASK=`ifconfig eth0 | grep "inet addr" | awk '{ print $4}' | awk -F: '{print $2}'`
#
#
echo "${DEVICE}" >> ${FILE}
echo "BOOTPROTO=\"static\"" >> ${FILE}
echo "${MAC}" >> ${FILE}
echo "NM_CONTROLLED=\"yes\"" >> ${FILE}
echo "ONBOOT=\"yes\"" >> ${FILE}
echo "${TYPE}" >> ${FILE}
echo "IPADDR=\"192.167.1.130\"" >> ${FILE}
echo "NETMASK=\"${NETMASK}\"" >> ${FILE}
echo "GATEWAY=\"192.167.1.254\"" >> ${FILE}
echo "DNS1=\"192.167.1.104\"" >> ${FILE}
echo "DNS2=\"202.106.0.20\"" >> ${FILE}
#
cat ${FILE} > /etc/sysconfig/network-scripts/ifcfg-eth0
#
/etc/init.d/network restart
%end
====
%post---->%end 此处是安装完成执行的脚本 (要直接把脚本写在这里,不要先编辑脚本再用sh 命令执行脚本) 红色部分是配置yum源 蓝色部分是截取自动获取的IP写到网卡配置文件里,即把服务器改成固定IP (可以加上ntpdate命令同步时间)
备注:如果不确定需要安装的软件包 可以查看你其他机器上的 /root/anaconda-ks.cfg 文件中末尾@打头的报名复制到ks文件 @packages--->@end 之间
===============
至此客户端就可以开机自动安装系统了(保证客户机可以获取到dhcp地址)
一直在学习。。。。
关于PXE+Kickstart 实现无人值守批量安装 Linux和linux无人值守安装系统的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI、CentOS kickstart lvm、centos6.4 下 PXE+kickstart 网络安装操作系统、centos6.5 pxe kickstart 批量部署等相关知识的信息别忘了在本站进行查找喔。
本文标签: