最近在公司负责将Linux的Ubuntu18系统以及公司所安装的程序环境统一打包成 ISO 文件,以方便后面的标准盘制作。但在打包过程中遇到了各种各样的问题,遂在此记录下自己的踩坑内容和解决方法。
1.首先是Linux系统加上程序环境内容较大,导致最后生成的ISO文件远大于4G(最终是13G),故无法用常规方法打包。网上也有很多大于4G的ISO制作教程(利用Systemback),所以这个问题倒也好解决。
2.在网上找了Systemback安装教程,但发现Systemback默认没有支持Ubuntu18系统,这个问题可以通过更改一些命令行参数解决。
3.由于我的磁盘总空间是64G,并不算大,导致在生成ISO文件时,会出现磁盘内存不足的情况。利用Systemback生成ISO时,首先会生成一个中间文件sblive,而在生成这个生成文件的过程又会产生很多缓存文件,导致磁盘空间不够。比如我所用的硬盘是64G大小,其中/home目录下有25G空闲空间,且最后生成的sblive文件应该也就13G左右,按理来说是够用的(25G>13G)。但是在这个过程中systemback会产生很多缓存文件,导致所需磁盘空间远大于13G,也超过了/home目录的25G空闲空间。
我第一次生成sblive文件的时候没注意,以为磁盘空间足够,就挂着机让Systemback在那跑,导致最后磁盘空间爆了,Linux都启动不了。最后我也是自己找了方法,将systemback的默认工作目录/home更改为自己的U盘,让sblive文件直接在U盘里生成(我就不信64G的空U盘还不够!)。
如果你想尝试直接在/home目录下生成sblive文件,那我也建议你在Systemback运行过程中,多用df -h命令查看自己的磁盘空间大小变化情况,如果发现快要爆满了,则需及时终止Systemback运行。
以下是本篇文章正文内容,仅供参考
部分内容参考于网上的教程
参考链接: 基于 systemback 的 Ubuntu 系统镜像制作与安装
如果你也是Ubuntu18系统,那么你在按照网上的教程安装Systemback时应该会出现这种情况:
这是因为Systemback不支持Ubuntu18版本。
想要在Ubuntu18系统安装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
至此,Ubuntu18系统下的Systemback安装成功。
在Linux搜索栏直接搜索并启动Systemback:
sudo systemback
如果确定你的/home目录下磁盘空间够的话(我生成13G的sblive文件时,至少需要近28G的内存空间),那就无需更改存储目录,不够的话则需要执行下面步骤:
启动Systemback后可以看到默认存储文件夹是/home目录,且选择其他目录的时候基本都是红叉,选择不了。
一开始我以为直接外接个空间足够的U盘,然后将存储目录更改为U盘挂载的目录不就行了吗。但后面发现这条路也不通,U盘也是不可选择的格式(红叉)。
在经过一番资料查询后,我在官网找到了以下这段话
You can also set the Working directory where you store live images and isos. This directory must be a writable linux filesystem - no fat, exfat, fat32 nor ntfs directories or partitions can be used for storage.
此处意思是,选择写入的目录文件夹不可以是fat,exfat,fat32或者ntfs等格式,且必须是可写的linux文件系统。这时我才恍然大悟,因为自己的U盘是格式化为NTFS格式的,怪不得选择不了。
解决方法如下:
1.将U盘插入带有Linux系统的主机中,右键选择格式化
2.格式化类型选择Ext4:
格式化成Ext4后,我们的Systemback就可以识别到我们的U盘了。
3.为了方便查看U盘目录,我还将U盘目录进行了重新挂载(可选操作):
首先查看自己的U盘信息
sudo fdisk -l
输入这条指令后,你就可以大概根据自己的U盘大小和可用空间找到对应地址。
比如我的U盘地址是/dev/sdb ,且默认挂载在/media/用户名/U下。为了方便查看U盘内容,我将重新挂载到了/home/Udisk/下(Udisk不需要自己创建,他会自行创建)
这时候我们就可以在Systemback的存储文件夹中选择挂载好的Udisk文件夹了(可以看到这里的黑色Udisk/为可选目录了,红叉Udisk是我之前自己建立的文件夹,结果发现用mount指令挂载的时候,它自己就会创建文件夹)
到这一步就更改目录成功了。
由于自己没有截图,以下是我在网上找的一张网图,流程都一样。
首先,你需要将1中的工作目录 /home更改为你的U盘文件目录 /home/Udisk,2中的系统名称可以自定义。如果你不止想备份裸系统,还想备份程序环境的话,那还需要勾选“包含用户数据文件”!!!
设置完成后选择创建新的,即可直接在U盘生成sblive文件
在经过漫长的等待后,我们的U盘也是生成了sblive文件,但我们要将其移动回Linux系统。移动回Linux主机的原因是因为我们的这个U盘到时候是要用来做启动盘的,所以要先把sblive保存回Linux主机(任意装有Systemback的主机都可),再用Systemback工具把sblive文件写入到启动盘中。
虽然制作sblive文件过程所需缓存空间很大,但制作完成后,Systemback会自动删除多余的缓存,只留下个13G大小的sblive文件,故又可以移回原先25G大小的/home目录下。
sudo mv /home/Udisk/Ubuntu_ISO.sblive /home/Ubuntu_ISO.sblive
由于自己没有截图,以下是我在网上找的一张网图 ,流程都一样:
插入U盘后,下面Write target会显示你的U盘,勾选后,再在右上角选择你刚刚移动到Linux中的sblive文件,点击Write to target,Systemback就会把sblive文件直接写入到你的U盘里,从而制作好U盘启动盘。(注意,这里的Convert to ISO 应当是灰色的,因为其大于4G,无法转换。但我们可以跳过Convert to ISO的步骤,让Systemback直接帮我们生成U盘启动盘)
到了这一步,U盘启动盘已经制作完成。Systemback自动帮我们省去了转换成ISO的过程,直接就将大于4G的sblive文件制作成启动盘。如果你的目标只是制作启动盘的话,那你可以直接跳过第6和第7小节,直接去第三部分查看如何安装。
如果你想要的是单独的 ISO 文件的话,那你还需要通过第6和第7小节的内容,来利用cdrtools工具,将大于4G的sblive文件转换成 ISO 文件。
进入home目录:
cd /home
mkdir sblive
tar -xf /home/target_iso.sblive -C sblive
mv sblive/syslinux/syslinux.cfg sblive/syslinux/isolinux.cfg
mv sblive/syslinux sblive/isolinux
sudo apt-get install aria2
wget https://nchc.dl.sourceforge.net/project/cdrtools/alpha/cdrtools-3.02a07.tar.gz
tar -xzvf cdrtools-3.02a07.tar.gz
cd cdrtools-3.02/
make
sudo make install
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
cd ..
sblive.iso 处 的 sblive 可以修改为目标名称
/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
接下来等待转换完成即可(一定要确保系统还有足够的空间留给转换ISO文件过程)。
如果你不想通过Systemback直接制作U盘启动盘,而是想利用ISO镜像来制作启动盘,那么你可以在Windows下借助Ventoy这个工具来完成。
Ventoy工具下载地址:
链接:https://pan.baidu.com/s/1ezq_eEqhMgjFonrLvdcFTg
提取码:4DEF
解压后运行Ventoy2Disk.exe即可,该工具会自行检测U盘设备,选择好设备后点击安装即可在U盘安装引导工具(会自动格式化)。
安装完成后,将你的ISO文件放入U盘里即可,此时你的U盘就已经成为启动盘了。
将U盘插入你要安装系统的主机,按键盘快捷键进入Boot界面,并在Boot界面把U盘设置为第一启动项。
这里各个主机的Boot界面启动后快捷键都有所区别,可以自行上网查阅资料。
这里我的U盘启动盘界面显示是乱码(我看到其他人也有这种情况,不知道为什么),不过没有什么影响。
网上其他人的原图如下:
第一个选项是将U盘作为系统,即直接在U盘上运行Linux系统,作为临时办公用。(注意,这里U盘的Linux系统无法保存用户做的任何修改,你下次重启后,再进入U盘的Linux系统会发现你新增或修改的内容都重置了)
第二个选项才是系统的安装,所以在这里我们选择第二个选项。
这里要求输入你母系统的密码,按要求登陆即可。
登陆后可以看到如下界面:
在这里填写你的新系统用户登录名和密码。
新用户全名也可以作为登陆账号,虽然首字母要求必须大写,但后面安装完系统后可以在Linux界面右上角账户一栏重新更改用户全名,所以也没什么影响。
接下来是进行分区的安装。
一般需要分成三个区,即boot,swap和根目录/
空间大小自行决定。
我这边建议勾选传递用户配置文件及用户数据,并安装GRUB2引导程序,不然系统可能无法正常安装。
安装GRUB2引导程序时,需要你有节点挂载在/boot/efi上,故我最后选择的三个分区是 /boot/efi , swap和 /。
/boot换成/boot/efi似乎没有影响,最后系统也能正常安装并运行程序。
按照提示进行安装:
等待安装后重启即可。
有的用户重启界面可能会提示你拔掉启动盘,按照提示拔掉即可,否则可能会一直卡在加载Ubuntu的界面。
网上虽然关于制作大于4G的ISO启动盘教程有很多,但还是有许多细节没有讲到,这篇教程也只是作为补充而已。若有错误,欢迎在评论区指出。