Найти в Дзене
Сисадмин Михалыч

Установка ALT Linux 11 на Repka Pi4

Доступна видеоинструкция на рутуб и дзен Краткий обзор Мой экземпляр Repka Pi 4 Optimal, любезно предоставленный на обзор производителем, за что им огромная благодарность, имеет в себе: Процессор (CPU): Allwinner H6, ARMv8 Cortex-A53 64-бит (техпроцесс 28 nm) Тактовая частота процессора 1,6-2 GHz. ОЗУ: SDRAM DDR3 2Гб ПЗУ: Возможность загрузки ОС с SD карты, EMMC, SPI-NOR Flash, USB Flash USB: USB 2.0 x 3, USB 3.0 x 1 PCIe: PCIE 2.0 1x Wi-Fi: 802.11a/b/g/n/ac Bluetooth: Bluetooth V5.0 Ethernet: RJ45 10/100 Мбит/сек Интерфейсы: 40 контактов (28 x GPIO, UART,
I2C, SPI, PWM, I2S) Звук и видео: 3.5 мм (Jack), HDMI Подключение питания: USB TYPE-C,
на 40 pin разъёме Дополнительные разъемы: Разъем для PWM вентилятора,
разъем батарейки RTC Более подробно можно ознакомиться на сайте производителя: https://repka-pi.ru/ Комплектация у меня базовая, а именно: Коробка, водонепроницаемая упаковка и паспорт изделия с краткой инструкцией: Образ взят с зеркала Яндекса: https://mirror.yandex.ru/altlinux-

Доступна видеоинструкция на рутуб и дзен

Краткий обзор

Мой экземпляр Repka Pi 4 Optimal, любезно предоставленный на обзор производителем, за что им огромная благодарность, имеет в себе:

Процессор (CPU): Allwinner H6, ARMv8 Cortex-A53 64-бит (техпроцесс 28 nm) Тактовая частота процессора 1,6-2 GHz.

ОЗУ: SDRAM DDR3 2Гб

ПЗУ: Возможность загрузки ОС с SD карты, EMMC, SPI-NOR Flash, USB Flash

USB: USB 2.0 x 3, USB 3.0 x 1

PCIe: PCIE 2.0 1x

Wi-Fi: 802.11a/b/g/n/ac

Bluetooth: Bluetooth V5.0

Ethernet: RJ45 10/100 Мбит/сек

Интерфейсы: 40 контактов (28 x GPIO, UART,
I2C, SPI, PWM, I2S)

Звук и видео: 3.5 мм (Jack), HDMI

Подключение питания: USB TYPE-C,
на 40 pin разъёме

Дополнительные разъемы: Разъем для PWM вентилятора,
разъем батарейки RTC

Более подробно можно ознакомиться на сайте производителя: https://repka-pi.ru/

Комплектация у меня базовая, а именно: Коробка, водонепроницаемая упаковка и паспорт изделия с краткой инструкцией:

-2
Попёртости на инструкции моих рук дело)))
Попёртости на инструкции моих рук дело)))

Приступаем к установке ОС на базе ALT Linux startrkits 11 платформа

Образ взят с зеркала Яндекса: https://mirror.yandex.ru/altlinux-starterkits/aarch64/release/

На 28.01.2026 файл образа именуется alt-p11-jeos-systemd-20251212-x86_64.img.xz

!!! Сами сборки стартовых наборов обновляются раз в квартал

На моём ПК установлена ОС ALT Linux 11 поэтому для записи образа на MicroSD буду использовать имеющуюся в репозитории утилиту: alt-rootfs-installer которая сама запишет загрузчик. Для пользователей Windows могу только рекомендовать записать таким же способом через виртуальную машину с пробросом USB. Все действия будут выполняться от root.

Запись образа:

alt-rootfs-installer --target=repka_pi4 --image-in=alt-p11-jeos-systemd-20251212-x86_64.img.xz --media=/dev/sdb
-4

После записи образа нам необходимо на флешку записать ядро для репки, скачать его можно тут (скачиваем kernel-image-repka4-ВерсияЯдра)

-5

После записи образа ОС будет создано 2 раздела, нам необходимо смонтировать второй раздел например в /mnt чтоб сразу записать туда ядро, потому как на идущем в составе сборки ядре нет необходимых драйверов и сеть будет не доступна. Я запишу его в домашнюю директорию рута.

mount /dev/sdb1 /mnt
cp kernel-image-repka4-ВерсияЯдра.rpm /mnt/root/

Отмонтируем флешку и безопасно извлечем:

umount /mnt
eject /dev/sdb

