Шпион, выйди вон!

Грустно и неприятно, что в нашей стране происходят такие события. Ситуация, когда граждане вынуждены бороться со своим правительством, слава богу, что не физически, а в виртуальном пространстве, в любом случае не выглядит нормальной.

И ситуация, когда установленные в смартфон приложения пытаются указывать пользователям, чем им пользоваться на своём устройстве, а чем нет, выглядит ещё более отвратительной. Да, эти приложения добавляли удобства и комфорта, но есть определённые границы, которые пересекать нельзя. Так что говорю им своё «фи» и «голосую ногами» в пользу отказа от их использования до изменения отношения к своим пользователям и их данным.

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

  • Альфа-банк
  • Сбербанк онлайн
  • Озон
  • АЗС ГПН
  • Яндекс.Карты
  • Яндекс.Навигатор

Конечно, есть менее радикальный вариант — перетащить все эти приложения в другой смартфон. Только этот способ не покажет отказ от пользования приложением и соответствующее падение метрик.

OrangePI: храним логи на диске, а не в zram

В Ubuntu, которую я установил на OrangePi, логи по-умолчанию пишутся в память. При штатном завершении работы они сбрасываются на диск, но если что-то пошло не так, логов потом не найдёшь. При первоначальной установке это выглядит так:

root@orangepi5pro:~ # df -h        
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.6G  9.9M  1.6G   1% /run
/dev/nvme0n1p2  226G   32G  192G  15% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           5.0M   16K  5.0M   1% /run/lock
tmpfs           7.8G  4.0K  7.8G   1% /tmp
/dev/nvme0n1p1 1022M  123M  900M  13% /boot
/dev/zram1      188M  4.6M  169M   3% /var/log  <-- вот!

Это выглядит оправданым, если операционная система установлена на SD карту, например. В случае же, когда ОС установлена на NVME диск, острой необходимости хранить логи в памяти нет. Особенно если логи нужны. Поэтому я отключил эту опцию и теперь логи пишутся сразу на диск. Делается это очень просто. Находим файл /etc/default/orangepi-ramlog, в нём строчки

# configuration values for the orangepi-ram-logging service
#
# enable the orangepi-ram-logging service?
ENABLED=true

и меняем true на false:

ENABLED=false

Перезагружаем систему и видим, что /var/log больше не примонтирован на /dev/zram1.

Установка прошивки на Orange Pi 5 Pro

Купил некоторое время назад прекрасный девайс — Orange Pi 5 Pro. Работа с SD карты в мои планы не входила, так что сразу взял к нему NVME SSD. Получил посылку с заказом, быстро всё собрал и на радостях не обратил внимание на маленький, но важный нюанс: этот мини-пк идёт по умолчанию без SPI Flash и eMMC модуля. 🙂

В инструкции достаточно подробно всё расписано, как прошивать образ операционной системы на SD карту, на SPI Flash, на eMMC и на SD карту с дальнейшей записью операционки на NVME диск. Но, как водится, есть подводные камни.

1. Balena Etcher.

Заставить работать свежую версию (1.19.25) у меня сходу не удалось. При записи открывается сообщение с ошибкой «Error spawning child process». Но вот версия 1.18.4 работает без проблем.

2. Образы операционных систем

Я пробовал заливать на SD карту образы Debian, OpenWRT, OpenHarmony. Все они не загружаются. А посмотреть ошибку по UART я не мог, не было модуля под рукой. 🙂

В итоге заработал образ Orangepi5pro_1.0.4_ubuntu_jammy_server_linux6.1.43.img, ссылка на который была в официальной документации. После заливки его на SD карту, «апельсинка» наконец-то загрузилась. Тогда уже, в соответствии с документацией, мне удалось закинуть образ Ubuntu на NVME диск, а на флэшку записать загрузчик rkspi_loader.img. К слову, обновление Ubuntu с версии 22.04 («Jammy Jellyfish») до актуальной 24.04 («Noble Numbat») прошло без проблем.

В остальном железяка показала себя очень хорошо. В данный момент использую её в качестве видеорегистратора для записи видео с IP камер и «сердца» «умного дома» с HomeAssistant, и её ресурсов для этих целей более чем хватает.

Перенос информации с диска одного ноутбука на другой по сети

Купил тут новый ноутбук, встал вопрос переноса данных на него со старого ноутбука. Просто поменять диск смысла не было, диск хоть и SSD, но уже немного устаревший. Сначала хотел было вытащить диск из нового ноутбука, воткнуть его во внешний контейнер и скопировать данные со старого диска с помощью dd. Но, как это часто бывает, контейнер забыл в другом месте, а пользоваться новым ноутбуком уже хотелось. Поэтому сделал так.

1) Подключил оба ноутбука кабелем к коммутатору.

2) Загрузил на обоих ноутбуках с флэшек Debian Live дистрибутив.

3) Установил на обоих ноутбуках netcat:

apt install nc

4) На старом ноутбуке установил pv:

apt install pv

5) Посмотрел, какой IP адрес у нового ноутбука и запустил следующую команду:

nc -l -p 7777 | dd of=/dev/nvme0n1 obs=1M

Как можно догадаться, диск на новом ноутбуке проходит под названием /dev/nvme0n1.

6) На старом ноутбуке запустил процесс копирования содержимого диска /dev/sda на IP адрес нового ноутбука:

pv /dev/sda | nc 192.168.0.10 7777

Так как содержимое диска на старом ноутбуке было зашифровано, я не использовал сжатие при копировании.

После чуть более часового ожидания процесс копирования завершился.
Также на новом ноутбуке запустил gparted, чтобы проверить, весь ли раздел используется. Gparted выдал уведомление, что используется не весь раздел и предложил это исправить. Согласился и исправил эту ошибку. После перезагрузился, вытащив флэшку — вуаля, система определилась, всё заработало.

Установка и прошивка контроллера ESP32 S2 mini ESPHome

Небольшая инструкция-памятка по загрузке прошивки в контроллеры типа ESP32. Я для своих задач по созданию «умного дома», использую в частности ESP32 S2 mini и прошивку ESPHome.

Прежде всего установим необходимые пакеты:

apt install python3 python3-venv

Для того, чтобы вашему пользователю была доступна работа с последовательными портами, добавим его в группу dialout:

usermod -a -G dialout alexey

Здесь alexey — логин пользователя, как можно догадаться.

Создадим виртуальное окружение:

python -m venv venv

Для некоторых дистрибутивов это может не сработать. Например, в Kali Linux. В них нужно использовать другую команду:

virtualenv venv

И последний штрих:

source venv/bin/activate

На этом виртуальное окружение готово, переходим к самому главному. Установим в виртуальном окружении необходимые пакеты, а именно esptool и esphome:

cd venv
pip3 install esptool
pip3 install esphome

После установки подключим контроллер к компьютеру, переведём его в режим записи и проверим, что всё работает нормально с помощью очистки прошивки:

esptool.py --port /dev/ttyACM0 erase_flash

Более подробную информацию о Esphome можно получить на официальном сайте. Я лишь оставлю основные команды.

Подготовка конфигурации прошивки:

esphome wizard livingroom.yml

Проверка созданного конфига:

esphome config livingroom.yml

Компиляция и запись прошивки в контроллер:

esphome run livingroom.yml

Если эта тема интересна, могу поделиться более детальной инструкцией и конфигами, которые использую для чтения данных с датчиков, управления реле и другими устройствами. Пишите в комментарии, если да. 🙂