我的 Windows 10 桌面上有一个虚拟机(VMWare WS),运行 Debian 9,安装需要 12 GB,为了安全起见,我给它分配了 15 GB。所以它实际上是一个 15 GB 的硬盘。
我需要将此虚拟机的多个副本复制到 8 GB 可启动闪存驱动器上。
于是我将其精简(删除了许多我不需要的软件包),并使用 GParted Live 调整大小并减少分区,这样系统总共只使用大约 6 GB。启动正常,没有问题。甚至移动了交换分区,这样最后大约 9 GB 的空间就完全没有分配了。
所以我现在有一个 6 GB 的系统,我想把它放到 8 GB 的闪存驱动器上……
我尝试使用 GParted 复制分区,并在尝试启动时看到一个闪烁的“_”。
Google-fu 和 GParted 不会复制 GRUB,所以不行。
然后我尝试了 Clonezilla 设备到设备克隆,它抱怨目标磁盘太小,因为 Clonezilla 太愚蠢了,看不到源磁盘上最后 9 GB 的空间没有被使用。
我使用专家部分 (-icds) 中的覆盖来忽略磁盘大小,并将虚拟机复制到闪存驱动器。在我的其中一台机器上启动该驱动器,并遇到了 GRUB(耶!)。
不幸的是,这种喜悦是短暂的,正如系统显示的那样……
/dev/sdb1:干净,119211/349504 个文件,1052948/1408000 个块 _
然后我的朋友,闪烁的光标又出现了。
那么我在这里做错了什么?如何将 Linux 的大小调整得更小,并将其复制到一个或多个驱动器上,而不必完全重建/重新安装/重新编译该死的操作系统?
答案1
GParted 可以完成除安装 GRUB 之外的所有工作。但是,GRUB 所需的所有内容(包括设置)都在复制的分区上。
要复制的系统外的工作(例如 livecd)。
使用 GParted 复制(缩小)分区。
安装 GRUB。此处,USB 驱动器
/dev/sdx
安装到/mnt/stick
:grub-install --force --removable --boot-directory=/mnt/stick/boot /dev/sdx
答案2
我会这样做:
- 在闪存驱动器中创建您想要的分区。
- 使用命令将相应文件系统的内容复制到闪存驱动器
cp -a -x
。此命令仅复制一个文件系统的内容,因此您需要对所有文件系统(/
以及/boot
默认的 Debian 安装)运行它。 - 运行
dpkg-reconfigure grub-pc
,它会询问你选项以及你想安装 GRUB 的位置。在这里选择闪存驱动器。
此后,您应该有一个可启动的闪存驱动器。