Skip to main content

NB #АдъМеломана Капелька тюнинга ArchLinux/aarch64

Заметочки на полях по приведению ArchLinux на RPi3B в истинно аудиофильское расположение духа 😉 Вопросы “почему какой-то arch, когда есть (rune/moode/etc)” – в сад, я не собираюсь обсуждать непонятные поделки со свистками, которые выдают за специальный софт – да, красиво, но зачем оно мне, красивое, надо – не понятно, когда с ресурсами на RPi несколько туго (хотя, справедливости ради, надо отметить, что процессора BCM2835 с головой хватает на всевозможные задачи по перекодированию, и, на мой вкус, начиная где-то с RPi 2 это полностью перестало быть значимой проблемой, хотя узкие места остались, тот же невнятный Ethernet, который не то чтобы медленный, но легко “прибиваемый”).

Подхватываем правильный конфиг mpd, запускаем плеер (ExecStartPost):

/etc/systemd/system/mpd.service.d/override.conf

[Service]
ExecStart=
ExecStart=/usr/bin/mpd --no-daemon /storarray_usb/mpd/mpd.conf
ExecStartPost=/usr/bin/mpc play

Восстанавливаем настройки миксера, заранее сохраненные в нужном месте:

/etc/systemd/system/alsa-restore.service.d/override.conf

[Unit]
ConditionPathExists=
ConditionPathExists=/storarray_usb/asound.state

Соотв., после “настройки” alsamixer не забываем использовать alsactl -f /storarray_usb/asound.state ж)

Далее – попытки разгрузить систему по максимуму, dtoverlays не доступны в archonarm, да и не очень-то и хотелось, ручками прибиваем все не нужное нам.

/etc/modprobe.d/blacklist.conf

install hci_uart /bin/false
install vc4 /bin/false
install bluetooth /bin/false
install i2c_bcm2835 /bin/false
install bcm2835_v4l2 /bin/false
install snd_bcm2835 /bin/false
install v4l2_common /bin/false
install videobuf2_vmalloc /bin/false
install videobuf2_memops /bin/false
install videobuf2_vmalloc /bin/false
install videodev /bin/false
install videobuf2_v4l2 /bin/false
install videobuf2_common /bin/false
install media /bin/false

Все эти модули (их полезность) – под вопросом, drm-модули нужны, от них не следует избавлятся.

IPV6 мне дома не нужен, правим /etc/sysctl.d/40-ipv6.conf (можно пойти другим путем, через параметры ядра, вообще выкусив ipv6, но умные люди говорят, что это может окончательно поломать систему):

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.enp0s25.disable_ipv6 = 1
net.ipv6.conf.wlan0.disable_ipv6 = 1

Не работает reboot по умолчанию, правим /etc/modules-load.d/bcm2835_wdt.conf :

bcm2835_wdt

Обновляем систему (на июнь 2019 есть проблемный микрокод, который загоняет “малинку” в циклический ребут): pacman -Syyu –ignore raspberrypi-bootloader

Ставим mpd + порцию разного полезного: pacman -S mpd sudo mpc uboot-tools alsa-utils.

Понятное дело, мы забьем болта на рекомендации из wiki Archlinux и добавим такую строчку в /etc/fstab, побочные эффекты мне на медиаплеере не известны (зато работает без плясок с бубном c systemd синхронизация времени и разрешение имен):

tmpfs   /var/tmp         tmpfs   rw,nodev,nosuid          0  0

Система в ro-режиме, для этого делаем следующее:

  • правим файл /boot/boot.txt (cd /boot ; vi boot.txt – важная мелочь), заодно отключаем auditd полностью:
setenv bootargs console=ttyS1,115200 console=tty0 root=PARTUUID=${uuid} ro rootwait smsc95xx.macaddr="${usbethaddr}" audit=0
  • запускаем скрипт ./mkscr
  • правим файл /etc/fstab (нам нужна точка монтирования /boot, у меня это mmcblk0p1, у всех должно быть так же, но это не точно):
/dev/mmcblk0p1  /boot   vfat    defaults,ro        0       0
  • так как мы типа заблокировали auditd – не забываем “добить” его окончательно командой systemctl mask systemd-journald-audit.socket
  • после этого reboot (спойлер: читайте до конца, иначе все впустую 😉 )

Для перехода в rw – mount -o remount,rw / , mount -o remount,rw /boot (ну, обновить чего-нибудь, если приспичит).

Точка монтирования /storarray_usb/ – модная износостойкая флешка от HPE (таки досталась на память 😉 ), надоело раз в пол-года бегать за свежей MicroSD, потому что старую “запилил”. Вот её-то и будем … пилить.