-6

Вставляем флешку в репку и запускаем.

Логин/пароль: root/altlinux (можно сразу установить свой выполнив passwd)

Выполняем инсталляцию ядра и перезагрузку:

rpm -ihv kernel-image-repka4-ВерсияЯдра.rpm
reboot
На Warning можно не обращать внимания, это по причине время на репке ещё не синхронизировано.
На Warning можно не обращать внимания, это по причине время на репке ещё не синхронизировано.

После перезагрузки сеть по ethernet должна стать доступной и назначаться IP адрес по DHCP. Для дальнейшей настройки нам необходим доступ в интернет.

Создадим пользователя, назначим пароль и добавим в администраторкую группу wheel и audio (для воспроизведения звука):

useradd admin
passwd admin
usermod -aG wheel admin
usermod -aG audio admin

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

systemctl enable --now sshd

Подключаемся и логинимся на на рута:

su -

Обновим кэш пакетов, обновим ОС и установим набор системных утилит:

apt-get update
apt-get dist-upgrade -y
apt-get install nmon htop sysstat pciutils usbutils nmap nload ifstat dstat sysstat iotop-c atop ioping lsscsi ncdu tmux tcpdump iperf3 lshw dmidecode wget fio bind-utils cpupower bluez -y

В сборке в качестве сетевой подсистемы выступает systemd-networkd, однако мне привычнее NetworkManager. Потому как для него существует много различных модулей, так же он хорошо документирован и прост в настройке. Кто не согласен может пропустить этот шаг.

apt-get install NetworkManager-wifi NetworkManager-daemon -y
systemctl enable NetworkManager
systemctl disable systemd-networkd
reboot

После перезагрузки возможно сменится IP адрес.

Проверяем что NetworkManager работает и получил адрес по DHCP:

systemctl status NetworkManager
ip a

Проверим наличие ошибок при загрузке ОС:

dmesg | grep -i err

Если есть ошибки, связанные с brcmfmac, исправляем:

cd /lib/firmware/brcm/
ln -s brcmfmac43456-sdio.bin brcmfmac43456-sdio.rbs,repka-pi4.bin

Проверим WiFi-модуль выполнив режим сканирования:

nmcli con
nmcli dev
nmcli dev wifi list
-8

Проверим работу Bluetooth:

systemctl enable --now bluetooth
hciconfig -a
bluetoothctl
[bluetoothctl]> scan on
-9

Настроим синхронизацию времени с российскими NTP-серверами:

mcedit /etc/chrony.conf

Закомментировать строку: pool pool.ntp.org iburst

Добавить в конец файла:

server ntp1.vniiftri.ru
server ntp2.vniiftri.ru
server ntp3.vniiftri.ru
server ntp4.vniiftri.ru

Добавим NTP сервис в автозапуск:

systemctl enable chronyd --now

Тюнинг ОС:

Установим редактор по умолчанию и локаль:

echo 'export EDITOR=mcedit' >> /etc/profile.d/my_prfile.sh
echo 'export LANG="ru_RU.UTF-8"' >> /etc/profile.d/my_prfile.sh
echo 'export LC_ALL="ru_RU.UTF-8"' >> /etc/profile.d/my_prfile.sh
echo 'export LC_CTYPE="ru_RU.UTF-8"' >> /etc/profile.d/my_prfile.sh
chmod +x /etc/profile.d/my_prfile.sh
echo "LANG=ru_RU.UTF-8" > /etc/sysconfig/i18n
echo "SUPPORTED=ru_RU.UTF-8" >> /etc/sysconfig/i18n
echo "LANG=ru_RU.UTF-8" > /etc/locale.conf
echo "FONT=UniCyr_8x16" > /etc/vconsole.conf
source /etc/profile

Чтоб mc переключал текущую директорию:

echo "alias mc='. /usr/lib/mc/mc-wrapper.sh -r'" >> /etc/profile.d/my_prfile.sh

Устанавливаем сою временную зону (например Киров):

timedatectl list-timezones
timedatectl set-timezone Europe/Kirov

Если на плате нет модуля часов реального времени (RTC) то будет выходить ошибка на которую не стоит обращать внимания. Так как hwclock попросту не может найти этот модуль.

Тюнинг параметров ядра:

mcedit /etc/sysctl.d/99-sysctl.conf

Добавить строки:

