目录
- 1. 下载镜像
 - 2. 挂载镜像
 - 3. 安装制作发行版的工具
 - 4. 同步光盘文件到制作ISO的目录
 - 5. 拷贝已安装rpm
 - 6. 查找不存在的rpm,写入no_exist_rpms
 - 7. 下载no_exist_rpms.txt中的所有依赖包
 - 8. 修改 isolinux.cfg 文件
 - 9. 修改自动化安装配置文件
 - 10. 制作修改noraml文件
 - 11. 在指定的环境中添加定制的groupid
 - 12. 生成新的 repodata 数据
 - 13. 制作ISO镜像
 - 14. 制作镜像MD5值
 - 15. 系统启动时按e进入配置,修改启动配置
 
1. 下载镜像
从官网下载发行版 https://repo.openeuler.org/openEuler-22.03-LTS/ISO/
2. 挂载镜像
将openEuler-22.03-LTS-SP2-x86_64.iso镜像上传到openEuler系统或者centos系统的/root/目录下,并将其挂载到 /media 目录中
mount /root/openEuler-22.03-LTS-SP2-x86_64.iso /media
 
3. 安装制作发行版的工具
yum -y install createrepo genisoimage isomd5sum rsync
 
4. 同步光盘文件到制作ISO的目录
同步/media下的文件到/ISO路径下,除了Packages和repodata文件夹
/usr/bin/rsync -a --exclude=Packages/ --exclude=repodata/ /media/ /ISO/
 
在/ISO/文件夹下新建Packages和repodata文件夹
mkdir -p /ISO/{Packages,repodata}
 
5. 拷贝已安装rpm
生成install.log
rpm -qa >> /root/install.log
awk '{print $0}'  /root/install.log |xargs -i cp /media/Packages/{}.rpm /ISO/Packages/
 
6. 查找不存在的rpm,写入no_exist_rpms
awk '{print $0}'  /root/install.log |xargs -i ls /ISO/Packages/{}.rpm > no_exist_rpms.txt
 
7. 下载no_exist_rpms.txt中的所有依赖包
#!/bin/sh   
for line in `cat /root/no_exist_rpms.txt`
    do
       echo "download file>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>and it's denpendies:"$line
       yum install -y --downloadonly --downloaddir=/ISO/Packages/ $line
    done
 
8. 修改 isolinux.cfg 文件
vi /ISO/isolinux/isolinux.cfg
 
将
append initrd=initrd.img inst.stage2=hd:LABEL=openEuler-22.03-LTS-SP2-x86_64 quiet
 
修改为:
append initrd=initrd.img inst.stage2=hd:LABEL=openEuler-22.03-LTS-SP2-x86_64 inst.ks=hd:LABEL=openEuler-22.03-LTS-SP2-x86_64:/isolinux/ks.cfg quiet
 
inst.ks为ks.cfg文件位置;
 inst.stage2为安装介质位置,
 hd:LABEL为介质标签,openEuler-22.03-LTS-SP2-x86_64。这个和后续生成ISO镜像文件的命令genisoimage的参数-V有关。 最好是把所有hd:LABEL后面的值都替换为一个后面会用到的字符串,openEuler-22.03-LTS-SP2-x86_64
9. 修改自动化安装配置文件
第一次手动安装系统完成后,安装程序中的所有选择都会保存到名为 anaconda-ks.cfg 的文件中,该文件位于所安装系统的 /root/ 目录下。然后可以复制这个文件,根据需要进行修改,并在以后的安装中使用得到的配置文件。
cp /root/anaconda-ks.cfg /ISO/isolinux/ks.cfg
 
在%packages与%end中间加入需要自定义安装的包组
安装所需要的软件包,把自定义的安装包添加进去即可在安装系统时自定义的软件,如:@my-des
%packages
@^web-server-environment
@base
@core
@java-platform
@python-web
@web-server
kexec-tools
@my-des
%end
 
自定义包组的 groupid 就是定义在 /repodata/normal.xml 文件中的 group
10. 制作修改noraml文件
进入/ISO目录,将*normal.xml文件拷贝到/ISO/repodata路径下,并重命名成normal.xml。在该路径下只会存在一个该名称的xml文件。
cp /media/repodata/*-noraml.xml  /ISO/repodata/normal.xml
 
编辑normal文件 添加定制rpm包
<group>
    <id>my-des</id>
    <name>My Dependencies</name>
    <default>true</default>
    <uservisible>true</uservisible> # 这个值为true,在安装界面才能看到,否则不可见
    <packagelist>
        <packagereq type="default">python-webob</packagereq>
        ......
    </packagelist>
</group>
 
根据 no_exist_rpms.txt 拼接packagelist
 注意:首先需要处理一下no_exist_rpms.txt 文件,将每个rpm包的名字后边的版本等信息去掉
 如:libv4l-1.14.2-6.oe2203sp2.x86_64,处理后为:libv4l
 可以使用sublime 正则表达式-[0-9].*替换掉后边的版本信息
#!/bin/sh
for line in `cat no_exist_rpms.txt`
do
    echo " <packagereq type=\"default\">"$line"</packagereq>" >> /root/package.txt
done
 
11. 在指定的环境中添加定制的groupid
<environment>
    <id>web-server-environment</id>
    <name>Basic Web Server</name>
    <description>Server for serving static and dynamic internet content. </description>
    <display_order>30</display_order>
    <grouplist>
      <groupid>base</groupid>
      <groupid>core</groupid>
      <groupid>web-server</groupid>
      <groupid>my-des</groupid>
    </grouplist>
</environment>
 
如果不再指定环境中添加,也就是 environment 的节点中添加新定义的 groupid,在系统安装界面就会提示 group 未定义的错误。
12. 生成新的 repodata 数据
切换到ISO/路径下,由normal.xml生成repodata包。注意当有新包加入,或者更新normal.xml文件,均需要重新生成repodata文件夹
createrepo -g repodata/normal.xml ./
 
13. 制作ISO镜像
注意参数中的-V,和上面的isolinux.cfg文件有关
cd /ISO
genisoimage -joliet-long -V openEuler-22.03-LTS-SP2-x86_64 -o openEuler-22.03.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot -e images/efiboot.img -no-emul-boot /ISO
 
选项 -V openEuler-22.03-LTS-SP2-x86_64 就是上面提及的 inst.stage2=hd:LABEL=openEuler-22.03-LTS-SP2-x86_64,如果是带有空格的,那就加上双引号,比如 -V “CentOS 7 x86_64”
14. 制作镜像MD5值
implantisomd5 /ISO/openEuler-22.03-LTS-SP2-x86_64.iso
 
15. 系统启动时按e进入配置,修改启动配置

append initrd=initrd.img inst.stage2=hd:LABEL=openEuler-2 ks=hd:LABEL=openEuler-2:/isolinux/ks.cfg  quiet
 
注意:openEuler-2为U盘盘符标签
















![java八股文面试[数据库]——MySql聚簇索引和非聚簇索引区别](https://img-blog.csdnimg.cn/img_convert/7fb4dad9bb8a7391ef84b07cf667ef4a.png)


