Fedora Server定制化封装ISO(2)-定制KickStart

上一章我们实践了如何将Fedora重新打包成ISO,接下来对ISO安装过程进行定制,使用的技术主要是kickstart文件进行管理。

定制化自动安装Kickstart

KS详细配置参数请参考KICKSTART SYNTAX REFERENCE

之前在安装Fedora的时候,一般会在root目录生成一个安装的配置文件anaconda.cfg,这个文件是一个当前系统安装kickstart文件的一个简略版,可以参考一下:

[root@localhost ~]# ls
anaconda-ks.cfg  Fedora-Server-dvd-x86_64-31-1.9.iso

先看一下这个文件,我适当的添加关键性注释:

#version=DEVEL
ignoredisk --only-use=sda
iscsiname iqn.1994-05.com.redhat:46a93490da59
# autopart是自动分区,如果想手动分区,需要注释此行
autopart
# Partition clearing information
clearpart --none --initlabel
# Use graphical install
graphical
# Use CDROM installation media
cdrom
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
# 这里是网络配置,如果想在装完系统后再配置网络,可以将此部分注释掉
network  --bootproto=dhcp --device=enp0s5 --ipv6=auto --activate
network  --hostname=localhost.localdomain
# Root password
# 这个密码是安装此操作系统时的root密码,如果指定这里,root密码会在安装时指定,并在过程中直接跳过
rootpw --iscrypted $6$wdv7q0CXjYg3MVuf$UfUKQuNCLxiAjRNslH59a4QIWl5yqeHYAiD53OxExBYyVvR8Q3phNLLhRGVXYJkvpMGk4yVJQd1YvAD9r5QAH0
# Run the Setup Agent on first boot
firstboot --enable
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
%packages
# 这里是安装的包
@^server-product-environment
# 这里可以增加我们要安装的包
%end
%addon com_redhat_kdump --disable --reserve-mb='128'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

在我们的需求中,大部分的修改数据就是以上注释的几个部分:

  1. 分区,我的部署过程一般是将分区部分注释掉的,这样可以让管理员按自己的逻辑进行分区处理
  2.  网络配置也是一般注释掉的,网络配置由管理员手动配置
  3. password使用预置的password,这样可以给服务器一个默认的密码,可以使用以下命令生成进行替换:
    python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
  4. 安装的包一般有两种方式,一种是配置rpmxml文件,将rpm加入到server-product-environment中,另一种是直接将包放到%packages%end之间,进行指定安装
  5. 配置一些包的开启关闭状态(参考下面的文件关闭selinux和firewall)
  6. 还可以在ks文件最后加入要执行的脚本,例如下例中展示的允许root使用密码登录

以下是我常用的ks文件:

auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
#version=DEVEL
ignoredisk --only-use=sda

# Use graphical install
graphical
# Use CDROM installation media
cdrom
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'

# 关闭selinux和firewall
selinux --disabled
firewall --disabled

# System language
lang en_US.UTF-8
# Network information
#network  --bootproto=dhcp --device=enp0s5 --ipv6=auto --activate
#network  --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$wdv7q0CXjYg3MVuf$UfUKQuNCLxiAjRNslH59a4QIWl5yqeHYAiD53OxExBYyVvR8Q3phNLLhRGVXYJkvpMGk4yVJQd1YvAD9r5QAH1
# Run the Setup Agent on first boot
firstboot --enable
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
%packages
@^server-product-environment
%end
%post
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
%end

将这个文件保存到ks.cfg,然后放到制作ISO的目录中,我这里是/opt/fedora-custom/isolinux/

然后修改/opt/fedora-custom/isolinux/isolinux.cfg

找到Install Fedora的部分,让操作系统安装的时候使用ks文件安装,修改如下:

menu separator # insert an empty line
label linux
  menu label ^Install Fedora 31
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CDROM ks=hd:LABEL=CDROM:/isolinux/ks.cfg quiet

修改完成后,重新使用上一章中创建ISO脚本重新打包,就可以验证我们的ks是不是正常了,按之前的设置,不需要设置root密码,之需要对分区进行划分就可以安装Fedora了。

 下面来看一下如何定制一个自己程序专属的RPM包:Fedora Server定制化封装ISO(3)-定制RPM包

About the author

liuyuhang

View all posts

发表评论