简单定制统信UOS镜像的方法

关于简单定制统信UOS镜像的方法

一:原因和目的

原因:由于目前统信的UOS系统装好之后第三方软件集成度较低,用户拿到手之后不能做到开箱即用,需要安装各类软件,用户体验不够友好。
目的:将需要预安装的软件或简单的执行脚本打包到镜像文件中,从而达到系统预装软件的效果,以节省时间和方便搭建系统环境,或可以直接给出项目的交付母盘等。

二:前期准备

需要提前准备好的主要有:
1.统信UOS原版镜像文件
2.需要预装的软件的deb包[ 由于统信UOS基于Debian,目前仅支持deb包的预安装]
3.需要预装的软件相关依赖包[ 由于只是简单定制,需要手动解决依赖关系。同理需要deb包]
4.用于制作镜像的PC,理论上可以使用windows(软碟通)制作但推荐在linux上操作,最好直接使用UOS进行制作,以方便对比安装效果
5.用于安装系统的U盘或光碟,以及制作启动盘的工具(rufus或软碟通等)

三:制作流程

方法一:纯文本操作

1.将镜像文件放在工作目录(桌面)
在这里插入图片描述

2.新建两个目录ori_iso、iso,其中ori_iso用于挂载原版镜像文件,iso用于存放定制镜像文件:

mkdir ori_iso iso

在这里插入图片描述

 由于统信UOS基于Debian,目前仅支持deb包的预安装
 由于只是简单定制,需要手动解决依赖关系。同理需要deb包

3.挂载原版镜像文件:

sudo mount xxx.iso ori_iso

在这里插入图片描述

4.并拷贝其中的文件到iso目录下:

