通过kickstart定制Centos8系统

转载:https://www.dazhuanlan.com/2019/10/01/5d9301a5379f6/

环境准备

  • CentOS 环境一个

    1
    2
    
    [ocloud@centos-linux ~]$ uname -a
    Linux centos-linux.shared 3.10.0-957.1.3.el7.x86_64 
    
  • CentOS7 镜像一个

    1
    
    CentOS-7-x86_64-DVD-1810.iso
    

开始制作

  1. 安装需要的工具
1
[ocloud@centos-linux ~]$ sudo yum -y install createrepo mkisofs dosfstools syslinux
  1. 挂载CentOS-7-x86_64-DVD-1810.iso 到目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[ocloud@centos-linux ~]$ lsblk //查看磁盘设备,选择对应的光驱设备
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0    64G  0 disk
├─sda1                 8:1    0   500M  0 part /boot
└─sda2                 8:2    0  63.5G  0 part
  ├─VolGroup-lv_root 253:0    0    50G  0 lvm  /
  ├─VolGroup-lv_swap 253:1    0     2G  0 lvm  [SWAP]
  └─VolGroup-lv_home 253:2    0  11.6G  0 lvm  /home
sr0                   11:0    1 122.5M  0 rom
sr1                   11:1    1   4.3G  0 rom //这个即为挂载的CentOS-7-x86_64-DVD-1810.iso

[ocloud@centos-linux ~]$ mkdir ~/originISO
[ocloud@centos-linux ~]$ sudo mount /dev/sr1 ~/originISO
[sudo] ocloud 的密码:
mount: /dev/sr1 写保护,将以只读方式挂载

#如果不是通过光驱加载,则执行以下操作即可,和上面是同样的效果
[ocloud@centos-linux ~]$ sudo mount ~/CentOS-7-x86_64-DVD-1810.iso ~/originISO
  1. 将镜像内容拷贝到即将制作镜像的文件夹
