安装系统这种事情做一次就够了,之后的就自动安装或者克隆之类的快得多。
操作系统启动方式可以分为EFI/UEFI和BIOS.
BIOS是传统的,UEFI后诞生,扩展性好一点。
我们定制镜像得把这两种都包含进去。
redhat/oel同样适用。
EFI #EIF启动就得配置这个
EULA
GPL
images #镜像
isolinux #安装程序的信息
LiveOS
Packages #rpm包
repodata #包组信息,yum也需要用这个的,可以用createrepo自动创建
RPM-GPG-KEY-CentOS-7
RPM-GPG-KEY-CentOS-Testing-7
TRANS.TBL
由于Packages太大,可以只选择自己需要的包。
vim isolinux/isolinux.cfg修改如下内容
timeout 60 #设置超时6为秒,6秒后直接进入默认选择
并添加如下内容
label autoInstalllinux #标签名。默认只有安装和检查
menu label ^Auto install OEL78 by DDCW #菜单名。
kernel vmlinuz
menu default #设置为默认, 并把检查的这个默认去掉
append initrd=initrd.img inst.stage2=hd:LABEL=Centos78DDCW inst.ks=cdrom:/isolinux/ks.cfg quiet
#inst.stage2=hd:LABEL=Centos78DDCW #记住这个名字,打包成镜像的时候-V指定的就是这个名字
# inst.ks=cdrom:/isolinux/ks.cfg #如果是PXE的话,就行网络连接ftp/http之类的
#可以把原来的安装和检查的append的内容也改为这个。
删除检查选项的默认(不删除的话,就不得行,只能有一个默认,当然你手选也行,但就没得定制镜像的意义了撒)
可以参考/root/anaconda-ks.cfg
vim isolinux/ks.cfg 内容如下
auth --enableshadow --passalgo=sha512 #加密方式sha512
cdrom #光盘安装
text #字符安装,默认是图形化的
reboot #安装完要重启
firstboot --enable
ignoredisk --only-use=sda #只用第一块盘
keyboard --vckeymap=us --xlayouts='us' #设置键盘
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8 #设置语言为英文,并添加中文支持
network --bootproto=dhcp --device=ens32 --onboot=yes #网卡配置
network --hostname=ddcw #主机名
# Root password
#root密码为Ddcw@123. 不建议写明文
rootpw --iscrypted $6$jUSlp0oJSb3qDBLD$iN39gSuUvvKe6MupwHohdeEE368.UMeILf1z9hY4r6Ozw9xzdc7aWWwhesdepmRZpmq2n7RLLzlc8D866UTi/0
# System services
services --disabled="chronyd"
# System timezone
#时区为上海,不要NTP
timezone Asia/Shanghai --nontp
# System bootloader configuration
#启动方式为mb
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
#清除所有盘,没得的话,安装过系统的盘就无法使用
clearpart --all --initlabel
#分区信息
autopart --type=lvm #就自动分区吧。
#默认单位为MB
#part /boot --fstype="xfs" --ondisk=sda --size=512
#part pv.380 --fstype="lvmpv" --ondisk=sda --size=50000 #大概50GB,我也不想去弄那么精确的了.....
#part /boot/efi --fstype="efi" --ondisk=sda --size=256 --fsoptions="umask=0077,shortname=winnt"
#volgroup vg01 --pesize=4096 pv.380
#logvol /var --fstype="xfs" --size=4096 --name=var --vgname=vg01
#logvol /usr --fstype="xfs" --size=4096 --name=usr --vgname=vg01
#logvol /opt --fstype="xfs" --size=4096 --name=opt --vgname=vg01
#logvol / --fstype="xfs" --size=16384 --name=root --vgname=vg01
#logvol swap --fstype="swap" --size=8192 --name=swap --vgname=vg01
#logvol /home --fstype="xfs" --size=8192 --name=home --vgname=vg01
#要安装的软件,@开头的是包组
%packages
@^minimal
@compat-libraries
@core
@system-admin-tools
%end
#安装后执行的程序,比如配置个yum啊之类的
%post
cat >> /etc/yum.repos.d/base.repo << eof
[os]
name=QingHuaDaXueYumYuan
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/7.8.2003/os/x86_64/
enabled=1
gpgcheck=0
eof
%end
#禁用kdump
%addon com_redhat_kdump --disable --reserve-mb='auto'
%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
名字可以不用改,要改的话,记得把isolinux.cfg里面设置的名字也改了
isolinux/splash.png #这张图片
vim EFI/BOOT/grub.cfg #编辑grub.cfg配置如下
set default="0" #设置默认为第一个选项,这个就是数组的下标,得从0开始算
function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod all_video
}
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=6 #设置超时为6秒, 这个单位是秒哦,注意和isolinux.cfg里面的1/10秒不一样
### END /etc/grub.d/00_header ###
#这个可以禁用了,反正现在也没得软盘了,不禁用的话,安装的时候有个警告,但是不影响
search --no-floppy --set=root -l 'CentOS 7 x86_64'
### BEGIN /etc/grub.d/10_linux ###
#默认也只要安装和检查,我们自己加一个自动安装的
menuentry 'Centos78 AUTO INSTALL BY DDCW' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Centos78DDCW inst.ks=cdrom:/isolinux/ks.cfg quiet
initrdefi /images/pxeboot/initrd.img
#这些参数和isolinux.cfg是一样的,就不解释了
}
menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Centos78DDCW quiet
initrdefi /images/pxeboot/initrd.img
}
menuentry 'Test this media & install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Centos78DDCW rd.live.check quiet
initrdefi /images/pxeboot/initrd.img
}
submenu 'Troubleshooting -->' {
menuentry 'Install CentOS 7 in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABELCentos78DDCW xdriver=vesa nomodeset quiet
initrdefi /images/pxeboot/initrd.img
}
menuentry 'Rescue a CentOS system' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Centos78DDCW rescue quiet
initrdefi /images/pxeboot/initrd.img
}
}
用命令mkisofs或者genisoimage,反正是同一个命令
进入isolinux的父目录执行如下命令(结尾有个点哦),-o 指定放在/Centos78DDCW.iso
genisoimage -v -cache-inodes -joliet-long -R -J -T -V Centos78DDCW -o /Centos78DDCW.iso \
-c isolinux/boot.cat -bisolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot -b images/efiboot.img -no-emul-boot .
创建虚拟机过程就省略了
主要设置的是PS1环境变量和一些其它操作,我觉得太麻烦就打成rpm包了。
export PS1='\t [\[\e[31;40m\]\u\[\e[0m\]@\h \[\e[36;40m\]\W\[\e[0m\]]\$'
手动升级太麻烦了,所以我就还是打包成rpm包,方便点。
createrepo
略....
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。