#!/bin/bash #card1 card1-DP-1 card1-DP-2 card1-HDMI-A-1 card1-HDMI-A-2 card1-VGA-1 renderD128 while true do echo "Моргаем HDMI..." echo off | sudo tee /sys/class/drm/card1-DP-1/status sleep 7 echo detect | sudo tee /sys/class/drm/card1-DP-1/status echo "Готово. Текущий статус:" cat /sys/class/drm/card1-DP-1/status done
Создать пользователя и включить ssh:
create account admin admin enable ssh config ssh user admin authmode password show ssh server show ssh user authmode
Показать текущий конфиг:
show config current_config
Для ssh можно так:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 \
-oHostKeyAlgorithms=+ssh-dss,ssh-rsa \
-oPubkeyAcceptedKeyTypes=+ssh-rsa \
-oCiphers=+aes256-cbc,aes192-cbc,aes128-cbc \
-oMACs=+hmac-sha1 \
user@192.168.127.55
Еще можно так:
cat >> ~/.ssh/config << EOF
Host 192.168.127.55
HostKeyAlgorithms +ssh-dss,ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1
PubkeyAcceptedKeyTypes +ssh-rsa
Ciphers +aes256-cbc,aes192-cbc,aes128-cbc
# If you also need MAC algorithms:
# MACs +hmac-sha1,hmac-md5
EOF
ssh user@192.168.127.55
rspan (один из вариантов размножить трафик)
# 1. Включаем RSPAN глобально enable rspan # 2. Создаем обычную VLAN с ID 100 create vlan vlanid 100 # 3. Создаем RSPAN VLAN поверх нее create rspan vlan vlan_id 100 # 4. Добавляем порты-приемники (1:3-1:8) в VLAN 100 как тегированные (tagged) config vlan vlanid 100 add tagged 1:3-1:8 # 5. Настраиваем порт-источник (1:23) config rspan vlan vlan_id 100 source add ports 1:23 both # 6. Настраиваем порты-приемники как redirect-порты config rspan vlan vlan_id 100 redirect add ports 1:3-1:8 # 7. Проверяем результат show rspan vlan_id 100 ЧТО?! Мы создали специальную VLAN 100 и сделали её "RSPAN-способной" . Мы указали коммутатору: трафик с порта 1:23 нужно копировать не на конкретный порт, а в эту RSPAN VLAN. Затем мы добавили порты 1:3-1:8 в эту VLAN и сказали: всё, что приходит в эту VLAN, отправляйте на эти порты.
Как посмотреть текущий/изменить IP-адрес
По умолчанию фабричный IP-адрес DGS-3120 — 10.90.90.90/8 Показать ip: show ipif show ipif System Задать основной адрес: config ipif System ipaddress 192.168.127.222/24 Для шлюза: config ipif System gateway 192.168.127.1
Разделить rspan на vlan
Очистка: # Отключаем RSPAN disable rspan # Удаляем RSPAN VLAN delete rspan vlan vlan_id 100 delete rspan vlan vlan_id 200 # Удаляем обычные VLAN delete vlan vlanid 100 delete vlan vlanid 200 delete vlan vlanid 103 delete vlan vlanid 104 delete vlan vlanid 105 delete vlan vlanid 106 delete vlan vlanid 107 delete vlan vlanid 108 delete vlan vlanid 1034 # Сбрасываем порты в default config vlan default add untagged 1:23 config vlan default add untagged 1:3-1:8 # Включаем порты config ports 1:23,1:3-1:8 state enable config ports 1:23,1:3-1:8 learning enable config ports 1:23,1:3-1:8 speed auto # Проверяем чистоту show vlan show rspan Настройки для SW1: # 1. Включаем RSPAN enable rspan # 2. Создаем RSPAN VLAN create vlan vlanid 100 create rspan vlan vlan_id 100 create vlan vlanid 200 create rspan vlan vlan_id 200 # 3. Настраиваем транк (порт 23) config vlan vlanid 100 add tagged 1:23 config vlan vlanid 200 add tagged 1:23 config vlan default delete 1:23 # 4. Настраиваем источник (ГТ1 на порту 23) для VLAN 100 config rspan vlan vlan_id 100 source add ports 1:23 both # 5. Настраиваем получатели (порты 3-8 для ОБЕИХ VLAN) config rspan vlan vlan_id 100 redirect add ports 1:3-1:8 config rspan vlan vlan_id 200 redirect add ports 1:3-1:8 # 6. Защита портов ТО config lldp ports 1:3-1:8 admin_status disable config stp ports 1:3-1:8 edge true config traffic control 1:3-1:8 broadcast enable config traffic control 1:3-1:8 broadcast level 64 # 7. Проверка show rspan show vlan show traffic control 1:3-1:8 Настройки для SW2: # 1. Включаем RSPAN enable rspan # 2. Создаем RSPAN VLAN create vlan vlanid 100 create rspan vlan vlan_id 100 create vlan vlanid 200 create rspan vlan vlan_id 200 # 3. Настраиваем транк (порт 23) config vlan vlanid 100 add tagged 1:23 config vlan vlanid 200 add tagged 1:23 config vlan default delete 1:23 # 4. ВНИМАНИЕ: Настраиваем источник (ГТ2 на порту 23) для VLAN 200 config rspan vlan vlan_id 200 source add ports 1:23 both # 5. Настраиваем получатели (порты 3-8 для ОБЕИХ VLAN) config rspan vlan vlan_id 100 redirect add ports 1:3-1:8 config rspan vlan vlan_id 200 redirect add ports 1:3-1:8 # 6. Защита портов ТО config lldp ports 1:3-1:8 admin_status disable config stp ports 1:3-1:8 edge true config traffic control 1:3-1:8 broadcast enable config traffic control 1:3-1:8 broadcast level 64 # 7. Проверка show rspan show vlan show traffic control 1:3-1:8 Проверка: show vlan show rspan vlan_id 100 show port_vlan 1:3-1:8 show fdb port 1:3 show fdb port 1:4 show fdb port 1:5 show fdb port 1:6 show fdb port 1:7 show fdb port 1:8
Links:
https://steamcommunity.com/discussions/forum/26/695372973294554666/ https://4pda.to/forum/index.php?showtopic=1028788 https://retroigrok.ru/ 3D official: https://gitlab.steamos.cloud/SteamDeck/hardware steam desk: https://github.com/mikeroyal/Steam-Deck-Guide#tools-to-copytransfer-files-to-your-steam-deck steam desk accessories: https://github.com/mikeroyal/Steam-Deck-Guide/blob/main/Accessories.md game on linux: https://lutris.net/
Первый запуск и висит на установке steam
0. Скорее всего все плохо и потребуется ТРИ популярных буквы ^_^ 1. Попробуй принудительный перезапуск + ожидание - самое первое, что приходит в голову. Зажми Power на 10–15 секунд, пока Deck полностью не выключится === включи снова === ничего не нажимай 10–20 минут, даже если висит “1 секунда” или кажется, что он замер. Слышал часто, что у многих установка продавливается через долгое время, особенно на первом старте. 2. Старт без Wi-Fi (по крайней мере, с реддита у пацанов получалось). Выключи Deck=включи=на экране выбора Wi-Fi не подключайся вообще=дай ему дойти до системы офлайн=уже внутри SteamOS подключись к Wi-Fi и обновись Если Wi-Fi не даёт пропустить шаг: подключись=как только завис — выключи роутер / хотспот=дождись, пока установка пойдёт дальше 3. Смена языка системы. Перезагрузи Deck=на первом экране выбери язык English=регион — любой (US/UK)=Подключись к Wi-Fi и жди. 4. Переустановка SteamOS через Recovery. Если первые три способа не помогут, пробуй это. Что нужно в качестве подготовки - любую флеш чистую от 8 гб, пк, USB-C=USB-A переходник или хаб. Как делать --- на пк скачай Steam Deck Recovery Image (официальный образ), затем запиши образ на флешку (Rufus/Balena Etcher). Дальше полностью выключаешь Deck, дальше зажми Volume − и нажми Power. откроется Boot Menu - выбери флешку. в меню выбери: Reinstall SteamOS (главное, что НЕ “Clear user data”, а если он новый — без разницы). 10-15 минут и у тебя в руках конфетка. Этот способ, если что, сама вульва публиковала в качестве официального, гарантия не теряется.
Продолжение следует:
...
Links:
https://www.home-assistant.io/installation/generic-x86-64 - офф гайд https://github.com/home-assistant/operating-system/releases - образы https://github.com/home-assistant/operating-system/releases/download/17.0/haos_generic-x86-64-17.0.img.xz - последний образ для x86_x64 на 2026.02.04 https://www.system-rescue.org/ - LiveCD https://rescuezilla.com/ - LiveCD https://github.com/rescuezilla/rescuezilla/releases/download/2.5.1/rescuezilla-2.5.1-64bit.noble.iso - решено на 2.6.1 оказался не рабочий репозиторий и не возможно было поставить zutils https://www.balena.io/etcher - стороння программа для прожога образа
Install общий пример:
0. Загружаемся с livecd (я использовал recuezilla) и открываем терминал "xfc terminal" и для удобства можем воспользоваться firefox откуда м скопируем ссылку с образом https://www.home-assistant.io/installation/generic-x86-64 0.1 Для установки распаковщика unxz выполнить в терминале следящие: apt update apt install zutils 1. Скачиваем образ HAOS: wget https://github.com/home-assistant/operating-system/releases/download/17.0/haos_generic-x86-64-17.0.img.xz 2. Распаковываем: unxz haos_generic-x86-64-17.0.img.xz 3. вот так можно посмотреть че там по дискам fdisk -l 4. Пишем образ на диск: dd if=haos_generic-x86-64-17.0.img of=/dev/ТУТ_ПУТЬК_ДИСКУ status=progress bs=2M !!! Гиде /dev/ТУТ_ПУТЬК_ДИСКУ ваш диск
Install распаковка сразу на диск:
0. Загрузились с liveCD и скачиваем браузером: https://github.com/home-assistant/operating-system/releases/download/17.0/haos_generic-x86-64-17.0.img.xz apt update apt install zutils 1. открываем терминал проверяем как называется наш диск: fdisk -l 2. Переходим в место загрузки: cd /home/ubuntu/Downloads #/dev/sda_YOU_DISK - исправь на свой диск на который будешь записывать HAOS unxz -dc haos_generic-x86-64-17.0.img.xz | dd of=/dev/sda_YOU_DISK bs=4M status=progress
Возможные проблемы с загрузкой:
efibootmgr --create --disk /dev/--part 1 --label "HAOS" --loader '\EFI\BOOT\bootx64.efi' Пример: efibootmgr -c -d /dev/sda -p 1 -L "HAOS" -l "\EFI\BOOT\bootx64.efi" # Показать записи: efibootmgr -v # Удалить конкретную запись (например, Boot0004) sudo efibootmgr -b 4 -B # Удалить несколько записей sudo efibootmgr -b 0 -B # Boot0000 sudo efibootmgr -b 1 -B # Boot0001
Default link:
http://homeassistant.local:8123
Часты команды:
modprobe name_modules = загрузка модуля depmod -a = иногда требуется для того что бы система подгрузила сторонний драйвер который вы подложили в папку к модулям Пример: cp name_drv.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ depmod -a modprobe name_drv.ko
Самые распространённые модули kernel linux:
Базовые / Системные модули: loop = создает виртуальные блочные устройства для монтирования образов дисков tun = создает виртуальный сетевой TUN-интерфейс для работы VPN и маршрутизации tap = создает виртуальный сетевой TAP-интерфейс для работы с эмуляцией сети на канальном уровне fuse = позволяет создавать файловые системы в пользовательском пространстве autofs4 = автоматически монтирует файловые системы по запросу dm_mod = предоставляет базовый функционал Device Mapper для LVM и шифрования дисков msr = дает доступ к MSR-регистрам процессора для мониторинга ipv6 = добавляет поддержку стека сетевого протокола IPv6 Файловые системы overlay = реализует OverlayFS для объединения каталогов (используется в Docker) btrfs = добавляет поддержку современной файловой системы Btrfs ntfs3 = обеспечивает поддержку чтения и записи NTFS (новый драйвер) exfat = добавляет поддержку файловой системы exFAT для флешек cifs = позволяет монтировать сетевые шары по протоколу SMB/CIFS nfs = добавляет клиентскую поддержку сетевой файловой системы NFS ext4 = добавляет поддержку файловой системы EXT4 vfat = обеспечивает поддержку файловых систем FAT16/FAT32 squashfs = добавляет поддержку сжатой файловой системы только для чтения f2fs = добавляет поддержку Flash-Friendly File System для SSD Файловые системы и хранилище: dm_cache = добавляет функционал кэширования для Device Mapper (ускорение дисков) dm_mirror = добавляет функционал зеркалирования для Device Mapper md_mod = модуль программного RAID (многодисковые массивы) bcache = добавляет систему кэширования для блочных устройств (SSD кэш для HDD) jbd2 = журналирование для файловых систем ext4 xfs = добавляет поддержку высокопроизводительной файловой системы XFS nls_utf8 = добавляет поддержку кодировки UTF-8 для файловых систем FAT/VFAT/NTFS Сетевые модули: wireguard = реализует современный протокол VPN WireGuard iptable_filter = добавляет модуль фильтрации пакетов для iptables nf_tables = предоставляет новый фреймворк nftables для замены iptables nft_chain_nat = реализует функционал NAT для nftables veth = создает пары виртуальных Ethernet-устройств bridge = позволяет создавать программные сетевые мосты bonding = объединяет несколько сетевых интерфейсов в один логический macvlan = создает виртуальные интерфейсы с разными MAC-адресами ipvlan = создает виртуальные интерфейсы с разными IP на одном физическом ppp_generic = добавляет поддержку протокола PPP для модемных подключений igb = драйвер для сетевых карт Intel Gigabit Ethernet (серии 82575, 82576, 82580) e1000e = драйвер для современных сетевых карт Intel Gigabit Ethernet (PCI-E) r8169 = драйвер для популярных сетевых карт Realtek (RTL8168, RTL8111 и др.) iwlwifi = драйвер для WiFi адаптеров Intel ath9k = драйвер для WiFi адаптеров Atheros 802.11n (стабильный и популярный) rtw88 = драйвер для современных WiFi адаптеров Realtek (RTL8822BE, RTL8822CE и др.) mac80211 = общий фреймворк для беспроводных драйверов (основа для многих WiFi-драйверов) cfg80211 = подсистема конфигурации беспроводных сетей (работает с mac80211) Виртуализация и контейнеры: kvm = основной модуль виртуализации KVM (Kernel-based Virtual Machine) virtio = добавляет поддержку драйверов VirtIO для паравиртуализации virtio_net = драйвер сетевого интерфейса VirtIO (для виртуальных машин) virtio_blk = драйвер блочного устройства VirtIO (для виртуальных дисков) vhost_net = ускоряет сетевую производительность в виртуальных машинах cgroup = обеспечивает поддержку контрольных групп (cgroups) для изоляции ресурсов Драйверы и оборудование: usb_storage = обеспечивает поддержку USB-накопителей uhci_hcd = добавляет драйвер для USB 1.1 контроллеров (UHCI) ohci_hcd = добавляет драйвер для USB 1.1 контроллеров (OHCI) ehci_hcd = добавляет драйвер для USB 2.0 контроллеров (EHCI) xhci_hcd = добавляет драйвер для USB 3.x контроллеров (xHCI) bluetooth = обеспечивает базовую поддержку стека Bluetooth hid_generic = добавляет общую поддержку HID-устройств usbhid = обеспечивает поддержку HID-устройств через USB i2c_dev = предоставляет доступ к шине I2C из пользовательского пространства uinput = позволяет программам создавать виртуальные устройства ввода kvm_intel = добавляет модуль KVM для виртуализации на процессорах Intel kvm_amd = добавляет модуль KVM для виртуализации на процессорах AMD vfio_pci = позволяет привязывать PCI-устройства напрямую к виртуальным машинам Шифрование и безопасность: dm_crypt = реализует прозрачное шифрование дисков через Device Mapper aesni_intel = включает аппаратное ускорение AES-шифрования evdev = обеспечивает универсальный интерфейс для устройств ввода tpm = добавляет поддержку Trusted Platform Module Безопасность: loadpin = закрепляет загрузку модулей ядра и firmware только с одного места lockdown = ограничивает доступ к потенциально опасным функциям ядра yama = система безопасности для контроля за ptrace integrity = фреймворк целостности платформы (IMA/EVM) apparmor = система принудительного контроля доступа (альтернатива SELinux) selinux = система принудительного контроля доступа (используется в RHEL, Fedora) Мультимедиа и графика: snd_hda_intel = драйвер для звуковых карт Intel HD Audio snd_usb_audio = драйвер для USB-аудио устройств drm = Direct Rendering Manager (основа для графических драйверов) i915 = драйвер для интегрированной графики Intel amdgpu = драйвер для современной графики AMD nouveau = драйвер с открытым кодом для графики NVIDIA uvcvideo = драйвер для USB Video Class устройств (веб-камеры) Прочие важные: processor = управление состоянием процессора (P-states, C-states) thermal = управление терморегуляцией и датчиками температуры acpi_call = позволяет делать ACPI-вызовы (полезно для управления ноутбуками) joydev = драйвер для джойстиков и геймпадов leds_class = фреймворк для управления светодиодными индикаторами rtc_cmos = драйвер для часов реального времени (RTC) battery = поддержка аккумуляторов ноутбуков Для диагностики и отладки: ftrace = фреймворк для трассировки ядра kprobes = механизм для установки динамических точек останова в ядре pcspkr = драйвер для внутреннего динамика ПК (PC speaker) module = сам модуль для динамической загрузки/выгрузки модулей
САМЫЕ НЕОБХОДИМЫЕ МОДУЛИ (без которых часто не работает система или критичные функции):
Без этих система может не загрузиться/не работать dm_mod = основа для LVM и шифрования дисков (если используется) ext4 = если корневая файловая система ext4 virtio = если система запущена в виртуальной машине (VirtIO диски/сеть) nvme = для современных SSD NVMe ahci = для SATA контроллеров sd_mod = для работы с SCSI/SATA дисками (основа хранилища) Без этих не будет сети (для большинства систем) e1000e = для сетевых Intel (физические сервера/ПК) virtio_net = для виртуальных машин с VirtIO r8169 = для сетевых Realtek (самые распространённые) bridge = если используются виртуальные машины/контейнеры ipv6 = почти всегда нужен Без этих не будет базового USB xhci_hcd = для USB 3.x (современные системы) ehci_hcd = для USB 2.0 uhci_hcd/ohci_hcd = для USB 1.1 (старые системы) usb_storage = для флешек и внешних дисков usbhid = для USB клавиатур и мышей Без этих не будет нужных файловых систем overlay = для Docker/контейнеров (обязательно!) ntfs3 = для чтения/записи Windows разделов vfat = для EFI загрузочного раздела и флешек fuse = для многих пользовательских ФС (sshfs, rclone и др.) cifs = для сетевых шаров Windows/Samba Критичные для безопасности/шифрования dm_crypt = для зашифрованных дисков (LUKS) aesni_intel = ускорение шифрования на Intel/AMD процессорах evdev = для устройств ввода (клавиатуры/мыши в GUI) Специальные, но часто необходимые wireguard = современный VPN (если используется) kvm_intel/kvm_amd = для виртуализации KVM vfio_pci = для проброса PCI устройств в VM (GPU passthrough) nfs = для сетевых файловых систем NFS Самый минимальный список "если система не грузится после обновления ядра" (Эти модули часто встроены в ядро, но если ядро собрано модульно, то нужны): Для диска: ext4 + sd_mod + ahci/nvme Для сети: e1000e/r8169/virtio_net Для USB: xhci_hcd + usb_storage + usbhid Для LVM/шифрования: dm_mod + dm_crypt (если используется) Для загрузки: vfat (EFI раздел)
juniper / junos / mx80
Ссылки:
# https://www.juniper.net/documentation/us/en/software/junos/junos-getting-started/topics/task/remote-access.html # https://disnetern.ru/start-configuration-juniper-junos/
Настройка интерфейса управления:
configure - включаем режим конфигурирования edit interfaces fxp0 - редактируем интерфейс fxp0 ( delete set unit 0 family inet address 192.168.16.165/24 - удалить адрес set unit 0 family inet address 192.168.16.161/24 - установить адрес commit - сохранить настройку
Пинг/ping:
run ping 192.168.0.1
Пользователи:
0. Включаем режим настройки: configure 1. Добавляем пользователя username: edit system login user username 2. (Необязательно) Задайте описательное имя для учётной записи. Если имя содержит пробелы, заключите его в кавычки. set full-name complete-name 3. Показать группы: show groups 4. (Необязательно) Задайте идентификатор пользователя (UID) для учётной записи. Как и в системах UNIX, UID определяет права доступа пользователя и доступ к файлам. Если вы не укажете UID, программа назначит его автоматически. Формат UID — число от 100 до 64 000. edit groups global system login user user-name set uid uid-value 5. Назначьте пользователю класс входа. Вы можете определить собственные классы входа или назначить один из предопределенных. Предопределенные классы входа: super-user - все разрешения operator - разрешения на очистку, управление сетью, сброс, трассировку и просмотр read-only - разрешения на просмотр unauthorized - без разрешений edit groups global system login user user-name set class class-name show groups 6. Установка пароля (не безопасно пароль открытым текстом): edit groups global system login user user-name set authentication plain-text-password 7. Установка пароля (пароль зашифрован) edit groups global system login user user-name set authentication encrypted-password "password" 8. По ключу для SSH edit groups global system login user user-name set authentication (ssh-ecdsa | ssh-ed25519 | ssh-rsa) authorized-key 9. На верхнем уровне конфигурации примените группу конфигурации. Если вы используете группу конфигурации, необходимо применить её, чтобы она вступила в силу. edit set apply-groups global 10. Cохранить конфиг: commit
Имя хоста:
edit groups group-name system host-name hostname exit commit
ssh/telnet/ftp/web:
0. Включаем режим настройки: configure 1. Включаем SSH access: set system services ssh 2. Включаем Telnet access: set system services telnet 3. Включаем FTP: set system services ftp 4. (Необязательно) web-managment: set system services web-management http interface vlan.0 4.1. (Необязательно) Примените группу конфигурации. Если вы используете группу конфигурации, её необходимо применить на верхнем уровне конфигурации, чтобы она вступила в силу: set apply-groups global 5. Применяем и сохраняем настройку: commit
Маршрут по умолчанию:
set routing-options static route 0/0 next-hop 1.2.3.1
DHCP-server / interface / firewall:
Собираем порты в одну сеть: set interfaces interface-range interfaces-trust member-range ge-0/0/1 to ge-0/0/7 set interfaces interface-range interfaces-trust unit 0 family ethernet-switching vlan members vlan-trust Настраиваем разрешения для созданной группы: set vlans vlan-trust vlan-id 3 set vlans vlan-trust l3-interface vlan.0 Dhcp-сервер: set system services dhcp router 192.168.1.1 set system services dhcp pool 192.168.1.0/24 address-range low 192.168.1.2 set system services dhcp pool 192.168.1.0/24 address-range high 192.168.1.100 set system services dhcp propagate-settings vlan.0
bridge:
configure # Очистка (если нужно) delete bridge-domains FLAT-L2 delete interfaces irb unit 1 delete interfaces xe-0/0/1 unit 0 delete interfaces xe-0/0/2 unit 0 delete interfaces xe-0/0/3 unit 0 delete interfaces xe-1/0/0 unit 0 delete interfaces xe-1/1/0 unit 0 # Порты в бридже (access, VLAN 1) set interfaces xe-0/0/1 unit 0 family bridge interface-mode access vlan-id 1 set interfaces xe-0/0/2 unit 0 family bridge interface-mode access vlan-id 1 set interfaces xe-0/0/3 unit 0 family bridge interface-mode access vlan-id 1 set interfaces xe-1/0/0 unit 0 family bridge interface-mode access vlan-id 1 set interfaces xe-1/1/0 unit 0 family bridge interface-mode access vlan-id 1 # WAN порт (если нужно) set interfaces xe-0/0/0 unit 0 family inet address 10.0.130.2/24 # Management порт set interfaces fxp0 unit 0 family inet address 192.168.16.161/24 # IRB (шлюз для бриджа) set interfaces irb unit 1 family inet address 10.0.138.1/24 # Bridge-домен set bridge-domains FLAT-L2 domain-type bridge set bridge-domains FLAT-L2 vlan-id 1 set bridge-domains FLAT-L2 routing-interface irb.1 # Статический маршрут по умолчанию set routing-options static route 0.0.0.0/0 next-hop 10.0.130.1 commit
Пример очистки конфигурации:
configure delete system syslog delete system ddos-protection delete interfaces xe-0/0/0 delete interfaces xe-0/0/1 delete interfaces xe-0/0/2 delete interfaces xe-0/0/3 delete interfaces xe-1/0/0 delete interfaces xe-1/1/0 delete interfaces lo0 delete routing-options delete protocols delete policy-options commit
Общие команды:
show configuration - показать конфигурацию show interfaces terse - все интерфейсы show interfaces xe-0/0/0 - конкретный интерфейс (например, xe-0/0/0) show interfaces diagnostics optics - только физические интерфейсы show interfaces brief - краткий статус show interfaces statistics - есть ли ошибки show chassis pic - состояние карт show chassis pic fpc-slot 1 pic-slot 0 show chassis pic fpc-slot 1 pic-slot 1 show chassis hardware models - показать привязку физических портов к интерфейсам show log messages - последние события show log messages | match interface show interfaces terse | match up/down show configuration | display set # Детально о слотах show chassis hardware show chassis hardware detail # Температура и состояние show chassis environment edit - редактирования настройки commit - сохранить настройку commit check - проверка синтаксиса show | display set - используйте команду для отображения команд, используемых при создании конфигурации rollback ? - посмотреть доступные точки восстановления rollback 0 - вернуться на предыдущую конфигу commit confirmed число_минут - команда примет конфиг на указанное количество минут, потом вернет все обратно
kubernetes / minikube
ссылки:
www.youtube.com/watch?v=TwyhnBDOHPw https://minikube.sigs.k8s.io/docs/handbook/ https://helm.sh/ru/docs/intro/install/ Примеры от selectel: https://docs.selectel.ru/managed-kubernetes/clusters/connect-to-cluster/ https://docs.selectel.ru/managed-kubernetes/networks/set-up-ingress/ https://docs.selectel.ru/managed-kubernetes/networks/set-up-ingress/?install-ingress-controller=with-configuring-loadbalancer
Задачи Kubernetes:
0. Деплоймент 1. Самовосстановление 2. Управление 3. Масштабирование 4. Баланс трафика
Не задачи kubernetes:
Хранение данных Хранение образов (registry) Сборка образов Сбор журналов и метрик
Общие понятия kubernetes:
master node - сервер или вм машина - головной центр управления - центр принятия решений
worker node - сервера или машины на которых запущены приложения, которыми управляет master noda
master master master
| | |
--------------------------|--------------------------
| | |
worker worker worker
В свою очередь в master node:
kubectl
|
api server --|-------------> scheduler
| | -----> etcd
|
controller
manager
api server - именно с этим сервером абсолютно все общаются (you, etcd, scheduler, controller manager, node, pode, все и все) -
etcd - это база данных, ключ значение, в этой базе хранится все значения что мы делаем с kubernetes
scheduler - планировщик, тут принимается решения что куда деплоить
controller manager - запущенный процесс, который следит за тем что бы kubernetes это сделал
kubectl - через эту программу мы общаемся с "api server" (все управление kubernetes делается через нее)
controle plane - это общее название api server + etcd + scheduler + control manager
Deployment - это yaml файл в котором мы описывает что нам требуется от kubernetes
ReplacaSet - подымает, следит за Pod (количество экземпляров, самовосстановление, желаемое состояние и т.д.)
Pod - собственно наши приложение (doker контейнер или контейнеры)
Трафик -> ingress controller -> node -> kube-proxy (service.yaml) / kubelet -> pod
ingress - внешний трафик
ingress controller - чаще всего это nginx, но также это может быть и haproxy и другое похожее ПО
service.yaml - собственно управляет как подключится к pod (настройки для kube-proxy)
Просто файлы настроек:
deployment.yaml - для вашего приложения которое выбудете запускать в kubernetes
service.yaml - файл с настройками для вашего приложения которое задает настройки для вашего приложения в kube-proxy
kubelet - программа которая отвечает за разворачивание pod
StatefulSet - это приложения, которые не живут в контейнерах, например базы данных (postgres, kafka, redis, etc..)
DaemonSet - это приложения которое будет жить на каждой nod (например fluentd - сбор логов)
minikube
https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64 minikube start - запуск kubernetes minikube minikube dashboard - открыть дашборд minikube
kubectl
kubectl get nodes - показать доступные nod kubectl get pods - показать запущенные pod kubectl apply -f deployment.yaml - пример запуска приложения (в файле deployment.yaml настройки для нашего приложения для kubernetes)
Внешний kubernets:
0. Для внешних подключений к kubernetes:
export KUBECONFIG=$HOME/путь_до_конфига.yaml
1.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm inspect values ingress-nginx/ingress-nginx > values.yaml
2.
Фрагмент манифеста с блоком annotations:
metadata:
name: loadbalancer-name
labels:
app: nginx
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
3.
helm install ingress-nginx/ingress-nginx --generate-name -f values.yaml
Примеры файлов:
0. Создаем файл dokerfile, index.html, deployment.yaml, service.yaml:
cat > dockerfile << "EOF"
FROM nginx:alpine
# Копируем простую HTML страницу
COPY index.html /usr/share/nginx/html/
EXPOSE 80
EOF
cat > index.html << "EOF"
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World from Kubernetes!</h1>
<p>This is a simple web server running in a Docker container</p>
<p>Server: <span id="server-info">Nginx</span></p>
<p>Port: 80</p>
</body>
</html>
EOF
cat > deployment.yaml << "EOF"
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world-app
labels:
app: hello-world
spec:
replicas: 3
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world-container
image: hello-world-app:latest
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"
EOF
cat > service.yaml << "EOF"
apiVersion: v1
kind: Service
metadata:
name: hello-world-service
spec:
selector:
app: hello-world
ports:
- protocol: TCP
port: 8080
targetPort: 80
type: LoadBalancer
EOF
Запуску:
docker build -t hello-world-app:latest .
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl get pods
ls1046ardb / buildroot
Собираем собираем:
0. Качаем и выбираем версию: git clone https://github.com/buildroot/buildroot cd buildroot git tag git checkout 2025.08.1 1. Показать доступные и создать конфиг для нужной платформы: make list-defconfigs | grep ls1046 make ls1046a-rdb_defconfig 2. Посмотреть что там можно качнуть из ядер: git ls-remote --tags https://github.com/nxp-qoriq/linux.git | grep 6 3. Сборка и настройка make linux-source make linux-menuconfig make menuconfig #make nconfig - альтернатива menuconfig #make xconfig - альтернатива menuconfig
P.S Иногда полезно кое что :
В поисках: grep "BR2_LINUX_KERNEL_VERSION" .config grep "BR2_LINUX_KERNEL_CUSTOM_VERSION" .config В поисках ядер: find /opt/buildroot/output/build/linux-* -name "*lsdk*" -o -name "*ls1046*" -o -name "*defconfig*" 2>/dev/null | grep 1046 # Посмотрим какие defconfig есть в скачанном ядре ( сработает после make linux-source) ls /opt/buildroot/output/build/linux-v5.10.100/arch/arm64/configs/ Проверим, что создался правильный device tree: ls /opt/buildroot/output/build/linux-v5.10.100/arch/arm64/boot/dts/freescale/ | grep ls1046 # В menuconfig можно указать кастомный tarball Kernel -> Kernel version (Custom git repository) -> URL of custom kernel repository = https://github.com/nxp-qoriq/linux.git -> Custom kernel version = LSDK-xx.xx (или конкретный тег) #Иногда после изменения конфига(make menuconfig) помогает: make savedefconfig make linux-dirclean make
P.S По поводу хешей
# Скачаем файл и вычислим хэш mkdir -p dl/linux echo "sha256 8e6e5c3e5f2b5a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c linux-5.10.72.tar.xz" > dl/linux/linux.hash # Скачаем файл и вычислим хэш cd /opt/buildroot/output/build/ wget -q https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.72.tar.xz sha256sum linux-5.10.72.tar.xz > /opt/buildroot/dl/linux/linux.hash
P.S включить английскую локаль
export LANG=C.UTF-8 export LC_ALL=C.UTF-8
P.S. Возможная проблема загрузки и неверная dtb:
0. Ищем источник extlinux для 1046 find /opt/buildroot -name "*extlinux*" -type f | grep 1046 1. В текущем билдрут это файл: cat /opt/buildroot/board/freescale/ls1046a-rdb/rootfs_overlay/boot/extlinux/extlinux.conf ----------------------------------------------------------------------------------------- label ls1046ardb-buildroot kernel /boot/Image devicetree /boot/fsl-ls1046a-rdb-sdk.dtb append console=ttyS0,115200 root=/dev/mmcblk0p1 earlycon=uart8250,mmio,0x21c0500 rootwait ----------------------------------------------------------------------------------------- 2. Вот пример правильной так как я менял кое что при сборке то файл dtb у меня другой: cat /opt/buildroot/board/freescale/ls1046a-rdb/rootfs_overlay/boot/extlinux/extlinux.conf ------------------------------------------------------------ label ls1046ardb-buildroot kernel /boot/Image devicetree /boot/fsl-ls1046a-rdb.dtb append console=ttyS0,115200 root=/dev/mmcblk0p1 earlycon=uart8250,mmio,0x21c0500 rootwait ------------------------------------------------------------ 3. Производим переcборку образа: make target-post-image 4. Убеждаемся что все исправлено: cat /opt/buildroot/output/target/boot/extlinux/extlinux.conf 5. Записываем sd карту: cd output/images/ dd if=sdcard.img of=/dev/sde status=progress sync
Важные параметры для сборки 5.10 ядра файл .config
BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/nxp-qoriq/linux.git" BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v5.10.100" BR2_LINUX_KERNEL_VERSION="v5.10.100" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-ls1046a-rdb" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_KERNEL_HEADERS_CUSTOM_GIT=y BR2_KERNEL_HEADERS_CUSTOM_REPO_URL="https://github.com/nxp-qoriq/linux.git" BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION="v5.10.100" BR2_DEFAULT_KERNEL_HEADERS="v5.10.100" BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y BR2_aarch64=y BR2_cortex_a72=y BR2_ARM_FPU_FP_ARMV8=y BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_GCC_VERSION_14_X=y BR2_BINUTILS_VERSION_2_43_X=y BR2_PACKAGE_FMC=n BR2_PACKAGE_FMLIB=n
Вот сам файл .config, собрано только ядро:
doc_2025-11-19_14-35-03.config_5_10_100_no_soft
links:
https://wiki.homed.dev/ https://wiki.homed.dev/zigbee/ http://wiki.homed.dev/web/
Debian 13 install
0. Ставим пакеты (нужны были в процессе установки): apt update apt install vim tmux wget htop lm-sensors apt install -y mosquitto mosquitto-clients 1. Добавляем репозиторий homed (делаю все от root) wget -O /etc/apt/trusted.gpg.d/debian-homed.asc https://apt.homed.dev/apt.key echo "deb https://apt.homed.dev/ debian main" | tee /etc/apt/sources.list.d/homed.list apt update 2. Ставлю homed-zigbee, hommed-web apt install homed-zigbee homed-web 3. Редактируем конфиг cat > /etc/homed/homed-zigbee.conf << "EOF" [log] enabled=false file=/var/log/homed.log [mqtt] host=localhost port=1883 username= password= prefix=homed instance= names=false debounce=true [homeassistant] enabled=false prefix=homeassistant status=homeassistant/status [default] discovery=true cloud=true [device] database=/opt/homed-zigbee/database.json properties=/opt/homed-zigbee/properties.json options=/opt/homed-zigbee/options.json ota=/opt/homed-zigbee/ota external=/opt/homed-zigbee/external library=/usr/share/homed-zigbee expose=/usr/share/homed-common/expose.json [gpio] status=-1 blink=-1 boot=-1 reset=-1 [zigbee] adapter=znp port=/dev/ttyACM0 baudrate=115200 panid=0x076a channel=12 reset=soft write=true [security] key=0x2f9bf5a0967b4f04d7751f122db86350 [debug] port=false adapter=false zigbee=false EOF
Links:
# https://perasoinc.com/perspectus-series/ # http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_CM4 # https://device.report/manual/7926893
Собственно где брать heders-linux debian bookworm:
0.Пере установкой хедеров убедимся что все пакеты для сборки стоят: apt update apt upgrade -y apt install git make gcc linux-libc-dev pkg-config libncurses-dev flex bison libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential xz-utils libncurses5-dev apt install gcc-arm-linux-gnueabihf #apt install linux-headers-amd64 #для x86 apt install build-essential pkg-config libnl-3-dev libnl-genl-3-dev cmake jq vim # apt install hostapd wpasupplicant 1. Из документации по orangepi хедеры на текущее ядро лежат в каталоге /opt Проверив этот каталог мы увидим deb файл, который просто нужно доставить в систему: dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb 2. После установки у нас появятся в каталоге /usr/src хедеры ядра ls /usr/src
Так же из документации orangepi есть пример как собирать костюмный модуль ядра:
## Офф топ для общего развития. #0. Создаем код модуля ядра cat > hello.c << "EOF" #include#include static int hello_init(void) { printk("Hello Orange Pi -- init\n"); return 0; } static void hello_exit(void) { printk("Hello Orange Pi -- exit\n"); return; } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL"); EOF #1. Создаем Makefaile для сборки модуля cat > Makefile << "EOF" ifneq ($(KERNELRELEASE),) obj-m:=hello.o else KDIR :=/lib/modules/$(shell uname -r)/build PWD :=$(shell pwd) all: make -C $(KDIR) M=$(PWD) modules clean: rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order endif EOF #2. Собираем make V=1 #3. Проверяем что собралось ls *.ko #4. Загружаем модуль ядра (вообще лучше такое делать через modprobe вместо ismod) insmod hello.ko #5. Проверяем что наш модуль загрузился dmesg | grep "Hello" #6. Выгружаем модуль ядра rmmod hello
Сборка peraso
# Для потомков # root@peraso1:/opt/13.3.328/src/drivers/net/wireless/prs# uname -a # Linux peraso1 5.10.160-rockchip-rk356x #1.0.6 SMP Mon May 27 17:03:18 CST 2024 aarch64 GNU/Linux # root@peraso1:/opt/13.3.328/src/drivers/net/wireless/prs# lsusb # Bus 006 Device 002: ID 2932:0720 Peraso Technologies Inc. Peraso PRS460 0. Переходим в каталог с Makefile cd /opt/13.3.328/src/drivers/net/wireless/prs 1. Собираем модуль make -C /lib/modules/5.10.160-rockchip-rk356x/build M=$PWD CONFIG_PRS_FALCON=m modules V=1 #make -C /lib/modules/$(uname -r)/build M=$PWD CONFIG_PRS_FALCON=m modules V=1 2. Пробуем подгрузить собравшийся модуль: insmod prs_falcon.ko 3. Проверяем lsmod | grep prs_falcon dmesg | grep prs_falcon 4. Если все ок и ошибок в третьем пункте нет, продолжаем: 4.1 Копируем модуля ядра в каталок к модулям текущего ядра: cp prs_falcon.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ 4.2 Обновляем зависимости depmod -a 4.3 Пробуем загрузить: modprobe prs_falcon 5. Проверяем сделанное: lsmod | grep prs dmesg | tail -20
Запуск точки доступа и клиента:
Клиент Client:
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
wpa_supplicant -Dnl80211 -iwlan0 -c wpa.conf
wpa_supplicant -Dwext -iwlx20cec40343d9 -c wpa_suplicant.conf
Точка доступа AP:
hostapd -B /etc/hostapd.conf
hostapd -dddd -g /var/run/hostapd/global hostapd.conf
Пример конфига hostapd:
cat > hostapd.conf << EOF
driver=nl80211
interface=wlx20cec40343d9
ssid=clear-link
channel=2
hw_mode=ad
country_code=US
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
EOF
Пример конфига wpa_supplicant:
cat > wpa_suplicant.conf << "EOF"
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="clear-link"
frequency=60480
scan_ssid=1
key_mgmt=NONE
}
EOF
Тест:
wpa_supplicant -Dnl80211 -iwlx20cec40343da -c wpa_suplicant.conf
hostapd -dddd -g /var/run/hostapd/global hostapd.conf
Install peraso driver for debian 11 X86
#debian 11
#root@peraso4:/# uname -a
#Linux peraso4 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64 GNU/Linux
apt update
apt install git make gcc linux-libc-dev linux-headers-amd64 pkg-config libncurses-dev flex bison libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential
apt install pkg-config bc fakeroot xz-utils libncurses5-dev build-essential
apt install linux-headers-amd64
apt install tmux iperf3 tcpdump mc
apt install hostapd
apt install libudev-dev
cd /opt/
tar -xvf src_peraso_13.3.328.tgz
mv src peraso_13.3.328
cd /opt/peraso_13.3.328/drivers/net/wireless/prs/
make -C /lib/modules//$(uname -r)/build M=$PWD CONFIG_PRS_FALCON=m modules V=1
#mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
cp prs_falcon.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
depmod -a
#script
INTERFACE=""
HOSTNAME_INTERGER=""
INTERFACE=$(ip a | grep wlx | awk '{print $2}' | tr -d ':')
HOSTNAME_INTERGER=$(hostname | tr -d peraso)
set_face=${INTERFACE}
set_ip="10.0.0.${HOSTNAME_INTERGER}/24"
cat > supl.txt << EOF
#!/bin/bash
ip a flush dev ${set_face}
ip a a ${set_ip} dev ${set_face}
wpa_supplicant -Dnl80211 -i${set_face} -c wpa_suplicant.conf
#hostapd -dddd -g /var/run/hostapd/global hostapd.conf
EOF
cat > hostapd.conf << EOF
driver=nl80211
interface=${set_face}
ssid=clear-link
channel=3
hw_mode=ad
country_code=US
beacon_int=100
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
EOF
cat > wpa_suplicant.conf << "EOF"
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="clear-link"
frequency=60480
scan_ssid=1
key_mgmt=NONE
}
EOF
uapi/linux
# Создаем директорию uapi/linux если нужно mkdir -p /usr/include/uapi/linux # Создаем симлинк на существующий stddef.h ln -sf /usr/include/linux/stddef.h /usr/include/uapi/linux/stddef.h # Проверим что создалось ls -la /usr/include/uapi/linux/stddef.h
peraso module config
cat > /etc/modprobe.d/prs_falcon.conf << "EOF" options prs_falcon PRS_AMSDU_TYPE=1 PRS_BRIDGE_MODE_ENABLE=0 PRS_FW_LOG=1 PRS_TX_BIND_CPU=2 PRS_RX_BIND_CPU=3 EOF Перезапуск модуля: sudo modprobe -r prs_falcon sudo depmod -a sudo modprobe prs_falcon cat /sys/module/prs_falcon/parameters/PRS_FW_LOG Log: prsfwlog prs_log.elf tail -f /var/log/kern.log | ./prsfwlog -f ./prs_log.elf | tee test.log tail -f /var/log/kern.log | ./prsfwlog -f ./prs_log.elf | tee test.log tail -f /var/log/kern.log | tee test_raw.log
Пример модулей ядра для минимальной работы:
Device Drivers →
[*] Network device support →
[*] USB Network Adapters →
<*> Realtek RTL8152/RTL8153 based USB Ethernet adapters
<*> ASIX AX88179/178A based USB 2.0/3.0 Ethernet Devices
Networking support →
Networking options →
[*] 802.1d Ethernet Bridging
Device Drivers →
USB support →
<*> USB Modem (CDC ACM) support
Device Drivers →
USB support →
USB Gadget Support →
[*] USB Gadget Drivers →
<*> Gadget Serial Driver (port for userspace)
[*] Generic serial bulk in/out
[*] Abstract Control Model (CDC ACM)
Device Drivers →
[*] USB support →
<*> Support for Host-side USB
[*] USB device filesystem
<*> xHCI HCD (USB 3.0) support
<*> EHCI HCD (USB 2.0) support
<*> OHCI HCD (USB 1.1) support
Device Drivers →
[*] HID support →
<*> HID bus support
[*] Battery level reporting for HID devices
USB HID support →
<*> USB HID transport layer
[*] PID device support
[*] /dev/hiddev raw HID device support
Device Drivers →
[*] USB support →
USB Input Devices →
<*> USB Keyboard support
<*> USB Mouse support
Device Drivers →
[*] SCSI device support →
<*> SCSI device support
[*] legacy /proc/scsi/ support
<*> SCSI disk support
Device Drivers →
[*] USB support →
<*> USB Mass Storage support
File systems →
DOS/FAT/NT Filesystems →
<*> MSDOS fs support
<*> VFAT (Windows-95) fs support
(437) Default codepage for FAT
(iso8859-1) Default iocharset for FAT
<*> Native language support →
<*> Codepage 437 (United States, Canada)
<*> NLS ISO 8859-1 (Latin 1; Western European Languages)
<*> NLS UTF-8
<*> The Extended 4 (ext4) filesystem
rkdevtool / debian / install
Link:
https://github.com/rockchip-linux/rkdeveloptool
Install
0. Ставим пакеты: apt install git libudev-dev libusb-1.0-0-dev dh-autoreconf # На случай ошибки при configure с libusb, нужно доставить эти пакеты: apt install pkg-config libusb-1.0 1. Качаем дистрибутив rkdevtool cd /opt git clone https://github.com/rockchip-linux/rkdeveloptool 2. Входим в каталог cd /opt/rkdeveloptool 3. Выполняем: ./autogen.sh 4. Выполняем: ./configure !!! если все успешно то у вас появится Makefile 5. Производим сборку make 6. Производим установку в систему: make install
Основные команды:
rkdevtool ld - показать устройства в maskrom rkdevtool db name_boot_loder - загрузка загрузчика (мелкий файл) rkdevtool wl 0 name_image - загрузка образа системы (большой файл)
Пустой образ или затереть nand:
создаем образ пустой dd if=/dev/zero cont=500 bs=1M of=zero.img rkdevtool db грузим_загручик записываем пустышку rkdevtool wl 0 zero.img
Перезагрузка в режим загрузчика (maskrom)
sudo rkdeveloptool rd 3
Стереть всю флеш-память
sudo rkdeveloptool ef
esp32-cam-mb / esp32-cam
Link:
https://github.com/espressif/esp-idf/tree/02c5f2db/examples https://github.com/espressif/esp32-camera https://www.ozon.ru/product/esp32-cam-mb-micro-usb-esp32-s-posledovatelnym-podklyucheniem-k-wi-fi-plata-cam-sovmestima-bluetooth-1781037428/ https://github.com/ESP32Tutorials/ESP32-CAM-ESP-IDF-Live-Streaming-Web-ServerESP32-CAM ESP-IDF Live Streaming Web Server
edit:
idf.py add-dependency "espressif/esp32-camera"
esp / esp32 / esp-idf
Links:
https://idf.espressif.com/ https://components.espressif.com/ - регистр с кучей примеров кода https://www.espressif.com/en/support/documents/technical-documents - техническая документация https://www.espressif.com/en/support/documents/technical-documents?keys=&field_type_tid%5B%5D=842 https://github.com/espressif/esp-idf/tree/02c5f2db/examples - примеры проектов https://github.com/espressif/esp-idf/releases/tag/v5.4.1 https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32/esp32-devkitc/index.html https://docs.espressif.com/projects/esp-idf/en/v5.4.1/esp32/get-started/index.html https://www.espressif.com/en/support/download/sdks-demos https://docs.espressif.com/projects/esp-idf/en/v5.5/esp32s3/get-started/linux-macos-setup.html#get-started-linux-macos-first-steps https://www.espressif.com/en/sdks/esp-zephyr https://docs.zephyrproject.org/latest/boards/raspberrypi/rpi_4b/doc/index.html https://github.com/espressif/esp-bsp/tree/master/examples
0. install package:
Ubuntu and Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 CentOS 7 & 8: CentOS 7 is still supported but CentOS version 8 is recommended for a better user experience. sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx Arch: sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb Installing Python 3: > Python 2.7.17 python3 --version
2. Скачаем ESP-IDF:
cd /opt sudo git clone -b v5.4.1 --recursive https://github.com/espressif/esp-idf.git
3. Set up the Tools:
Тут можно уже поставить под конкретную esp: cd /opt/esp-idf ./install.sh esp32 ./install.fish esp32,esp32s2 Или поставить все: cd /opt/esp-idf ./install.sh all
4. Настройка окружения и первый пример с hellow_world:
0. Создаем каталог ESP: mkdir ESP cd ESP 1. Активируем окружение: . /opt/esp-idf/export.sh 2. Пример hello_world: cp -r $IDF_PATH/examples/get-started/hello_world . cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
6. Сборка проекта:
idf.py build
7. Прошивка устройства / Flash onto the Device
idf.py -p PORT flash idf.py -p PORT flash monitor
8. Debug с прошивкой
idf.py -pmonitor
zigbee2mqtt / napi / arbian
Link:
https://www.zigbee2mqtt.io/ https://www.zigbee2mqtt.io/guide/installation/01_linux.html https://docs.jethome.ru/ru/controllers/linux/howto/zigbee2mqtt.html
Setup:
# Ставлю под рутом ^_^
0. Ставим пакеты:
apt-get install -y curl
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
apt-get install -y nodejs git make g++ gcc libsystemd-dev tmux
apt install -y mosquitto mosquitto-clients
corepack enable
1. Создадим каталог
mkdir /opt/zigbee2mqtt
2. На случай если ставили не от рута нужно дать права на каталог
sudo chown -R ${USER}: /opt/zigbee2mqtt
3. Скачиваем гит в каталог
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
4. Переходим в каталог:
cd /opt/zigbee2mqtt
5. Запустим tmux и продолжим сборку в нем:
tmux
6. Собираем приложение:
pnpm install --frozen-lockfile
6.1 !!! Вот тут могут возникнуть проблемы, если у вас мало оперативки скорее всего сборка зависнет, запустим в один поток сборку
pnpm install --frozen-lockfile --child-concurrency=1
7. После сборки выполняем запуск:
cd /opt/zigbee2mqtt
pnpm start
Пример сервиса:
cat > /etc/systemd/system/zigbee2mqtt.service << "EOF" [Unit] Description=zigbee2mqtt After=network.target [Service] Environment=NODE_ENV=production Type=simple ExecStart=/usr/bin/pnpm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit StandardError=inherit Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable zigbee2mqtt.service systemctl start zigbee2mqtt.service systemctl status zigbee2mqtt.service journalctl -u zigbee2mqtt.service -f
Update Zigbee2MQTT to the latest version
cd /opt/zigbee2mqtt ./update.sh
Links:
http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_CM4 - инструкции http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-CM4-1.html - инструкции https://drive.google.com/drive/folders/1MJl-pIU2I7EHDN6rlirumVkBOz7utvyE - другие образы https://drive.google.com/file/d/1v7q46pRilxLxOvBu_dz5CscEU7ifb9mS/view?usp=drive_link - образ диска дебиана https://drive.google.com/drive/folders/1m3pEc9Oib9JYOaiHP2TUx89Qq5Zd-tT6 - различные ультелиты https://drive.google.com/file/d/1dAaW_FetnrKWsNU8HrOoYkZBOh0q8WNJ/view?usp=drive_link - пре загрузчик для devrktool https://www.home-assistant.io/installation/#about-installation-methods https://www.home-assistant.io/installation/raspberrypi/ https://www.home-assistant.io/installation/raspberrypi-other https://www.home-assistant.io/installation/raspberrypi/ https://www.home-assistant.io/installation/linux https://www.home-assistant.io/installation/alternative https://github.com/NabuCasa/buildroot-installer/releases https://github.com/home-assistant/buildroot https://github.com/home-assistant/operating-system/releases/download/16.1/haos_rpi4-64-16.1.img.xz https://developers.home-assistant.io/docs/operating-system/getting-started https://docs.docker.com/compose/install/linux/ https://docs.docker.com/engine/install/debian/#install-using-the-repository https://docs.docker.com/engine/install/debian/#install-using-the-repository
Install:
apt-get update apt-get install docker-compose-plugin docker compose version
Install Docker from repo docker:
sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo docker run hello-world
Install docker from docker get:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Uninstall Docker Engine:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd sudo rm /etc/apt/sources.list.d/docker.list sudo rm /etc/apt/keyrings/docker.asc
install home-assist:
https://www.home-assistant.io/installation/odroid
apt-get install docker-compose-plugin
cd /opt
mkdir home-assistant
cd home-assistant
cat > compose.yaml << "EOF"
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host
devices:
- /dev/ttyS9:/dev/ttyS9
environment:
DISABLE_JEMALLOC: true
EOF
Проброс железяки в докер:
- /dev/ttyS9:/dev/ttyS9
- /dev/ttyUSB0:/dev/ttyUSB0
Отключение OOM Killer для контейнера:
DISABLE_JEMALLOC: true
Запуск всего безобразия:
docker compose up -d
cm4 env:
cat /boot/orangepiEnv.txt ------------------------- verbosity=1 bootlogo=false extraargs=cma=128M overlay_prefix=rk356x rootdev=UUID=a0f8ca89-7eb7-4a1e-947a-2341637b4782 rootfstype=ext4 overlays=uart3-m0 uart7-m2 uart9-m2 console=serial -------------------------
links:
https://github.com/home-assistant/os-agent/releases https://github.com/home-assistant/supervised-installer/releases/
install:
0. Обновляем ос: apt update -y && apt upgrade -y 1. Ставим docker: sudo curl -fsSL get.docker.com | sh 2. Добавляем текущего юзера в группу docker: sudo usermod -aG docker $USER 3. Ставим дополнительные пакеты: sudo apt install -y jq wget curl udisks2 libglib2.0-bin network-manager dbus 4. Ставим os-agent: wget https://github.com/home-assistant/os-agent/releases/download/1.7.2/os-agent_1.7.2_linux_aarch64.deb sudo apt install ./os-agent_1.7.2_linux_aarch64.deb 5. Cтавим AppArmor: sudo apt install apparmor 6. Ставим Home Assistant: wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb sudo apt install ./homeassistant-supervised.deb 6.1 Ошибка пакет "homeassistant-supervised" не ставится: dpkg: regarding homeassistant-supervised.deb containing homeassistant-supervised, pre-dependency problem: homeassistant-supervised pre-depends on systemd-timesyncd systemd-timesyncd is not installed. dpkg: error processing archive homeassistant-supervised.deb (--install): pre-dependency problem - not installing homeassistant-supervised Errors were encountered while processing: Выполняем: sudo apt --fix-broken install И пробуем поставить пакет заново 6.2 Ошибка: [info] Waiting for https://checkonline.home-assistant.io/online.txt - network interface might be down... У вас проблемы с DNS. ping ya.ru если не ок можно временно поправить файл /etc/resolv добавив строку "nameserver 8.8.8.8" после установки разберитесь с днс 7. В окошке выбора типа архитектуры выбираем odroid-c2. ждем мин 5 и пробуем подключится http://YOU_IP:8112 ждем окончания установки
apparmor err
cat /boot/orangepiEnv.txt ------------------------- verbosity=1 bootlogo=false extraargs=cma=128M overlay_prefix=rk356x rootdev=UUID=a0f8ca89-7eb7-4a1e-947a-2341637b4782 rootfstype=ext4 overlays=uart3-m0 console=serial apparmor=1 security=apparmor -------------------------
P.S
А теперь о печальном. Этот способ установки будет жить и поддерживается до 2025.12. https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/ из линка: Поскольку сегодня мы объявили устаревшими методы установки Core и Supervised, мы работаем над удалением всех упоминаний о них из нашей документации.
link:
https://www.home-assistant.io/installation/linux https://github.com/home-assistant/operating-system/releases/download/16.0/haos_ova-16.0.qcow2.xz Видос: Поддерживаемые устройства: https://www.home-assistant.io/integrations/zha/#compatible-hardware%C3%90%C2%A3%C3%91%C2%81%C3%91%C2%82%C3%90%C2%B0%C3%90%C2%BD%C3%90%C2%BE%C3%90%C2%B2%C3%90%C2%BA%C3%90%C2%B0 Образы под arm на гитхаб: https://github.com/home-assistant/operating-system/releases образ под arm64: https://github.com/home-assistant/operating-system/releases/download/16.1/haos_generic-aarch64-16.1.qcow2.xz
Пред настройка kvm:
0. Ставим пакеты: apt install cockpit-networkmanager cockpit-machines cockpit-storaged cockpit-ws cockpit-packagekit cockpit-podman apt install qemu-kvm libvirt-daemon-system ovmf virtinst apt install openvswitch-switch #Под arm64 apt-get install qemu-utils qemu-efi-aarch64 qemu-system-arm qemu-efi-aarch64 qemu-system-arm qemu-user-static osinfo-db apt install virt-manager libvirt0 qemu-system libvirt-daemon libvirt-daemon-system libvirt-daemon-system-systemd libvirt-clients libvirt-daemon-config-network qemu-efi-arm qemu-efi-aarch64 usermod -aG kvm user_name usermod -aG libvirt user_name 2. Создаем бридж ovs: ovs-vsctl show ovs-vsctl add-br ovsbr0 ovs-vsctl add-port ovsbr0 end1 где ovsbr0 - бридж и end1 - сетевая карта 3. Отключаем NetworkManage и настраиваем networking systemctl disable NetworkManager systemctl enable networking.service vim /etc/network/interfaces --------------------------- source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto end1 iface end1 inet manual auto ovsbr0 iface ovsbr0 inet dhcp --------------------------- Создаем сеть: vim ovsbr0.xml ------------------------------------------- <network> <name>default</name> <forward mode='bridge'/> <bridge name='ovsbr0'/> <virtualport type='openvswitch'/> </network> ------------------------------------------- virsh net-destroy default irsh net-undefine default virsh net-create --file /root/ovsbr0.xml virsh net-autostart default virsh net-start default
wget:
wget https://github.com/home-assistant/operating-system/releases/download/16.0/haos_ova-16.0.qcow2.xz unxz haos_ova-16.0.qcow2.xz
install virt-manage:
1. Create a new virtual machine in virt-manager. 2. Select Import existing disk image, provide the path to the QCOW2 image above. 3. Choose Generic Default for the operating system. 4. Check the box for Customize configuration before install. 5.Under Network Selection, select your bridge. Under customization select Overview > Firmware > UEFI x86_64: …. Make sure to select a non-secureboot version of OVMF (does not contain the word secure, secboot, etc.), e.g., /usr/share/edk2/ovmf/OVMF_CODE.fd. 7. Click Add Hardware (bottom left), and select Channel. 8. Select device type: unix. 9. Select name: org.qemu.guest_agent.0. 10 Finally, select Begin Installation (upper left corner).
install virt-install:
virt-install --name haos \ --description "Home Assistant OS" \ --os-variant=generic \ --ram=4096 \ --vcpus=2 \ --disk,bus=scsi \ --controller type=scsi,model=virtio-scsi \ --import \ --graphics none \ --boot uefi
install virt arm:
cd /var/lib/libvirt/images wget https://github.com/home-assistant/operating-system/releases/download/16.1/haos_generic-aarch64-16.1.qcow2.xz virt-install --name haos \ --description "Home Assistant OS" \ --os-variant=generic \ --osinfo generic \ --ram=2048 --vcpus=2 \ --disk haos_generic-aarch64-16.1.qcow2,bus=scsi \ --controller type=scsi,model=virtio-scsi \ --import --graphics none \ --boot uefi
HACS
HACS - дополнительные интеграции links: https://io-home.ru/home-assistant/integrations/ssh-dostup-v-home-assistant/ https://io-home.ru/home-assistant/integrations/dobavljaem-hacs-v-home-assistant/ !!! Вам понадобится учетная запись на Github 0. Установка терминала: Настройки -> Дополнения -> Магазин дополнений = SSH & Web Terminal 1. В терминале ставим: 1.1 Ставим: wget -O - https://get.hacs.xyz | bash - 1.2 Перезагружаем: reboot 2. Устанавливаем HACS Настройки -> Устройства и службы -> Добавить интеграцию = HACS
links:
https://drive.google.com/drive/folders/1lbEI5JdLWwI6y9VoGM0nioFDhzF79QSu http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-2W.html
work
#Конфиг env boot:
root@orangepicm4:~# cat /boot/orangepiEnv.txt
verbosity=1
bootlogo=false
extraargs=cma=128M
overlay_prefix=rk356x
rootdev=UUID=a0f8ca89-7eb7-4a1e-947a-2341637b4782
rootfstype=ext4
overlays=uart3-m0 uart7-m2 uart9-m2
console=serial
#скрипт 1
root@orangepicm4:~# cat > uart9.txt << "EOF"
#!/bin/bash
#
xxx=0
while :
do
echo -n -e "\nHello UART9! ${xxx}"
echo -n -e "\nHello UART9! ${xxx} \r" > /dev/ttyS9
#sleep 1
let xxx++
done
EOF
#скрипт 2
root@orangepicm4:~# cat > uart7.txt << "EOF"
#!/bin/bash
#
xxx=0
while :
do
echo -n -e "\nHello UART7! ${xxx}"
echo -n -e "\nHello UART7! ${xxx} \r" > /dev/ttyS7
#sleep 1
let xxx++
done
EOF
# Настройка UART7 (например, 115200 бод, 8 бит, без контроля чётности, 1 стоп-бит)
sudo stty -F /dev/ttyS7 115200 cs8 -parenb -cstopb
# Настройка UART9 (такие же параметры)
sudo stty -F /dev/ttyS9 115200 cs8 -parenb -cstopb
Проверить настройки можно так:
stty -F /dev/ttyS7 -a
stty -F /dev/ttyS9 -a
echo "Hello UART!" > /dev/ttyS7
echo "Hello UART!" > /dev/ttyS9
minicom -D /dev/ttyS7 -b 115200
minicom -D /dev/ttyS9 -b 115200
screen /dev/ttyS7 115200
screen /dev/ttyS9 115200
echo "Hello UART!" > /dev/ttyS7
echo "Hello UART!" > /dev/ttyS9
Проверяем а если часы:
dmesg | grep rtc
Проверяем какие модули загружены:
lsmod
Проверяем что у нас на шине i2c (у нас часы имеют адрес 68)
i2cdetect -y 1
Пробуем прочитать регистры:
i2cget -y 1 0x68 0x00
for reg in {0..6}; do echo "Регистр 0x0$reg: $(i2cget -y 1 0x68 0x0$reg)"; done
Пробуем изменить вывод на 24 часа:
i2cset -y 1 0x68 0x02 0x12
Добавляем часы в систему что бы можно было с ними взаимодействовать
modprobe rtc-ds1307
echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-1/new_device
dmesg | grep rtc
hwclock -s -f /dev/rtc1
# Запись системного времени в RTC
hwclock --systohc
hwclock --systohc -f /dev/rtc1
# Чтение времени из RTC
hwclock -v
hwclock -v -f /dev/rtc1
Для автоматического включения модуля ядра rtc-ds1307:
echo "rtc-ds1307" >> /etc/modules
python script:
apt install python3-smbus2
cat > clock.py << "EOF"
from smbus2 import SMBus
import time
I2C_BUS = 1 # номер шины (0 или 1)
DEV_ADDR = 0x68 # адрес DES3338 на шине
with SMBus(I2C_BUS) as bus:
# Чтение 7 байт (секунды, минуты, часы...)
data = bus.read_i2c_block_data(DEV_ADDR, 0x00, 7)
print(f"Время: {data[2]}:{data[1]}:{data[0]}")
EOF
python clock.py
link:
https://github.com/sipeed/NanoKVM https://github.com/sipeed/NanoKVM/releases https://www.ozon.ru/search/?text=nano+kvm+lite&from_global=true
default password:
Логин: admin Пароль: admin


