Raspberry Pi — различия между версиями
Avp (обсуждение | вклад) (→Тестирование: Переименовал, добавил подраздел про boost) |
Avp (обсуждение | вклад) |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | Информация о нашем экземпляре [[Платформа::Raspberry Pi]]: | |
− | Информация о нашем экземпляре Raspberry Pi: | ||
$ uname -a | $ uname -a | ||
Строка 6: | Строка 5: | ||
$ cat /etc/debian_version | $ cat /etc/debian_version | ||
7.8 | 7.8 | ||
+ | |||
+ | == Wi-Fi == | ||
+ | === Проверенные USB Wi-Fi адаптеры === | ||
+ | [[маркировка::TP-Link TL-WN725N]] Ver. 3.0 для Raspberry Pi 2 Model B V1.1: https://www.citilink.ru/catalog/729597/ | ||
+ | |||
+ | Работает без танцев с бубном. | ||
+ | |||
+ | Система: [[Операционная система::Raspbian (OctoPi) GNU/Linux 10 (buster)]] | ||
+ | |||
+ | ==== Настройка Wi-Fi для подключения к скрытой точке доступа ===== | ||
+ | Настройка Wi-Fi для подключения к скрытой точке доступа -- пример <code>/etc/network/interfaces</code>: | ||
+ | <pre> | ||
+ | auto lo | ||
+ | |||
+ | iface lo inet loopback | ||
+ | iface eth0 inet dhcp | ||
+ | |||
+ | auto wlan0 | ||
+ | allow-hotplug wlan0 | ||
+ | iface wlan0 inet dhcp | ||
+ | wpa-scan-ssid 1 | ||
+ | wpa-ap-scan 1 | ||
+ | wpa-key-mgmt WPA-PSK | ||
+ | wpa-proto RSN WPA | ||
+ | wpa-pairwise CCMP TKIP | ||
+ | wpa-ssid "<SSID>" | ||
+ | wpa-psk "<PASSWORD>" | ||
+ | </pre> | ||
+ | |||
+ | Следует обратить внимание на опцию <b>wpa-scan-ssid</b>, так как выставление её в 1 необходимо для подключения к скрытой точке доступа. | ||
+ | |||
+ | Описание опций можно найти, к примеру, здесь: http://www.cs.upc.edu/lclsi/Manuales/wireless/files/wpa_supplicant.conf | ||
== distcc == | == distcc == | ||
Строка 75: | Строка 106: | ||
==== boost ==== | ==== boost ==== | ||
− | В репозиториях Raspbian (Debian) 7.8 | + | В репозиториях [[операционная система::Raspbian (Debian) 7.8]] самая новая версия библиотеки [http://www.boost.org/ boost] -- 1.50. Однако для сборки некоторых программ требуется более новая версия boost (к примеру, фреймворк [[Участник:Avp/iotivity|IoTivity]] требует boost 1.55). Здесь мы рассмотрим сборку boost 1.55 на Raspberry Pi, с использованием <code>distcc</code> для ускорения процесса. |
Скачиваем и распаковываем исходники библиотеки: | Скачиваем и распаковываем исходники библиотеки: | ||
Строка 94: | Строка 125: | ||
=== distccmon === | === distccmon === | ||
− | distccmon позволяет отслеживать статус компиляции -- при запуске на машине, которая компилирует что-либо через <code>distcc</code>, она показывает, какие файлы в данный момент обрабатываются и на каком хосте. Утилита идёт в двух ипостасях -- консольная <code>distccmon-text</code> и графическая <code>distccmon- | + | distccmon позволяет отслеживать статус компиляции -- при запуске на машине, которая компилирует что-либо через <code>distcc</code>, она показывает, какие файлы в данный момент обрабатываются и на каком хосте. Утилита идёт в двух ипостасях -- консольная <code>distccmon-text</code> и графическая <code>distccmon-gnome</code> (которая ставится отдельно.) |
Пример запуска <code>distccmon-text</code>: | Пример запуска <code>distccmon-text</code>: | ||
Строка 104: | Строка 135: | ||
DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --log-level debug --log-file=/var/log/$NAME.log --daemon" | DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --log-level debug --log-file=/var/log/$NAME.log --daemon" | ||
+ | |||
+ | == Troubleshooting == | ||
+ | === HDMI-монитор не подключается при первом старте === | ||
+ | ==== Симптомы ==== | ||
+ | Монитор подключен, но при первом старте (к примеру, после включения электричества в хакерспейсе), на мониторе надпись "No signal". | ||
+ | ==== Решение ==== | ||
+ | * https://raspberrypi.stackexchange.com/a/4735 | ||
== Сноски == | == Сноски == | ||
Строка 111: | Строка 149: | ||
* [http://www.openframeworks.cc/setup/raspberrypi/Raspberry-Pi-DISTCC-guide.html Статья по настройке распределённой компиляции с distcc для Raspberry Pi] (на английском) | * [http://www.openframeworks.cc/setup/raspberrypi/Raspberry-Pi-DISTCC-guide.html Статья по настройке распределённой компиляции с distcc для Raspberry Pi] (на английском) | ||
* [http://habrahabr.ru/post/111324/ Использование, настройка и тестирование distcc и ccache] | * [http://habrahabr.ru/post/111324/ Использование, настройка и тестирование distcc и ccache] | ||
+ | |||
+ | [[Категория:База знаний]] | ||
+ | [[Категория:Raspberry Pi]] |
Текущая версия на 22:03, 28 августа 2021
Информация о нашем экземпляре Raspberry Pi:
$ uname -a Linux puffin 3.2.0-4-rpi #1 Debian 3.2.51-1+rpi1 armv6l GNU/Linux $ cat /etc/debian_version 7.8
Содержание
Wi-Fi
Проверенные USB Wi-Fi адаптеры
TP-Link TL-WN725N Ver. 3.0 для Raspberry Pi 2 Model B V1.1: https://www.citilink.ru/catalog/729597/
Работает без танцев с бубном.
Система: Raspbian (OctoPi) GNU/Linux 10 (buster)
Настройка Wi-Fi для подключения к скрытой точке доступа =
Настройка Wi-Fi для подключения к скрытой точке доступа -- пример /etc/network/interfaces
:
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-scan-ssid 1 wpa-ap-scan 1 wpa-key-mgmt WPA-PSK wpa-proto RSN WPA wpa-pairwise CCMP TKIP wpa-ssid "<SSID>" wpa-psk "<PASSWORD>"
Следует обратить внимание на опцию wpa-scan-ssid, так как выставление её в 1 необходимо для подключения к скрытой точке доступа.
Описание опций можно найти, к примеру, здесь: http://www.cs.upc.edu/lclsi/Manuales/wireless/files/wpa_supplicant.conf
distcc
Компиляция на Raspberry Pi чего-либо сложнее "Hello World!" может занимать приличное количество времени, и естественным желанием является ускорение этого процесса. Решением данной проблемы может служить распределённая (кросс)-компиляция для Raspberry Pi, что и будет рассмотрено далее.
Сервер
Здесь мы рассмотрим настройку distccd
на машинах, которые будут помогать нашему Raspberry Pi в нелёгкой задаче компиляции.
Во-первых, ставим distccd
:
$ apt-get install distcc
Клонируем набор утилит (англ. toolchain)[1]:
$ git clone --depth=1 https://github.com/raspberrypi/tools.git rpi-tools $ sudo mv rpi-tools /opt/
Тогда путь к toolchain'у будет следующий:
/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
Теперь указываем distccd
путь к утилитам. Меняем /etc/init.d/distcc
:
RPI_BIN_PATH=/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$RPI_BIN_PATH
Правим настройки distccd
в файле /etc/default/distcc
:
STARTDISTCC="true" ALLOWEDNETS="172.16.1.0/16" LISTENER="0.0.0.0" JOBS="2"
Перезапускаем сервис:
$ sudo service distcc restart
Клиент (Raspberry Pi)
Клиентом выступает наш Raspberry Pi.
Ставим distcc
:
$ apt-get install distcc
Добавляем хосты-помощники (на которых запущен distccd
) в файл /etc/distcc/hosts
, убираем (комментируем) +zeroconf
:
#+zeroconf localhost,lzo,cpp penguin,lzo,cpp pelican,lzo,cpp
Сборка с использованием distcc
htop
Тестирование распределённой сборки будем делать на утилите htop:
$ wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz $ tar -zxf htop-1.0.3.tar.gz $ cd htop-1.0.3
Ставим необходимые библиотеки для сборки:
$ sudo apt-get install libncurses5-dev
Указываем путь к компиляторам:
$ export CXX=/usr/lib/distcc/arm-linux-gnueabihf-g++ CC=/usr/lib/distcc/arm-linux-gnueabihf-gcc
Запускаем компиляцию:
$ ./configure --disable-unicode $ make -j4
boost
В репозиториях Raspbian (Debian) 7.8 самая новая версия библиотеки boost -- 1.50. Однако для сборки некоторых программ требуется более новая версия boost (к примеру, фреймворк IoTivity требует boost 1.55). Здесь мы рассмотрим сборку boost 1.55 на Raspberry Pi, с использованием distcc
для ускорения процесса.
Скачиваем и распаковываем исходники библиотеки:
$ tar -jxf boost_1_55_0.tar.bz2 $ cd boost_1_55_0
Для сборки библиотеки boost с использованием distcc
необходимо поменять настройки в файле tools/build/v2/user-config.jam
, указав distcc g++
в качестве компилятора:
# Configure specific gcc version, giving alternative name to use. # using gcc : 3.2 : g++-3.2 ; using gcc : : distcc g++ ;
Запускаем сборку:
$ ./bootstrap.sh $ distcc-pump ./b2 -j4
distccmon
distccmon позволяет отслеживать статус компиляции -- при запуске на машине, которая компилирует что-либо через distcc
, она показывает, какие файлы в данный момент обрабатываются и на каком хосте. Утилита идёт в двух ипостасях -- консольная distccmon-text
и графическая distccmon-gnome
(которая ставится отдельно.)
Пример запуска distccmon-text
:
$ watch -n1 distccmon-text
Изменение уровня логирования
Для изменения уровня логирования distccd
необходимо поменять значение опции --log-level
. Это можно сделать в /etc/init.d/distcc
:
DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --log-level debug --log-file=/var/log/$NAME.log --daemon"
Troubleshooting
HDMI-монитор не подключается при первом старте
Симптомы
Монитор подключен, но при первом старте (к примеру, после включения электричества в хакерспейсе), на мониторе надпись "No signal".
Решение
Сноски
- ↑ Опция
--depth=1
предписывает клонировать только последний коммит с брэнча, без клонирования всей истории.