Перенос ОС с одного носителя на другой

Если вам просто нужна команда, которая говорит вам, является ли путь каталогом или нет, используйте точку монтирования (1).

Для меня это печатает

$ mountpoint /
/ is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
$ mountpoint some-file
some-file is not a mountpoint

Хорошо, что статус выхода снова показывает то же самое, так что вы можете использовать его в своих сценариях, как этот:

if mountpoint "$foo" >/dev/null; then
  : do mountpoint stuff
elif [ -d "$foo" ]; then
  : do directory stuff
elif [ -e "$foo" ]; then
  : do file stuff 
else
  echo "$foo does not exist!" >/2
fi

1
13.08.2020, 22:59
1 ответ
  1. Is there a possible way to transfer the OS from USB drive to SD card, while preserving the partitions?

Да, при условии, что размер SD-карты не меньше размера USB-накопителя. Вы можете запустить blockdev --getsize64 /dev/sda, чтобы получить размер вашего USB-накопителя в байтах, и, изменив путь устройства к SD-карте, вы можете убедиться, что он равен как минимум такому же количеству байтов.

Маловероятно, что устройства имеют одинаковый размер, поэтому я бы предпочел создать идентичную таблицу разделов (с одинаковыми номерами разделов для минимальных хлопот )вручную на SD-карте. Это гарантирует, что дополнительное дисковое пространство, потенциально доступное на SD-карте, впоследствии может быть использовано, например, для хранения файлов. расширение корневого раздела или создание новых разделов. Используйте sfdisk -l /dev/sda, чтобы получить список разделов на /dev/sda в единицах секторов, а затем используйте fdisk /dev/sdb, чтобы создать такие же разделы на SD-карте (, предполагая, что ваше устройство SD-карты /dev/sdb, пожалуйста обновлять по мере необходимости ).

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

  1. If it is possible, can it be done while Manjaro is running?

Да, но в этом случае вы должны монтировать файловые системы только для чтения, чтобы избежать риска повреждения копии операционной системой, если она запишет что-либо на диск во время копирования.

Вот команды, чтобы сделать именно это и скопировать два раздела, которые вы указали в своем вопросе, при условии, что вы создали разделы, как описано выше, и опять же при условии, что ваша 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

Возможно, некоторым программам может не понравиться, что корневая файловая система временно смонтирована только для чтения -; перезагрузка исправит это.

0
18.03.2021, 23:12

Теги

Похожие вопросы