Загрузка с внешнего USB-накопителя?


44

Я знаю, что невозможно напрямую загрузиться с внешнего USB-накопителя / накопителя, но вместо этого вам придется загружаться с SD-карты, и тогда внешнее устройство может вступить во владение. Какой самый простой и предпочтительный способ настройки, поэтому загрузитесь с SD-карты и затем включите внешнее устройство?

Ответы:


37

Если у вас есть существующая ОС, работающая на Pi, то сначала было бы полезно узнать, поддерживается ли устройство USB. Вы можете сделать это, установив его как обычно:

mount /dev/sda1 /mnt 

Если это не удастся, вы не сможете использовать USB-устройство в качестве корневого раздела, не включив для него модули ядра. И для этого вам может понадобиться собрать собственное ядро.

Если это удастся, то он должен нормально работать с некоторыми изменениями параметров загрузки, которые использует Pi:

Откройте существующий образ, cmdline.txtкоторый находится в загрузочном разделе, и введите следующие строки:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Все, что вам нужно сделать, это перенести это изображение на SD-карту и загрузить Pi. Если все в порядке, /dev/sda1должно быть местоположение USB-накопителя при загрузке Pi, и поэтому он должен попытаться использовать это местоположение в качестве корневого. Этот rootwaitпараметр важен, поскольку он заставит процесс загрузки зависать до тех пор, пока USB-накопитель не будет распознан. Без этого Пи может жаловаться на то, что местоположение не существует.

Я предлагаю вам скопировать корневой раздел из существующего образа Raspberry Pi на USB-накопитель и использовать его для загрузки.

Дайте мне знать, если вам нужна дополнительная информация.


+1 Отличный ответ. console=...Уже не должно быть там?
Алекс Чемберлен

2
Кроме того, вы можете использовать UUID в командной строке?
Алекс Чемберлен

Да, я предоставил весь файл, и где вы говорите об использовании UUID?
Jivings

3
Большое спасибо Jivings, я «прошил» официальное изображение на свою флешку, затем скопировал материал с FAT partiiton на SD-карту и настроил cmdline.txt. В моем случае корневым разделом является / dev / sda2, потому что / dev / sda1 - это (неиспользуемый) загрузочный раздел на флешке. Мне не нужен rootwait в моем случае, но приятно знать этот параметр!
stefan.at.wpf

@ stefan.at.wpf (и Jivings) Вы можете использовать UUID вместо /dev/sdx- по крайней мере, в /etc/fstab/- тогда это не имеет значения, если xизменения.
Алекс Чемберлен

4

Самый простой способ настроить это - использовать BerryBoot . Он поддерживает установку или извлечение одного или нескольких изображений на USB-накопителе (или на самой SD-карте) из коробки через приятный графический интерфейс.

Чтобы настроить его, все, что вам нужно сделать, это скопировать ~ 70 МБ установочных файлов на SD-карту, отформатированную в FAT32, вставить ее в устройство и загрузить. У него даже есть список предварительно настроенных образов, которые он может автоматически загрузить и установить для вас через соединение Ethernet или Wi-Fi.

Затем вы выбираете операционную систему, которую вы хотите загрузить по умолчанию, из имеющихся у вас образов, и, если вы хотите добавить новые образы или изменить настройки по умолчанию позднее, вы просто нажимаете enter во время процесса загрузки, чтобы перенастроить!


переместить изображение на SD-карту? Я думал, что мы хотим установить его на флешку?
Сухайб

Как указывалось в ОП, загрузка Raspberry Pi с USB-накопителя невозможна. Вам нужна SD-карта с установленным загрузчиком, которая может перевести процесс на другое устройство после включения питания.
Натан Данн

2

хорошо, чтобы уточнить -

далее к ответу @Jivings -

Существует несколько способов обращения к диску в fstab. Использование / dev / sdXX не всегда может быть безопасным, так как порядок появления scsi-дисков может быть не гарантирован.

Чего я не знаю, так это того, понимает ли конфигурация загрузки что-либо кроме основных меток устройства. Однако root = / dev / sda1 - это абстракция, поэтому теоретически root = LABEL = TEST может работать. Мне нужно расследовать.

Я прошу прощения, если я не очень ясно. Очевидно, у меня есть некоторый опыт в объяснении Linux новым людям.


1
Jivings: не могли бы вы объяснить некоторые параметры в вашем примере командной строки для нас, нубийцев? Спасибо.
Майкл Мориарти

Он никогда не упоминал fstab. Имя целевого устройства / раздела является параметром ядра. Я считаю, что другие соглашения об именах, такие как UUID, возможны в современных ядрах, особенно если они имеют модули initrd / initramfs.
jiggunjer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.