Да, насколько мне известно, это вполне возможно!
Что вы хотите сделать, это скопировать корневой раздел на 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. - это практически все, что он делает. Ему просто нужно передать его на правильный раздел с правильной файловой системой, и он должен работать.
Я надеюсь, что это было полезно для вас.
Для немецкоязычных людей я оставлю ссылку на источник здесь: Источник.