这个特定问题与 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
。它不会触及sda2
,sda3
等等。即使您的sda1
不够大,无法容纳 SD 卡的全部大小,您也不会弄乱它们上面的任何东西;在这种情况下,当 dd 遇到 的末尾时,它会因错误而停止sda1
。但您的分区似乎不会受到此影响。