Завантаження з зовнішнього 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?
Відхилення

3
Дякую вам дуже, Jivings, я "прошив" офіційне зображення на своїй USB-накопичувачі, потім скопіював матеріал із партії FAT на SD-карту та відкоригував cmdline.txt. У моєму випадку кореневим розділом є / dev / sda2, тому що / dev / sda1 є (невикористаним) завантажувальним розділом на USB-палиці. У моєму випадку мені не потрібно було rootwait, але добре знати цей параметр!
stefan.at.wpf

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

4

Найпростіший спосіб налаштувати це - використовувати BerryBoot . Він підтримує встановлення одного або декількох зображень на USB-накопичувач (або на саму SD-карту) із вікна через приємний інтерфейс GUI.

Щоб налаштувати все, що вам потрібно зробити, це скопіювати ~ 70 Мб встановлених файлів на SD-карту, відформатовану FAT32, вставити її у свій пристрій та завантажитися. У нього навіть є список заздалегідь налаштованих зображень, які він може автоматично завантажувати та встановлювати для вас через Ethernet або Wi-Fi з'єднання.

Потім вибираєте ОС, яку ви хотіли б завантажувати за замовчуванням із наявних зображень, і якщо ви хочете додати нові зображення або змінити типовий параметр на більш пізню дату, просто натисніть клавішу Enter під час завантаження, щоб перенастроїтись!


перемістити зображення на SD-карту? Я думав, ми хочемо встановити його на USB-накопичувач?
Сухайб

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

2

добре, щоб уточнити -

далі до відповіді @Jivings -

Існує кілька способів, з якими можна звернутися до диска в fstab. Використання / dev / sdXX не завжди може бути безпечним, оскільки порядок появи дисків scsi може не гарантуватися.

Я не знаю, якщо конфігурація завантаження розуміє що-небудь, крім основних міток пристрою. "root = / dev / sda1" - це абстракція, тому теоретично root = LABEL = TEST може працювати. Мені потрібно дослідити.

Прошу вибачення, якщо я не дуже зрозумілий. Очевидно, я маю певний досвід навичок пояснення Linux людям.


1
Живці: чи могли б ви пояснити деякі параметри у прикладі командного рядка для нас, нубі? Дякую.
Майкл Моріарті

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