default文件、centos_menu、ks.cfg 文件

本文详细介绍了PXE网络安装的配置过程,包括pxelinux.cfg的default文件配置,以及针对CentOS不同版本的安装菜单设置。深入解析了ks.cfg文件的参数,如网络设置、系统语言、分区方案及软件包选择,为网络批量部署提供了实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PXE 中的pxelinux.cfg中的default文件

#cat  default
default menu.c32
prompt 0 
timeout  60
ONTIMEOUT local
MENU  TITLE  Main Menu
LABEL  local
 MENU  LABEL Boot  local  hard  drive
 LOCALBOOT  0
LABEL CentOS Linux 
 MENU  LABEL CentOS  Linux
 KERNEL  menu.c32
 APPPEND pxelinux.cgf/centos_menu
LABEL Debian Linux
 MENU LABEL Debian Linux
 KERNEL  menu.c32
 APPEND  pxelinux.cfg/debian_menu
LABEL Window Setup
 MENU LABEL Window Setup
 KERNEL  menu.c32
 APPEND  pxelinux.cfg/window_menu

centos_menu 配置

#cat  centos_menu
LABEL CentOS7
 MENU LABEL CentOS 7  install
 KERNEL centos7/vmlinuz
 APPEND initrd=centos7/initrd.img  ks=http://192.168.2.254/ks7.cfg  ksdevice=bootif console=tty0  console=ttyS0,115200
LABEL CentOS6
 MENU LABEL CentOS 6  install
 KERNEL centos7/vmlinuz
 APPEND initrd=centos6/initrd.img  ks=http://192.168.2.254/ks6.cfg  ksdevice=bootif console=tty0  console=ttyS0,115200
LABEL rescue
 MENU LABEL CentOS rescue mode
 KERNEL centos7/vmlinuz
 APPEND initrd=centos7/initrd.img  ks=http://192.168.2.254/ks.cfg  ksdevice=bootif console=tty0  console=ttyS0,115200

ks.cfg 文件


#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
#Install OS instead of upgrade
install
#Keyboard layouts
keyboard 'us'
#Root password
rootpw --iscrypted $1$becav3Xl$q1lGfdGZwDyQ2AzTIHYvB/
#Use network installation
url --url="http://192.168.122.6/var/www/html/RHEL"
#System language
lang zh_CN
#System authorization information
auth  --useshadow  --passalgo=sha512
#Use graphical install
graphical
firstboot --disable
#SELinux configuration
selinux --disabled
#Firewall configuration
firewall --disabled
#Network information
network  --bootproto=dhcp --device=eth0
#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
part / --fstype="ext4" --grow --size=1
part /boot --fstype="xfs" --grow --size=1
part /home --fstype="ext4" --grow --size=1
part /tmp --fstype="xfs" --grow --size=1
part swap --fstype="swap" --size=1024
%packages --nobase
@Core  --nodefaults
-iwl3160-firmware
-iwl6000g2b-firmware
-iwl2030-firmware
-alsa-tools-firmware
-aic94xx-firmware
-postfixe
-audit
-tuned
chrony
psmisc
net-tools
screen
vim-enhanced
tcpdump
lrzsz
ltrace
strace
traceroute
whois
bind-utils
tree
mlocate
rsync
lsof
lftp
patch
diffutils
cpio
time
nmap
socat
man-pages
rpm-build
createrepo
%end
%pre
%end
%post --interpreter=/bin/bash
useradd lisi
echo  123 | passwd --stdin lisi
rm  -f  /etc/yum.repos.d/*.repo
cat  >/etc/yum.repos.d/local.repo  << 'EOF'
[local_repo]
name=centos
baseurl=http://192.168.2.254/RHEL
enabled=1
gpgcheck=1
EOF
rpm  -import  http://192.168.2.254/RHEL/RPM-GPG-KEY-CentOS-7
yum erase  -y  NetworkManager  NetworkManager-libnm  kexec-tools firewalld-filesystem polkit
sed  's/^CRONDARGS=.*/&" -m off "/ -i  /etc/sysconfig/crond
sed  's/^\(OPTIONS=\).*/\1"-4"/'  -i /etc/sysconfig/chronyd
sed 's/^server .*,&\ncmdallow  127.0.0.1/' -i /etc/chrony.conf
sed  's/^#\(terminfo  xterm \x27is.*\)/\1\nterm  xterm/'  -i /etc/screenrc
cat  >>/etc/sysconfig/network  <<'EOF'
IPV6INIT="no"
NETWORING="yes"
NOZEROCONF="yes"
EOF
echo  -e "# ::1\t\tlocalhost  localhost.localdomian  localhost6 localhost6.localdomain6" >/etc/hosts
echo  -e "127.0.0.1\tlocalhost  localhost.localdomain  localhost4 localhost4.localdomain4"  >>/etc/hosts
echo  -e 'export  TZ='Asia/Shanghai' PYTHONSTARTUP="/usr/lib64/python2.7/pystartup.py"  tmout=7200' >/etc/profile.d/environ.sh
echo -e "blacklist acpi_pad\nblacklist power_meter" >/etc/modprobe.d/blacklist.conf
cat  >/usr/lib64/python2.7/pystartup.py <<'EOF'
#!/usr/bin/python
#-*- coding:utf_8 -*-
#from_future_import print_function
from  rlcompleter  import readline
readline.parse_and_bind("tab:Complete")
EOF
cat >/etc/sysctl.d/70-system.conf  <<'EOF'
net.ipv4.ip_forward = 1
net.ipv4.ip_default_ttl = 255
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce =2
kernel.sysrq = 16
vm.swappiness = 0
EOF
#config vimrc
cat  >> /etc/vimrc <<'EOF'
set  wrapscan
set  noautoindent
set  showmatch
set  binary
set  noswapfile
set  ignorecase            "Do case  insensitive  matching"
set  foldmethod=syntax
set  foldevel=100
filetype  plugin  off
EOF
sed  -e 's/^#\(Port\).*/\1  10022/' 
    -e 's/^#\(ListenAddress  0.0.0.0\)/ \1/' \
    -e 's/^#\(PermitRootLogin\).*/\1  yes/' \
    -e 's/^#\(MaxAuthTries\).*/\1 3/' \
    -e 's/^#\(UseDNS\).*/\1 no/' -i /etc/ssh/sshd_config
