Raspberry Pi (Українська)
З Wikipedia:
- "Raspberry Pi - це одноплатний комп'ютер, розроблений британським фондом Raspberry Pi Foundation. Його головне призначення — стимулювати навчання базовим комп'ютерним наукам у школах."
Оригінальні моделі, випущені в 2012, базувалися на процесорі Broadcom SoC BCM2835 (ARM11 architecture). Модель Raspberry Pi 2, випущена в 2015, продавалася з процесором BCM2836 SoC (4-ядерному ARM Cortex-A7 architecture). В лютому 2016 випущено модель Pi 3, яка містить BCM2837 SoC (quad-core ARM Cortex-A53 architectue), вбудований модуль WiFi і Bluetooth.
Contents
Передмова
Ця стаття не є путівником по встановленню і припускає, що читач уже має встановлену систему Arch.
Системна архітектура
Raspberry Pi базується на ARM, а тому потребує виконувальних файлів, які зібрані для цієї архітектури. Ці файли можна знайти сторінці проекту Arch Linux ARM project, який містить порти Arch Linux для пристроїв на базі ARM. Ці пристрої мають свою спільноту і форум на їхній сторінці. Офіційний форум Archlinux не підтримує специфічні проблеми ARM. З впровадженням Raspberry Pi 2 пакунки тепер залежать від відповідної архітектури:
- ARMv6 (BCM2835): Raspberry Pi Model A, A+, B, B+, Zero
- ARMv7 (BCM2836): Raspberry Pi 2 (базується на моделі B+)
- ARMv8 (BCM2837): Raspberry Pi 3
Продуктивність SD-карти
Швидкість реагування системи, особливо під час операцій, пов'язаних з інтенсивним використання диску, таких як оновлення системи, можуть дуже залежати від низької якості/повільності пристроїв SD-карт. Це проявляється як часті, часто довгі паузи, коли pacman записує файли до файлової системи. Паузи не спричинені заповненням шини RPi або RPi2, а, швидше за все, слабою пропускною здатністю повільної SD (або мікро SD) карти. Більше про це дивіться Benchmarking#Flash media.
Продуктивність і швидкість реагування системи в цілому можна поліпшити шляхом внесення змін в конфігурацію системи. Більше про це дивіться Improving performance.
Включення перевірки fsck під час запуску
Скористайтесь з порад fsck#Boot time checking. Пам'ятайте, що параметри ядра вказуються у файлі /boot/cmdline.txt
.
Встановлення Arch Linux ARM
Дивіться документацію по Arch Linux ARM Pi або документацію по Arch Linux ARM Pi2 або документацію по Arch Linux ARM Pi3.
Мережа
Типова інсталяція Archlinux містить вже готові налаштування мережі в dhcp режимі за допомогою systemd-networkd. Це повинно дозволити доступ до офіційного встановлення через Secure Shell. Типова назва сервера є alarmpi. Пароль користувача root є "root", його потрібно негайно змінити і, за бажанням, налаштувати SSH keys.
Налаштування WLAN без ethernet
Користувачі, які бажають налаштувати безпровідну мережу, повинні використати демон безпровідної мережі, такий як WPA supplicant. Використайте Wireless network configuration Путівника початківця для додаткової інформації.
Аудіо
Пакунок alsa-utils має поставити потрібні програми для використання звуку. Типову гучність можна підлаштувати, використовуючи alsamixer
.
Важлива зміна у ядрі Linux від версії 4.4.x для ARM щодо ALSA і потрібного модуля звуку: щоб використовувати знаряддя типу alsamixer
з поточним ядром, користувачі повинні відредагувати файл /boot/config.txt
, додаючи наступну стрічку:
dtparam=audio=on
Виберіть джерело аудіо для виводу:
$ amixer cset numid=3 x
Тут x
може приймати такі значення:
- 0 для Авто
- 1 для аналогового виводу
- 2 для HDMI
Застереження щодо HDMI аудіо
Деякі програми вимагають налаштування файлу /boot/config.txt
для форсування виводу звуку через HDMI:
hdmi_drive=2
Відео
HDMI / аналоговий вихід TV-Out
В типовій конфігурації Raspberry Pi використовує HDMI відео, якщо під'єднано HDMI монітор. В протилежному випадку для виводу відео використовується аналоговий вихід TV-Out (також відомий як композитний вихід або RCA)
Щоб перемикатися між HDMI та аналоговим TV-Out використовуйте програму
/opt/vc/bin/tvservice
Використовуйте параметр -s для перевірки статусу виводу; параметр -o виключить дисплей і параметр -p включить вихід HDMI з вибраними налаштуваннями.
Підлаштування можливо знадобиться для виправлення властивого пересканування/недосканування і легко досягається правкою файлу boot/config.txt
, в якому налаштовується багато параметрів. Для корекції просто відкоментуйте відповідні стрічки і налаштуйте згідно інструкції в коментарях:
# uncomment the following to adjust overscan. Use positive numbers if console # goes off screen, and negative if there is too much border #overscan_left=16 overscan_right=8 overscan_top=-16 overscan_bottom=-16
Користувачам, які бажають використовувати аналогове відео, потрібно глянути на цей файл конфігурації, який містить опції для не-NTSC виводів.
Потрібне перезавантаження для впровадження змін.
Застереження щодо аналогового виводу TV-Out
Починаючи з Raspberry Pi 1 модель B+ і Raspberry Pi 2 модель B, сокет композитного відео був вилучений і замінений композитним сигналом через 3.5мм гніздо відео/аудіо. Деякі кабелі RCA не мають стандарту Raspberry Pi, в цьому випадку під'єднайте червоний або білий контакти для виводу відео.[1]
Драйвер X.org
Драйвер X.org для Raspberry Pi може бути встановлений за допомогою пакунку xf86-video-fbdev або xf86-video-fbturbo-git.
Сенсори на платі
Температура
Знімати дані з сенсора температури можна за допомогою утиліти в пакунку raspberrypi-firmware-tools. RPi пропонує сенсор на BCM2835 SoC (CPU/GPU):
$ /opt/vc/bin/vcgencmd measure_temp
temp=49.8'C
Альтернативно, можна прочитати з файлової системи:
$ cat /sys/class/thermal/thermal_zone0/temp
49768
Для зрозумілого виводу:
$ awk '{printf "%3.1f°C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp
54.1°C
Напруга
За чотирма різними напругами можна спостерігати за допомогою /opt/vc/bin/vcgencmd
:
$ /opt/vc/bin/vcgencmd measure_volts <id>
Де <id>
це:
- core для напруги на ядрі
- sdram_c для напруги на ядрі sdram
- sdram_i для напруги I/O sdram
- sdram_p для напруги PHY sdram
Легкий пакет для моніторингу
monitorixAUR має специфічну підтримку для RPi з версії 3.2.0. Знімки екрану доступні тут.
Розгін процесора
RPi можна розігнати, редагуючи файл /boot/config.txt
, наприклад:
arm_freq=800 arm_freq_min=100 core_freq=300 core_freq_min=75 sdram_freq=400 over_voltage=0
Стрічки з *_min
визначають мінімальну частоту, що використовуватиметься даною компонентою. Коли система не завантажена, частоти знижуються до мінімального значення. Перегляньте статтю Розгін на elinux щодо додаткових опцій та прикладів.
Потрібно перевантажити систему для впровадження нових налаштувань.
Налаштування розгону для годинника CPU застосовуються, коли регулятор підкручує CPU, тобто під навантаженням. Для отримання даних щодо поточної частоти CPU:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
Прочитайте CPU frequency scaling для більшої інформації щодо регуляторів.
Серійна консоль
Відредагуйте файл /boot/cmdline.txt
, змініть loglevel
на 5
для перегляду повідомлень при завантаженні:
loglevel=5
Якщо типова швидкість 115200 не працює правильно, спробуйте змінити її на 38400:
console=ttyAMA0,38400 kgdboc=ttyAMA0,38400
Запустіть сервіс getty на Pi
# systemctl start getty@ttyAMA0
Ввімкніть під час завантаження
# systemctl enable getty@ttyAMA0.service
Створення властивого сервісного посилання:
# ln -s /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyAMA0.service
З'єднайтесь з комп'ютера:
# screen /dev/ttyUSB0 38400
Модуль камери для Raspberry Pi
Команди для модуля камери включені як частина пакунку raspberrypi-firmware-tools, який встановлено з основною системою.
$ /opt/vc/bin/raspistill $ /opt/vc/bin/raspivid
Додайте до файлу /boot/config.txt
:
gpu_mem=128 start_file=start_x.elf fixup_file=fixup_x.dat
Можна теж додати
disable_camera_led=1
Наступні стрічки є типовою помилкою:
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC mmal: camera component couldn't be enabled mmal: main: Failed to create camera component mmal: Failed to run camera app. Please check for firmware updates
яку можна виправити, налаштовуючи ці значення у файлі /boot/config.txt
:
cma_lwm= cma_hwm= cma_offline_start=
Іншу типову помилку:
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM) mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1) mmal: Failed to create camera component mmal: main: Failed to create camera component mmal: Only 64M of gpu_mem is configured. Try running "sudo raspi-config" and ensure that "memory_split" has a value of 128 or greater
можна виправити, додаючи наступну стрічку до файлу /etc/modprobe.d/blacklist.conf
:
blacklist i2c_bcm2708
Щоб використовувати стандартні програми (такі, що використовують /dev/video0
), потрібно завантажити драйвер V4L2. Це можна зробити автоматично під час завантаження, створивши файл автозавантаження:
/etc/modules-load.d/rpi-camera.conf
bcm2835-v4l2
Апаратний генератор випадкових чисел
Хоч Arch Linux ARM для Raspberry Pi має налаштований модуль bcm2708-rng
для завантаження (дивіться це), однак потрібно встановити rng-tools і повідомити Апаратний Демон Ентропії RNG (rngd), в якому місці знаходиться апаратний генератор випадкових чисел.
Це можна зробити редагуванням файлу /etc/conf.d/rngd
:
RNGD_OPTS="-o /dev/random -r /dev/hwrng"
і вмикаючи і запускаючи сервіс rngd.
Якщо в системі запущено haveged, то його потрібно зупинити і вимкнути, оскільки він може гризтися з rngd.
Ці зміни забезпечують передачу даних з апаратного генератора випадкових чисел до пула ентропії ядра в /dev/random
. Для перевірки доступної ентропії запустіть:
# cat /proc/sys/kernel/random/entropy_avail
Число повинно бути біля 3000, тоді як перед налаштуванням rngd воно повинно бути близьке до 1000.
GPIO
SPI
Для ввімкнення пристроїв /dev/spidev*
розкоментуйте наступну стрічку:
/boot/config.txt
device_tree_param=spi=on
Python
Для використання пінів GPIO з Python, використайте бібліотеку RPi.GPIO. Встановіть python-raspberry-gpioAUR з AUR.
I2C
Встановіть пакунки i2c-tools та lm_sensors.
Ввімкніть підтримку i2c, додаючи стрічку до /boot/config.txt
:
dtparam=i2c_arm=on
Налаштуйте модулі i2c-dev
і i2c-bcm2708
(якщо вони не є в чорному списку для камери), щоб завантажувалися на старті:
/etc/modules-load.d/raspberrypi.conf
i2c-dev i2c-bcm2708
Перевантажте Raspberry Pi і запустіть наступну команду для отримання адреси пристрою:
i2cdetect -y 0
Тепер потрібно повідомити Linux про можливість використання пристрою. Замініть адрес пристрою адресою, знайденою в попередньому кроці, додаючи префікс '0x' (наприклад 0x48) і виберіть назву пристрою:
echo <назва пристрою> <адреса пристрою> >/sys/class/i2c-adapter/i2c-0/new_device
Перевірте командою dmesg, чи появився новий пристрій:
i2c-0: new_device: Instantiated device ds1621 at 0x48
І, остаточно, отримайте вивід з сенсора:
sensors
QEMU
Іноді легше працювати безпосередньо в образі диска замість реальної Raspberry Pi. Це може бути досягнуто за допомогою монтування SD-картки, що містить кореневий розділ RPi і зміні кореневого каталогу. Зі зміненого оточення буде можливо запустити Pacman і встановити більше пакунків, компілювати великі бібліотеки і т.д. Так як виконувані файли для архітектури ARM, переклад на x86 необхідно виконати за допомогою QEMU.
Встановіть binfmt-supportAUR та qemu-user-staticAUR з AUR.
Переконайтеся що ARM - x86 трансляція активна:
# update-binfmts --importdir /var/lib/binfmts/ --import # update-binfmts --display qemu-arm
Якщо трансляція ARM - x86 не активна, увімкніть її, скориставшись update-binfmts:
# update-binfmts --enable qemu-arm
Змонтуйте SD-картку до mnt/
(назва пристрою може відрізнятися).
# mkdir mnt # mount /dev/mmcblk0p2 mnt
Скопіюйте виконуваний файл QEMU, який буде обробляти переклад з ARM, в корінь SD-картки:
# cp /usr/bin/qemu-arm-static mnt/usr/bin
Нарешті змініть кореневу файлову систему в кореневому каталогу SD-карти, як описано в Change root#Using chroot, маючи на увазі, що qemu-arm-static
повинен бути викликаний командою chroot
тобто:
# chroot /mnt/arch /usr/bin/qemu-arm-static /bin/bash
Дивіться також
- Raspberry Pi - Офіційна веб-сторінка
- RPi Config - Excellent source of info relating to under-the-hood tweaks.
- RPi vcgencmd usage - Overview of firmware command vcgencmd.
- Arch Linux ARM on Raspberry PI - A FAQ style site with hints and tips for running Arch Linux on the RPi
- [2] - A really opionionated guide how to setup a RPi with Arch Linux