重新封装ubuntu并完善安装和启动方式

将以live permanent方式安装的ubuntu的casper-rw和原系统封装成新的filesystem.squashfs文件,并完善其安装和启动的方式,以适应多种平台

背景

  • ubuntu live 系统可将用户试用ubuntu时所作的修改保存在卷标为casper-rw的分区,并在下次启动读取。其原理是unionfs文件系统的overlay方式。
  • unetbootin、YUMI等软件可将上述所需的casper-rw分区以一个固定大小的文件保存,并在启动ubuntu时自动挂载。但此文件只能保存到Fat32分区。
  • 当用户删除原试用系统中的软件时,删除掉的文件仍然占用着空间。并且新加入和更新的文件以不压缩的形式保存在casper-rw文件中。

目标

  • 将casper-rw中保存的修改合并到filesystem.squashfs文件中,使新加入的文件以SquashFS的高效压缩的形式整合到系统中,使删除掉的文件从系统中消失,不再占用空间。
  • 完善YUMI等软件创建USB启动系统的方式,使其适应更多机器环境,既能携带在U盘中,也可以放置在本地的高速硬盘中。

技术文档

封装系统为filesystem.squashfs

以unetbootin安装方式为例。

以下命令所在目录和casper-rw文件同目录,如果是unetbootin安装的,即是所安装的磁盘的根目录

1、挂载casper-rw和filesystem.squashfs。

# mkdir /tmp/rw /tmp/ro
# mount casper-rw /tmp/rw
# mount casper/filesystem.squashfs /tmp/ro

2、合并挂载overlay

# mkdir /tmp/merged
# mount -t overlay overlay -olowerdir=/tmp/ro,upperdir=/tmp/rw/upper,workdir=/tmp/rw/work /tmp/merged

3、封装到新的filesystem.squashfs
(执行此命令前请确保所在文件夹里没有原来的filesystem.squashfs文件)

# mksquashfs /tmp/merged filesystem.squashfs

4、清空casper-rw并替换filesystem.squashfs

# rm -rf /tmp/rw/*
# umount /tmp/rw
# umount /tmp/ro
# mv filesystem.squashfs casper/filesystem.squashfs

打包ISO

以下是一行命令,在光盘文件夹下执行,得到的ISO文件在上一级目录

# mkisofs -D -r -V "Ubuntu LJ 16.04.1" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../LJ1.0.iso .

任务

阶段一

  • 调整用户账户等系统设置
  • 卸载不必要的自带程序
  • 执行程序更新(upgrade)
  • 完成一次封装,即得到纯净版系统

阶段二

  • 根据不同的需求定制系统
  • 熟悉定制流程
  • 以程序员中文版为注,定制病封装得到ISO文件。

阶段三

  • 完善安装和启动方式,适应多平台

记录

已卸载程序列表(不包括自动卸载的依赖)

activity-log-manager, aisleriot, unity-webapps-common, gnome-calendar, 
deja-dup, cheese, ubuntu-desktop, checkbox-converged, checkbox-gui, 
gnome-mahjongg, gnome-mines, unity-control-center-signon, 
system-config-printer-gnome, rhythmbox-plugins, rhythmbox-plugin-zeitgeist, 
rhythmbox, gnome-sudoku, xterm, gnome-system-log, libreoffice*, 
thunderbird*, gnome-orca, shotwell-common, shotwell, simple-scan, 
gucharmap, gnome-calculator, unity-scope-calculator, gnome-screensaver, 
gnome-accessibility-themes, mozc-*, transmission-*, xdiagnose

封装时遇到的问题:

  • 封装的ISO出现碎片过多
  • 更新的内核在ISO中启动失败,在USB中启动成功
  • Nautilus和Software center异常

解决方法:

  • 封装ISO时使用最新的16.04.1的安装盘
  • 卸载Software center

程序员中文版所做的修改

  • 安装搜狗拼音输入法
  • 关闭自动检查更新
  • 安装sublime
  • 修改浏览器主页和、搜索引擎

成果

Ubuntu中文版(基于16.04.1)
http://pan.baidu.com/s/1boPNHaZ

Ubuntu-Mate中文版(基于16.04.1)
http://pan.baidu.com/s/1gfz7vVX