Могу ли я клонировать весь свой Raspberry Pi для развертывания на другом Raspberry Pi?

12

Я не уверен, что все темы "Как сделать резервную копию вашей SD-карты" - то, о чем я прошу ... но здесь мы идем :)

Есть ли способ, которым я могу сделать 100% клон моего Raspberry Pi и просто развернуть его на другом Raspberry Pi? Итак, у меня есть две абсолютно идентичные копии ... Или это делается путем клонирования SD-карты с помощью встроенной команды dd ?

Причина, по которой я спрашиваю, состоит в том, что мой Raspberry Pi полностью сконфигурирован с Apache , PHP и некоторыми другими библиотеками, и теперь я просто хочу еще один его клон с точно такими же конфигурациями и т. Д.

Это возможно или я ответил на свой вопрос?

naboovalley
источник
Я удивлен, что пиклон не был упомянут до сих пор. Для меня это самый простой способ клонирования SD-карты на RPI, и у nvere были проблемы с этим. Я уже отвечал на этот вопрос в прошлом, поэтому вот ссылка на ответ с некоторыми более подробными сведениями: raspberrypi.stackexchange.com/questions/66824/… Надеюсь, это поможет.
LecauseAndThePi
Я нигде не мог найти скачивание пиклона
Элия ​​Вайс
Вам не нужно его скачивать, он уже есть. Просто напечатайте piclone в терминале, и он запустит графический интерфейс.
LecauseAndThePi

Ответы:

9

@naboovalley:

Предположим, следующий сценарий:

  • На вашем Raspberry Pi перейдите в терминал, а затем перейдите в каталог / dev. Среди других устройств вы должны увидеть mmcblk0, mmcblk0p1 и mmcblk0p2.
  • mmcblk0 - это «голое» устройство SD-карты, в то время как mmcblk0p1 - это первый раздел этой SD-карты, содержащий образ ядра и т. д., а mmcblk0p2 - это второй раздел этой SD-карты, содержащий корневую файловую систему.
  • Выключите Raspberry Pi достойным образом (введите команду «shutdown», возможно, от имени пользователя root)
  • Вставьте SD-карту в другой компьютер с Linux. Обычно вышеупомянутые каталоги должны автоматически монтироваться на / media /, и там должно быть 2 подкаталога (один для раздела 1 SD-карты, один для раздела 2 SD-карты)
  • Вы создали временный каталог для копирования содержимого вашей SD-карты. Сказать:~/tmp
  • Вы находитесь в ~/tmp

Теперь вы можете скопировать содержимое первого раздела оригинальной SD-карты, введя следующую команду rsync:

rsync -avn /media/<user>/<partition1> .

Вы не поставить /в конце! Приведенная выше команда выполнит «пробный запуск», что означает, что она покажет вам, что она в конечном итоге сделает, но не выполнит ее по-настоящему.

Чтобы выполнить по-настоящему (после того, как вы подтвердите, что пробный прогон делает то, что должен), вы можете удалить nиз приведенной выше команды (так, rsync -av /media/<user>/<partition1> .).

Используйте ту же команду для другого раздела.

Теперь у вас должна быть точная копия вашей оригинальной SD-карты на вашем Linux-компьютере.

Извлеките оригинальную SD-карту, вставьте другую - правильно отформатированную - SD-карту в компьютер с Linux и выполните следующую команду rsync:

rsync -avn <partition1> /media/<user>

Это опять пробный прогон, который должен показать вам, что содержимое <partition1>in /media/<user>будет скопировано на SD-карту.

После того, как вы подтвердили все в порядке, вы можете снова удалить nиз rsyncкоманды.

Сделайте то же самое для второго раздела.

Это должно дать вам точную копию оригинальной SD-карты на другую SD-карту.

Примечание: я проверил все это на машине Lubuntu. Каталоги и названия могут отличаться в других дистрибутивах Linux.

Также обратите внимание, что элементы между ними < >являются заполнителями, и вы должны сами убедиться, как они соответствуют вашей среде.

GeertVc
источник
Отлично. Спасибо! Будет ли копия "dd" делать то же, что вы описали, или rsync будет намного лучше делать полную копию системы так, как я хочу?
naboovalley
У меня нет большого опыта работы с ddкомандой, поэтому я не могу сказать, извините ...
GeertVc
Я не совсем понимаю, где вы говорите "- правильно отформатирован - SD-карта". Нужно ли предварительно форматировать SD-карту с разделами fat32 и ext4 правильного размера? Спасибо
Ромен Винсент
7

Да, вы можете использовать ddили Win32 Disk Imager на Windows , чтобы взять точное изображение с одной карты на другую. Однако карта назначения должна быть такого же или большего размера, чтобы сделать это практичным.