cat  > /etc/sysconfig/network-scripts/ifcfg-eth0  <<'EOF'
#Generated  by dracut  initrd
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
TYPE="Ethernet"
BOOTPROTO="dhcp"
EOF
%end
<think>我们使用TinyPXEServer来配置一个网络启动服务器,用于网络安装CentOS 7(这里以CentOS 7为例,但问题中要求的是CentOS 1810,即CentOS 7.6,安装过程类似)。TinyPXEServer是一个Windows下的轻量级PXE服务器,支持TFTP、DHCP和HTTP服务。 步骤: 1. 准备必要的文件: - CentOS 7.6的ISO镜像(CentOS-7-x86_64-DVD-1810.iso) - 解压ISO镜像,获取内核(vmlinuz)和初始化镜像(initrd.img)以及安装树(整个镜像内容) 2. 配置TinyPXEServer: - 启动TinyPXEServer,设置DHCP范围(注意不要与现有网络冲突) - 配置TFTP和HTTP服务路径 3. 设置启动菜单(pxelinux.0和pxelinux.cfg/default) 4. 启动服务,客户端通过PXE启动进行安装。 详细步骤: 1. 准备文件: 将CentOS的ISO镜像解压到一个目录,例如:D:\centos7 2. 在TinyPXEServer中设置: - 在"DHCP"选项卡中,设置起始IP和结束IP(例如:192.168.1.100到192.168.1.150),子网掩码(255.255.255.0),网关(192.168.1.1),DNS(8.8.8.8),租期等。 - 设置“Boot File”为:pxelinux.0 (这个文件需要从syslinux包中获取,并放在TFTP根目录下) - 在"TFTP"选项卡中,设置根目录为:D:\tftp-root (我们将在这个目录下放置pxelinux.0和启动菜单) - 在"HTTP"选项卡中,设置根目录为:D:\centos7 (这里放置了解压的CentOS镜像文件) 3. 配置启动菜单: 在TFTP根目录(D:\tftp-root)下创建以下目录结构: D:\tftp-root\ ├── pxelinux.0 (从syslinux的包中获取,例如从syslinux-6.03.zip中获取) ├── vesamenu.c32 (同样从syslinux包中获取) └── pxelinux.cfg └── default default文件的内容如下: ``` default vesamenu.c32 prompt 0 timeout 600 label centos7 menu label Install CentOS 7.6 kernel centos7/vmlinuz append initrd=centos7/initrd.img method=http://192.168.1.100/centos7 devfs=nomount ip=dhcp ``` 注意:这里假设HTTP服务器的IP是192.168.1.100(即运行TinyPXEServer的机器IP),并且HTTP根目录下的centos7子目录中放置了vmlinuz和initrd.img。实际上,我们可以在TFTP根目录下创建centos7子目录,将vmlinuz和initrd.img放在其中,或者直接放在HTTP根目录下。这里我们选择放在HTTP根目录下,因为initrd.img较大,通过HTTP传输更快。 但是,在启动菜单中,kernel和initrd的路径是相对于TFTP根目录的。如果我们想通过HTTP加载内核和initrd,可以这样做(但pxelinux默认不支持HTTP加载内核,所以通常还是通过TFTP加载,但initrd可以通过HTTP加载?)。然而,由于vmlinuz和initrd.img并不大,我们可以将它们放在TFTP根目录下,比如在D:\tftp-root\centos7目录下,然后修改default文件中的路径。 因此,我们调整: - 将ISO镜像中的images/pxeboot/vmlinuz和initrd.img复制到D:\tftp-root\centos7目录下。 - 修改default文件中的kernel和initrd路径为:centos7/vmlinuz 和 centos7/initrd.img 而安装树(即ISO解压的所有文件)放在HTTP根目录下(D:\centos7),这样在安装过程中,安装程序会通过HTTP访问这些文件。 4. 启动TinyPXEServer: 点击"Start"按钮启动服务。 5. 客户端设置从网络启动,即可开始安装。 注意:如果网络中有其他DHCP服务器,为了避免冲突,可以关闭TinyPXEServer的DHCP,然后配置现有的DHCP服务器(添加指向TinyPXEServer的PXE启动选项)。 代码部分:由于TinyPXEServer是图形界面工具,所以没有代码。但我们可以提供批处理脚本来准备文件(如解压ISO、复制文件等)和创建目录结构。 以下是一个示例的批处理脚本,用于准备TFTP和HTTP目录: ```batch @echo off set ISO_PATH=D:\CentOS-7-x86_64-DVD-1810.iso set HTTP_ROOT=D:\centos7 set TFTP_ROOT=D:\tftp-root :: 创建HTTP根目录(如果不存在) if not exist "%HTTP_ROOT%" mkdir "%HTTP_ROOT%" :: 挂载ISO镜像(或者使用解压工具) :: 这里我们使用7z来解压ISO if not exist "%HTTP_ROOT%\isolinux" ( echo Extracting ISO... "C:\Program Files\7-Zip\7z.exe" x -y -o"%HTTP_ROOT%" "%ISO_PATH%" ) :: 创建TFTP根目录 if not exist "%TFTP_ROOT%" mkdir "%TFTP_ROOT%" :: 复制pxelinux.0和vesamenu.c32(需要提前下载syslinux) if not exist "%TFTP_ROOT%\pxelinux.0" copy "C:\syslinux\pxelinux.0" "%TFTP_ROOT%\" if not exist "%TFTP_ROOT%\vesamenu.c32" copy "C:\syslinux\vesamenu.c32" "%TFTP_ROOT%\" :: 创建pxelinux.cfg目录 if not exist "%TFTP_ROOT%\pxelinux.cfg" mkdir "%TFTP_ROOT%\pxelinux.cfg" :: 复制vmlinuz和initrd.img到TFTP目录的centos7子目录 if not exist "%TFTP_ROOT%\centos7" mkdir "%TFTP_ROOT%\centos7" copy "%HTTP_ROOT%\images\pxeboot\vmlinuz" "%TFTP_ROOT%\centos7\" copy "%HTTP_ROOT%\images\pxeboot\initrd.img" "%TFTP_ROOT%\centos7\" :: 创建default文件 echo Creating default file... echo default vesamenu.c32 > "%TFTP_ROOT%\pxelinux.cfg\default" echo prompt 0 >> "%TFTP_ROOT%\pxelinux.cfg\default" echo timeout 600 >> "%TFTP_ROOT%\pxelinux.cfg\default" echo. >> "%TFTP_ROOT%\pxelinux.cfg\default" echo label centos7 >> "%TFTP_ROOT%\pxelinux.cfg\default" echo menu label Install CentOS 7.6 >> "%TFTP_ROOT%\pxelinux.cfg\default" echo kernel centos7/vmlinuz >> "%TFTP_ROOT%\pxelinux.cfg\default" echo append initrd=centos7/initrd.img method=http://192.168.1.100/centos7 devfs=nomount ip=dhcp >> "%TFTP_ROOT%\pxelinux.cfg\default" echo Setup completed. ``` 注意:上面的脚本中,syslinux的文件pxelinux.0和vesamenu.c32)需要提前下载并放在C:\syslinux目录下。另外,7z的路径需要根据实际安装位置调整。 解释: 1. 首先,我们设置ISO镜像的路径、HTTP根目录和TFTP根目录。 2. 使用7z解压ISO镜像到HTTP根目录。 3. 创建TFTP根目录,并复制syslinux的启动文件pxelinux.0和vesamenu.c32)。 4. 复制内核和初始化镜像到TFTP目录下的centos7子目录。 5. 创建启动菜单配置文件default,指定启动项。 在TinyPXEServer中设置好DHCP、TFTP和HTTP后,运行这个脚本准备文件,然后启动服务。 相关问题: §§相关问题§§: 1. 如何配置现有的DHCP服务器以支持PXE启动(不使用TinyPXEServer的DHCP)? 2. 如何为多个操作系统(如同时支持CentOS和Ubuntu)配置PXE启动菜单? 3.PXE安装过程中,如何实现自动化安装(例如使用kickstart)? 4. 如果遇到TFTP超时或文件传输失败,应如何排查?</think>### 配置 TinyPXEServer 实现 CentOS 7.6 (1810) 网络安装 以下是完整的配置步骤和代码实现: #### 1. 准备工作 ```batch :: 创建目录结构 mkdir C:\tftp-root mkdir C:\tftp-root\centos7 mkdir C:\tftp-root\pxelinux.cfg ``` #### 2. 解压 CentOS ISO ```batch :: 挂载或解压 ISO 到 C:\centos-iso :: 提取关键文件到 TFTP 目录 copy "C:\centos-iso\images\pxeboot\vmlinuz" "C:\tftp-root\centos7\" copy "C:\centos-iso\images\pxeboot\initrd.img" "C:\tftp-root\centos7\" xcopy "C:\centos-iso\*" "C:\tftp-root\centos7\" /E /H ``` #### 3. 配置启动菜单 创建 `C:\tftp-root\pxelinux.cfg\default`: ```cfg default menu.c32 prompt 0 timeout 300 label Install CentOS 7.6 kernel centos7/vmlinuz append initrd=centos7/initrd.img inst.stage2=http://YOUR_SERVER_IP/centos7 inst.ks=http://YOUR_SERVER_IP/ks.cfg quiet ``` #### 4. 创建 Kickstart 文件 (ks.cfg) ```kickstart # 位置:C:\tftp-root\ks.cfg install url --url="http://YOUR_SERVER_IP/centos7" lang en_US.UTF-8 keyboard us timezone UTC rootpw --plaintext yourpassword firewall --disabled selinux --disabled services --enabled=sshd,NetworkManager reboot # 分区方案 clearpart --all --initlabel autopart --type=lvm # 软件包选择 %packages @^minimal @core kexec-tools %end # 网络配置 network --bootproto=dhcp --device=eth0 --activate ``` #### 5. TinyPXEServer 配置 1. **DHCP 标签页**: - 起始 IP:`192.168.1.100` - 结束 IP:`192.168.1.150` - 子网掩码:`255.255.255.0` - 网关:`192.168.1.1` - DNS:`8.8.8.8` - Boot File:`pxelinux.0` 2. **TFTP 标签页**: - 根目录:`C:\tftp-root` - 勾选 `Bind to DHCP Address` 3. **HTTP 标签页**: - 根目录:`C:\tftp-root` - 端口:`80` #### 6. 防火墙设置 ```batch :: 允许 HTTP 和 DHCP 通过防火墙 netsh advfirewall firewall add rule name="TinyPXE HTTP" dir=in action=allow protocol=TCP localport=80 netsh advfirewall firewall add rule name="TinyPXE DHCP" dir=in action=allow protocol=UDP localport=67 ``` #### 7. 启动服务 点击 TinyPXEServer 主界面的 **Start** 按钮,日志窗口应显示: ``` [DHCP] Server started [TFTP] Server started [HTTP] Server started on port 80 ``` ### 工作原理说明 1. **PXE 启动流程**: - 客户端广播 DHCP 请求 - TinyPXEServer 响应并提供 IP 和 `pxelinux.0` - 客户端加载 `pxelinux.cfg/default` 菜单 - 通过 HTTP 下载内核和 initrd - 执行自动化安装流程 2. **Kickstart 作用**: - 自动化分区、软件包选择 - 配置网络和安全设置 - 无需人工干预完成安装 3. **文件服务分工**: - TFTP:提供引导文件 (<1MB) - HTTP:提供大文件 (ISO/Kernel) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值