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-карты? Планируете попробовать? Напишите нам в комментариях!