Вы также можете просто скопировать все файлы в вашей исходной файловой системе в целевую файловую систему. То есть подключите карту назначения к USB-устройству чтения карт памяти и вставьте его в свой Raspberry Pi. Затем введите SSH и выполните соответствующие команды копирования.

Следует также помнить, что вы приобрели лицензионные ключи для аппаратного декодирования MPEG-2 или VC-1 . Они привязаны к вашему оборудованию, поэтому вам нужно обязательно отредактировать /boot/config.txt в своей копии.

мне--
источник
То есть на SD-карте хранятся все системные файлы и установленные библиотеки? Мне не нужно будет запускать какие-либо команды установки при подключении клонированной копии SD-карты в R-Pi # 2?
Набувалле
2
Это также может вызвать проблемы с ключами SSH и IP-адресами.
Стив Робиллард
Так что на R-Pi # 2 может показаться, что ip-адрес такой же, как на R-Pi # 1? Я думаю, я могу просто обновить его, чтобы получить новый сетевой IP?
Набувалле
Если вы используете DHCP, RPi автоматически получит новый IP при загрузке, но вы должны изменить имя хоста, если вы планируете использовать оба в одной подсети. Если вы используете фиксированный IP-адрес, вы должны изменить как IP-адрес, так и имя хоста
Roberto
Если я посмотрю на мою файловую систему («df»), то у меня будет нечто, называемое «rootfs» 2,1 ГБ и / dev / root 2,1 ГБ - моя / dev / mmcblk0 SD-карта занимает всего 10 МБ. Поэтому, когда я копирую "mmcblk0", вся моя система будет включена? Спасибо, ребята
naboovalley
6

Вы можете просто скопировать с помощью dd, как подсказывает @ me--, но это не все, что вам нужно делать при клонировании системы. Есть определенные уникальные системные идентификаторы, которые также должны быть изменены.

Пароли должны быть сброшены, чтобы использовать новую соль. Это не дает людям знать, что вы использовали один и тот же пароль дважды. Запустите passwdкоманду как от имени пользователя (обычно от имени пользователя pi ), так и от имени пользователя root.

Если вы используете SSH, ключи SSH должны быть сгенерированы заново. Это важно, например, для уверенности в том, что если кто-то украдет один Raspberry Pi, он не сможет расшифровать связь с другим. Просто запустите эту команду:

sudo rm /etc/ssh/ssh_host_*

Наконец, и самое главное, вам нужно изменить имя хоста. По умолчанию это raspberrypi . Если вы похожи на меня, я ssh к имени хоста Raspberry Pi, так и сделаю ssh raspberrypi. Наличие двух «raspberrypis» в сети приводит к тому, что они перестают работать, поэтому второй следует переименовать, например, в rasberrypi2 . Вы можете сделать это изменение sudo raspi-config, выбрав Advanced Options, а затем выбрав Hostname.

Фред
источник
raspi-configнедоступно для Raspbmc . Возможно, ручной способ установки имени хоста должен быть описан?
Питер Мортенсен
Для справки, raspberrypi.stackexchange.com/questions/3926/… описывает изменение имени хоста в Raspbmc.
Фред
4

Клонирование микро-SD для резервного копирования или для переноса вашей системы на другой RPi3 встроено в качестве аксессуара, по крайней мере, в версию операционной системы, которую я получил на загрузочном SD-диске NOOBS:

  • Перейти на аксессуары;
  • Хит Копировать SD ;
  • Поместите чистую микро SD в держатель USB;
  • Поместите держатель в открытый слот USB;
  • Выберите новый SD;
  • Хит копия.
w8mqw
источник
Это должен быть правильный ответ. Так легко.
Иордания
1

Вы можете сделать это, используя raspberry pi и новую SD-карту с девизом, подключенную через USB. В последней версии программного обеспечения Raspberry Pi имеется встроенное программное обеспечение под названием SD cardcopier под аксессуарами, которое делает именно это.

Вы выбираете исходную карту (то есть карту, с которой вы загружаетесь) в качестве источника, а новую отформатированную пустую карту (подключенную через устройство чтения карт к USB-порту) в качестве пункта назначения. Довольно простой интерфейс, и он сработал для меня в первый раз. Опция командной строки на Mac с использованием dd как-то закончилась проблемой паники ядра.

sijones
источник
0

Очень безопасный и надежный инструмент для копирования таких вещей, как корневые файловые системы (из-за ссылок, которые присутствуют в корневой файловой системе) rsync. Этот инструмент будет учитывать все необходимые вещи, такие как метки времени, ссылки, разрешения ... Идеально подходит для копирования того, что вы хотите сделать.

GeertVc
источник
Но я все еще копирую содержимое SD-карты для полной копии системы - или мне нужно включить что-то еще? Спасибо
naboovalley
Смотрите новый ответ, который я разместил ниже.
GeertVc