前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从 1 到 0 构建博客项目(2) -- 操作系统篇(2)--定制Centos

从 1 到 0 构建博客项目(2) -- 操作系统篇(2)--定制Centos

原创
作者头像
大大刺猬
修改2020-09-21 15:01:28
1.5K0
修改2020-09-21 15:01:28
举报
文章被收录于专栏:大大刺猬大大刺猬

安装系统这种事情做一次就够了,之后的就自动安装或者克隆之类的快得多。

1.基础概念

操作系统启动方式可以分为EFI/UEFI和BIOS.

BIOS是传统的,UEFI后诞生,扩展性好一点。

我们定制镜像得把这两种都包含进去。

2.定制Centos

redhat/oel同样适用。

2.1先看看官方镜像的结构:

代码语言:javascript
复制
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

2.1.2 创建目录并把官方的镜像复制过去。

由于Packages太大,可以只选择自己需要的包。

2.1.3配置isolinux.cfg

vim isolinux/isolinux.cfg修改如下内容

代码语言:javascript
复制
timeout 60  #设置超时6为秒,6秒后直接进入默认选择

并添加如下内容

代码语言:javascript
复制
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的内容也改为这个。

删除检查选项的默认(不删除的话,就不得行,只能有一个默认,当然你手选也行,但就没得定制镜像的意义了撒)

2.1.4 配置ks.cfg(不会的可以用图形化的: system-config-kickstart)

可以参考/root/anaconda-ks.cfg

vim isolinux/ks.cfg 内容如下

代码语言:javascript
复制
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

2.1.5 替换菜单界面的图片(可跳过,我只是觉得就一个黑框框太丑了)

名字可以不用改,要改的话,记得把isolinux.cfg里面设置的名字也改了

isolinux/splash.png #这张图片

2.2 配置EFI

vim EFI/BOOT/grub.cfg #编辑grub.cfg配置如下

代码语言:javascript
复制
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
        }
}

2.3 打包成ISO文件

用命令mkisofs或者genisoimage,反正是同一个命令

进入isolinux的父目录执行如下命令(结尾有个点哦),-o 指定放在/Centos78DDCW.iso

代码语言:javascript
复制
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 .
4.5GB太大了,可以剔除一些rpm包的
4.5GB太大了,可以剔除一些rpm包的

3.验证定制镜像

创建虚拟机过程就省略了

3.1 BIOS启动

直接开机走一波
直接开机走一波
那个乱码是我写的中文注释。。。。所以还是尽量写英文注释。这图片就是刚才替换的
那个乱码是我写的中文注释。。。。所以还是尽量写英文注释。这图片就是刚才替换的
看嘛,没得软盘,报错了卅。所以后面再定制镜像的时候,记得把那句注释掉
看嘛,没得软盘,报错了卅。所以后面再定制镜像的时候,记得把那句注释掉
启动安装程序中....
启动安装程序中....
开始自动分区
开始自动分区
分区完就自动安装所选的软件包了
分区完就自动安装所选的软件包了
安装完之后,就开始执行%post里面的内容了,我这里是配置yum源。
安装完之后,就开始执行%post里面的内容了,我这里是配置yum源。
登录检查没问题
登录检查没问题

3.2 UEFI启动

EFI勾上
EFI勾上
界面些许潦草。。。
界面些许潦草。。。
后面都是一样的了,我就不截图了哈
后面都是一样的了,我就不截图了哈

4.定制终端(可加入定制镜像):

主要设置的是PS1环境变量和一些其它操作,我觉得太麻烦就打成rpm包了。

代码语言:javascript
复制
export PS1='\t [\[\e[31;40m\]\u\[\e[0m\]@\h \[\e[36;40m\]\W\[\e[0m\]]\$'
还是比较好看的
还是比较好看的

5.升级openssh(可加入定制镜像)

手动升级太麻烦了,所以我就还是打包成rpm包,方便点。

这个rpm包其实是一个shell脚本加上源码包的。。。
这个rpm包其实是一个shell脚本加上源码包的。。。
没毛病...
没毛病...

6.定制yum源(附加)

createrepo

略....

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.基础概念
  • 2.定制Centos
    • 2.1先看看官方镜像的结构:
      • 2.1.2 创建目录并把官方的镜像复制过去。
      • 2.1.3配置isolinux.cfg
      • 2.1.4 配置ks.cfg(不会的可以用图形化的: system-config-kickstart)
      • 2.1.5 替换菜单界面的图片(可跳过,我只是觉得就一个黑框框太丑了)
    • 2.2 配置EFI
      • 2.3 打包成ISO文件
      • 3.验证定制镜像
        • 3.1 BIOS启动
          • 3.2 UEFI启动
          • 4.定制终端(可加入定制镜像):
          • 5.升级openssh(可加入定制镜像)
          • 6.定制yum源(附加)
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档