取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by Drixn,分享从这里开始,精彩与您同在

定制 Linux Mint 镜像

免责声明

定制的 Mint 镜像文件仅供个人使用。如果您想与他人分享您的自定义镜像文件,无论是免费还是购买,您都必须重新命名; 删除所有 Mint logo,品牌和其他标识元素; 并且您不能混淆您的目标用户与 Mint 以任何方式关联的自定义。

您可以自由使用 Mint 开发的软件(例如:mintinstall,mintupdate等),而无需重新命名,因为它们是根据 GPL 许可的。但除此之外,它将是你自己的自定义镜像,而不再是 Mint 原版镜像。

Mint 名称和标识元素是具有商标和版权。除非您获得 Clement Lefebvre 的批准,并且您的定制镜像已通过 Mint QA 团队的测试,否则您无权使用它们。

下载镜像

Linux Mint 镜像下载

操作环境

Linux 环境下操作,博主使用的是虚拟机 Linux Mint 19.1

安装依赖

1
sudo aptitude install squashfs-tools genisoimage
图0

准备临时操作系统

本教程使用的镜像文件是 linuxmint-19.1-xfce-64bit.iso

创建工作文件夹

1
mkdir ~/mylivecd

移动镜像至工作目录

1
cp /path_to_the_downloaded_iso_directory/linuxmint-19.1-xfce-64bit.iso ~/mylivecd

解压并挂载镜像

1
2
3
4
5
6
7
cd ~/mylivecd
mkdir mnt
sudo mount -o loop linuxmint-19.1-xfce-64bit.iso mnt
mkdir extracted
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extracted
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit
图0

在临时系统中准备网络连接

1
2
sudo cp /etc/resolv.conf edit/etc/
sudo cp /etc/hosts edit/etc/
图0

准备 chroot 环境

1
2
3
4
5
6
7
8
xhost + //它将使您能够运行像synaptic这样的GUI应用程序,但这将禁用 x server 访问控制,因此使用它需要您自行承担风险。
sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
图0

现在这个终端在你的新系统中。 在任何情况下都不要关闭它! 我们将这称为 chroot 终端,让我们打开另一个终端并运行

1
2
cd ~/mylivecd
sudo su
图0

并称之为主机终端。我们将在需要时使用此终端。您可以通过比较命令历史记录来区分这两者。 这非常重要,不要混淆这两个终端。 如果没有指定使用哪个终端,则在 chroot 终端中运行代码。

准备定制

1
2
3
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
图0

开始定制

文件系统现在是 mylivecd 目录中的 edit 文件夹。您可以修改此文件系统以满足您的需求。但您只能访问 chroot 终端。因此,请确保只使用此终端即可完成所有操作。您也可以使用此终端来运行 GUI 应用程序。

输入以下命令可按大小查看已安装的软件包:

1
dpkg-query -W --showformat='${Installed-Size}\t${Package}\n' | sort -nr | less

图0

安装软件

首先更新库

1
apt update
图0

未完待续…

清理新系统

1
2
3
4
5
6
7
8
9
10
11
12
13
aptitude clean
rm -r /var/cache/apt/archives/*
rm -r /mydir
rm -rf /tmp/* ~/.bash_history
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc || umount -lf /proc //忽略此命令中的警告
umount /sys
umount /dev/pts
exit //如果失败,请尝试 exit 0
sudo umount edit/dev //忽略此命令中的错误和警告
xhost -

如果您使用了 synaptic(或任何其他GUI),那么您可能需要进行额外的清理:

1
2
sudo rm -rf edit/run/synaptic.socket
sudo rm -rf edit/home/*

从这时起 chroot 环境就不复存在了,但是这个终端将用于其余的命令,你可以关闭其他终端。

重新生成清单(忽略任何警告)

1
2
3
4
5
6
sudo su 
chmod +w extracted/casper/filesystem.manifest
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extracted/casper/filesystem.manifest
cp extracted/casper/filesystem.manifest extracted/casper/filesystem.manifest-desktop
sed -i '/ubiquity/d' extracted/casper/filesystem.manifest-desktop
sed -i '/casper/d' extracted/casper/filesystem.manifest-desktop

压缩

1
2
rm extracted/casper/filesystem.squashfs
mksquashfs edit extracted/casper/filesystem.squashfs -comp xz

更新一些必需的文件

1
printf $(sudo du -sx --block-size=1 edit | cut -f1) > extracted/casper/filesystem.size

使用文本编辑器打开 extracted/README.diskdefines 文件并更改磁盘名称。

删除旧的 md5sum 并计算新的 md5sums

1
2
3
cd extracted
rm MD5SUMS
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee MD5SUMS

创建 ISO 映像

1
2
3
mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../linuxmint-19.1-xfce-64bit_custom.iso .
exit
sudo chmod 777 ~/mylivecd/linuxmint-19.1-xfce-64bit_custom.iso

测试 ISO 镜像

您可以使用 qemu,kvm,virtualbox 进行 iso 镜像的测试运行