网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
一:原因和目的
原因:由于目前统信的UOS系统装好之后第三方软件集成度较低,用户拿到手之后不能做到开箱即用,需要安装各类软件,用户体验不够友好。
目的:将需要预安装的软件或简单的执行脚本打包到镜像文件中,从而达到系统预装软件的效果,以节省时间和方便搭建系统环境,或可以直接给出项目的交付母盘等。
二:前期准备
需要提前准备好的主要有:
1.统信UOS原版镜像文件
2.需要预装的软件的deb包[ 由于统信UOS基于Debian,目前仅支持deb包的预安装]
3.需要预装的软件相关依赖包[ 由于只是简单定制,需要手动解决依赖关系。同理需要deb包]
4.用于制作镜像的PC,理论上可以使用windows(软碟通)制作但推荐在linux上操作,最好直接使用UOS进行制作,以方便对比安装效果
5.用于安装系统的U盘或光碟,以及制作启动盘的工具(rufus或软碟通等)
方法:图形操作
1.将以下源添加到/etc/apt/sources.list[ 一行一个源,这里是两个源也就是两行]中
1. 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
2. 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
2.打开命令行更新源:
sudo apt update
3.打开命令行安装:
sudo apt install iso-customizer
*一行一个源,这里是两个源也就是两行 *
4.安装完成后,命令行输入:iso-customizer 打开工具
5.【选择ISO】点击…按钮,选择原版UOS镜像文件,点击下一步
6.【选择架构】选择ARM架构,点击下一步
7.【程序配置】选择需要添加的所有deb包,点击下一步
8.【前期准备】选择要添加的脚本文件(以.job结尾),没有则跳过,点击下一步
9.【中期安装】选择要添加的脚本文件[ 将预装软件的快捷方式放置在桌面的脚本,需要放在【中期安装】这一步](以.job结尾),没有则跳过,点击下一步,图略
10.【后期清理】选择要添加的脚本文件(以.job结尾),没有则跳过,点击下一步,图略
11.【选择Kernel[ 其中kernel为任意文件,initrd必须为.lz后缀结尾]】默认使用原版内核,这一步可跳过,点击下一步
*将预装软件的快捷方式放置在桌面的脚本,需要放在【中期安装】这一步
*其中kernel为任意文件,initrd必须为.lz后缀结尾
12.【输出】输出界面,点击下一步,开始制作
13.制作完成后镜像文件会放置在桌面上,点击查看文件,生成的新ISO名为:new-原ISO名字-时间.iso
#!/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 <http://www.gnu.org/licenses/>.
#
#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行尾是<CR><LF>(\r\n),linux的行尾是<LF>(\n),可以通过:cat -A filename.job查看,如果行尾有^M则表示带有\r字符,需要用sed -i “s/\r$//” filename.job将\r删掉。
1.理论上,也可以不做镜像而是用dpkg -i单独安装deb包,再让apt-get修复依赖关系,但需要保证修复前没有装任何依赖包,也就是系统足够干净
2.这个镜像由于依赖关系被破坏,所以应用商店无法正常使用
3.用-name搜索的是全路径,所以需要在文件名前加*号表示匹配任意开头
定制统信UOS镜像的方法主要包括以下步骤:
准备原版统信UOS镜像文件,确保其完整性和可用性。
创建一个新的目录,用于存放定制后的镜像文件。
将原版统信UOS镜像文件挂载到新的目录中,以便进行操作。
进入挂载目录,复制其中的文件和目录到新创建的目录中。
根据需要定制镜像文件,例如添加或删除软件包、配置文件等。
安装必要的工具和依赖项,以便进行镜像文件的封装和制作。
使用统信UOS提供的工具或第三方工具将定制后的文件系统制作成镜像文件。
对镜像文件进行测试和验证,确保其功能和稳定性。
根据需要发布和分发镜像文件,例如上传到官方网站、云平台等。
需要注意的是,在定制统信UOS镜像时,需要遵循官方的规范和标准,以确保镜像文件的兼容性和稳定性。同时,由于操作系统定制涉及到系统安全和稳定性等方面的问题,建议在专业人员的指导下进行操作,并确保对系统进行备份和恢复操作。
定制统信UOS镜像的方法可以参考以下步骤:
|
mkdir /mnt/uos20old |
|
mount -o loop ~/Downloads/UOS_Home_22.0.iso /mnt/uos20old/ |
|
mkdir /mnt/uos20new |
|
rsync -av /mnt/uos20old/ /mnt/uos20new/ |
|
mkdir /mnt/uos20new/oem/deb |
|
cp xxx.deb /mnt/uos20new/oem/deb/ |
|
sudo apt-get install xorriso |
|
|
|
xorriso -as mkisofs -D -r -V"UOS 20" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot --efi-boot boot/efi.img -input-charset utf-8 -o uos-20-home-amd64.iso /mnt/uos20new/ |
|
cd /mnt |
|
chmod +x build-iso.sh |
|
./build-iso.sh |
等待脚本执行完成,即可获得定制后的UOS镜像文件。请注意,上述步骤仅为参考,实际操作中可能需要根据具体情况进行调整和修改。此外,制作定制的操作系统镜像涉及多个步骤和组件的配置,因此需要具备一定的Linux系统管理经验和知识。
添加我为好友,拉您入交流群!
请使用微信扫一扫!