скопируйте всю SD-карту в один раздел на жестком диске
Этот конкретный вопрос относится к Raspberry Pi, но на самом деле это общий вопрос.
Итак, у меня есть SD-карта с работающей на ней системой RPI, состоящая из двух разделов:
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-карты на первый раздел жесткого диска. Могу ли я использовать следующую команду для клонирования всей SD-карты (два раздела) в первый раздел жесткого диска?
dd if=/dev/mmcblk0 of=/dev/sda1 ...
Поскольку целевой раздел немного больше (124735488 против 125829120 секторов), я ожидаю, что первый раздел жесткого диска будет разделен на два (загрузочный и корневой), а все остальные sda2, sda3 и т. д. останутся нетронутыми. Итак, после этой операции я смогу загружаться с жесткого диска вместо SD-карты (конечно, после проверки всех UUID, которые могут измениться после миграции).
Все должно быть в порядке, AFAIK, но в настоящее время у меня нет возможности протестировать этот процесс. Поэтому нужно все перепроверить и быть на 100% уверенным, что не испортите всю систему.
обновление.Да, я понимаю, что содержимое sda1 будет уничтожено безвозвратно.
1 ответ
Не ожидается, что разделы сами будут иметь разделы. Это «одноуровневая» система, а не «дерево». Раздел не будет волшебным образом «разделен на два», даже если он будет содержать действительную таблицу разделов. Ядро не будет автоматически устанавливать специальные блочные устройства, соответствующие этим подразделам. Таким образом, хотя вы, безусловно, можете посекторно сбросить все секционированное устройство куда угодно, вам придется выполнить дополнительные ручные действия для доступа к данным в этих «подразделах» (я имею в виду, вам понадобится ручная интерпретация таблицы разделов и циклическая обработка). настройка устройств).
При этом команда, которую вы показали, может уничтожить только данные/dev/sda1
. Это не коснетсяsda2
,sda3
и так далее. Вы ничего на них не испортите, даже если они недостаточно велики, чтобы вместить SD-карту полного размера; в этом случае dd остановится с ошибкой, когда достигнет концаsda1
. Но ваше разделение, похоже, от этого не страдает.