创建具有持久化存储的Live Ubuntu U盘

如果只是简单将 .iso 文件转换成 USB安装盘,则可以参考 3 Easy Ways To Create Bootable USB Media From ISO In Ubuntu Linux,在Ubuntu平台,有专门的工具可以做这个转换。其中比较简单的工具是 Startup Disk Creator 可以通过以下命令安装:

sudo apt install usb-creator-gtk

mkusb工具

mkusb - tool to create boot drives是一个易于使用的clone iso镜像或压缩镜像文件到U盘的工具。底层使用dd工具,目标设备是固态存储设备,通常时USB设备。

这个工具提供了一种将iso文件clone到存储设备并使之能够作为启动设备,提供一种混合iso文件。

注意:目标设备的数据会被完全抹去!!!

  • 添加mkusb PPA

对于标准Ubuntu发行版,需要添加universe软件仓库,不过Kubuntu,Lubuntu...Xubuntu都已经默认激活,可以忽略这步:

sudo add-apt-repository universe  # only for standard Ubuntu

以下是安装过程

sudo add-apt-repository ppa:mkusb/ppa  # and press Enter
sudo apt-get update
sudo apt-get install mkusb mkusb-nox usb-pack-efi

使用mkusb

当前mkusb工具已经改进成名为dus系列工具:

  • dus-live - clone标准模式,适合所有hybrid iso文件

  • dus-persistent - 创建持久化live驱动设备,具备一个casper-rw分区用于数据持久化。这个方法只在Debian Jessie和当前的Ubuntu版本测试过,对其他linux发行版可能不能工作。设备可以同时使用UEFI和BIOS模式启动。

  • dus也可以创建Windows 7-10的启动安装U盘

  • dus-wipe 擦除设备

不过,使用guidus比较方便:

guidus xubuntu-16.04.3-desktop-amd64.iso

当传递ISO文件作为参数的时候,dus就会提供一个选项p,也就时Persistent live。如果没有任何参数,这个选项会看不到。

dus是如何实现存储持久化的?

最初我以为dus只是在iso镜像中添加了一些挂载分区和软链接功能方便从LiveCD启动后保存一些文件。实际上,dus非常巧妙地采用了和Docker一样的层次化文件系统AUFS,这样底层的ISO文件系统是只读的,上层文件系统是U盘中可读写分区:

Filesystem      Size  Used Avail Use% Mounted on
udev            1.8G     0  1.8G   0% /dev
tmpfs           370M  6.0M  364M   2% /run
/dev/sdb4       1.3G  1.3G     0 100% /cdrom
/dev/loop0      1.2G  1.2G     0 100% /rofs
aufs            108G  206M  103G   1% /
tmpfs           1.9G  164K  1.9G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs           1.9G  8.0K  1.9G   1% /tmp
tmpfs           370M   36K  370M   1% /run/user/999

这样启动后就可以直接在Live环境读写,并且可以安装软件修改配置,所有的系统修改在下次重启后依然存在。几乎就可以认为是一个完整的操作系统了,非常方便做一些定制修改(例如安装一个openssh-server方便远程登录操作),以便能够重复使用作为安装U盘。

以上测试在MacBook Air上构建Xubuntu 16.04.3 LTS版本LiveCD persistent模式成功,非常赞!

软件更新

在使用U盘运行Ubuntu时候,执行apt update更新软件会有以下报错信息:

** (appstreamcli:4638): CRITICAL **: Error while moving old database out of the way.
AppStream cache update failed.

参考 Unable to 'apt-get dist-upgrade' on a persistent Ubuntu 16.04 USB

sudo chmod -R a+rX,u+w /var/cache/app-info/xapian/default

然后就可以执行软件更新。

不过,不建议升级Live persistent USB stick系统(因为太多更新软件包可能导致问题),而是建议直接将Ubuntu安装到U盘来实现稳定的U盘启动Ubuntu。

其他

LinuxLive USB Creator是非常有用的Linux Live USB工具 -- 和常用的LiveCD不同的是,创建U盘启动不仅是安装盘,同时也提供了持久化的存储空间,以便能够通过Live方式启动主机,同时保存数据。

这个工具是Windows平台工具,开源。不过,我没有尝试过。

参考

Last updated