Статья

Прокачиваем Raspberry Pi

Подготовительный процесс

Изначально это был черновик для собственных заметок, но с каждым разом информации становилась все больше и больше. Вся суть была в том чтобы максимально быстр прокачать свою плату Raspberry. Собрав много информации и упорядочив их последовательность действий, в голову пришла идея сделать из этого статью ориентированную на опытных пользователей. Спустя еще некоторое время, я понял что после публикации у новичков появятся кучу вопросов, на которые надо отвечать и собственно был принят решение расписать статью более подробно. Не знаю на сколько все информативно получилось, но я старался писать так, чтобы было меньше букв и больше информации...

Я постарался свести все к минимуму, чтобы можно было все максимально быстро настроить и поэтому в этой инструкции Raspberry даже к монитору подключать не надо!

Самое главное, чтобы у вас была хорошая карта памяти, желательно 10 класса и объемом не меньше 16 Гб. Я лично пользуюсь SanDisk Ultra, если кому интересно. Так же, глючных моментов чтобы не было, блок питания лучше использовать не меньше 2А.

Выбор Операционной Системы

Ну конечно все начинается с операционной системы (далее ОС) и самое главное, что выбирать даже не надо. Опытные пользователи знают, что для Raspberry существует собственная ОС под название Rasbian. Она бывает нескольких версии, но нам интересует именно упрощенная консольная версия под названием Raspbian Buster Lite.

Скачать образ ОС можно с официального сайта по этой ссылке.

Если вам нужна установка HomeBridge, то рекомендую ставить сразу готовый образ со встроенным Homebridge, ссылка ниже

Скачать образ ОС с Homebridge можно с официального источника по этой ссылке.

Установка Операционной Системы

Чтобы записать образ на карту памяти, нам понадобиться утилита под названием Etcher. Скачать можно отсюда.

Подключаем карту памяти к вашему компьютеру и запускаем утилиту Etcher

В первом разделе выбираем img образ ОС, во втором выбираем карту памяти и жмем на кнопку FLASH.
ВНИМАНИЕ!!! С карты памяти будут удалены все данные!

Включаем SSH доступ.

  Для настройки системы без подключения монитора и клавиатуры к Raspberry, нужно подключиться по SSH доступу. Проблема в том, что в последних версиях ОС Raspbian, по умолчанию доступ по SSH выключен. Пока карта памяти подключена к компьютеру, давайте решим этот вопрос. Переходим в корень карты памяти (название должно быть boot), где создаем новый пустой файл без расширения с названием SSH, для включения SSH доступа.

Если нужно подключиться через Wi-Fi.

  Если у вас не проводное подключение, чего не рекомендую и вам нужно настроить Wi-Fi сеть без подключения монитора и клавиатуры, то в корне карты памяти (название должно быть boot) надо будет создать новый пустой файл wpa_supplicant.conf, со следующим содержимым:    

Теперь извлеките карту памяти и вставьте ее в Raspberry. Подключите Raspberry к роутеру через сетевой кабель RJ-45 и включите питание. Спустя несколько секунд, на плате загорится красный светодиод. Это значит что, все прошло успешно!

Подключимся к Raspberry

Для подключения к Raspberry по SSH, нужно сначала узнать IP-адрес который роутер присвоил ему. Чтобы это узнать, придется покопаться в роутере. Роутеры бывают разные, так что здесь, разбирайтесь сами. Ну и конечно IP адрес лучше сразу присвоить постоянный, чтобы потом не менялся при перезагрузке и был доступен по одному и тому же адресу. Это важно!

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

Так же если вы работаете в ОС Windows, то вам необходимо будет скачать SSH-клиент, такой, как PuTTY. В других ОС такие, как Linux или macOS, SSH-клиент уже встроен по умолчанию.

Давайте уже подключимся к Raspberry

Для Linux/macOS, нужно открыть консоль/терминал и ввести команду:

bash
Копировать
ssh pi@192.168.1.33

