将整个 SD 卡 dd 到 HDD 上的一个分区

将整个 SD 卡 dd 到 HDD 上的一个分区

这个特定问题与 Raspberry Pi 有关,但实际上,这是一个普遍的问题。

因此,我有一张运行 RPI 系统的 SD 卡,它由两个分区组成:

Disk /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf4481065

Device         Boot  Start       End   Sectors  Size Id Type
/dev/mmcblk0p1        8192    532479    524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      532480 124735487 124203008 59.2G 83 Linux

另外,我连接了一个外部硬盘,它用作数据存储,现在由四个分区组成:

Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: EZRZ-00Z5HB0    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 9E92BCDF-4CF7-4ECE-ABCD-5B6794FE747E

Device          Start        End    Sectors   Size Type
/dev/sda1        2048  125831167  125829120    60G Linux filesystem
/dev/sda2   125831168  754976767  629145600   300G Linux filesystem
/dev/sda3   754976768 2331002879 1576026112 751.5G Linux filesystem
/dev/sda4  2331002880 3907028991 1576026112 751.5G Linux filesystem

我想要做的是将我的 RPI 系统从 SD 卡移动到 HDD 的第一个分区。我可以使用以下命令将整个 SD 卡(两个分区)克隆到 HDD 的第一个分区吗?

dd if=/dev/mmcblk0 of=/dev/sda1 ...

由于目标分区稍大一些(124735488 vs 125829120 个扇区),我预计第一个硬盘分区将分为两个(引导和根)和所有其他sda2、sda3 等。将保持不变。因此完成此操作后,我将能够从 HDD 而不是 SD 卡启动(当然是在检查了迁移后可能发生变化的所有 UUID 之后)。

据我所知应该没问题,但目前我还没有办法测试这个过程。所以我想再检查一遍,确保不会搞乱整个系统。

更新。是的,我明白 sda1 的内容将被永久销毁。

答案1

分区本身不期望有分区。这是一个“单层”系统,而不是“树”。即使分区包含有效的分区表,也不会神奇地“一分为二”。内核不会自动设置与这些子分区相对应的特殊块设备。因此,虽然您当然可以将整个分区设备逐扇区转储到任何设备,但您必须执行额外的手动操作才能访问这些“子分区”上的数据(我的意思是,您需要手动解释分区表并设置循环设备)。

话虽如此,您显示的命令可能只会破坏 上的数据/dev/sda1。它不会触及sda2sda3等等。即使您的sda1不够大,无法容纳 SD 卡的全部大小,您也不会弄乱它们上面的任何东西;在这种情况下,当 dd 遇到 的末尾时,它会因错误而停止sda1。但您的分区似乎不会受到此影响。

相关内容