我的家庭服务器运行 Debian Lenny,我即将将系统驱动器升级为更大的驱动器。
在此过程中,我想借此机会重新组织分区并调整其大小。出于学习目的,我计划从 MBR 分区表迁移到谷氨酰胺磷酸酶。
由于这两个变化,我不能直接运行“dd if=/旧/驱动器 of=/新/驱动器”(当然,之后还需要做很多工作)。我可以使用解引导过程在新的系统驱动器上进行全新安装,但是我在上次系统升级期间使用了该技术,对于这次来说它可能有点小题大做。
我可以将分区从旧驱动器复制到新驱动器吗?
将要“dd if=/dev/hda1 of=/dev/hdb2”工作,假设/dev/hdb2大于/dev/hda1?(如果是这样,可以调整文件系统的大小以利用新的更大的分区,对吗?)
会分开(或者分区) 是一个更好的复制分区内容的工具吗?
答案1
答案是:是的,是的。当您将较小的分区复制到较大的分区时,GParted 基本上在做同样的事情:dd
复制旧内容并启动resize2fs
目标分区。resize2fs
需要进行一些复杂的扇区计算,因此我建议您使用 (g)parted 实用程序来自动执行此操作,但使用上述两个命令当然也可以。此外,parteds 还会进行一些验证和健全性检查,这样您就不会自食其果。
GPT 迁移与分区内容无关:分区表(无论是 GPT 还是 MBR)都只是指示内核如何定位分区设备文件的读/写窗口;它根本不影响分区的内容。
答案2
事后分析:
事情基本按预期进行,但有几个小问题需要记录下来。当然,所有分区复制都是从 LiveCD 完成的(Xubuntu 9.04,因为我手头有这个,但任何最近的 LiveCD 都可以)。
Gparted 拒绝将旧驱动器上的分区复制到新驱动器上的现有(空)分区。(分开可能会起作用,但由于我的系统分区上有一些“不兼容”的文件系统标志而拒绝。)相反,我不得不放弃分区方案并允许 Gparted创造该分区作为其复制操作的一部分。
新驱动器上需要 Grub2(Grub1 无法识别 GPT)。这意味着在新驱动器上安装 Grub2 时chroot环境(类似于chroot描述于这些说明):
尽管chroot进入新的系统分区,运行
apt-get install grub-pc
安装 Grub2 (chroot确保我们从 Debian 存储库而不是 LiveCD 的 Ubuntu 存储库获取它)。下一步应该是运行
upgrade-from-grub-legacy
安装引导程序并配置基本grub配置文件。但是,Debian Lenny 官方存储库中的 Grub2 软件包(目前v1.96+20080724-16)安装损坏的/etc/grub.d/20_memtest86+
,升级脚本在处理时中断。编辑该文件如下:改成
. /usr/lib/grub-mkconfig_lib
. /usr/lib/grub/update-grub_lib
将所有“
linux16
”改为“linux
”。这是 Grub2 内核指令——此步骤对于运行升级脚本不是必需的,但它无法正确启动 Memtest86+ 指令。跑步
upgrade-from-grub-legacy
。现在应该可以正确完成。
更新 /etc/fstab 中的所有硬编码挂载。由于分区已被复制并调整大小,因此它们的 UUID 应该相同。但交换分区不会具有相同的 UUID,因此需要更新。
仔细检查所有内容,祈祷好运,关闭计算机,断开旧系统驱动器,然后重新启动。