Как улучшить время загрузки Raspberry Pi?

15

Я создаю бытовое устройство, которое использует как Raspberry Pi для обработки пользовательского интерфейса и необходимого соединения WiFi. Подключенный к R-Pi у меня есть ЖК-экран AdaFruit:

Adafruit LCD

и USB-ключ Wifi:

USB WiFi ключ

А также клавиатура. Ничего больше. Операционная система - OpenElec , которая является довольно урезанной операционной системой.

Однако, когда пользователь включает устройство, R-Pi занимает много секунд, прежде чем он может принять пользовательский ввод.

Почему это занимает так много времени, если он загружается со вспышки? Десятки секунд кажутся большими вычислениями.

Можно ли что-нибудь сделать, чтобы Raspberry Pi загрузился менее чем за 5 секунд? Могут ли они перейти в некий режим гибернации, когда он записывает свою память во FLASH, а затем снова читает ее при включении?

Иначе, есть ли альтернатива Raspberry-Pi с аналогичными возможностями (маленький ЖК-экран, USB для ключа WiFi), который может загрузиться менее чем за 5 секунд?

Rocketmagnet
источник
Отличный вопрос, вы сможете вставить лог загрузки и ссылку на него? Не могу ничего сделать, зная, что он делает во время загрузки;)
MDMoore313
2
Что это загружается? Работаете ли вы с минимальной ОС и разбираете ее до костей - без рабочего стола и т. Д. ??
Скотт Сейдман
2
@ScottSeidman - Добавил OpenElec к моему вопросу.
1
Я согласен с @BigHomie. Невозможно предложить какое-либо улучшение, не видя, что происходит во время загрузки.
1
@NickAlexeev - Ааа, старая проблема перекрывающихся стэков. Я думаю, что все вопросы R-Pi были бы по теме там.

Ответы:

13

Я не работал с Raspberry Pi, но я сократил время загрузки со встроенными системами Linux, поэтому у меня есть некоторые общие ответы.

1) OpenElec может быть отлично работающим встроенным дистрибутивом, но начинающие / демо-дистрибутивы, как правило, добавляют кухонную раковину, чтобы дать вам широкий спектр возможностей, но это часто означает, что есть сервисы запуска, которые вам не нужны. Посмотрите в каталогах init и отключите или отложите все, что не является необходимым для ваших целей. Если вам не нужно ничего графического, в более медленных системах X windows или графические процессы могут быть в режиме реального времени. Не обязательно, потому что он не может генерировать графику адекватно, но загрузка всех библиотек в память требует времени. И от загрузки требуется время, когда все остальное, что вы хотите, также загружается или ожидает загрузки.

2) SD-карты имеют разную скорость чтения, купите самую быструю, с которой устройство может справиться. Или, может быть, посмотреть, будет ли USB-накопитель загружаться быстрее. Скорее всего, вам не понадобятся карты 40 Мбит / с, но переход с более дешевой карты SD на карту, которая может обрабатывать передачи 10 Мбит / с, может иметь значение - опять же, в зависимости от того, какие карты SD может обрабатывать Пи). Как тангенс: запуск с SD-карты, если файловая система доступна для записи, не очень хорош для долгосрочной стабильности. Если вам это нужно, вам, возможно, придется подумать о настройке параметров загрузки, чтобы рассматривать карту как доступную только для чтения, или полностью принять другие системные меры.

3) Если вам действительно нужна графика, иллюзию загрузки можно получить легче, чем на 100% готовность к любому вводу. Существуют программы-заставки консольной загрузки, которые могут очень быстро выводить графику, в то время как запускаются все остальные службы. Я видел случаи, когда исходная графика панели управления использовалась в качестве статического загрузочного экрана, который заменяется живым рабочим, когда система готова - пользователь редко действительно хочет ввести данные в течение 2-3 секунд после отображения экрана. вверх.

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


источник
2
Особое внимание уделите пункту 2. Загрузка ядра и сценарии инициализации занимают примерно 30: 70% времени загрузки соответственно. Пользовательское ядро ​​запускается примерно на 40% быстрее, пользовательские сценарии запуска могут улучшиться на 90% по сравнению с оригиналами, что означает, что вы можете легко сократить время запуска вдвое.
SF.
Вы абсолютно правы, я поменялся местами № 1 и № 2, потому что раньше я проводил время со сценариями инициализации.
8

Почему это занимает так много времени, если он загружается со вспышки?

Частично ответ может быть вопросом чистой пропускной способности. Хотя SD-карты используют флэш-память NAND, они могут передавать данные только последовательно. По сравнению, скажем, с флеш-чипом NAND, который был припаян к плате, который мог связываться с процессором напрямую через параллельную шину. Общая скорость передачи будет примерно зависеть от нескольких моментов, таких как тактовая частота шины и размер файлов, которые вы передаете.

Скорость передачи SD-карты на самом деле довольно низкая по сравнению с современным жестким диском SATA III или даже SATA II. Если не считать порта SATA, USB 3.0 является еще одной альтернативой, которая имеет довольно высокую скорость передачи данных при относительно низкой стоимости.

Более подробную информацию можно найти здесь , здесь и здесь .

Можно ли что-нибудь сделать, чтобы Raspberry Pi загрузился менее чем за 5 секунд?

Процессор, который использует Pi, довольно низок (отсюда и цена). Это означает, что ему не хватает высокоскоростных интерфейсов, таких как SATA или USB 3.0. Если не считать программной эмуляции этих протоколов (которые, вероятно, также пострадают из-за серьезных проблем с пропускной способностью), мало что можно сделать, кроме как избавиться от жира в ОС.

Могут ли они перейти в некий режим гибернации, когда он записывает свою память во FLASH, а затем снова читает ее при включении?

Согласно OpenElec, Pi не поддерживает спящий режим , но если вы читаете немного дальше, у них есть несколько советов о том, как ускорить работу вашего Pi .

Дэвид Фрейтаг
источник
3

Вообще говоря, чтение с SD очень медленное, поэтому оно сильно влияет.

Попробуйте загрузочную диаграмму и выясните , есть ли смысл улучшить время загрузки.

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

Ёнгган Ким
источник