1
2
3
4
5
6
7
[ocloud@centos-linux ~]$ mkdir ~/customISO
[ocloud@centos-linux ~]$ sudo cp -ar ~/originISO/* customISO/
[ocloud@centos-linux customISO]$ ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL

#Packages目录是用来放rpm安装包
#isolinux 目录包含了启动相关的配置文件
  1. 准备我们需要的rpm包, 具体操作如下
1
2
3
4
5
6
7
8
9
# rpm安装有许多的依赖问题,但是我们可以通过yum获取到相关的依赖包
[ocloud@centos-linux ~]$ yum -h
  ...
  --downloadonly        仅下载而不更新
  --downloaddir=DLDIR   指定一个其他文件夹用于保存软件包
  ...
  
 #比如下载qemu-kvm相关的包
 [ocloud@centos-linux ~]$ sudo yum -y --downloadonly --downloaddir="~/customISO/Packages" qemu-kvm qemu-kvm-tools qemu-img gpxe-roms-qemu qemu-guest-agent #这里直接包相关联的包下载到我们制作镜像的单独放rpm包的文件夹中
  1. 更新软件组的关联信息

    由于我们添加了新的rpm包,因此需要更新软件组的关联信息,每次更新了rpm包就需要更新软件组的信息

1
2
3
4
5
6
[ocloud@centos-linux ~]$ cd ~/customISO
[ocloud@centos-linux customISO]$ mv repodata/*comps.xml repodata/comps.xml #备份软件组的配置文件,其中包含了软件组元数据
[ocloud@centos-linux customISO]$ cd repodata/
[ocloud@centos-linux repodata]$ ls | grep -v comps.xml$|xargs rm #删除其他文件
[ocloud@centos-linux repodata]$ cd ../
[ocloud@centos-linux customISO] createrepo -g repodata/comps.xml /home/ocloud/customISO #重新生成软件组的数据信息
  1. 准备kickstart文件

    推荐用来生成 Kickstart 文件的方法是在系统中首先执行一次手动安装。安装完成后,安装程序中的所有选择都会保存到名为 anaconda-ks.cfg 的文件中,该文件位于所安装系统的 /root/ 目录下。然后可以复制这个文件,根据需要进行修改,并在以后的安装中使用得到的配置文件。 —来自redhat官网内容

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
# 这个文件是一个示例
install #表示是安装系统
cdrom #安装方式,这里是通过光驱
lang en_US.UTF-8 #设置语言
keyboard us  #设置键盘
network --device eth0 --bootproto dhcp  #设置网络
rootpw 4a7YAZQ1nvUHI --iscrypted  #设置root密码,--iscrypted代表加密 --plaintext代表明文
firewall --service=ssh #指定ssh服务可以通过防火墙
authconfig --enableshadow --passalgo=sha512 --enablefingerprint #系统设置认证选项
selinux --enforcing #开启selinux
timezone --utc Asia/Shanghai #设置时区
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #引导装载程序
zerombr #在使用之前初始化的磁盘的系统中执行自动安装时需要这个命令。
#磁盘分区
clearpart --all --drives=sda
#EFIpart /boot/efi --fstype=efi --grow --maxsize=200 --size=20
part /boot --fstype=ext4 --size=500
part pv.raid01 --grow --size=1
volgroup VolGroup --pesize=4096 pv.raid01
logvol /home --fstype=ext4 --name=lv_home --vgname=VolGroup --grow --size=100
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1008 --maxsize=2016
text
reboot
#EFIbootloader --location=partition
#OPT-6key --skip
user --name=ocloud --password=4a7YAZQ1nvUHI --iscrypted --groups=wheel #添加用户
xconfig --startxonboot

#安装所需要的软件包,把自定义的安装包添加进去即可在安装系统时自定义的软件
%packages --ignoremissing
@base
@core
@debugging
@basic-desktop
@gnome-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@graphics
@input-methods
@java-platform
@legacy-x
@network-file-system-client
@performance
@perl-runtime
@print-client
@remote-desktop-clients
@server-platform
@virtualization
@virtualization-client
@virtualization-platform
@x11
authconfig
system-config-firewall-base
mtools
pax
python-dmidecode
oddjob
sgpio
genisoimage
wodim
abrt-gui
certmonger
pam_krb5
krb5-workstation
nscd
pam_ldap
nss-pam-ldapd
libXmu
perl-DBD-SQLite
python
gcc
make
kernel-devel
checkpolicy
selinux-policy-devel
%end

#安装完系统后,需要做什么事情请写在%post里面
%post
# Get interface up
ifdown eth0
ifup eth0
/usr/bin/chfn -f 'demo' demo
umount /dev/sr0
[ -e /tmp/sepolicy-devel.temp ] && rm /tmp/sepolicy-devel.temp
echo "..."
echo "setting network for openvswitch"
scriptsUrl="/etc/sysconfig/network-scripts"
if [ -e $scriptsUrl/ifcfg-eth0 ]
  then
    # disable NetworkManager
    systemctl disable NetworkManager

    # copy device  eth0 configure to ovs-br0
    cp $scriptsUrl/ifcfg-eth0 $scriptsUrl/ifcfg-br0

  else
    echo "device eth0 configure isn't exist,please check it!"
fi

sleep 2
reboot
%end

将kickstart文件保存为ks.cfg文件到~/customISO

  1. 修改安装启动信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[ocloud@centos-linux customISO]$ vi isolinux/isolinux.cfg
...
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 quiet
...

#将以上部分修改为以下内容,驱动进行安装
...
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.ks=cdrom:/ks.cfg
...

#使用USB进行安装修改为以下内容
...
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.ks=hd:LABEL=CentOSx207x20x86_64:/ks.cfg
...
  1. 制作CentOS7镜像文件
1
2
[ocloud@centos-linux customISO] mkisofs -o /tmp/CentOS-7-x86_64-demo.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 --boot-info-table -J -R -V "CentOS 7 x86_64" .
[ocloud@centos-linux customISO] isohybrid /tmp/CentOS-7-x86_64-demo.iso #使用mkisofs或genisoimage生成的ISO 9660镜像,以允许混合启动为CD-ROM或硬盘

USB启动盘制作

将U盘插入系统

格式化U盘分区

1
2
3
4
5
6
7
8
[ocloud@centos-linux ~]$ lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sdb                    8:16   1  14.3G  0 disk
└─sdb4                 8:20   1  14.3G  0 part #U盘分区
...
[ocloud@centos-linux ~]$ sudo mkfs.vfat -I /dev/sdb
mkfs.fat 3.0.20 (12 Jun 2013)

写入镜像

1
2
[ocloud@centos-linux ~]$ dd if=/tmp/CentOS-7-x86_64-demo.iso of=/dev/sdb
[ocloud@centos-linux ~]$ exit #退出后拔掉U盘即可

完成以上步骤后,即可生成一个自己定制的CentOS7的系统,更多详情请参考参考链接,如果本文有任何问题请发Email。

参考

kickstart

你可能感兴趣的:(婶婶说)