使用PXE全自动批量安装linux系统【全程干货详解教程】
一、简单了解PXE
(一)、PXE批量部署的优点
- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
PXE(Preboot eXcution Environment) 预启动执行环境,在操作系统之前运行 服务端 运行DHCP服务,用来分配地址、定位引导程序 运行TFTP服务,提供引导程序下载 客户端 网卡支持PXE协议 主板支持网络引导
(二)、部署过程
准备CentOS 7 安装源(YUM仓库) 安装并启用TFTP服务 提供Linux内核、PXE引导程序等 安装并启用DHCP服务 配置启动菜单
(三)、部署PXE网络体系要求
若要搭建 PXE 网络体系,必须满足以下几个前提条件: 客户端: 1.客户机的网卡要支持PXE协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIOS设置中允许从 Network 或 LAN 启动即可。
服务端:2.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。3.服务器要通过 TFTP服务(简单文件传输协议)来提供系统内核和引导镜像文件的下载
(四)、搭建 PXE 远程安装服务器步骤
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务、FTP 服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
TFTP(简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP 端口69
xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务
1、安装并启用 TFTP 服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | yum -y install tftp-server xinetd 修改TFTP服务的配置文件 # vim /etc/xinetd.d/tftp protocol = udp # TFTP默认使用UDP协议 wait = no # no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接 server_args = -s /var/lib/tftpboot # 指定TFTP根目录(引导文件的存储路径) disable = no 重启服务 systemctl start tftp systemctl enable tftp systemctl start xinetd systemctl enable xinetd |
2、安装并启用 DHCP 服务yum -y install dhcp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <em id = "__mceDel" > cp /usr/share/doc/dhcp-4 .2.5 /dhcpd .conf.example /etc/dhcp/dhcpd .conf 修改DHCP服务的配置文件 # vim /etc/dhcp/dhcpd.conf<br> # dhcpd.conf # Sample configuration file for ISC dhcpd<br> # option definitions common to all supported networks... log-facility local7; subnet 10.0.0.0 netmask 255.0.0.0 { #指定为那个网段分配网络参数 range 10.0.0.50 10.0.0.100; #设置准备为客户端分配的IP地址范围 option domain-name-servers 10.0.0.12; #设置分配给客户端的DNS服务器地址 option routers 10.0.0.2; #设置分配给客户端的网关地址。 # option broadcast-address 10.5.5.31; #广播地址,注释掉后用默认的 default-lease- time 600; # 地址租赁时间 600秒后失效 max-lease- time 7200; next-server 10.0.0.12; # 下一个要访问的地址,就是tftp地址。 filename "pxelinux.0" ; #要访问tftp上哪一个文件。 } 重启服务并设置自启动 systemctl start dhcpd systemctl enable dhcpd ss -tulanp| grep -w 67 #查看端口 < /em > |
3、准备 Linux 内核、初始化镜像文件
1 2 3 4 5 6 | mount /opt/CentOS-7-x86_64-DVD-2009 .iso /mnt #先挂载光盘镜像 # 这里需要将两个重要文件复制到/var/lib/tftpboot/(vmlinuz、initrd.img) cd /mnt/images/pxeboot cp vmlinuz /var/lib/tftpboot/ #复制 Linux系统的内核文件 到TFTP根目录下 cp initrd.img /var/lib/tftpboot/ #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下 |
4.准备 PXE 引导程序
1 2 | yum -y install syslinux # PXE引导程序由软件包 syslinux 提供 cp /usr/share/syslinux/pxelinux .0 /var/lib/tftpboot/ # 复制 PXE引导程序 到TFTP根目录下 |
5.安装FTP服务,准备CentOS 7 安装源
1 2 3 4 5 6 7 8 | yum -y install vsftpd # 安装vsftpd服务 mkdir /var/ftp/centos7 # 新建centos7目录,并将光盘镜像下的文件全部复制到centos7目录下 cp -rf /mnt/ * /var/ftp/centos7/ systemctl enable vsftpd systemctl start vsftpd |
6.配置启动菜单文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # 默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default mkdir /var/lib/tftpboot/pxelinux .cfg # 需要在ftfpboot目录下创建pxelinux.cfg # vim /var/lib/tftpboot/pxelinux.cfg/default # 在pxelinux.cfg目录下创建default并编辑配置文件 default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method= ftp : //10 .0.0.12 /centos7 # 为ftp服务器地址 label linux text kernel vmlinuz append text initrd=initrd.img method= ftp : //10 .0.0.12 /centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method= ftp : //10 .0.0.12 /centos7 # 重启TFTP服务 systemctl restart tftp |
7.关闭防火墙,验证 PXE 网络安装
使用 VMware 创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时可能会报错。开启虚拟机, 在提示字符串“boot: ”后直接按Enter键(或执行“auto”命令),将会自动通过网络下载安装文件,并进入默认的图形安装入口; 若执行“Linux text”命令,则进入文本安装入口; 若执行 “Linux rescue”命令,则进入救援模式。 当VSFTP、TFTP、syslinux、dhcp服务建立起来且/etc/xinetd.d/tftp,/var/lib/tftpboot/pxelinux.cfg/default和/etc/dhcp/dhcpd.conf文件配置完成后即可成功引导客户机进行Linux装机,但此时仍需手动操作
下面将介绍通过kickstart无人值守自动装机---------------------------------------------------------
(五)、自动化安装linux系统
准备安装应答文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | (1)安装system-config-kickstart 工具 yum install -y system-config-kickstart # 需要图形化机器支持,没有图形化直接跳过 (2)打开“Kickstart 配置程序”窗口 通过桌面菜单“应用程序”-->“系统工具”-->“Kickstart” 打开 或执行 “system-config-kickstart” 命令打开 # 生成kickstart模板文件 centos7.cfg # 放到/var/ftp/ 与centos文件夹一个目录,或者centos里面也行,但是default文件里的配置路径要更改 # 检查ks文件语法是否有错 ksvalidator centos7.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard --vckeymap=us --xlayouts= 'us' ##键盘布局为美式键盘 # Root password sha512 123456 #root用户密码的设定,可利用openssl命令设定(用法见百度) rootpw --iscrypted $1$8ZQVKeWY$hfGqJgqcymbGI3rvUWT310 # System language lang en_US.UTF-8 --addsupport=zh_CN.UTF-8 ##系统支持的语言 # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install text ##安装过程不开图形 # graphical ##安装过程开启图形 # SELinux configuration selinux --disabled # Do not configure the X Window System skipx ##安装完成后开机不启动图形 # Run the Setup Agent on first boot firstboot --disabled # Firewall configuration firewall --disabled # Network information network --bootproto=dhcp --device=eth0 --onboot=on --device=link --activate ## 网卡设定 # 静态网址设定 不能使用反斜线 \ 拼接换行,如果一行不够用,请使用多行 network 参数 # network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 --device=eth0 --onboot=on --device=link --activate network -- hostname =localhost.localdomain ##主机名设定 # Reboot after installation reboot # System timezone timezone Asia /Shanghai # Use network installation url --url= "ftp://10.0.0.12/centos7" ###系统安装资源 # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information ignoredisk --only-use=sda ##只是用我们系统中的第一块硬盘 clearpart --all --initlabel # 分区信息 # 分区要注意不能分的太大了,要结合自己实际硬盘情况,不然安装的时候会报错 # Disk partitioning information part /boot --fstype= "xfs" --asprimary --size=2048 part / --fstype= "xfs" --grow --asprimary --size=1 # 系统服务 # System services services --disabled= "firewalld" --enabled= "sshd,network" ##在开机时开启或关闭的服务 # 安装软件包 %packages @^minimal @core @development @system-admin-tools gcc glibc gcc -c++ openssl-devel openssh tree nmap sysstat lrzsz vim wget %end # 系统安装前运行脚本 %pre --interpreter= /bin/bash echo "beginning install OS..." %end # 系统安装后运行脚本 %post --interpreter= /bin/bash # 安装wget yum install -y wget # 备份初始yum源文件并配置阿里yum源和epel源 repobackup= /etc/yum .repos.d /repo-backup if [ ! -d $repobackup ] then mkdir -p $repobackup mv /etc/yum .repos.d/*.repo $repobackup echo "初始repo文件备份完毕,正在更新新的yum源,请稍后......" #centOS-7 yum源 wget -O /etc/yum .repos.d /CentOS-Base .repo https: //mirrors .aliyun.com /repo/Centos-7 .repo #centOS-7 epel源 wget -O /etc/yum .repos.d /epel .repo http: //mirrors .aliyun.com /repo/epel-7 .repo #else fi # 设置pipy源 if [ ! -d ~/.pip ] then echo "~/.pip不存在,正在创建" mkdir ~/.pip cat > ~/.pip /pip .conf << EOF [global] index-url = https: //mirrors .aliyun.com /pypi/simple/ [ install ] trusted-host=mirrors.aliyun.com EOF fi %end |
参数说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 关键字 含义 install 告知安装程序,这是一次全新安装,而不是升级upgrade。 url --url= " " 通过FTP或HTTP从远程服务器上的安装树中安装。 url --url= "http://10.0.0.7/CentOS-6.7/" url --url ftp : // <username>:<password>@<server>/< dir > nfs 从指定的NFS服务器安装。 nfs --server=nfsserver.example.com -- dir = /tmp/install-tree graphical 安装过程开启图形 text 安装过程使用文本模式安装。 lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8 keyboard 设置系统键盘类型。keyboard us zerombr 清除mbr引导信息。 bootloader 系统引导相关配置。 bootloader --location=mbr --driveorder=sda --append= "crashkernel=auto rhgb quiet" --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。 --driveorder,指定在BIOS引导顺序中居首的驱动器。 --append=,指定内核参数.要指定多个参数,使用空格分隔它们。 network 为通过网络的kickstart安装以及所安装的系统配置联网信息。 network --bootproto=dhcp --device=eth0 --onboot= yes --noipv6 -- hostname =CentOS6 --bootproto=[dhcp /bootp/static ]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。 static方法要求在kickstart文件里输入所有的网络信息。 network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。 --ip=,要安装的机器的IP地址. --gateway=,IP地址格式的默认网关. --netmask=,安装的系统的子网掩码. -- hostname =,安装的系统的主机名. --onboot=,是否在引导时启用该设备. --noipv6=,禁用此设备的IPv6. --nameserver=,配置dns解析. timezone 设置系统时区。timezone --utc Asia /Shanghai authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512 设置密码加密方式为sha512 启用shadow文件。 rootpw --iscrypted root密码 clearpart 清空分区。clearpart --all --initlabel --all 从系统中清除所有分区,--initlable 初始化磁盘标签 part 磁盘分区。分区要注意不能分的太大了,要结合自己实际硬盘情况,不然安装的时候会报错 part /boot --fstype=ext4 --asprimary --size=2048 # 设置启动分区 part swap --size=1024 # 设置交换分区 part / --fstype=ext4 --grow --asprimary --size=20000 # 设置根分区 --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。 --asprimary,强迫把分区分配为主分区,否则提示分区失败。 --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。 --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。 firstboot 负责协助配置redhat一些重要的信息。 firstboot --disable selinux 关闭selinux。selinux --disabled firewall 关闭防火墙。firewall --disabled logging 设置日志级别。logging --level=info reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。 %pre --interpreter= /bin/bash 系统安装前自动执行的脚本 执行脚本需要指定解释器-默认支持shell 执行的shell脚本 %end %post --interpreter= /bin/bash 系统安装后自动执行的脚本 执行脚本需要指定解释器-默认支持shell 执行的shell脚本 %end 9 编辑默认文件 # 默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default mkdir /var/lib/tftpboot/pxelinux .cfg # 需要在ftfpboot目录下创建pxelinux.cfg # vim /var/lib/tftpboot/pxelinux.cfg/default # 在pxelinux.cfg目录下创建default并编辑配置文件 default auto # 此处的参数为0,代表无需等待人工干预,自动选择并开始安装操系统 prompt 0 label auto kernel vmlinuz #为ftp服务器地址 centos7.ks.cfg 文件路径在/var/ftp/ 也可以放在centos7文件夹内,那么此处也要对应调整 append initrd=initrd.img method= ftp : //10 .0.0.12 /centos7 ks= ftp : //10 .0.0.12 /centos7 .ks.cfg label linux text kernel vmlinuz append text initrd=initrd.img method= ftp : //10 .0.0.12 /centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method= ftp : //10 .0.0.12 /centos7 |
开启虚拟机验证
步骤同手动,只是系统安装过程全部自动化了,不再需要手动干预
扩展-kickstart命令选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | autopart(可选) 自动创建分区,大于1GB的根分区(/),交换分区和适合于不同体系结构的引导分区.一个或多个缺省分区的大小可以用part指令重新定义. ignoredisk(可选) 导致安装程序忽略指定的磁盘.如果使用自动分区并希望忽略某些磁盘的话,这就很有用. 例如,没有ignoredisk,如要试图在SAN-cluster系统里部署,kickstart就会失败,因为安装程序检测到SAN不返回分区表的被动路径(passive path). 如果有磁盘的多个路径时,ignoredisk选项也有用处. 语法是: ignoredisk --drives=drive1,drive2,... 这里driveN是sda,sdb... hda等等中的一个. autostep(可选) 和interactive相似,除了它进入下一屏幕,它通常用于调试. --autoscreenshot,安装过程中的每一步都截屏并在安装完成后把图片复制到 /root/anaconda-screenshots .这对于制作文档很有用. auth或authconfig(必需) 为系统设置验证选项.这和在安装后运行的authconfig命令相似.在缺省情况下,密码通常被加密但不使用影子文件(shadowed). --enablemd5,每个用户口令都使用md5加密. --enablenis,启用NIS支持.在缺省情况下,--enablenis使用在网络上找到的域.域应该总是用--nisdomain=选项手工设置. --nisdomain=,用在NIS服务的NIS域名. --nisserver=,用来提供NIS服务的服务器(默认通过广播). --useshadow或--enableshadow,使用屏蔽口令. --enableldap,在 /etc/nsswitch .conf启用LDAP支持,允许系统从LDAP目录获取用户的信息(UIDs,主目录,shell 等等).要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN(distinguished name). --enableldapauth,把LDAP作为一个验证方法使用.这启用了用于验证和更改密码的使用LDAP目录的pam_ldap模块.要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN. --ldapserver=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定所使用的LDAP服务器的名字.这个选项在 /etc/ldap .conf文件里设定. --ldapbasedn=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定用户信息存放的LDAP目录树里的DN.这个选项在 /etc/ldap .conf文件里设置. --enableldaptls,使用TLS(传输层安全)查寻.该选项允许LDAP在验证前向LDAP服务器发送加密的用户名和口令. --enablekrb5,使用Kerberos 5验证用户.Kerberos自己不知道主目录,UID或shell.如果启用了Kerberos,必须启用LDAP,NIS,Hesiod或者使用 /usr/sbin/useradd 命令来使这个工作站获知用户的帐号.如果使用这个选项,必须安装pam_krb5软件包. --krb5realm=,工作站所属的Kerberos 5领域. --krb5kdc=,为领域请求提供服务的KDC.如果的领域内有多个KDC,使用逗号(,)来分隔它们. --krb5adminserver=,领域内还运行kadmind的KDC.该服务器处理改变口令以及其它管理请求.如果有不止一个KDC,该服务器必须是主KDC. --enablehesiod,启用Hesiod支持来查找用户主目录,UID 和 shell.在网络中设置和使用 Hesiod 的更多信息,可以在 glibc 软件包里包括的 /usr/share/doc/glibc-2 .x.x /README .hesiod里找到.Hesiod是使用DNS记录来存储用户,组和其他信息的 DNS 的扩展. --hesiodlhs,Hesiod LHS( "left-hand side" )选项在 /etc/hesiod .conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对 base DN的使用. --hesiodrhs,Hesiod RHS( "right-hand side" )选项在 /etc/hesiod .conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对base DN的使用. --enablesmbauth,启用对SMB服务器(典型的是Samba或Windows服务器)的用户验证.SMB验证支持不知道主目录,UID 或 shell.如果启用SMB,必须通过启用LDAP,NIS,Hesiod或者用 /usr/sbin/useradd 命令来使用户帐号为工作站所知.要使用这个选项,必须安装pam_smb软件包. --smbservers=,用来做SMB验证的服务器名称.要指定不止一个服务器,用逗号(,)来分隔它们. --smbworkgroup=,SMB服务器的工作组名称. --enablecache,启用nscd服务.nscd服务缓存用户,组和其他类型的信息.如果选择在网络上用NIS,LDAP或hesiod分发用户和组的信息,缓存就尤其有用. bootloader(必需) 指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的. --append=,指定内核参数.要指定多个参数,使用空格分隔它们. 例如:bootloader --location=mbr --append= "hdd=ide-scsi ide=nodma" --driveorder,指定在BIOS引导顺序中居首的驱动器. 例如:bootloader --driveorder=sda,hda --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序). --password=,如果使用GRUB,把GRUB引导装载程序的密码设置到这个选项指定的位置.这应该被用来限制对可以传入任意内核参数的GRUB shell的访问. --md5pass=,如果使用GRUB,这和--password=类似,只是密码已经被加密. --upgrade,升级现存的引导装载程序配置,保留其中原有的项目.该选项仅可用于升级. clearpart(可选) 在创建新分区之前,从系统上删除分区.默认不会删除任何分区. 注:如果使用了clearpart命令,--onpart命令就不能够用在逻辑分区上. --all,删除系统上所有分区. --drives=,指定从哪个驱动器上清除分区. 例如,下面的命令清除了主IDE控制器上的前两个驱动器上所有分区 clearpart --drives=hda,hdb --all --initlabel,根据不同体系结构把磁盘标签初始化为缺省设置(例如,msdos用于x86而gpt用于Itanium).当安装到一个崭新的硬盘时,这很有用,安装程序不会询问是否应该初始化磁盘标签. --linux,删除所有Linux分区. --none(缺省),不要删除任何分区. cmdline(可选) 在完全的非交互式的命令行模式下进行安装.任何交互式的提示都会终止安装.这个模式对于有x3270控制台的IBM System z系统很有用. device(可选) 在多数的PCI系统里,安装程序会正确地自动探测以太网卡和SCSI卡.然而,在老的系统和某些PCI系统里,kickstart需要提示来找到正确的设备.device命令用来告诉安装程序安装额外的模块,它有着这样的格式: device < type ><moduleName> --opts=<options> < type >,用scsi或eth代替 <moduleName>,使用应该被安装的内核模块的名称来替换. --opts=,传递给内核模块的选项.注意,如果把选项放在引号里,可以传递多个选项. 例如:--opts= "aic152x=0x340 io=11" driverdisk(可选) 可以在kickstart安装过程中使用驱动软盘.必须把驱动软盘的内容复制到系统的硬盘分区的根目录下.然后必须使用driverdisk 命令来告诉安装程序到哪去寻找驱动磁盘. driverdisk <partition> [-- type =<fstype>] 另外,也可以为驱动程序盘指定一个网络位置: driverdisk -- source = ftp : //path/to/dd .img driverdisk -- source =http: //path/to/dd .img driverdisk -- source =nfs:host: /path/to/img <partition>,包含驱动程序盘的分区. -- type =,文件系统类型(如:vfat,ext2,ext3). firewall(可选) 这个选项对应安装程序里的「防火墙配置」屏幕: firewall --enabled|--disabled [--trust=] <device> [--port=] --enabled或者-- enable ,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙. --disabled或--disable,不要配置任何iptables规则. --trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1. <incoming>,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙. -- ssh --telnet --smtp --http -- ftp --port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口. 例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开. firstboot(可选) 决定是否在系统第一次引导时启动 "设置代理" .如果启用,firstboot软件包必须被安装.如果不指定,这个选项是缺省为禁用的. -- enable 或--enabled,系统第一次引导时,启动 "设置代理" . --disable或--disabled,系统第一次引导时,不启动 "设置代理" . --reconfig,在系统引导时在重配置(reconfiguration)模式下启用 "设置代理" .这个模式启用了语言,鼠标,键盘,根密码,安全级别,时区和缺省网络配置之外的选项. halt(可选) 在成功地完成安装后关闭系统.这和手工安装相似,手工安装的anaconda会显示一条信息并等待用户按任意键来重启系统.在kickstart安装过程中,如果没有指定完成方法(completion method),将缺省使用reboot选项. halt选项基本和 shutdown -h命令相同. 关于其他的完成方法,请参考kickstart的poweroff,reboot和 shutdown 选项. graphical(可选) 在图形模式下执行kickstart安装.kickstart安装默认在图形模式下安装. install (可选) 告诉系统来安装全新的系统而不是在现有系统上升级.这是缺省的模式.必须指定安装的类型,如cdrom,harddrive,nfs或url(FTP 或HTTP安装). install 命令和安装方法命令必须处于不同的行上. cdrom 从系统上的第一个光盘驱动器中安装. harddrive 从本地驱动器的vfat或ext2格式的红帽安装树来安装. --biospart=,从BIOS分区来安装(如82). --partition=,从分区安装(如sdb2). -- dir =,包含安装树的variant目录的目录. 例如:harddrive --partition=hdb2 -- dir = /tmp/install-tree nfs 从指定的NFS服务器安装. --server=,要从中安装的服务器(主机名或IP). -- dir =,包含安装树的variant目录的目录. --opts=,用于挂载NFS输出的Mount选项(可选). 例如:nfs --server=nfsserver.example.com -- dir = /tmp/install-tree url 通过FTP或HTTP从远程服务器上的安装树中安装. 例如:url --url http: // <server>/< dir > 或:url --url ftp : // <username>:<password>@<server>/< dir > ignore disk(可选) 用来指定在分区,格式化和清除时anaconda不应该访问的磁盘.这个命令有一个必需的参数,就是用逗号隔开的需要忽略的驱动器列表. 例如:ignoredisk --drives=[disk1,disk2,...] interactive(可选) 在安装过程中使用kickstart文件里提供的信息,但允许检查和修改给定的值.将遇到安装程序的每个屏幕以及kickstart文件里给出的值.通过点击 "下一步" 接受给定的值或是改变值后点击 "下一步" 继续.请参考autostep命令. iscsi(可选) issci --ipaddr= [options]. --target --port= --user= --password= iscsiname(可选) key(可选) 指定安装密钥,它在软件包选择和获取支持时设别系统的时候是必需的.这个命令是红帽企业Linux-specific,它对Fedora来说没有意义并且会被忽略. --skip,跳过输入密钥.通常,如果没有key命令,anaconda将暂停并提示输入密钥.如果没有密钥或不想提供它,这个选项允许继续自动化安装. keyboard(必需) 设置系统键盘类型.这里是 i386,Itanium,和 Alpha 机器上可用键盘的列表: be-latin1, bg , br-abnt2, cf, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dk, dk-latin1, dvorak, es, et, fi , fi -latin1, fr, fr-latin0, fr-latin1, fr-pc, fr_CH, fr_CH-latin1, gr, hu, hu101, is-latin1, it, it-ibm, it2, jp106, la-latin1, mk-utf, no, no-latin1, pl, pt-latin1, ro_win, ru, ru-cp1251, ru-ms, ru1, ru2, ru_win, se-latin1, sg, sg-latin1, sk-qwerty, slovene, speakup, speakup-lt, sv-latin1, sg, sg-latin1, sk-querty, slovene, trq, ua, uk, us, us-acentos 文件 /usr/lib/python2 .2 /site-packages/rhpl/keyboard_models .py 也包含这个列表而且是 rhpl 软件包的一部分. lang(必需) 设置在安装过程中使用的语言以及系统的缺省语言.例如,要把语言设置为英语,kickstart文件应该包含下面的一行: lang en_US 文件 /usr/share/system-config-language/locale-list 里每一行的第一个字段提供了一个有效语言代码的列表,它是system-config-language软件包的一部分. 文本模式的安装过程不支持某些语言(主要是中文,日语,韩文和印度的语言).如果用lang命令指定这些语言中的一种,安装过程仍然会使用英语,但是系统会缺省使用指定的语言. langsupport(不赞成) langsupport关键字已经被取消而且使用它将导致屏幕出现错误信息及终止安装.作为代替,应该在kickstart文件里的%packages 部分列出所支持的语言的支持软件包组.例如,要支持法语,应该把下面的语句加入到 %packages: @french-support logvol(可选) 使用以下语法来为逻辑卷管理(LVM)创建逻辑卷: logvol <mntpoint> --vgname=<name> --size=<size> --name=<name><options> 这些选项如下所示: --noformat,使用一个现存的逻辑卷,不进行格式化. --useexisting,使用一个现存的逻辑卷,重新格式化它. --fstype=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat. --fsoptions=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat. --bytes-per-inode=,指定在逻辑卷上创建的文件系统的节点的大小.因为并不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略. --grow=,告诉逻辑卷使用所有可用空间(若有),或使用设置的最大值. --maxsize=,当逻辑卷被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB. --recommended=,自动决定逻辑卷的大小. --percent=,用卷组里可用空间的百分比来指定逻辑卷的大小. 首先创建分区,然后创建逻辑卷组,再创建逻辑卷. 例如: part pv.01 --size 3000 volgroup myvg pv.01 logvol / --vgname=myvg --size=2000 --name=rootvol logging(可选) 这个命令控制安装过程中anaconda的错误日志.它对安装好的系统没有影响. --host=,发送日志信息到给定的远程主机,这个主机必须运行配置为可接受远程日志的syslogd进程. --port=,如果远程的syslogd进程没有使用缺省端口,这个选项必须被指定. --level=,debug,info,warning,error或critical中的一个. 指定tty3上显示的信息的最小级别.然而,无论这个级别怎么设置,所有的信息仍将发送到日志文件. mediacheck(可选) 如果指定的话,anaconda将在安装介质上运行mediacheck.这个命令只适用于交互式的安装,所以缺省是禁用的. monitor(可选) 如果monitor命令没有指定,anaconda将使用X来自动检测的显示器设置.请在手工配置显示器之前尝试这个命令. --hsync=,指定显示器的水平频率. --vsync=,指定显示器的垂直频率. --monitor=,使用指定的显示器;显示器的名字应该在hwdata软件包里的 /usr/share/hwdata/MonitorsDB 列表上.这个显示器的列表也可以在Kickstart Configurator的X配置屏幕上找到.如果提供了--hsync或--vsync,它将被忽略.如果没有提供显示器信息,安装程序将自动探测显示器. --noprobe=,不要试图探测显示器. mouse(已取消) mouse 关键字已经被取消,使用它将导致屏幕出现错误信息并终止安装. network(可选) 为系统配置网络信息.如果 kickstart安装不要求联网(换句话说,不从NFS,HTTP或FTP安装),就不需要为系统配置网络.如果安装要求联网而kickstart文件里没有提供网络信息,安装程序会假定从eth0通过动态IP地址(BOOTP /DHCP )来安装,并配置安装完的系统动态决定IP地址.network选项为通过网络的kickstart安装以及所安装的系统配置联网信息. --bootproto=,dhcp,bootp或static中的一种,缺省值是dhcp.bootp和dhcp被认为是相同的. static方法要求在kickstart文件里输入所有的网络信息.顾名思义,这些信息是静态的且在安装过程中和安装后所有.静态网络的设置行更为复杂,因为必须包括所有的网络配置信息.必须指定IP地址,网络,网关和命名服务器. 例如("\"表示连续的行): network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 \ --gateway=10.0.2.254 --nameserver=10.0.2.1 如果使用静态方法,请注意以下两个限制: 所有静态联网配置信息都必须在一行上指定,不能使用反斜线来换行. 在这里只能够指定一个命名服务器.然而,如果需要的话,可以使用kickstart文件的%post段落来添加更多的命名服务器. --device=,用来选择用于安装的特定的以太设备.注意,除非kickstart文件是一个本地文件(如ks=floppy),否则--device=的使用是无效的.这是因为安装程序会配置网络来寻找kickstart文件. 例如: network --bootproto=dhcp --device=eth0 --ip=,要安装的机器的IP地址. --gateway=,IP地址格式的默认网关. --nameserver=,主名称服务器,IP地址格式. --nodns,不要配置任何 DNS 服务器. --netmask=,安装的系统的子网掩码. -- hostname =,安装的系统的主机名. -- ethtool =,指定传给 ethtool 程序的网络设备的其他底层设置. --essid=,无线网络的网络ID. --wepkey=,无线网络的加密密钥. --onboot=,是否在引导时启用该设备. --class=,DHCP类型. --mtu=,该设备的MTU. --noipv4=,禁用此设备的IPv4. --noipv6=,禁用此设备的IPv6. multipath(可选) multipath --name= --device= --rule= part或partition(对于安装是必需的,升级可忽略). 在系统上创建分区. 如果不同分区里有多个红帽企业Linux系统,安装程序会提示用户升级哪个系统. 警告:作为安装过程的一部分,所有被创建的分区都会被格式化,除非使用了--noformat和--onpart. <mntpoint>,<mntpoint>是分区的挂载点,它必须是下列形式中的一种: /<path>,例如,/, /usr , /home swap,该分区被用作交换空间,要自动决定交换分区的大小,使用--recommended选项. swap --recommended 自动生成的交换分区的最小值大于系统内存的数量,但小于系统内存的两倍. raid.< id >,该分区用于 software RAID(参考 raid). pv.< id >,该分区用于 LVM(参考 logvol). --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB. --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值. --maxsize=,当分区被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB. --noformat,用--onpart命令来告诉安装程序不要格式化分区. --onpart=或--usepart=,把分区放在已存在的设备上. 例如:partition /home --onpart=hda1,把 /home 置于必须已经存在的 /dev/hda1 上. --ondisk=或--ondrive=,强迫分区在指定磁盘上创建. 例如:--ondisk=sdb把分区置于系统的第二个SCSI磁盘上. --asprimary,强迫把分区分配为主分区,否则提示分区失败. -- type =(用fstype代替),这个选项不再可用了.应该使用fstype. --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat. --start=,指定分区的起始柱面,它要求用--ondisk=或ondrive=指定驱动器.它也要求用--end=指定结束柱面或用--size=指定分区大小. --end=,指定分区的结束柱面.它要求用--start=指定起始柱面. --bytes-per-inode=,指定此分区上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略. --recommended,自动决定分区的大小. --onbiosdisk,强迫在 BIOS 找到的特定磁盘上创建分区. 注:如果因为某种原因分区失败了,虚拟终端3上会显示诊断信息. poweroff(可选) 在安装成功后关闭系统并断电.通常,在手工安装过程中,anaconda会显示一条信息并等待用户按任意键来重新启动系统.在kickstart的安装过程中,如果没有指定完成方法,将使用缺省的reboot选项. raid(可选) 组成软件RAID设备.该命令的格式是: raid <mntpoint> --level=<level> --device=<mddevice><partitions*> <mntpoint>,RAID文件系统被挂载的位置.如果是/,除非已经有引导分区存在( /boot ),RAID级别必须是1.如果已经有引导分区, /boot 分区必须是级别1且根分区(/)可以是任何可用的类型.<partitions*>(这表示可以有多个分区)列出了加入到RAID阵列的RAID标识符. --level=,要使用的RAID级别(0,1,或5). --device=,要使用的RAID设备的名称(如md0或md1).RAID设备的范围从md0直到md7,每个设备只能被使用一次. --bytes-per-inode=,指定RAID设备上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以对于那些文件系统它都会被忽略. --spares=,指定RAID阵列应该被指派N个备用驱动器.备用驱动器可以被用来在驱动器失败时重建阵列. --fstype=,为RAID阵列设置文件系统类型.合法值有:ext2,ext3,swap和vfat. --fsoptions=,指定当挂载文件系统时使用的 free form字符串.这个字符串将被复制到系统的 /etc/fstab 文件里且应该用引号括起来. --noformat,使用现存的RAID设备,不要格式化RAID阵列. --useexisting,使用现存的RAID设备,重新格式化它. reboot(可选) 在成功完成安装(没有参数)后重新启动.通常,kickstart会显示信息并等待用户按任意键来重新启动系统. repo(可选) 配置用于软件包安装来源的额外的yum库.可以指定多个repo行. repo --name=<repoid> [--baseline=<url>| --mirrorlist=<url>] --name=,repo id .这个选项是必需的. --baseurl=,库的URL.这里不支持yum repo配置文件里使用的变量.可以使用它或者--mirrorlist,亦或两者都不使用. --mirrorlist=,指向库镜像的列表的URL.这里不支持yum repo配置文件里可能使用的变量.可以使用它或者--baseurl,亦或两者都不使用. rootpw(必需) 把系统的根口令设置为<password>参数. rootpw [--iscrypted] <password> --iscrypted,如果该选项存在,口令就会假定已被加密. selinux(可选) 在系统里设置SELinux状态.在anaconda里,SELinux缺省为enforcing. selinux [--disabled|--enforcing|--permissive] --enforcing,启用SELinux,实施缺省的targeted policy. 注:如果kickstart文件里没有selinux选项,SELinux将被启用并缺省设置为--enforcing. --permissive,输出基于SELinux策略的警告,但实际上不执行这个策略. --disabled,在系统里完全地禁用 SELinux. services(可选) 修改运行在缺省运行级别下的缺省的服务集.在disabled列表里列出的服务将在enabled列表里的服务启用之前被禁用. --disabled,禁用用逗号隔开的列表里的服务. --enabled,启用用逗号隔开的列表里的服务. shutdown (可选) 在成功完成安装后关闭系统.在kickstart安装过程中,如果没有指定完成方法,将使用缺省的reboot选项. skipx(可选) 如果存在,安装的系统上就不会配置X. text(可选) 在文本模式下执行kickstart安装. kickstart安装默认在图形模式下安装. timezone(可选) 把系统时区设置为<timezone>,它可以是timeconfig列出的任何时区. timezone [--utc] <timezone> --utc,如果存在,系统就会假定硬件时钟被设置为UTC(格林威治标准)时间. upgrade(可选) 告诉系统升级现有的系统而不是安装一个全新的系统.必须指定 cdrom,harddrive,nfs或url(对于FTP和HTTP而言)中的一个作为安装树的位置.详情请参考 install . user(可选) 在系统上创建新用户. user --name=<username> [-- groups =<list>] [--homedir=<homedir>] [--password=<password>] [--iscrypted] [--shell=<shell>] [--uid=<uid>] --name=,提供用户的名字.这个选项是必需的. -- groups =,除了缺省的组以外,用户应该属于的用逗号隔开的组的列表. --homedir=,用户的主目录.如果没有指定,缺省为 /home/ <username>. --password=,新用户的密码.如果没有指定,这个帐号将缺省被锁住. --iscrypted=,所提供的密码是否已经加密? --shell=,用户的登录shell.如果不提供,缺省为系统的缺省设置. --uid=,用户的UID.如果未提供,缺省为下一个可用的非系统 UID. vnc(可选) 允许通过VNC远程地查看图形化的安装.文本模式的安装通常更喜欢使用这个方法,因为在文本模式下有某些大小和语言的限制.如果为no,这个命令将启动不需要密码的VNC服务器并打印出需要用来连接远程机器的命令. vnc [--host=< hostname >] [--port=<port>] [--password=<password>] --host=,不启动VNC服务器,而是连接至给定主机上的VNC viewer进程. --port=,提供远程VNC viewer进程侦听的端口.如果不提供,anaconda将使用VNC的缺省端口. --password=,设置连接VNC会话必需的密码.这是可选的,但却是我们所推荐的选项. volgroup(可选) 用来创建逻辑卷管理(LVM)组,其语法格式为: volgroup <name><partition><options> 这些选项如下所示: --noformat,使用一个现存的卷组,不要格式化它. --useexisting,使用一个现存的卷组,重新格式化它. --pesize=,设置物理分区(physical extent)的大小. 首先创建分区,然后创建逻辑卷组,再创建逻辑卷.例如: xconfig(可选) 配置X Window 系统.如果没有指定这个选项且安装了X,用户必须在安装过程中手工配置X;如果最终系统里没有安装X,这个选项不应该被使用. --driver,指定用于视频硬件的 X 驱动. --videoram=,指定显卡的显存数量. --defaultdesktop=,指定GNOME或KDE作为缺省的桌面(假设已经通过%packages安装了GNOME或KDE桌面环境). --startxonboot,在安装的系统上使用图形化登录. --resolution=,指定安装的系统上X窗口系统的默认分辨率.有效值有:640x480,800x600,1024x768,1152x864, 1280x1024,1400x1050,1600x1200.请确定指定与视频卡和显示器兼容的分辨率. --depth=,指定安装的系统上的 X 窗口系统的默认色彩深度.有效值有:8,16,24,和 32.请确定指定与视频卡和显示器兼容的色彩深度. zerombr(可选) 如果指定了zerombr且 yes 是它的唯一参数,任何磁盘上的无效分区表都将被初始化.这会毁坏有无效分区表的磁盘上的所有内容.这个命令的格式应该如下: zerombr yes 其它格式均无效. zfcp(可选) zfcp [--devnum=<devnum>] [--fcplun=<fcplun>] [--scsiid=<scsiid>] [--scsilun=<scsilun>] [--wwpn=<wwpn>] %include 使用 %include /path/to/file 命令可以把其他文件的内容包含在kickstart文件里,就好像这些内容出现在kickstart文件的%include命令后一样. |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具