一、安装systemback
先添加软件源。如果直接sudo add-apt-repository ppa:nemh/systemback
的话,能看到提示:
于是参考这里的方式安装:
sudo add-apt-repository --remove ppa:nemh/systemback
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 382003C2C8B7B4AB813E915B14E4942973C62A1B
sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main"
sudo apt update
sudo apt install systemback
密钥可以在这里看到。
二、使用systemback制作镜像
启动systemback,登录之后界面如下:
点击Live system create
,进入系统镜像的制作。
其中Working directory
指的是systemback生成系统镜像的位置,所以要保证有足够大的空间。
把Include the user data files
勾选上,这样自己主文件夹内的文件都会被包含在系统镜像中。
点击Create new
开始镜像制作,耐心等待即可。(发现在镜像制作的过程中会影响网络。)
制作完成后能在右上角看到结果文件,这个时候文件格式是.sblive
。
三、制作系统启动盘
一般制作系统启动盘的方法,是将iso文件刻录到U盘中。
对于小于4GB的.sblive
文件,在右上方选中创建好的image,直接点击Convert to ISO
即可。对于大于4GB的.sblive
文件,Convert to ISO
按键是暗的,无法直接转换。在这里尝试过网上普遍提到的:解压sblive,使用其他工具转换成iso,再刻录进U盘的方法。这种方法最终失败了,详细过程记录在后面。
成功的方法如下:
创建好大于4GB的.sblive
文件之后,插入有足够空间的U盘,点击绿色的刷新按钮,会在左下方的Write target
看到插入的U盘,选中之后,点击右下方的Write to target
,将image写入U盘中。
等待写入完成,系统启动盘就做好了。
四、在新的电脑上安装系统
将制作好的系统启动盘插入新电脑,并在开机的时候选择从U盘启动,进入系统安装界面。
出现上述界面之后,选择第二个Boot system installer
,开始系统安装。根据提示进行即可,登录镜像的系统,输入新系统的用户名和密码等等,然后是系统的分区。
这是原始的分区。/dev/sda
是电脑的硬盘,/dev/sdb
是插入的启动盘。
把原来的分区删掉,修改分区如下(仅供参考):
注意一定要挂载/boot/efi
,这样下面的Install GRUB 2 bootloader
才会出现EFI的选项。还要勾选Transfer user configuration and data files
。
点击Next
等待系统安装即可,安装完毕之后会提示重启电脑。
五、创建iso时坑的记录
回到iso的创建。通过其他方法将大于4GB的.sblive
文件转成iso:
解压sblive文件
mkdir sblive
tar -xf /home/arthur.sblive -C sblive
重命名syslinux至isolinux:
mv sblive/syslinux/syslinux.cfg sblive/syslinux/isolinux.cfg
mv sblive/syslinux sblive/isolinux
安装cdtools
在这里下载cdtools的安装包。
tar -xzvf cdrtools-3.02a07.tar.gz
cd cdrtools-3.02
make
sudo make install
生成ISO文件
/opt/schily/bin/mkisofs -iso-level 3 -r -V sblive -cache-inodes -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o sblive.iso sblive
制作系统启动盘
在Linux系统下使用dd
命令制作启动盘,参考教程:
Ubuntu18.04在U盘插入之后自动挂载,需要先卸载掉再格式化。
在U盘内打开终端即可知道U盘所在的路径,然后卸载U盘:
sudo umount /media/arthur/MA
查看U盘的设备名称:
sudo fdisk -l
制作Linux系统的启动盘,建议格式化为ext4文件系统:
sudo mkfs.ext4 /dev/sdc
确认U盘已经被卸载,然后使用dd
命令制作启动盘。
sudo dd if=xxxx.iso of=/dev/sdc status=progress
或者到Windows下做启动盘。
安装系统
将做好的启动盘插入新电脑中,选择从U盘启动。发现无法正确进入系统安装界面:
只有(hd0,msdos6)
被识别出了文件系统。
一般情况下,通过执行下述命令即可正常启动系统:
grub rescue> set root=(hd0,msdos6)
grub rescue> set prefix=(hd0,msdos6)/boot/grub
grub rescue> insmod normal
grub rescue> normal
然而,在执行insmod normal
之后会报错提示在(hd0,msdos6)/boot/grub/路径下找不到i386-pc/normal.mod。查看启动盘里面的文件,确实没有这个文件。使用这种方式制作的启动盘无法正确引导系统安装。
推测:systemback自带的Convert to ISO
和Write to target
除了写入image之外,还写入了系统引导的相关文件。对于大于4GB的image,用Write to target
制作的启动盘,插入电脑时挂载了SBLIVE
和SBROOT
两个分区。而使用其他方式制作的启动盘,插入电脑时只挂载了sblive
一个分区,可能确实丢失了系统引导项。
六、待解决的问题
1、听说使用Write to Target
向U盘中写入33GB的.sblive
时失败了。
2、上述方式做出的系统镜像,在单Ubuntu系统中能够成功地安装并运行。听说在Windows10下安装双系统失败了,不插着镜像启动盘无法进入系统。