Raspberry Pi — это великолепный универсальный комплект, способный выполнять такие разнообразные проекты, как управление медиацентром для использования в качестве радиовещательного радио. Но у него есть один явный недостаток: невозможность загрузки с USB.
Ну, до сих пор это так.

Если вы используете Raspberry Pi 3
Теперь можно отказаться от загрузки с microSD и вместо этого загрузить компьютер с USB-устройства. Это может быть флешка, SSD с USB-адаптером или даже полноразмерный жесткий диск USB. Это важное событие, поэтому давайте посмотрим, как настроить Raspberry Pi 3 для загрузки с USB.
Начало работы: установите Raspbian и добавьте новые файлы
Лучше всего начать этот проект со свежей копии Raspbian, поэтому скачайте последнюю версию (мы используем Raspbian Jessie)
) и установить его обычным способом
, Как только это будет сделано, безопасно извлеките карту из ПК, вставьте ее в выключенный Raspberry Pi и загрузитесь, подключившись удаленно через SSH
как только он загрузится.
Войдите (если вы не изменили свои учетные данные по умолчанию)
) затем выполните следующие команды, которые заменят стандартные start.elf а также bootcode.bin файлы со свежескачанными альтернативами:
sudo apt-get update
sudo BRANCH=next rpi-update
Это обновление доставляет два файла в / загрузки каталог. После загрузки файлов перейдите в режим загрузки через USB с помощью:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
Эта команда добавляет program_usb_boot_mode = 1 инструкция до конца config.txt файл.

Вам нужно будет перезагрузить Pi, как только это будет сделано.
Следующим шагом является проверка того, что OTP — одноразовая программируемая память — была изменена. Проверьте это с:
vcgencmd otp_dump | grep 17:
Если результат является представителем адреса 0x3020000a (такие как 17: 3020000a) тогда все хорошо пока. На этом этапе, если вы хотите удалить program_usb_boot_mode = 1 линия от config.txt файл, вы можете. В Pi теперь включена загрузка через USB, и вы можете использовать ту же карту microSD в другом Raspberry Pi 3 с тем же образом, поэтому удаление строки — хорошая идея.

Это легко сделать, отредактировав config.txt в нано:
sudo nano /boot/config.txt
Удалите или закомментируйте соответствующую строку (с предшествующим #).
Подготовьте загрузочное устройство USB
Затем подключите отформатированный (или готовый к удалению) USB-накопитель к запасному порту на Raspberry Pi 3. После этого мы продолжим копирование операционной системы.
Начните с идентификации вашей флешки с помощью lsblk команда.

В этом примере SD-карта mmcblk0 в то время как флешка SDA (это отформатированный раздел sda1). Если у вас подключены другие USB-устройства хранения данных, USB-накопитель может быть sdb, sdc и т. Д. Установив имя USB-накопителя, размонтируйте диск и используйте разделенный инструмент для создания раздела размером 100 МБ (FAT32) и раздела Linux:
sudo umount /dev/sda
sudo parted /dev/sda
В приглашении (parted) введите:
mktable msdos
Вам может быть сообщено, что диск занят. Если это так, выберите игнорировать, затем обратите внимание на предупреждение о том, что данные на диске будут уничтожены. Как объяснялось ранее, это должен быть диск, который вы с удовольствием удалите или отформатируете, поэтому согласитесь с этим.
Если у вас возникнут какие-либо проблемы, вам может потребоваться переключиться на рабочий стол (вручную или через VNC).
) и убедитесь, что диск размонтирован, прежде чем вводить команду mktable msdos в оконную командную строку.
Продолжайте в расставании со следующим:
mkpart primary fat32 0% 100M
mkpart primary ext4 100M 100%
print
Это выведет некоторую информацию, касающуюся диска и новых разделов. Перейдите к выходу parted с помощью Ctrl + C перед созданием загрузочной файловой системы и корневой файловой системы:
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
Затем вам необходимо смонтировать целевые файловые системы перед копированием вашей текущей ОС Raspbian на USB-устройство.
sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/
sudo apt-get update; sudo apt-get install rsync
sudo rsync -ax --progress / /boot /mnt/target
Эта последняя команда является последней командой, которая копирует все, и для ее завершения потребуется некоторое время. Время сделать кофе!

Затем вам нужно обновить ключи хоста SSH, чтобы поддерживать соединение с перенастроенным Raspberry Pi после неизбежной перезагрузки:
cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc

Обратите внимание, что после sudo chroot (пятая команда выше) вы переключаетесь на root, поэтому пользователь изменится с пи @ raspberrypi в корень @ raspberrypi пока вы не введете выход в строке 8.
Подготовьтесь к перезагрузке с USB!
Еще несколько вещей, чтобы разобраться, прежде чем ваш Raspberry Pi будет готов к загрузке с USB. Нам нужно отредактировать cmdline.txt снова из командной строки с помощью:
sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt
Аналогично, в fstab необходимо внести следующие изменения:
sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab
Затем вы готовы размонтировать файловые системы перед тем, как выключить Pi:
cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target
sudo poweroff
Обратите внимание, что это использует новый выключение команда как альтернатива неисправность.
Когда Pi отключился, отключите питание, прежде чем извлекать SD-карту. Затем снова подключите источник питания — теперь ваш Raspberry Pi должен загружаться с USB-устройства!
Вы пробовали это? Заинтригован возможностями загрузки с USB, а не с SD-карты? Планируете попробовать? Напишите нам в комментариях!