cp -a ori_iso/* ori_iso/.disk* iso/

在这里插入图片描述

5.创建iso/oem/deb和iso/oem/hooks/in_chroot目录,并将所有deb包放入前者,将脚本放入后者。其中脚本必须以.job结尾

mkdir -p iso/oem/deb iso/oem/hooks/in_chroot

简单定制统信UOS镜像的方法_第1张图片

cp xxx/*.deb iso/oem/deb
cp xxx/*.job iso/oem/hooks/in_chroot

6.安装打包镜像工具xorriso

sudo apt-get install xorriso(CentOS: yum install xorriso)

简单定制统信UOS镜像的方法_第2张图片

7.将iso文件打包成iso镜像uos-new.iso

xorriso -as mkisofs -r -J -c boot.cat -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot --efi-boot boot/grub/efi.img -no-emul-boot \
-file_name_limit 250 \
-appid "UOS 20" -publisher "UOS " -V "UOS 20" \
-o  /root/20201207_arm_kms_3.iso  .

简单定制统信UOS镜像的方法_第3张图片

方法二:图形操作

1.将以下源添加到/etc/apt/sources.list[ 一行一个源,这里是两个源也就是两行]中

deb [trusted=true] http://shuttle.deepin.com/cache/repos/eagle/release-candidate/5Y2O 5Li6S2VsdmluVemhueebrg/ unstable main
deb-src [trusted=true] http://shuttle.deepin.com/cache/repos/eagle/release-candidate/5 Y2O5Li6S2VsdmluVemhueebrg/ unstable main

简单定制统信UOS镜像的方法_第4张图片

2.打开命令行更新源:

sudo apt update

简单定制统信UOS镜像的方法_第5张图片

3.打开命令行安装:

sudo apt install iso-customizer

简单定制统信UOS镜像的方法_第6张图片
*一行一个源,这里是两个源也就是两行 *

4.安装完成后,命令行输入:iso-customizer 打开工具
在这里插入图片描述

5.【选择ISO】点击…按钮,选择原版UOS镜像文件,点击下一步
简单定制统信UOS镜像的方法_第7张图片

6.【选择架构】选择ARM架构,点击下一步
简单定制统信UOS镜像的方法_第8张图片

7.【程序配置】选择需要添加的所有deb包,点击下一步
简单定制统信UOS镜像的方法_第9张图片

8.【前期准备】选择要添加的脚本文件(以.job结尾),没有则跳过,点击下一步
简单定制统信UOS镜像的方法_第10张图片

9.【中期安装】选择要添加的脚本文件[ 将预装软件的快捷方式放置在桌面的脚本,需要放在【中期安装】这一步](以.job结尾),没有则跳过,点击下一步,图略
10.【后期清理】选择要添加的脚本文件(以.job结尾),没有则跳过,点击下一步,图略
11.【选择Kernel[ 其中kernel为任意文件,initrd必须为.lz后缀结尾]】默认使用原版内核,这一步可跳过,点击下一步
简单定制统信UOS镜像的方法_第11张图片

 将预装软件的快捷方式放置在桌面的脚本,需要放在【中期安装】这一步
 其中kernel为任意文件,initrd必须为.lz后缀结尾

12.【输出】输出界面,点击下一步,开始制作
简单定制统信UOS镜像的方法_第12张图片

13.制作完成后镜像文件会放置在桌面上,点击查看文件,生成的新ISO名为:new-原ISO名字-时间.iso

简单定制统信UOS镜像的方法_第13张图片

四:简单脚本示范

#!/bin/bash
#
#Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
#Copy desktop files to user skeleton folder.
# Do this before creating any users.
#for normal apps
DESK_APPS_ARR=('FoxitOfficeSuite' 'isignature' 'qq' 'cn.suwell.reader'  'com.yozosoft.yozo' 'uos-browser')
for DESK_APP_ITEM in ${DESK_APPS_ARR[@]}; do
msg "Copy app icon to desktop: ${DESK_APP_ITEM}"
if [ -f /usr/share/applications/${DESK_APP_ITEM}.desktop ]; then
install -v -Dm644 /usr/share/applications/${DESK_APP_ITEM}.desktop /etc/skel/Desktop/
else
warn "Desktop file not found: ${DESK_APP_ITEM}"
fi
done
#for wps family
install -v -Dm644 /opt/apps/cn.wps.wps-office/entries/applications/wps-office-wps-aarch64.desktop /etc/skel/Desktop/
install -v -Dm644 /opt/apps/cn.wps.wps-office/entries/applications/wps-office-wpp-aarch64.desktop /etc/skel/Desktop/
install -v -Dm644 /opt/apps/cn.wps.wps-office/entries/applications/wps-office-prometheus.desktop /etc/skel/Desktop/
install -v -Dm644 /opt/apps/cn.wps.wps-office/entries/applications/wps-office-et-aarch64.desktop /etc/skel/Desktop/
#for 360 family
install -v -Dm644 /opt/apps/cn.360.360player/entries/applications/cn.360.360player.desktop /etc/skel/Desktop/
install -v -Dm644 /opt/apps/com.360.epp/entries/applications/com.360.epp.desktop /etc/skel/Desktop/
install -v -Dm644 /opt/apps/com.qihoo.360safe/entries/applications/com.qihoo.360safe.desktop /etc/skel/Desktop/
install -v -Dm644 /opt/apps/com.qihoo.360zip/entries/applications/com.qihoo.360zip.desktop /etc/skel/Desktop/
return 0

注意:以上是将需要的.desktop(快捷方式)放到桌面,该脚本应放在方式二的【中期处理】中,或方式一的iso/oem/hooks/in_chroot/目录下

五:细节问题

1.两种制作方式的区别

两种制作方式并无本质区别,但需要注意的是,方式二中【前期准备】【中期安装】【后期清理】分别对应方式一中的iso/oem/hooks/before_chroot[ 存疑,待检验]、iso/oem/hooks/in_chroot、iso/oem/hooks/after_chroot目录,如果脚本放错地方可能会导致脚本未能执行或失效,但可以临时修改路径解决。

2.关于如何获取deb包,以及所依赖的deb包

关于预装软件的deb包,推荐使用UOS自带的应用商店缓存,可以先关闭“自动清除缓存”功能,然后在应用商店安装后,在/var/cache/apt/archives中寻找对应的deb包并拷贝出来。但如果应用商店没有的应用,通过其他方式获得deb包后通过这种方式安装的话,大概率会导致应用无法正常启动,但进入开发者模式后能正常启动。
关于预装软件依赖的deb包,由于不管是用应用商店还是apt-get都会自动解决依赖关系,即便收集了所有依赖关系,一个个寻找deb包并测试也是特别繁琐的事情,所以只推荐这种方式:先做一个只含预装软件deb包但不含依赖的镜像[ 理论上,也可以不做镜像而是用dpkg -i单独安装deb包,再让apt-get修复依赖关系,但需要保证修复前没有装任何依赖包,也就是系统足够干净],安装之后[ 这个镜像由于依赖关系被破坏,所以应用商店无法正常使用]在命令行输入:sudo apt-get -f -y install让apt-get自动修复依赖关系,然后依赖的deb包缓存同理也会在/var/cache/apt/archives中,将其全部拷贝出来即可。

3.关于如何寻找快捷方式的位置

这个问题的核心在于并不知道快捷方式具体的文件名,因为桌面显示的名字并不是快捷方式的文件名。(会根据系统语言自动变更显示的名字)
方法一:快捷方式一般放在/usr/share/applications/目录下,以.desktop结尾,当文件太多时可以尝试使用ls -l | grep -i 文件名开头 来尝试寻找。如果实在找不到,说明可能不在这个目录下,可以尝试方法二
方法二:在开始菜单中,将快捷方式右键发送到桌面上,再在终端中查看对应的快捷方式的文件名,再通过find / -name “*文件名[ 用-name搜索的是全路径,所以需要在文件名前加*号表示匹配任意开头]” -type f`来寻找

4.安装系统失败的原因

制作完镜像后,如果安装失败,大概率的原因是脚本问题。如果deb包有问题的话只会装不上对应软件但系统能正常安装,但脚本的话会在系统安装最后报错。对于脚本问题,除了逐行检查语法之外,也可以尝试直接在系统上执行。但有一个很隐蔽的问题需要注意:windows下保存的文本文件和linux下保存的文本文件在行尾换行处有字符级别的区别,windows行尾是(\r\n),linux的行尾是(\n),可以通过:cat -A filename.job查看,如果行尾有^M则表示带有\r字符,需要用sed -i “s/\r$//” filename.job将\r删掉。

 理论上,也可以不做镜像而是用dpkg -i单独安装deb包,再让apt-get修复依赖关系,但需要保证修复前没有装任何依赖包,也就是系统足够干净
 这个镜像由于依赖关系被破坏,所以应用商店无法正常使用
 用-name搜索的是全路径,所以需要在文件名前加*号表示匹配任意开头

你可能感兴趣的:(国产操作系统,国产,操作系统,统信操作系统,镜像,linux)