
У меня есть USB-накопитель с Manjaro ARM (который используется для системы Raspberry Pi 4) и пустая SD-карта. Есть ли возможность перенести ОС с USB-накопителя на SD-карту, сохранив разделы? Если это возможно, можно ли это сделать во время работы Manjaro?
Вот вывод lsblk
:
$ lsblk # partitions on USB Drive
sda 8:0 1 14.9G 0 disk
├─sda1 8:1 1 213.6M 0 part /boot
└─sda2 8:2 1 14.7G 0 part /
zram0 254:0 0 11.2G 0 disk [SWAP]
решение1
- Есть ли возможность перенести ОС с USB-накопителя на SD-карту, сохранив при этом разделы?
Да, предполагая, что sd-карта по крайней мере такого же размера, как и usb-накопитель. Вы можете запустить, blockdev --getsize64 /dev/sda
чтобы получить размер вашего usb-накопителя в байтах, и, изменив путь устройства на sd-карту, вы можете гарантировать, что он будет по крайней мере таким же количеством байтов.
Возможно, маловероятно, что устройства будут иметь абсолютно одинаковый размер, поэтому я бы предпочел создать идентичную таблицу разделов (с теми же номерами разделов для минимизации хлопот) вручную на карте SD. Это гарантирует, что дополнительное дисковое пространство, потенциально доступное на карте SD, может быть впоследствии использовано, например, для расширения корневого раздела или создания новых разделов. Используйте sfdisk -l /dev/sda
для получения списка разделов на /dev/sda в единицах секторов, а затем используйте fdisk /dev/sdb
для создания тех же разделов на карте SD (предполагая, что устройство карты SD — /dev/sdb, пожалуйста, обновите по мере необходимости).
После повторного создания разделов вы можете скопировать содержимое каждого раздела по одному.
- Если это возможно, можно ли это сделать во время работы Manjaro?
Да, но в этом случае вам следует монтировать файловые системы только для чтения, чтобы избежать риска повреждения копии операционной системой, если она что-либо запишет на диск во время копирования.
Вот команды, которые помогут вам сделать это и скопировать два раздела, перечисленных в вашем вопросе, предполагая, что вы создали разделы, как описано выше, и снова предполагая, что ваша SD-карта — /dev/sdb:
mount /dev/sda1 -oremount,ro
dd if=/dev/sda1 of=/dev/sdb1 bs=1048576
mount /dev/sda2 -oremount,rw
mount /dev/sda2 -oremount,ro
dd if=/dev/sda2 of=/dev/sdb2 bs=1048576
mount /dev/sda2 -oremount,rw
Возможно, какому-то программному обеспечению не понравится, что корневая файловая система временно смонтирована в режиме «только для чтения»; перезагрузка исправит это.