после чего ввести пароль по умолчанию "raspberry". В ОС Windows нет SSH-клиента, поэтому будем пользоваться PuTTY. Чтобы упростить подключение по SSH с ожиданием готовности системы, где даже логиниться не надо, создадим bat файл для авто подключения через Putty. Создаем TXT файл, переименуем в Raspberry Connect.bat и сохраняем с ниже указанными строками

bash
Копировать
@echo off
cls
:: IP адрес вашего Raspberry
Set IP=192.168.1.33
:: Логин
Set Login=pi
:: Пароль
Set Password=1qawerty
:: Путь к программе Putty
Set Putty=%ProgramFiles%\PuTTY\putty.exe
ping -n 2 127.0.0.1>nul

:Begin
@color E5
@mode con:cols=66 lines=3
cls
echo.
^>^> Проверяем доступность Raspberry по адресу %IP%...
ping -n 1 %IP% |>nul find /i "TTL=" >nul && (
cls
echo. & echo ^>^>^> Raspberry обнаружен по адресу %IP%! Запуск Putty...
ping -n 2 127.0.0.1>nul
start "" "%Putty%" %Login%@%IP% -pw %Password%
exit)||(
goto :Begin)

При первом подключении через SSH, надо будет принять отпечаток ключа RSA, на запрос введите или просто выберите "yes", чтобы продолжить. Если все прошло успешно, то вы увидите следующее...

Произведем базовую настройку

Устанавливаем утилиту Samba и пакет sshpass, для авторизации из командной строки по паролю и обращения к ресурсам SMB и CIFS

Меняем пароль SSH доступа

Считаю первым, что надо делать, это смена пароля от SSH в целях безопасности. Делается это так, введите команду:

bash
Копировать
#Смена пароля
passwd

введите пароль по умолчанию "raspberry", после введите новый пароль и еще раз подтвердите новый пароль.

Автоматический вариант смены пароля без запроса

bash
Копировать
#Заменить NewPassword на новый пароль пользователя pi
echo 'pi:NewPassword' | sudo chpasswd
#Готово

Расширяем образ файловой системы

После установки ОС возникает ситуация, что на карте памяти остается много неиспользуемого места. Чтобы исправить эту ситуацию, нужно обязательно расширить образ файловой системы на весь объем карты памяти. Последние версии Raspbian вроде это делают автоматически, но для достоверности давайте сделаем это сами.

bash
Копировать
#Расширение образ файловой системы
sudo raspi-config --expand-rootfs
#Перезагрузка устройства
sudo reboot
#Готово

Обязательно делаем перезагрузку.

Добавляем поддержку локали русского языка

bash
Копировать
#Добавляем поддержку локали русского языка
sudo echo "locales locales/default_environment_locale select ru_RU.UTF-8" | sudo debconf-set-selections
sudo echo "locales locales/locales_to_be_generated multiselect ru_RU.UTF-8 UTF-8" | sudo debconf-set-selections
sudo rm /etc/locale.gen
sudo dpkg-reconfigure -f noninteractive locales
sudo sed -i '/^#.* en_US.UTF-8.* /s/^# //' /etc/locale.gen
sudo sed -i '/^#.* ru_RU.UTF-8.* /s/^# //' /etc/locale.gen
sudo locale-gen
sudo reboot
#Перезагрузка устройства

после перезагрузки вводим завершавшую команду:

bash
Копировать
#Применяем после перезагрузки
sudo update-locale LANG="ru_RU.UTF-8"
#Готово

Настраиваем правильный часовой пояс

Определим какие настройки нужны для вашего часового пояса, чтобы каждый раз не возвращаться к этому вопросу и тем более не копаться в интернете в поисках данных часовых поясов. Список часовых поясов большой, по этому предлагаю отфильтровать его с помощью команды grep на регион Asia:

bash
Копировать
timedatectl list-timezones | grep Asia

То же самое вы можете сделать через графический интерфейс

