Рейтинг:-1

добавить всю SD-карту в один раздел на жестком диске

флаг cn

Этот конкретный вопрос связан с Raspberry Pi, но на самом деле это общий вопрос.

Итак, у меня есть SD-карта с работающей на ней системой RPI, состоящей из двух разделов:

Диск /dev/mmcblk0: 59,5 ГБ, 63864569856 байт, 124735488 секторов
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода/вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xf4481065

Размер начальных и конечных секторов загрузки устройства Идентификатор типа
/dev/mmcblk0p1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 532480 124735487 124203008 59.2G 83 Linux

Кроме того, у меня подключен внешний жесткий диск, который теперь работает как хранилище данных, состоящее из четырех разделов:

Диск /dev/sda: 1,8 ТиБ, 2000398934016 байт, 3907029168 секторов
Модель диска: EZRZ-00Z5HB0    
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер ввода/вывода (минимальный/оптимальный): 4096 байт / 4096 байт
Тип метки диска: gpt
Идентификатор диска: 9E92BCDF-4CF7-4ECE-ABCD-5B6794FE747E

Размер начальных и конечных секторов устройства Тип
/dev/sda1 2048 125831167 125829120 файловая система 60G Linux
/dev/sda2 125831168 754976767 629145600 файловая система 300G Linux
/dev/sda3 754976768 2331002879 1576026112 751.5G файловая система Linux
/dev/sda4 2331002880 3907028991 1576026112 751.5G файловая система Linux

Что я хочу сделать, так это переместить мою систему RPI с SD-карты на первый раздел жесткого диска. Могу ли я использовать следующую команду для клонирования всей SD-карты (двух разделов) в первый раздел жесткого диска?

дд, если=/dev/mmcblk0 из=/dev/sda1 ...

Поскольку раздел назначения немного больше (124735488 против 125829120 секторов), я ожидаю, что первый раздел жесткого диска будет разделен на два (загрузка и корень) и все остальные sda2, sda3 и т.д. останется нетронутым. Таким образом, после этой операции я смогу загрузиться с жесткого диска вместо SD-карты (конечно, после проверки всех UUID, которые могут измениться после миграции).

Все должно быть в порядке, AFAIK, но в настоящее время у меня нет возможности проверить этот процесс. Так что хочется все перепроверить и быть на 100% уверенным, что не испортишь всю систему.

обновление Да, я понимаю, что содержимое sda1 будет уничтожено безвозвратно.

Рейтинг:2
флаг za

Разделы не должны иметь сами разделы. Это "однослойная" система, а не "дерево". Раздел не будет волшебным образом «разделен на два», даже если он будет содержать действительную таблицу разделов. Ядро не будет автоматически устанавливать специальные блочные устройства, соответствующие этим подразделам. Таким образом, хотя вы, безусловно, можете создать дамп всего разбитого на разделы устройства по секторам на что угодно, вам придется выполнять дополнительные ручные действия для доступа к данным в этих «подразделах» (я имею в виду, что вам понадобится ручная интерпретация таблицы разделов и цикл настройка устройств).

Сказав это, команда, которую вы показали, может только уничтожить данные на /dev/sda1. Это не коснется sda2, sda3 и так далее. Вы ничего не испортите на них, даже если ваш sda1 недостаточно большой, чтобы принять полный размер SD-карты; в этом случае dd остановится с ошибкой, когда встретит конец sda1. Но ваше разбиение, кажется, не страдает от этого.

ihorc avatar
флаг cn
Но команда `dd` копирует необработанные блоки, поэтому она работает «на один слой» ниже разделов. Таким образом, он даже не знает, какие разделы он копирует. Итак, в моем понимании, он возьмет все блоки SD-карты и разместит их в секторах жесткого диска, отмеченных sda1. Кроме того, поскольку он работает с необработанными блоками, нет необходимости делать какие-либо разбиения перед `dd`. Все равно перепишут. Цель указания целевого раздела — просто указать диапазон, в который он может записывать. Это то же самое, что и `dd` для файла img, а затем записать img в раздел. Я ошибся?
Nikita Kipriyanov avatar
флаг za
Ты прав. Я сказал точно то же самое: «Вы можете сбрасывать все разделенное на разделы устройство посекторно на что угодно».Поэтому я объяснил, что вы не сможете сказать «загрузиться с этого жесткого диска», потому что, пока данные будут там, система **не будет создавать специальные устройства** с необработанными файловыми системами для монтирования. Он не будет интерпретировать таблицу разделов внутри раздела.
ihorc avatar
флаг cn
Итак, единственное доступное решение в этом случае — разделить sda1 вручную (например, на sda1 и sda5), а затем `dd` на два раздела соответственно? `mmcblk0p1->sda1` и `mmcblk0p2->sda5`?
Nikita Kipriyanov avatar
флаг za
Честно говоря, я никогда не пытался загрузить Raspberry Pi с другой карты, кроме SD. Если он может загрузиться с раздела на жестком диске USB (я полагаю, что это то, что у вас есть), то да, это сработает. Но обратите внимание, что местоположение корневой файловой системы хранится в `cmdline.txt`, поэтому не забудьте настроить его. И имейте в виду, что USB HDD имеет гораздо большую задержку, чем SD-карта, поэтому система может отображать более низкую производительность диска.
Ginnungagap avatar
флаг gu
RaspberryPi не может загружаться с жесткого диска, он всегда будет читать загрузочный раздел с SD-карты. Лучшее, что вы можете сделать, это перенести корневой раздел на жесткий диск, оставив /boot на SD-карте.
ihorc avatar
флаг cn
Это не правда. Вы можете найти множество руководств о том, как перенести систему Raspberry Pi с SD-карты на внешний жесткий диск/твердотельный накопитель. Есть даже отдельная настройка, отвечающая за приоритет загрузки https://docs.nextcloudpi.com/en/rpi4-chnage-boot-order. Или `sudo rpi-eeprom-config`, если вы предпочитаете командную строку. И, возможно, вы удивитесь, есть даже режим сетевой загрузки. По крайней мере, это верно для RPI4 с последней версией загрузчика rpi-eeprom, для других не знаю.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.