Эта заметка - продолжение статьи NAS-хранилище и медиасервер на Raspberry Pi 4 (часть 1).
Операционная система
Установка операционной системы
После того, как оборудование собрано, можно приступить к установке программного обеспечения.
Сначала нужно вынуть диск из корпуса RaspberryPI и подключить диск к компьютеру с помощью USB-SATA адаптера.
Когда диск подключен компьютеру в командной строке, запущенной от имени администратора, можно проверить разметку подключенного диска. В моем случае показан диск, на котором нет никаких разделов - пустой диск без данных.
Далее на компьютер нужно установить программу Raspberry Pi Imager, через которую "залить" на подключенный диск образ операционной системы Rapian Lite.
Когда содержимое образа скопировано на диск, то через командную строку с правами администратора можно посмотреть на новую разметку диска.
На диске появились 2 раздела:
- небольшой раздел (256 МБ) с загрузочной информацией (метка тома на этом разделе - boot, а формат тома - FAT32),
- основной раздел с данными (1 ГБ), который позже будет расширен на весь диск, но Windows не видит томов на этом разделе, так как формат томов - EXT4, который разработан для Linux.
Теперь нужно отключить и заново подключить диск к компьютеру, чтоб в проводнике обновилось информация о дисках. В проводнике появится загрузочный том "boot", а так же сообщение, что второй раздел не содержит томов - нужно проигнорировать это сообщение.
Далее нужно записать и отредактировать несколько файлов конфигурации:
- ssh - пустой файл без расширения, который является "флагом" для системы, что разрешено управление по SSH протоколу.
- wpa_supplicant.conf - файл настроек WiFi сети со следующим содержанием:
country=RU ctrl_interface=DIR=/var/run/wpa_aupplicant GROUP=netdev update_config=1 network={ scan_ssid=1 ssid="имя_wifi_сети" psk="пароль_wifi_сети" key_mgmt=WPA=PSL }
Важно! Файл wpa_supplicant.conf должен быть в формате кодовой страницы ANSI с разрывом строк в формате UNIX, а не Windows. Установить этот формат кодировки можно в текстовом редакторе Notepad2.
- config.txt - файл, который хранит начальную конфигурацию системы Raspbian OS, где нужно указать нужные параметры экрана (раскомментировать и отредактировать строки):
hdmi_group=1 hdmi_mode=5
Некоторые значения для параметра hdmi_mode:
hdmi_mode | resolution | frequency | screen aspect |
---|---|---|---|
1 | VGA (640x480) | 60Hz | 4:3 |
2 | 480p | 60Hz | 4:3 |
3 | 480p | 60Hz | 16:9 |
4 | 720p | 60Hz | 16:9 |
5 | 1080i | 60Hz | 16:9 |
Когда все файлы записаны, диск нужно отключить от компьютера и установить в корпус NASPi.
Так как встроенная в плату Raspberry PI антенна WiFi очень слабая, то я рекомендую либо не устанавливать сборку плат и диска в алюминиевый корпус на этом этапе, либо использовать проводное подключение непосредственно к домашнему роутеру.
Найти на роутере адрес микрокомпьютера.
Войти в SSH сессию под пользователем pi с паролем raspberry и с IP-адресом, найденным на роутере, используя такую команду:
ssh pi@192.168.0.15
Команда ssh присутствует в Windows 10 последних сборок по умолчанию. В более ранних версиях её нет, поэтому в этих случаях вместо ssh я рекомендую использовать либо программу Putty, либо установить клиент ssh из GitHub или через PowerShell.
Обновить систему, загрузив и установив последние версии используемых пакетов. Команды, которые надо выполнить поочередно:
sudo apt-get update sudo apt-get upgrade sudo reboot
Установка драйверов вентилятора корпуса NASPi
После перезагрузки опять войти в SSH сессию.
Установить драйвер вентилятора NASPI, выполнив команды поочередно (полная инструкция написана на сайте производителя корпуса):
cd ~ sudo apt-get install -y git pigpio sudo apt-get install -y python-pigpio python3-pigpio sudo apt-get install -y python-smbus python3-smbus git clone https://github.com/geekworm-com/x-c1.git cd x-c1 sudo chmod +x *.sh sudo bash install.sh echo "alias xoff='sudo /usr/local/bin/x-c1-softsd.sh'" >> ~/.bashrc
Установка драйверов внешнего WiFi-адаптера Realtek с811
Подключить внешний WiFi-адаптер в USB-порт сборки.
Чтобы узнать, какие устройства подключены через USB порты, нужно выполнить команду:
sudo lsusb
В ответ будет выдана краткая информация о портах USB и устройствах в них. Среди них нужно найти, определился ли подключенный адаптер:
Bus 001 Device 004: ID 0bda:c811 Realtek Semiconductor Corp.
Или другую команду об информации из ядра системы с фильтрацией по слову usb:
sudo dmesg | grep usb
В ответ будет выдана полная информация о USB-портах и устройствах, подключенных через них. В полученном выводе нужно найти, определился ли подключенный адаптер:
[ 3.225177] usb 1-1.3: new high-speed USB device number 4 using xhci_hcd [ 3.356356] usb 1-1.3: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00 [ 3.356380] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 3.356401] usb 1-1.3: Product: 802.11ac NIC [ 3.356418] usb 1-1.3: Manufacturer: Realtek [ 3.356434] usb 1-1.3: SerialNumber: 123456
Если устройство RTL8811cu определено, то теперь можно установить для него драйвер, выполнив команды поочередно (здесь используется проект драйвера rtl8811cu с GitHub):
cd ~ sudo apt-get install -y bc git dkms build-essential raspberrypi-kernel-headers git clone -b v5.8.1 https://github.com/fastoe/RTL8811CU_for_Raspbian cd RTL8811CU_for_Raspbian make sudo make install sudo modprobe 8821cu sudo reboot
После перезагрузки системы опять войти в SSH сессию.
Посмотреть какие сетевые устройства установлены в системе, выполнив команду:
cat /proc/net/dev
Среди wlan-устройств нужно определить то, которое использует недавно установленный драйвер - для обоих wlan-устройств нужно выполнить команду:
ethtool -i wlan1 | grep driver
В ответ будет выдан драйвер устройства. То устройство, которое использует драйвер rtl8821cu, и есть внешний wifi-адаптер. В моем примере внешний адаптер имеет имя wlan0.
Примечание.
Если имя интерфейса не wlanX, а служебный идентификатор, то нужно задать интерфейсу, который использует драйвер rtl8821cu, имя wlanX через файл /etc/udev/rules.d/72-static-name.rules.
Открыть файл на редактирование:
sudo nano /etc/udev/rules.d/72-static-name.rules
В файл вставить строку, где заменить X свободным числом. Например внутренний модуль имеет номер 0, тогда внешнему можно поставить 1:
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="rtl8821cu", NAME="wlan1"
Когда имена адаптеров распознаны, нужно удостовериться, что оба адаптера подключились к домашнему WiFi, используя пароль, переданный системе в файле wpa_supplicant.conf. Для этого нужно выполнить команду:
ifconfig -a
В моем примере оба адаптера получили IP адрес от домашнего роутера
wlan0 = 192.168.0.17 wlan1 = 192.168.0.15
Чтобы проверить качество приема по каждому из WiFi-модулей, нужно поочередно выполнить команды:
sudo iwlist wlan1 scan | egrep "Cell|ESSID|Signal|Rates" sudo iwlist wlan0 scan | egrep "Cell|ESSID|Signal|Rates"
В ответ будет выдана информация о качестве сигнала.
В моем примере внешний WiFi-модуль rtl8821cu поймал 8 WiFi-сетей, а качество сигнала по домашней сети очень хорошее.
После того, как внешний адаптер настроен, то внутренний WiFi-модуль больше не нужен и его можно отключить.
Для отключения встроенного в плату Raspberry Pi 4B модуля WiFi, нужно в файл /boot/config.txt в секцию [all] добавить строку dtoverlay=disable-wifi. Сделать это можно, выполнив команду:
sudo nano /boot/config.txt
и вставить в конец (так как секция [all] обычно в конце)
dtoverlay=disable-wifi
Сохранить файл и перезагрузить устройство:
sudo reboot
Теперь, когда внешний модуль WiFi полностью функционирует, то можно надеть на сборку алюминиевый корпус.
А полностью собранное устройство установить к телевизору и подключить все необходимые кабели. Дальнейшая настройка будет производиться только по WiFi.
Найти на роутере IP адрес устройства, так как если прошло достаточно длительное время, то время удержания динамического адреса за устройством может истечь, а адрес может измениться (в моем случае я продолжал настройку на следующий день).
Чтобы каждый день не искать, какой IP-адрес получил NASPi, нужно закрепить за микрокомпьютером найденный адрес, зафиксировав MAC-адрес адаптера в таблице резервации DHCP домашнего роутера.
Настройка операционной системы
Далее можно приступать к настройке операционной системы.
Войти в SSH сессию под пользователем pi с паролем raspberry и с IP-адресом, найденным на роутере, используя такую команду:
ssh pi@192.168.0.17
Войти в настройки Raspian с помощью команды:
sudo raspi-config
В меню настроек системы выбрать пункт System Options:
Внутри системных опций выбрать Hostname, чтобы переименовать имя устройства, и задать новое имя, например raspi-nas:
В том же подменю выбрать Password, чтобы установить новый пароль для входа в систему, и задать новый пароль, например raspinas:
Вернуться в главное меню, выбрать Finish и перезагрузить устройство:
После перезагрузки микрокомпьютера в таблице клиентов роутера удостовериться, что IP адрес устройства не изменился, а имя теперь новое:
Войти в SSH сессию с новым паролем.
В файл /etc/hosts прописать имя компьютера, чтобы операционная система знала соответствие между IP-адресом "внутренней петли" и именем в разных его вариантах.
sudo nano /etc/hosts
в конец файла дописать:
127.0.0.1 raspi-nas raspi-nas.home raspi-nas.local
Сетевые протоколы для обмена файлами
Установка SMB-сервера
Войти в SSH сессию к микрокомпьютеру.
Установить пакет SMB сервера, используя команду:
sudo apt-get install -y samba samba-common-bin
Создать нового пользователя nas с паролем NasUser, используя команду:
sudo adduser nas
В ответ команда запросит заполнить следующие поля (можно оставить их пустыми, ввести надо только пароль):
Adding user 'nas' ... Adding new group 'nas' (1001) ... Adding new user 'nas' (1001) with group 'nas' ... Creating home directory '/home/nas' ... Copying files from '/etc/skel' ... New password: NasUser Retype new password: NasUser passwd: password updated successfully Changing the user information for nas Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
Создать папку хранилища для общих файлов:
sudo mkdir /shared sudo chmod -R 777 /shared
Прописать созданную папку в конфигурации SMB-сервера, которая хранится в файле /etc/samba/smb.conf. Открыть файл конфигурации:
sudo nano /etc/samba/smb.conf
В конец файла дописать строки:
[shared] comment = hdd path = "/shared" writeable = yes guest ok = yes create mask = 0644 directory mask = 0755 force user = nas
Перезапустить сервис SMB-сервера:
sudo systemctl restart smbd
Создать пользователя nas с паролем NasUser в окружении SMB-сервера, используя команды:
sudo smbpasswd -a nas sudo smbpasswd -e nas
Установка FTP-сервера
Войти в SSH сессию к микрокомпьютеру.
Установить пакет FTP сервера, используя команду:
sudo apt-get install -y vsftpd
Прописать созданную ранее папку в конфигурации FTP-сервера, которая хранится в файле /etc/vsftpd.conf. Открыть файл конфигурации:
sudo nano /etc/vsftpd.conf
В конец файла дописать строки:
local_root=/shared
Перезапустить сервис FTP-сервера:
sudo service vsftpd restart
Проверка подключения к хранилищу с Windows компьютера
Чтобы открыть хранилище по протоколу SMB, необходимо ввести в проводнике \\raspi-nas\shared, указать пользователя nas и пароль NasUser.
Чтобы открыть хранилище по протоколу FTP, необходимо в проводнике или браузере ввести ftp://raspi-nas/, , указать пользователя nas и пароль NasUser.
Установка торрент-клиента
Войти в SSH сессию к микрокомпьютеру.
Создать папку хранилища для торрент файлов:
sudo mkdir /torrent sudo chmod -R 777 /torrent
Изменить размер swap-файла со 100 МБ на 256 МБ. Открыть файл /etc/dphys-swapfile:
sudo nano /etc/dphys-swapfile
Найти строку с параметром CONF_SWAPSIZE и изменить значение на 256:
CONF_SWAPSIZE=256
Установить пакет Торрент клиента, используя команду:
sudo apt-get install -y transmission-daemon
Остановить сервис торрент клиента
sudo /etc/init.d/transmission-daemon stop
Если редактировать файл конфигурации без остановки клиента, то сервис перезапишет изменения кешированными параметрами.
Открыть файл конфигурации торрент клиента:
sudo nano /etc/transmission-daemon/settings.json
Отредактировать параметры в соответствии с рекомендациями ниже, что позволит не загружать домашнюю сеть торрентом на всю возможную полосу пропускания - установить ограничения:
"cache-size-mb": 1, "dht-enabled": false, "download-dir": "/shared", "download-limit": 50, "download-queue-size": 2, "encryption": 0, "incomplete-dir": "/torrent", "peer-limit-global": 10, "peer-limit-per-torrent": 5, "preallocation": 0, "prefetch-enabled": false, "rpc-host-whitelist-enabled": false, "rpc-password": "NasUser", "rpc-username": "nas", "rpc-whitelist": "127.0.0.1 192.168.0.*",
Запустить сервис торрент клиента
sudo /etc/init.d/transmission-daemon start
Проверка торрент клиента с компьютера
Чтобы открыть веб-интерфейс торрент-клиента нужно в браузере ввести http://raspi-nas:9091/, указать пользователя nas и пароль NasUser.
В открывшемся окне можно управлять загрузками файлов: добавлять новые torrent-файлы, удалять закачки, останавливать и запускать задания.
Веб-интерфейс администратора
Установка веб-консоли администратора
Войти в SSH сессию к микрокомпьютеру.
Установить консоль администратора, выполняя команды поочередно:
wget -nc - http://www.webmin.com/jcameron-key.ascgpg --dearmor jcameron-key.asc > jcameron-key.gpg sudo cp jcameron-key.gpg /etc/apt/trusted.gpg.d/sudo cp jcameron-key.asc /etc/apt/trusted.gpg.d/ ls /etc/apt/trusted.gpg.d/wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add - apt-key list sudo apt-key del 1719003ACE3E5A41E2DE70DFD97A3AE911F63C51sudo sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list' sudo apt-get update sudo apt-get install -y webmin
Проверка веб-консоли администратора с компьютера
Чтобы открыть веб-интерфейс администратора нужно в браузере ввести https://raspi-nas:10000/, указать пользователя pi и пароль от этого пользователя (например у меня он raspinas).
Медиацентр
Установка медиацентра
Войти в SSH сессию к микрокомпьютеру.
Установить медиацентр Kodi командой:
sudo apt-get install -y kodi
Чтобы медиацентр запускался автоматически при запуске компьютера, необходимо выполнить следующие команды:
sudo tee -a /lib/systemd/system/kodi.service <<_EOF_ [Unit] Description = Kodi Media Center After = remote-fs.target network-online.target Wants = network-online.target [Service] User = pi Group = pi Type = simple ExecStart = /usr/bin/kodi-standalone Restart = on-abort RestartSec = 5 [Install] WantedBy = multi-user.target _EOF_ sudo systemctl enable kodi.service
Примечание. Так так целью данной статья не является разбор возможностей Kodi, то тут приведены только начальные настройки медиасервера.
Настроить Kodi можно как через пользовательский интерфейс на экране монитора/телевизора, через веб-интерфейс по адресу http://raspi-nas:8080/ (если он включен в настройках) или через файлы XML в папке /home/pi/.kodi/userdata.
Чтобы активировать минимально нужные функции, я рекомендую открыть файл конфигурации медиасервера:
sudo nano /home/pi/.kodi/userdata/guisettings.xml:
и отредактировать параметры в соответствии с рекомендациями ниже:
<setting id="locale.language">resource.language.ru_ru</setting> <setting id="locale.charset" default="true">DEFAULT</setting> <setting id="locale.keyboardlayouts">English QWERTY|Russian ЙЦУКЕН</setting> <setting id="locale.activekeyboardlayout" default="true">English QWERTY</setting> <setting id="locale.country">Russia</setting> <setting id="locale.timezonecountry">Russia</setting> <setting id="locale.timezone">Europe/Moscow</setting> <setting id="services.devicename" default="true">Kodi</setting> <setting id="services.webserver">true</setting> <setting id="services.webserverport" default="true">8080</setting> <setting id="services.webserverauthentication" default="true">true</setting> <setting id="services.webserverusername">nas</setting> <setting id="services.webserverpassword">NasUser</setting> <setting id="services.upnp">true</setting> <setting id="services.upnpserver">true</setting> <setting id="smb.workgroup" default="true">WORKGROUP</setting> <setting id="smb.winsserver" default="true">0.0.0.0</setting> <setting id="smb.minprotocol" default="true">0</setting> <setting id="smb.maxprotocol" default="true">3</setting> <setting id="smb.legacysecurity" default="true">false</setting> <setting id="weather.currentlocation" default="true">1</setting> <setting id="weather.addon">weather.gismeteo</setting>
Сохранить файл и перезагрузить систему.
Аналогичные настройки можно сделать через Интерфейс пользователя:
Проверка медиацентра на телевизоре
При включении системы на экран выводится прогноз погоды.
На главной странице медиацентра отображаются фильмы, которые есть в библиотеке, но еще не просмотрены.
Из всех возможных дополнений я использую только YouTube и Transmission Control Panel.
Чтобы система автоматически добавляла новые файлы в библиотеку, так же обновляла в библиотеке данные о фильмах, необходимо настроить типы содержимого папок "Видео" на диске и источники данных "The Movie Database Python".
Проверка медиацентра на телефоне
Чтобы пользоваться медиацентром с телефона, нужно установить на телефон проигрыватель, который поддерживает DNLA потоки, например VLC for Android.
В приложении VLC на вкладке Обзор --> Локальная сеть должен отображаться медиасервер под именем Kodi (raspi-nas).
Полезные команды
Архитектура процессора
Команда:
arch
В ответ команда выдает:
armv7l
Напряжение на процессоре
Команда:
vcgencmd pm_get_status
В ответ команда выдает:
core=233333344 free=222914004 voltage=1.2v
Температура процессора
Команда:
vcgencmd measure_temp
В ответ команда выдает:
temp=60.3'C
Информация о процессоре
Команда
cat /proc/cpuinfo
В ответ команда выдает:
processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 270.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 Hardware : BCM2711 Revision : c03111 Serial : 10000000b4640fcc Model : Raspberry Pi 4 Model B Rev 1.1
Информация о памяти
Команда:
free -m
В ответ команда выдает:
total used free shared buff/cache available Mem: 3837 62 2755 0 1020 3629 Swap: 99 0 99
Здесь по строчке Mem Total: 3837 можно понять, что я использую плату с 4 ГБ оперативной памяти.
IP-адрес компьютера
Команда:
hostname -I
В ответ команда выдает:
192.168.0.17
Очистка пакетов и кеша установки пакетов
Если что-то пошло не так, то можно удалить неиспользуемые пакеты и очистить кеш пакетов
sudo apt-get autoremove sudo apt-get clean