Загрузка с жесткого диска USB?

44

Есть ли способ загрузки с внешнего жесткого диска, подключенного к устройству через USB-порт (в отличие от загрузки с SD-карты)?

Система не работает
источник
1
Это только ссылка на фактический учебник, поэтому я оставил его в качестве комментария: blog.krastanov.org/2014/01/30/booting-pi-reliably-from-usb
Крастанов

Ответы:

8

Теперь, спустя почти пять лет после того, как автор первоначально задал этот вопрос,
Raspberry Pi официально поддерживает загрузку с запоминающего устройства USB .

Однако это поддерживается только для Raspberry Pi 3 . Вот почему:

Будет ли возможно загрузить Pi 1 или Pi 2, используя MSD?

К сожалению нет. Загрузочный код хранится только на устройстве BCM2837, поэтому для Pi 1, Pi 2 и Pi Zero потребуются карты SD.

Андрейс Кайников
источник
28

Невозможно загрузить RPi с USB напрямую в полном смысле этого слова. Однако ничто не мешает кому-то создать мини-дистрибутив, который будет содержать / boot и какой-то менеджер загрузки. Это может затем реализовать загрузку с USB или даже в стиле PXE. Это может уместиться на крошечной SD-карте - 64 МБ карты теперь доступны за копейки. Я ожидаю, что кто-то накатит дистрибутив для этого - но не нашел ни одного на сегодняшний день.

Тем временем вы можете переместить свой собственный корневой раздел на жесткий диск, чтобы ускорить загрузку, но это несколько усложняется, так как вам потребуется ядро ​​с поддержкой USB-накопителя. Хорошие инструкции о том, как это сделать, можно найти по адресу: http://mitchtech.net/raspberry-pi-root-fs-on-usb-drive/

Мария Зверина
источник
3
Это хорошая идея.
Jivings
Обновление: теперь есть экспериментальная поддержка загрузки непосредственно на USB; SD-карта не требуется после первоначальной настройки.
Hydraxan14
21

Из FAQ по Raspberry Pi :

Вы должны загрузиться с SD, но USB HD может «вступить во владение» после начальной загрузки. Вы не можете загрузиться без SD-карты.

Даррен Уилкинсон
источник
1
Означает ли это, что после того, как хардиск вступит во владение, автомобиль памяти больше не нужен?
Сухайб
5

Действительно, если вы можете жить только с разделом SD MS-DOS (/ boot), где находится ядро, вы можете иметь / root и все остальное на внешнем устройстве. Карта памяти USB или физический жесткий диск подходят как дополнительный диск. Хорошо то, что если вы не «дд» в неправильном месте, это неразрушающая процедура: одна правка и вы возвращаетесь к оригиналу,

Настроить эту конфигурацию довольно просто. Вы настраиваете свою установку как обычно и перемещаете / копируете раздел EXT4 на внешний диск.

Используя fdiskраздел «» выбранного дополнительного диска, создайте раздел того же или большего размера, чем текущий mmcblk0p2 (или mmcblk0p5). Сохраните новую конфигурацию.

Найдите в этом примере имя раздела '/ dev / sda5', однако этот раздел будет зависеть от вашей конфигурации.

Скопируйте работающий раздел (примечание: не рекомендуется копировать работающий раздел, некоторые файлы находятся в нестабильном или открытом состоянии, однако работают нормально):

dd if=/dev/mmcblk0p2 of=/dev/sda5 bs=10M

Теперь отредактируйте следующую строку в файле /boot/cmdline.txt и измените местоположение «root»:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Для этой новой линии.

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda5 rootfstype=ext4 elevator=deadline rootwait

Обратите внимание, что загрузочный раздел - MS-DOS, поэтому, если вам нужно исправить, вы можете смонтировать SD в другом месте и отредактировать. Если загрузка не удалась, загрузчик покажет на экране (HDMI) доступные точки подключения.

Эта настройка зависит от порядка монтирования. Номер раздела может измениться, если устройство установлено в другом слоте; Вы можете сделать это место независимым следующим образом.

Найти устройство «UUID»

blkid /dev/sda5
/dev/sda5: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4"

или создайте новый

tune2fs -U random /dev/sda5

и получить новое присвоенное имя

blkid /dev/sda5
/dev/sda5: UUID="25b6aa72-ddc4-485e-8044-900ac24d662b" TYPE="ext4"

затем отредактируйте ранее измененный cmdline.txt, изменив корневую папку на:

root=UUID=25b6aa72-ddc4-485e-8044-900ac24d662b

После загрузки новой конфигурации отредактируйте fstab, удалите старое примечание / mmcblk0p2: этот файл будет на «новом» / корневом устройстве.
Замените / dev / mmcblk0p% (% - это раздел linux)

nano /etc/fstab
UUID=25b6aa72-ddc4-485e-8044-900ac24d662b ...
ТСМ
источник
2

В raspbian, просто изменить rootфлаг , /boot/cmdline.txtчтобы , root=/dev/sdaXгде Xэто число соответствующего раздела.

Подробнее о том, как получить raspbian на вашем USB и т. Д., Вы можете проверить здесь http://blog.krastanov.org/2014/01/30/booting-pi-reliably-from-usb/

Крастанова
источник
1

Я вместо этого использовал окна для 100% создания.

Я использовал (бесплатный) менеджер разделов MiniTool и просто перенес загрузку на мою маленькую SD-карту, которую можно автоматически расширить с помощью менеджера разделов. Откройте cmdline.txtи измените на root=/dev/sda5.

Тот же менеджер разделов позволил мне скопировать ext4 на мой переносимый 1 ТБ (к вашему сведению, сначала удалите все разделы с дисков, чтобы у вас было нераспределенное пространство перед переносом). Вала - загрузился. Я заметил, что со стандартным жестким диском времени доступа немного не хватает, хотя они имеют очень высокую скорость чтения / записи по сравнению с большинством SD-карт.

Единственная проблема, с которой я столкнулся сейчас, - это расширение раздела ext4 (root) с исходных 32 ГБ (моей исходной SD-карты). Таким образом, у меня есть только 32 ГБ из 1 ТБ в настоящее время. Хм. Я только новичок в терминале и его командах, поэтому разделение в linux немного волнует, но это руководство помогло ОЧЕНЬ хорошо.

Дейв
источник
Извините, что руководство?
Бекс
Извините, этот форум.
Дейв