Да, насколько мне известно, это вполне возможно!
Что вы хотите сделать, это скопировать корневой раздел на USB-накопитель, а затем изменить /etc/fstab
и /boot/cmdline.txt
чтобы он загружался с внешнего диска вместо второго раздела на SD-карте.
Если найден учебник, но, к сожалению, он не на английском, поэтому я постараюсь объяснить процедуру своими словами.
Перезагрузите Pi с единственным внешним диском, являющимся USB-накопителем (таким образом, мы избегаем использования разных номеров дисков при каждой загрузке, поскольку уникальные идентификаторы дисков невозможны, если вы захотите поменять USB-накопители позже).
Получить номер диска через sudo blkid
. Должен быть только один, который выглядит так: /dev/sda1
.
С помощью команды mount
мы можем увидеть, была ли она автоматически смонтирована. Если его нет в списке, перейдите к следующему шагу. Если это так, запустите sudo umount /dev/sda1
(исправьте разные номера, если они не совпадают), чтобы размонтировать USB-накопитель.
Затем мы хотим отформатировать USB-накопитель, чтобы иметь правильную файловую систему для корневого раздела Debian, которая предпочтительно является ext4
. Вы можете сделать это, выполнив команду: sudo mkfs.ext4 /dev/sda1
.
После этого нам нужно (повторно) подключить USB-накопитель во временную папку, чтобы скопировать корневой раздел с SD-карты. Мы делаем это, запустив: sudo mount /dev/sda1 /mnt
. (Если команда жалуется на то, что /mnt
не существует, создайте папку с таким именем, выполнив: sudo mkdir /mnt
и попробуйте снова.
Теперь пришло время скопировать все данные из корневого раздела, сначала переключившись в верхний каталог с помощью: cd /
а затем выполнив эту команду tar : sudo tar cf - * --exclude /mnt/* | ( cd /mnt; sudo tar xfp -)
. Вероятно, это не самое компактное решение, но оно сработало для меня. Имейте в виду, что это может занять некоторое время, в зависимости от скорости вашей SD-карты и USB-накопителя.
Затем нам нужно изменить /etc/fstab
который содержит диски, которые должны быть смонтированы при загрузке, запустив sudo nano /mnt/etc/fstab
. ( Обратите внимание, что это на флешке, так как мы добавили /mnt
.)
Вам нужно изменить соответствующие строки, чтобы они выглядели так:
/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/sda1 / ext4 defaults,noatime 0 0
Наконец, мы должны указать загрузочному разделу на SD-карте загрузиться с USB-накопителя. Но сначала, вероятно, хорошей идеей будет сделать резервную копию файла, который мы собираемся изменить сейчас, прежде чем мы сделаем это, выполнив команду : sudo cp /boot/cmdline.txt /boot/cmdline.txt.save
,
Запустите sudo nano /boot/cmdline.txt
чтобы ввести nano
для изменения параметров загрузки в первом разделе SD-карты. В основном нам нужно изменить запись для корневого раздела на USB-накопитель. Учебник предлагает это ввести там (1 строка):
dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2
Вы можете прочитать, что означают эти параметры здесь.
Теперь сохраните и выйдите из nano
и при следующей перезагрузке ваш Raspberry Pi должен загрузиться с USB-накопителя, но, конечно, SD-карта все еще требуется, как вы уже упоминали.
Пока USB-накопитель является единственным (кроме SD-карты) при загрузке, это должно работать. У вас должно быть что-то динамическое, и я не вижу другого способа обращения к диску, кроме использования /dev/diskX
.
Изменить: я забыл упомянуть, что вам нужно дублировать USB-накопитель после того, как вы закончите, или сделать те же шаги с другими установками на другие диски. Если версия Raspian, включая установленные пакеты, одинакова, я не вижу причин, почему это не должно работать.
Раздел /boot
довольно простой, и строка, которую я упомянул в 9. - это практически все, что он делает. Ему просто нужно передать его на правильный раздел с правильной файловой системой, и он должен работать.
Я надеюсь, что это было полезно для вас.
Для немецкоязычных людей я оставлю ссылку на источник здесь: Источник.