# Network
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.core.rmem_max = 1073741824
net.core.wmem_max = 1073741824
net.ipv4.tcp_rmem = 1048576 16777216 1073741824
net.ipv4.tcp_wmem = 1048576 16777216 1073741824
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_reordering = 20
net.ipv4.tcp_mem = 1048576 16770216 1073741824
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.ip_forward = 1
# Защита от сетевых атак
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_max_syn_backlog = 2048
# Оптимизация для веб-сервера
net.core.somaxconn = 65536
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
# Улучшение маршрутизации и NAT
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Улучшение беспроводного интерфейса (wlan0)
net.core.netdev_budget = 600
net.core.dev_weight = 64
# VM
vm.dirty_bytes = 268435456
vm.dirty_background_bytes = 134217728
vm.dirty_writeback_centisecs = 1000
vm.swappiness = 20
# Kernel
kernel.numa_balancing = 0
kernel.sched_autogroup_enabled = 0
kernel.sched_migration_cost_ns = 50000000
kernel.sched_nr_migrate = 2
kernel.sched_min_granularity_ns = 100000000
kernel.sched_wakeup_granularity_ns = 10000000

Сразу применим параметры и убедимся что нет ошибок:

sysctl -p --system

Тюнинг сетевых интерфейсов

Проверяем текущие настройки :

ethtool -g end0

Видим что буферы TX/RX можно увеличить

Создадим стартап-скрипт который будет выполняться после загрузки ОС:

mkdir /root/scripts/
mcedit /root/scripts/startup.sh

Добавим в него:

#!/bin/bash
/usr/sbin/ethtool -G end0 rx 1024 tx 1024
/usr/sbin/ethtool -G end0 rx 1024 tx 1024

Дадим права на выполнение и добавим задание в cron:

chmod +x /root/scripts/startup.sh
crontab -e

В редакторе добавим в конец строку:

@reboot /root/scripts/startup.sh

Установим и настроим сервис автоматического тюнинга ОС:

apt-get install tuned
systemctl enable --now tuned
tuned-adm list
tuned-adm active
tuned-adm profile balanced

При необходимости создадим файл подкачки (2ГБ):

fallocate -l 2G /var/swapfile
chmod 600 /var/swapfile
mkswap /var/swapfile
swapon /var/swapfile
echo "/var/swapfile none swap sw 0 0" >> /etc/fstab

Для сжатия на лету страниц памяти попадающих в swap можно установить и запустить zswap:

apt-get install zswap
systemctl enable --now zswap.service

Отключим при необходимости IPv6 в NetworkManager

Не смотря на отключение IPv6 в параметрах ядра NetworkManager всё равно будет генерировать IPv6 адрес, поэтому необходимо его отключить в настройках подключения:

nmcli con
nmcli con modify idПодключения ipv6.method disabled

Отключим спящий режим и гибернацию:

systemctl mask hibernate.target suspend.target sleep.target suspend-then-hibernate.target

Настроим звуковую подсистему:

apt-get install alsa-utils amixer

Информация о картах и аудиовыходах:

cat /proc/asound/cards

Воспроизведение звука через jack 3.5:

echo "options snd_soc_ac200 index=0" > /etc/modprobe.d/alsa-base.conf
echo "options sun9i_hdmi_audio index=1" >> /etc/modprobe.d/alsa-base.conf

На всякий случай, но не обязательно:

mcedit /etc/asound.conf

Привести к виду:

pcm.!default {
type hw
card "ac200audio"
device 0
}

ctl.!default {
type hw
card "ac200audio"
}

Настроим каналы звукового выхода:

Список контролов:

amixer -c 0 contents

Проверка и настройка:

amixer -D hw:ac200audio sget 'Master'
amixer -D hw:ac200audio sget 'Line Out'
amixer -D hw:ac200audio sget 'DAC'
amixer -D hw:ac200audio sget 'DAC I2S'
amixer -c 0 sset 'Master' 60%
amixer -D hw:ac200audio sset 'Line Out' on
amixer -c 0 sset 'Line Out' 100%
amixer -D hw:ac200audio sset 'DAC' on
amixer -D hw:ac200audio sset 'DAC I2S' on
amixer -c 0 sset 'DAC I2S' 1%
amixer -c 0 sset 'DAC I2S' 100%
alsactl store

mkdir -p /etc/alsa
mcedit /etc/alsa/state-daemon.conf

Добавить в файл:

state_file /var/lib/alsa/asound.state
state_file.mode 0644

Финальная перезагрузка

reboot
-10

Проверка звука:

apt-get install mpg321
mpg321 Ария_Герой_Асфальта.mp3

alsamixer
-11

После настройки уровней звука выполнить

alsactl store

Доступна видеоинструкция на рутуб и дзен

Готовый образ собранный по этой инструкции на моём сайте