Подготовительный процесс
Изначально это был черновик для собственных заметок, но с каждым разом информации становилась все больше и больше. Вся суть была в том чтобы максимально быстр прокачать свою плату Raspberry. Собрав много информации и упорядочив их последовательность действий, в голову пришла идея сделать из этого статью ориентированную на опытных пользователей. Спустя еще некоторое время, я понял что после публикации у новичков появятся кучу вопросов, на которые надо отвечать и собственно был принят решение расписать статью более подробно. Не знаю на сколько все информативно получилось, но я старался писать так, чтобы было меньше букв и больше информации...
Я постарался свести все к минимуму, чтобы можно было все максимально быстро настроить и поэтому в этой инструкции Raspberry даже к монитору подключать не надо!
Самое главное, чтобы у вас была хорошая карта памяти, желательно 10 класса и объемом не меньше 16 Гб. Я лично пользуюсь SanDisk Ultra, если кому интересно. Так же, глючных моментов чтобы не было, блок питания лучше использовать не меньше 2А.
Выбор Операционной Системы
Ну конечно все начинается с операционной системы (далее ОС) и самое главное, что выбирать даже не надо. Опытные пользователи знают, что для Raspberry существует собственная ОС под название Rasbian. Она бывает нескольких версии, но нам интересует именно упрощенная консольная версия под названием Raspbian Buster Lite.
Скачать образ ОС можно с официального сайта по этой ссылке.
Скачать образ ОС с Homebridge можно с официального источника по этой ссылке.
Установка Операционной Системы
Чтобы записать образ на карту памяти, нам понадобиться утилита под названием Etcher. Скачать можно отсюда.
Подключаем карту памяти к вашему компьютеру и запускаем утилиту Etcher
Включаем 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 адрес лучше сразу присвоить постоянный, чтобы потом не менялся при перезагрузке и был доступен по одному и тому же адресу. Это важно!
Так же если вы работаете в ОС Windows, то вам необходимо будет скачать SSH-клиент, такой, как PuTTY. В других ОС такие, как Linux или macOS, SSH-клиент уже встроен по умолчанию.
Давайте уже подключимся к Raspberry
Для Linux/macOS, нужно открыть консоль/терминал и ввести команду:
ssh pi@192.168.1.33
после чего ввести пароль по умолчанию "raspberry". В ОС Windows нет SSH-клиента, поэтому будем пользоваться PuTTY. Чтобы упростить подключение по SSH с ожиданием готовности системы, где даже логиниться не надо, создадим bat файл для авто подключения через Putty. Создаем TXT файл, переименуем в Raspberry Connect.bat и сохраняем с ниже указанными строками
@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 в целях безопасности. Делается это так, введите команду:
#Смена пароля
passwd
введите пароль по умолчанию "raspberry", после введите новый пароль и еще раз подтвердите новый пароль.
Автоматический вариант смены пароля без запроса
#Заменить NewPassword на новый пароль пользователя pi
echo 'pi:NewPassword' | sudo chpasswd
#Готово
Расширяем образ файловой системы
После установки ОС возникает ситуация, что на карте памяти остается много неиспользуемого места. Чтобы исправить эту ситуацию, нужно обязательно расширить образ файловой системы на весь объем карты памяти. Последние версии Raspbian вроде это делают автоматически, но для достоверности давайте сделаем это сами.
#Расширение образ файловой системы
sudo raspi-config --expand-rootfs
#Перезагрузка устройства
sudo reboot
#Готово
Обязательно делаем перезагрузку.
Добавляем поддержку локали русского языка
#Добавляем поддержку локали русского языка
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
#Перезагрузка устройства
после перезагрузки вводим завершавшую команду:
#Применяем после перезагрузки
sudo update-locale LANG="ru_RU.UTF-8"
#Готово
Настраиваем правильный часовой пояс
Определим какие настройки нужны для вашего часового пояса, чтобы каждый раз не возвращаться к этому вопросу и тем более не копаться в интернете в поисках данных часовых поясов. Список часовых поясов большой, по этому предлагаю отфильтровать его с помощью команды grep на регион Asia:
timedatectl list-timezones | grep Asia
То же самое вы можете сделать через графический интерфейс
sudo dpkg-reconfigure tzdata
Потом выбираем географию, например "Азия", жмем OK, после выбираем город, скажем "Якутск" и нажимаем на кнопку OK.В консоли увидим надпись Current default time zone: 'Asia/Yakutsk', запоминаем то что в кавычках, в моем случае это Asia/Yakutsk. Теперь настраиваем нижний код под себя и вставляем в терминал
#Автоматизированная настройка часового пояса
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
#Отключаем поддержку 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-сервера получила сетевая карта нашего устройства
#Получаемые параметры от dhcp-сервера
sudo ifconfig
#Готово
Опытные здесь разберутся, но давайте для новичков все упростим и введем следующую команду:
#Вывод IP-адреса вашего роутера
sudo route -n
#Готово
Находим колонку Gateway и запоминаем снизу IP-адрес вашего роутера. Теперь введем другую команду и увидим IP-адрес DNS-сервера:
#IP-адрес DNS-сервера
sudo cat /etc/resolv.conf
#Готово
Затем одной командой настроим конфигурационный файл сетевой настройки
#Автоматизированная настройка
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
#Готово
Обновим прошивку Raspberry
Что бы обновить прошивку вашего устройства Raspberry, введите следующие команды:
#Обновим прошивку Raspberry
sudo RPI_REBOOT=1 rpi-update
Будет просить подтверждения, нажимаем клавишу Y и ждем! Если операция прошла успешно, то устройство само перезагрузиться.
Собственно начнем процесс прокачки...
Обновляем кеш данных и индексы репозиторий:
#Очистка кеша данных и индексов репозиторий
sudo rm -Rf /var/lib/apt/lists/*
#Обновление кеша данных и индексов репозиторий
sudo apt update && sudo apt upgrade -y
#Готово
Установим GIT
#Установим GIT
sudo apt install git -y
#Готово
Установим MQTT Брокер
#Установим 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 и плагины к нему
Более подробная информация здесь
#Установка HomeBridge
git clone https://github.com/K-a-R-e-N/HomebBridge-Install-Script
bash ~/HomebBridge-Install-Script/InstallHB.sh -i -d
#Готово
Покажу пример легкой установки плагинов для HomeBridge, если принцип поняли, то тогда сформировать свой список не составит труда.
#Установка плагинов для 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
Более подробная информация здесь
Для установки выполняем следующие команды:
#Установка 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
#Готово
Установим Home Assistant при необходимости
Более подробная информация здесь
#Установка 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
Установим Kodi Media Center при необходимости
Более подробная информация здесь
#Установка 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 и других устройств
Более подробная информация здесь
#Ставим пакет "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
sudo sshpass -p '12345678' ssh -oStrictHostKeyChecking=no PowerControl@192.168.1.33 sudo shutdown -r now
Интеллектуальное обновление системы с удалением не нужных зависимостей
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
sudo shutdown -h now
Запуск утилиты конфигурации Raspberry
sudo raspi-config
Вывод информации о процессоре
sudo cat /proc/cpuinfo
Температура и частота работы процессоров
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);
Информация о сетевых интерфейсов
sudo ifconfig
Информация о беспроводних устройствах
sudo iwconfig
Сканирование Wi-Fi сетей
sudo iwlist wlan0 scan
Информация и вывод списка работающих в системе процессов
sudo top
Заключение
Теперь вы узнали, как правильно прокачать ваш Raspberry Pi и знаете, как можно это организовать и привнести свои настройки. Статья будет постоянно обновляться, Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже. Я постараюсь к следующему обновлению добавить ваши пожелания в статью...