bash
Копировать
sudo dpkg-reconfigure tzdata

Потом выбираем географию, например "Азия", жмем OK, после выбираем город, скажем "Якутск" и нажимаем на кнопку OK.В консоли увидим надпись Current default time zone: 'Asia/Yakutsk', запоминаем то что в кавычках, в моем случае это Asia/Yakutsk. Теперь настраиваем нижний код под себя и вставляем в терминал

bash
Копировать
#Автоматизированная настройка часового пояса
sudo rm /etc/localtime
#Заменить здесь Asia/Yakutsk на свой
sudo ln -s /usr/share/zoneinfo/Asia/Yakutsk /etc/localtime
sudo rm -rf /etc/timezone
#Заменить здесь Asia/Yakutsk на свой
echo "Asia/Yakutsk" | sudo tee /etc/timezone
#Включаем синхронизацию времени
sudo timedatectl set-ntp true
#Выводим текущую временную зону
clear && echo 'Текущая временная зона' && cat /etc/timezone
#Готово
В следующий раз можно воспользоваться уже готовым автоматизированным процессом

Отключаем поддержку IPv6

bash
Копировать
#Отключаем поддержку IPv6
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl net.ipv6.conf.default.disable_ipv6=1
sudo sysctl net.ipv6.conf.lo.disable_ipv6=1
sudo sysctl -p
sudo /etc/init.d/networking restart
sudo ifconfig -a | grep inet6
#Готово

Назначим статический IP-адрес

Выше, я уже говорил что нужно зафиксировать постоянный IP-адрес для Raspberry в роутере, а сейчас предлагаю сделать это еще и на уровне ОС Raspbian. Кстати, чтобы не возникало конфликтов IP-адресов, который приведет к тому что ничего работать не будет, лучше сначала зафиксировать в самом роутере!
Давайте для начала узнаем какие параметры от dhcp-сервера получила сетевая карта нашего устройства

bash
Копировать
#Получаемые параметры от dhcp-сервера
sudo ifconfig
#Готово

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

Rasppbery должен быть подключен через тот интерфейс, в котором будем настраиваться статистический IP-адрес
bash
Копировать
#Вывод IP-адреса вашего роутера
sudo route -n
#Готово

Находим колонку Gateway и запоминаем снизу IP-адрес вашего роутера. Теперь введем другую команду и увидим IP-адрес DNS-сервера:

bash
Копировать
#IP-адрес DNS-сервера
sudo cat /etc/resolv.conf
#Готово

Затем одной командой настроим конфигурационный файл сетевой настройки

bash
Копировать
#Автоматизированная настройка
sudo rm -rf /etc/dhcpcd.conf
sudo grep '# Assign a Static IP-address #' /etc/dhcpcd.conf > /dev/null 2>&1 || sudo tee -a /etc/dhcpcd.conf > /dev/null 2>&1 <<_EOF_
#####################################################################
# Assign a Static IP-address && Ignore DHCP server nodhcp
#####################################################################

# Интерфейс подключения ( eth0-проводное или wlan0-беспроводное )
interface eth0
# Указываем IP адрес Raspberry и его подсеть
static ip_address=192.168.1.33/24
# IP-адрес вашего роутера
static routers=192.168.1.1
# IP-адрес DNS-сервера
static domain_name_servers=192.168.1.1
_EOF_
#Перегружаем малинку
sudo reboot
#Готово
Если IP-адрес роутера 192.168.1.1, то ip адрес Raspberry надо ставить в диапазоне 192.168.1.1-192.168.1.250, а маску подсети ставим 24, что соответствует 255.255.255.
Если была допущена ошибка, то у вас два варианта решения, либо ищем клавиатуру и монитор, либо возвращаемся на начало статьи и делаем все заново.

Обновим прошивку Raspberry

Что бы обновить прошивку вашего устройства Raspberry, введите следующие команды:

bash
Копировать
#Обновим прошивку Raspberry
sudo RPI_REBOOT=1 rpi-update

Будет просить подтверждения, нажимаем клавишу Y и ждем!  Если операция прошла успешно, то устройство само перезагрузиться.

НЕ СТОИТ слишком часто пользоваться этой командой! Используйте команду только при необходимости обновить на новую версию!

Собственно начнем процесс прокачки...

Обновляем кеш данных и индексы репозиторий:

bash
Копировать
#Очистка кеша данных и индексов репозиторий
sudo rm -Rf /var/lib/apt/lists/*
#Обновление кеша данных и индексов репозиторий
sudo apt update && sudo apt upgrade -y
#Готово

Установим GIT

bash
Копировать
#Установим GIT
sudo apt install git -y
#Готово

Установим MQTT Брокер

bash
Копировать
#Установим MQTT Брокер
sudo apt install -y mosquitto mosquitto-clients -y
sudo tee -a /etc/mosquitto/mosquitto.conf <<< "allow_anonymous true"
sudo tee -a /etc/mosquitto/mosquitto.conf <<< "listener 1883"
sudo systemctl enable mosquitto.service
sudo systemctl restart mosquitto.service
#Готово

Установим HomeBridge и плагины к нему

  Более подробная информация здесь

bash
Копировать
#Установка HomeBridge
git clone https://github.com/K-a-R-e-N/HomebBridge-Install-Script
bash ~/HomebBridge-Install-Script/InstallHB.sh -i -d
#Готово
ВНИМАНИЕ! Если вы воспользовались готовым образом Homebridge Raspberry Pi Image указанным в начале статьи, то Homebridge у вас УЖЕ УСТАНОВЛЕН!!!

Покажу пример легкой установки плагинов для HomeBridge, если принцип поняли, то тогда сформировать свой список не составит труда.

bash
Копировать
#Установка плагинов для HomeBridge
sudo hb-service add homebridge-wol@latest
sudo hb-service add homebridge-mqttthing@latest
sudo hb-service add homebridge-cmdswitch2-no-logs@latest
sudo hb-service add homebridge-samsungtvht@latest
sudo hb-service add homebridge-g-on-alice@latest
sudo hb-service add homebridge-camera-ffmpeg@latest --unsafe-perm
sudo hb-service add homebridge-camera-ffmpeg @evops/homebridge-hikvision --unsafe-perm
#Готово

Установим Homebridge-Camera-ffmpeg вместе с правильной сборкой aac и ffmpeg

  Более подробная информация здесь

Для установки выполняем следующие команды:   

bash
Копировать
#Установка HB-Camera-ffmpeg-Install-Script
git clone https://github.com/K-a-R-e-N/HB-Camera-ffmpeg-Install-Script
bash ~/HB-Camera-ffmpeg-Install-Script/InstallHBffmpeg.sh -i -d
#Готово
Внимание! Сборка ffmpeg занимает 40-60 минут на RPi 3 model B даже с учетом относительно быстрой карты памяти в ней. Это нормально. Имейте терпение

Установим Home Assistant при необходимости

  Более подробная информация здесь

bash
Копировать
#Установка Home Assistant
git clone https://github.com/K-a-R-e-N/HomeAssistant-Install-Script
bash ~/HomeAssistant-Install-Script/InstallHA.sh -i -d
#Готово

Далее переходим по адресу http://ip.адрес.малины:8123/ и авторизуемся.  После заходим в раздел Configurator, жмем на значок папки с лева в верхнем углу и выбираем configuration.yaml. Находим homekit: и меняем значения параметров auto_start: на true, а значения name: на Home Assistant

Теперь Home Assistant можно добавить в HomeKit.
Код добавления можно посмотреть на главной странице если нажать на иконку уведомления!

Установим Kodi Media Center при необходимости

  Более подробная информация здесь

bash
Копировать
#Установка Kodi Media Center
git clone https://github.com/K-a-R-e-N/Kodi-Install-Script
bash ~/Kodi-Install-Script/InstallKodi.sh -i -d
#Готово

Удаленная перезагрузка Raspberry и других устройств

    Более подробная информация здесь

bash
Копировать
#Ставим пакет "sshpass", для автоматического входа из командной строки по паролю
sudo apt install sshpass -y
#Устанавливаем Samba:
sudo apt install samba samba-common-bin -y
#Создаем нового пользователя
sudo useradd PowerControl
#Задаем пользователю пароль, скажем "12345678"
echo 'PowerControl:12345678' | sudo chpasswd
#Создаем домашний каталог:
sudo mkdir /home/PowerControl
#Перемещаем папку пользователя в скрытый каталог
sudo mv /home/PowerControl /var/PowerControl
#Присваиваем папку пользователя к учетной записи
sudo usermod PowerControl -d /var/PowerControl
# Делаем владельцем каталога пользователя "PowerControl"
sudo chown PowerControl /var/PowerControl
# Меняем права доступа каталога:
sudo chmod 500 /var/PowerControl
#Создаем каталог для следующей настройки
sudo mkdir /var/lib/AccountsService
sudo mkdir /var/lib/AccountsService/users
#Скрываем пользователя
sudo rm -rf /var/lib/AccountsService/users/PowerControl
echo "[User] SystemAccount=true" | sudo tee /var/lib/AccountsService/users/PowerControl
#Ограничим учетную запись "PowerControl" выполнением только командой shutdown
echo "PowerControl ALL=(ALL) NOPASSWD: /sbin/shutdown" | sudo tee /etc/sudoers.d/PowerControl
#Готово

Теперь можно указанной ниже командой перезагрузить Raspberry

bash
Копировать
sudo sshpass -p '12345678' ssh -oStrictHostKeyChecking=no PowerControl@192.168.1.33 sudo shutdown -r now

Интеллектуальное обновление системы с удалением не нужных зависимостей

bash
Копировать
sudo rm -Rf /var/lib/apt/lists
#Обновить список доступных пакетов
sudo apt update
#обновить систему, удаляя/устанавливая/обновляя пакеты
sudo apt full-upgrade -y
#Очищаем локальные репозиторий от извлеченных файлов пакетов
sudo apt-get autoclean
#автоматически удалить все неиспользуемые пакеты
sudo apt -y autoremove
#Готово

Полезные консольные команды для Raspbian

Выключение Raspberry

bash
Копировать
sudo shutdown -h now

Запуск утилиты конфигурации Raspberry

bash
Копировать
sudo raspi-config

Вывод информации о процессоре

bash
Копировать
sudo cat /proc/cpuinfo

Температура и частота работы процессоров

bash
Копировать
echo -en "\n" ; echo $(tput setf 3)"         Температура и частота работы процессоров"$ ; (tput setf 6) ; cpuTemp=$(cat /sys/class/thermal/thermal_zone0/temp) ; echo "  GPU" $(vcgencmd measure_temp)"  |  CPU temp="$(($cpuTemp/1000))"."$(($(($cpuTemp0/100)) % $(($cpuTemp/1000))))"'C  |  CPU freq"=$(($(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)/1000))"MHz"$(tput sgr0);

Информация о сетевых интерфейсов

bash
Копировать
sudo ifconfig

Информация о беспроводних устройствах

bash
Копировать
sudo iwconfig

Сканирование Wi-Fi сетей

bash
Копировать
sudo iwlist wlan0 scan

Информация и вывод списка работающих в системе процессов

bash
Копировать
sudo top

Заключение 

Теперь вы узнали, как правильно прокачать ваш Raspberry Pi и знаете, как можно это организовать и привнести свои настройки. Статья будет постоянно обновляться, Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже. Я постараюсь к следующему обновлению добавить ваши пожелания в статью...

1

Отличная статья! искал подобную давненько, а она оказалась "под носом")

Вернуться назад
Вернуться назад