Рубрики
электроника для новичков

radio flash

Links:

https://www.youtube.com/watch?v=wHcMlBymNYg
https://ozon.ru/t/UuMHh5N
https://ozon.ru/t/8MUTir7
https://github.com/fagci/uv-k5-firmware-fagci-mod/releases
https://github.com/egzumer/uv-k5-firmware-custom/releases
https://github.com/OneOfEleven/uv-k5-firmware-custom
https://github.com/DualTachyon/uv-k5-firmware
https://uvmod.valek.net.ru/flasher.html
https://armel.github.io/k5viewer/
https://github.com/armel/uv-k1-k5v3-firmware-custom

Включение режима прошивки рации

0. Подключить шнур для прошивки к пк
1. Нажать и удерживать кнопку разговора(левая большая кнопка) на рации
2. Повернуть крутилку на включение рации, должен загорется фанарик
Рация готова к получению прошивки

Что и где качать:

Прошивку искать тут:
В гугле ищем fagci
https://github.com/fagci/uv-k5-firmware-fagci-mod/releases

Шьем зашиватором:
В гугле ищем "uv k5 прошивка"
https://uvmod.valek.net.ru/flasher.html

p.s дя современных uv-5k(8) v3:

https://github.com/armel/uv-k1-k5v3-firmware-custom
https://armel.github.io/k5viewer/
https://armel.github.io/uvtools2/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v5.7.0.bin

p.s. по кнопкам f4hwn:

menu - меню

ключ + 5 = снифер 
exit = выход из снифера

ключ + 2 = переключения канала




Управление встроенным спектроанализатором:
Чтобы открыть спектроанализатор, на главном экране нужно последовательно нажать: 
[F] (кнопка-ключик) ➔ [5]
Внутри режима спектроанализатора работают следующие кнопки:
[5] — ввод начальной частоты диапазона для сканирования (после ввода нужно подтвердить нажатием кнопки [MENU]) 
[4] — переключение ширины просматриваемого участка частот (шаг перестройки/обзора: 16, 32, 64, 128 каналов)
[1] и [7] — быстрое изменение масштаба/полосы обзора (позволяет расширить диапазон, чтобы видеть больше сигналов одновременно) 
Вверх / Вниз (стрелочки) — перемещение по диапазону частот дальше (например, прыгать по участкам выше или ниже)
Кнопка [SCAN] — регулировка уровня шумоподавления (визуальная горизонтальная линия на экране). Сигналы, которые пересекают эту линию, будут слышны 
Центральная боковая кнопка (под PTT) — «вырезание» (исключение) мешающих постоянных помех или автоинформаторов из сканирования.
Короткое нажатие PTT (передача) — быстрая фиксация и сохранение найденной активной частоты, на которой кто-то говорит, чтобы не потерять её
[EXIT] — выход из режима спектроанализатора назад в стандартный режим рации








p.s частоты для теста

a 455.425
b 453.225
RXCTCS 151.4
TXCTSC 151.4
Рубрики
*NIX информация

udev / lsusb / упарядочить сетевые карты / изминение mac в LAN9500A/LAN9500Ai

Железо:

napi slot
Microchip Technology, Inc. (formerly SMSC) LAN9500A/LAN9500Ai

Давайте сопоставим на вашем примере из прошлого вывода lsusb -t:
lsusb -t:
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M  <-- Это ваше устройство?
        |__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
Сравниваем с 1-1.2:1.0:
1 — это Bus 01.
1 — это Port 1 на корневом хабе (первая строка в древовидном выводе).
.2 — это Port 2 на внутреннем хабе.
:1.0 — это If 0 (первый интерфейс) устройства.
Таким образом, 1-1.2:1.0 — это устройство, которое висит на шине 1, порту 1 корневого хаба, порту 2 внутреннего хаба, и использует первый интерфейс.






Чтобы найти этот путь для каждого из ваших четырёх адаптеров, выполните:
udevadm info -a -p /sys/class/net/eth1 | grep KERNELS
вывод:
KERNELS=="1-1.2:1.0"



Приминение и проверка правил:
udevadm control --reload-rules
udevadm trigger
reboot


Отслеживать события udev в реальном времени:
udevadm monitor --property

Проверка какое правило сработает на интерфейс:
udevadm test /sys/class/net/eth1


Получить информацию об устройстве
udevadm info -a -p /sys/class/net/eth1

-a — показать все атрибуты.

-p — указать путь в sysfs.

/sys/class/net/eth1 — путь к сетевому интерфейсу.

В выводе вы увидите несколько секций, начинающихся с looking at parent device — это уровни вверх по дереву устройств.
Вам нужны атрибуты, по которым можно идентифицировать устройство
(например, KERNELS, ATTRS{idVendor}, ATTRS{idProduct}, ATTRS{serial}).
Эти атрибуты можно использовать в правилах udev.




cat > /etc/udev/rules.d/99-usb-net.rules << "EOF"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="1-1.2:1.0", NAME="usb1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="1-1.1:1.0", NAME="usb2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="2-1.1:1.0", NAME="usb4"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="2-1.2:1.0", NAME="usb3"


#root@napi-stronghornet:~# lsusb  -t
#/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=dwc2/1p, 480M
#    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/2p, 480M
#        |__ Port 002: Dev 003, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
#/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=ehci-platform/1p, 480M
#    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/2p, 480M
#        |__ Port 001: Dev 003, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
#        |__ Port 002: Dev 004, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
#/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=ohci-platform/1p, 12M

EOF


#sw1
#usb1
ethtool -E usb1 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb1 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb1 magic 0x9500 offset 0x02 value 0x11
ethtool -E usb1 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb1 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb1 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb1 magic 0x9500 offset 0x06 value 0x54


#usb2
ethtool -E usb2 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb2 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb2 magic 0x9500 offset 0x02 value 0x11
ethtool -E usb2 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb2 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb2 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb2 magic 0x9500 offset 0x06 value 0x54


#usb4
ethtool -E usb4 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb4 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb4 magic 0x9500 offset 0x02 value 0x11
ethtool -E usb4 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb4 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb4 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb4 magic 0x9500 offset 0x06 value 0x56

#usb3
ethtool -E usb3 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb3 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb3 magic 0x9500 offset 0x02 value 0x11
ethtool -E usb3 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb3 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb3 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb3 magic 0x9500 offset 0x06 value 0x57


#sw2
#usb1
ethtool -E usb1 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb1 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb1 magic 0x9500 offset 0x02 value 0x12
ethtool -E usb1 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb1 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb1 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb1 magic 0x9500 offset 0x06 value 0x74


#usb2
ethtool -E usb2 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb2 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb2 magic 0x9500 offset 0x02 value 0x12
ethtool -E usb2 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb2 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb2 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb2 magic 0x9500 offset 0x06 value 0x74


#usb4
ethtool -E usb4 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb4 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb4 magic 0x9500 offset 0x02 value 0x12
ethtool -E usb4 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb4 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb4 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb4 magic 0x9500 offset 0x06 value 0x76

#usb3
ethtool -E usb3 magic 0x9500 offset 0x00 value 0xA5
ethtool -E usb3 magic 0x9500 offset 0x01 value 0x02
ethtool -E usb3 magic 0x9500 offset 0x02 value 0x12
ethtool -E usb3 magic 0x9500 offset 0x03 value 0x22
ethtool -E usb3 magic 0x9500 offset 0x04 value 0x33
ethtool -E usb3 magic 0x9500 offset 0x05 value 0x44
ethtool -E usb3 magic 0x9500 offset 0x06 value 0x77

проверяем:
ls /boot/dtb/rockchip/overlay/*otg-host*
добавляем:
vim /boot/armbianEnv.txt
------------------------
overlays=otg-host
------------------------

Изменение mac через udev:


cat > /etc/udev/rules.d/99-usb-net.rules << "EOF"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="1-1.2:1.0", NAME="usb1", RUN+="/sbin/ip link set dev usb1 address 00:11:22:33:44:66"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="1-1.1:1.0", NAME="usb2", RUN+="/sbin/ip link set dev usb2 address 00:11:22:33:44:57"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="2-1.1:1.0", NAME="usb4", RUN+="/sbin/ip link set dev usb4 address 00:11:22:33:44:58"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="2-1.2:1.0", NAME="usb3", RUN+="/sbin/ip link set dev usb3 address 00:11:22:33:44:59"
EOF


udevadm control --reload-rules
udevadm trigger


Изменение mac через udev использование софта macchanger:


cat > /etc/udev/rules.d/99-usb-net.rules << "EOF"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="1-1.2:1.0", NAME="usb1", RUN+="/usr/bin/macchanger -p -r usb1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="1-1.1:1.0", NAME="usb2", RUN+="/usr/bin/macchanger -p -r usb2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="2-1.1:1.0", NAME="usb4", RUN+="/usr/bin/macchanger -p -r usb4"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="2-1.2:1.0", NAME="usb3", RUN+="/usr/bin/macchanger -p -r usb3"
EOF

udevadm control --reload-rules
udevadm trigger
Рубрики
vim \ vi \ text editor

VIM

Режимы Vim
Esc — вернуться в обычный (нормальный) режим.
i — режим вставки (ввод текста перед курсором).
a — режим вставки после курсора.
v — визуальный режим (выделение текста символами).
V — визуальный режим (выделение текста строками).
: — режим командной строки.

Выход и сохранение (вводятся после :)
w — сохранить файл.
q — выйти из Vim.
q! — выйти без сохранения изменений.
wq (или x) — сохранить изменения и выйти.

Перемещение курсора
h / j / k / l — влево / вниз / вверх / вправо.
w / b — на слово вперед / назад.
0 / $ — в начало / конец текущей строки.
gg / G — в самое начало / самый конец файла.
50G — перейти строго на 50-ю строку.

Редактирование, удаление и копирование
x — удалить один символ под курсором.
dw — удалить слово от курсора до конца.
dd — удалить (вырезать) всю строку.
d$ (или D) — удалить текст от курсора до конца строки.
yy — скопировать всю строку в буфер.
p — вставить скопированный/вырезанный текст после курсора.
u — отменить последнее действие (Ctrl+Z).
Ctrl + r — вернуть отмененное действие (Ctrl+Y).

/текст — поиск текста вперед по файлу.
?текст — поиск текста назад по файлу.
n / N — переход к следующему / предыдущему совпадению.
:%s/что/на_что/g — заменить все совпадения во всем файле.

:%s/шаблон/замена/g — заменить все вхождения во всем файле.
:%s/шаблон/замена/gc — заменить во всем файле, но с подтверждением для каждого совпадения.
:s/шаблон/замена/g — заменить все вхождения только в текущей строке.:s/шаблон/замена/ — заменить только первое вхождение в текущей строке.
:5,12s/шаблон/замена/g — заменить все совпадения в диапазоне от 5 до 12
Рубрики
Windows информация

Установка Windows 11 на странице «Давайте подключим вас к сети». Я пока не могу подключиться. :(

Link:

Installing Windows 11 on “Let’s connect you to a network” page. I am not able to connect yet, is it okay to turn off my PC for now?
byu/BurnerAccount4142 inbuildapc

Решение:

Вы можете оставить установку на этом этапе. 
Ваша установка достигла части "Out of Box Experience". 
В качестве альтернативы, есть способы пропустить требование подключения к сети.

Shift-f10 открывает командную строку, 
где вы можете ввести "oobe\bypassnro"

Это вызовет перезагрузку ПК, и когда вы снова дойдете до страницы сети, 
теперь будет доступен вариант "У меня нет подключения к Интернету", 
который позволит вам обойти требование учетной записи Microsoft.
Рубрики
*NIX информация

debian 13 / xray / vless

Не актуален 06.06.2026, но еще может поработать.  

0. Установка:

0. Скачиваем:
curl -L https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip -o Xray.zip
1. Распаковываем архив и ставим их
unzip Xray.zip -d /usr/local/bin/

1.1 Создаем каталог для конфигов
mkdir -p /usr/local/etc/xray
cd /usr/local/etc/xray 

2. Делаем исполнительным файл xray исполнительным:
chmod +x /usr/local/bin/xray

3. Создаем конфиг:
Пример:
cat > /usr/local/etc/xray/config.json << EOF
{
  "inbounds": [
    {
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          { "id": "ВАШ-UUID", "flow": "xtls-rprx-vision" }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "dest": "www.google.com:443",
          "serverNames": ["www.google.com"],
          "privateKey": "ВАШ-ПРИВАТНЫЙ-КЛЮЧ",
          "shortIds": ["ВАШ-SHORTID"]
        }
      }
    }
  ]
}

EOF


4. Проверяем, нет ли ошибок в конфиге
xray -test -config /usr/local/etc/xray/config.json


5. Делаем системд юнит для запуска:
cat > /etc/systemd/system/xray.service << "EOF"
[Unit]
Description=Xray Service
Documentation=https://github.com/xtls
After=network.target nss-lookup.target

[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json
Restart=on-failure
RestartPreventExitStatus=23
LimitNPROC=10000
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target
EOF

5.1 Что мы там нагородили в сервисе:
User=nobody — служба будет работать от ограниченного пользователя (безопасно) 
ExecStart=... — указывает, где лежит Xray и ваш конфиг
Restart=on-failure — автоматически перезапустится, если что-то пойдёт не так

5.2 Первый запуск и проверка 
#После создания service-файла нужно перечитать конфигурацию systemd:
systemctl daemon-reload

# Включаем автозапуск при загрузке сервера
systemctl enable xray

# Запускаем Xray сейчас
systemctl start xray

# Проверяем, что всё работает
systemctl status xray

# Смотрим логи
journalctl -u xray -f --since "1 minute ago"


5.3 Останавливаем разбираемся что настраивать
systemctl stop xray

1. Краткое описание что есть что:

Внимательно знакомимся что есть что:

UUID — это уникальный идентификатор.
Генерируем UUID выполните команду:
xray uuid

PrivateKey и PublicKey -  (приватный и публичный) Это самый важный шаг.
Генерируем пару ключей Reality выполните команду:
xray x25519

Приватный ключ: пойдёт в конфиг сервера (privateKey)
Публичный ключ: пойдет для конфига клиента (параметр pbk)

ShortID — это шестнадцатеричная строка. 
Генерируем ShortID выполните команду:
openssl rand -hex 8

2. Основная настройка сервера и облегчение первого запуска:

Берем какой нибудь текстовый редактор, в него мы будем сохранять полученные значения и подготавливать конфиг.
Вводим описанные команды для конфига ниже для трех пользователей:
0. Нужно сгенерировать три уида
xray uuid
xray uuid
xray uuid
1. Нужно сгенерировать приватный и публичный ключ в кол-ве 1шт
xray x25519
2. нужно сгенерировать short-id в кол-ве 1шт
openssl rand -hex 8


3. Внимательно заполняем ниже
# Как это вставить на сервер думаю объяснять не надо. 
UUID_1="пишем первый уид"
UUID_2="пишем второй уид"
UUID_3="пишем третий уид"
SERVER_IP="Сюда пишем внешний адрес сервера"
PORT="желаемый порт для сервера xray например 25687"
SNI="Желаемый SNI, то сайт которым будет прикидываться reality, этот момент я оставлю не объяснённым, но это важная опция"
PUBLIC_KEY="сюда публичный ключ"
SHORT_ID="сюда пишем шорт"
PrivateKey="пишем приватный ключ"

cat > /usr/local/etc/xray/config.json << EOF
{
  "log": {"loglevel": "debug"},
  "inbounds": [
    {
      "port": $PORT,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "$UUID_1",
            "flow": "xtls-rprx-vision",
            "email": "notebook@example.com"
          },
          {
            "id": "$UUID_2",
            "flow": "xtls-rprx-vision",
            "email": "phone@example.com"
          },
          {
            "id": "$UUID_3",
            "flow": "xtls-rprx-vision",
            "email": "tablet@example.com"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "dest": "$SNI:443",
          "serverNames": ["$SNI"],
          "privateKey": "$PrivateKey",
          "shortIds": ["$SHORT_ID"],
          "servername": "$SNI"
        }
      }
    }
  ],
  "outbounds": [{"protocol": "freedom"}]
}
EOF



# Собираем ссылку
VLESS_LINK1="vless://$UUID_1@$SERVER_IP:$PORT?encryption=none&security=reality&flow=xtls-rprx-vision&sni=$SNI&fp=chrome&pbk=$PUBLIC_KEY&sid=$SHORT_ID&type=tcp&alpn=http%2F1.1#MyVLESS_REALITY1"
VLESS_LINK2="vless://$UUID_2@$SERVER_IP:$PORT?encryption=none&security=reality&flow=xtls-rprx-vision&sni=$SNI&fp=chrome&pbk=$PUBLIC_KEY&sid=$SHORT_ID&type=tcp&alpn=http%2F1.1#MyVLESS_REALITY2"
VLESS_LINK3="vless://$UUID_3@$SERVER_IP:$PORT?encryption=none&security=reality&flow=xtls-rprx-vision&sni=$SNI&fp=chrome&pbk=$PUBLIC_KEY&sid=$SHORT_ID&type=tcp&alpn=http%2F1.1#MyVLESS_REALITY3"


# Выводим ссылку на экран
echo $VLESS_LINK1
echo $VLESS_LINK2
echo $VLESS_LINK3

# Генерируем QR-код для UUID_1 (можно отсканировать телефоном)
qrencode -t ansiutf8 $VLESS_LINK1

3. Клиент для пк для телефона и т.д.

Заходите на github.com/2dust/v2rayN/releases
Скачиваете файл v2rayN-xx.zip (последняя версия)
Для андройда их много всяких в гуглаплей
Для яблока тоже. 

основные названия у клиентов HAPP, v2ray*

есть и другие

все они работают с переменным успехом, как и упомянутые клиенты выше


Самый быстрый способ подключится к серверу xray:
Скопируйте вашу VLESS-ссылку с сервера (начинается с vless://)

В приложении xray:
Нажмите на меню "Серверы" -> "Импорт ссылок из буфера обмена" 
Всё! Сервер появится в списке.

Второй способ использовать камеру телефона из вашего приложения, для сканирования куракода
Рубрики
*NIX информация

debian 13 / l2tp / ipsec / client ^_^

0. Установка необходимых пакетов

bash
apt update
apt install strongswan xl2tpd -y

1. Настройка IPsec (StrongSwan)

1.0 Создаем  и редактируем файл /etc/ipsec.conf:
cat > /etc/ipsec.conf << 'EOF'
config setup

conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev1
    authby=secret
    ike=aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=aes128-sha1-modp1024,3des-sha1-modp1024!

conn L2TP-PSK
    keyexchange=ikev1
    left=%defaultroute
    auto=add
    authby=secret
    type=transport
    leftprotoport=17/1701
    rightprotoport=17/1701
    right=SERVER_VPN_IP_FIX_THIS #fix this string
EOF



1.1 Создаем файл с секретом
echo ": PSK "YOU_PSK_KEY_FIX_ME #fix this string" > /etc/ipsec.secrets
chmod 600 /etc/ipsec.secrets

2. Настройка xl2tpd

Редактируем файл
---
много всего добавить в самый низ
[lac myVPN]
lns = SERVER_VPN_IP_FIX_THIS #fix this string
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes

3. Настройка PPP

cat > /etc/ppp/options.l2tpd.client << "EOF"
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
logfile /var/log/xl2tpd.log
idle 1800
mtu 1410
mru 1410
defaultroute
usepeerdns
debug
connect-delay 5000
name USERNAME_VPN_FIX_THIS
password PASSWORDUSERUSER_VPN_FIX_THIS
EOF


chmod 600 /etc/ppp/options.l2tpd.client

4. Управление l2tp и keepalive.
Скрипт запуска и перезапуска l2tp
(да все можно сделать через network-manager, но иногда надо так)

cat > /usr/local/bin/l2tp-vpn.sh << 'EOF'
#!/bin/bash

VPN_NAME="myVPN"
CONTROL_FILE="/var/run/xl2tpd/l2tp-control"
VPN_ROUTE="192.168.0.0/24"  # fix_this

case "$1" in
    start)
        echo "Starting VPN..."
        
        mkdir -p /var/run/xl2tpd
        touch "$CONTROL_FILE"
        
        #ipsec start #dipricated
        #sleep 2 #dipricated
        #ipsec up L2TP-PSK #dipricated
        sleep 2
        systemctl start xl2tpd
        sleep 2
        echo "c $VPN_NAME" > "$CONTROL_FILE"
        
        # Ждём появления ppp0
        for i in {1..20}; do
            if ip link show ppp0 2>/dev/null | grep -q "UP"; then
                echo "ppp0 is up"
                break
            fi
            sleep 1
        done
        
        sleep 2
        ip route del $VPN_ROUTE dev ppp0 2>/dev/null
        ip route add $VPN_ROUTE dev ppp0
        echo "VPN started and route added"
        ;;
        
    stop)
        echo "Stopping VPN..."
        
        ip route del $VPN_ROUTE dev ppp0 2>/dev/null
        echo "d $VPN_NAME" > "$CONTROL_FILE" 2>/dev/null
        sleep 1
        systemctl stop xl2tpd
        #ipsec down L2TP-PSK 2>/dev/null # #dipricated
        #ipsec stop # #dipricated
        echo "VPN stopped"
        ;;
        
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
esac
EOF

chmod +x /usr/local/bin/l2tp-vpn.sh

#keepalive

cat > /usr/local/bin/l2tp-vpn-monitor.sh << 'EOF'
#!/bin/bash

VPN_ROUTE="192.168.15.0/24"  # ДОЛЖЕН СОВПАДАТЬ С VPN_ROUTE ИЗ l2tp-vpn.sh
CHECK_INTERVAL=30  # Проверяем каждые 30 секунд

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}

while true; do
    # Проверяем жив ли туннель
    if ! ip link show ppp0 2>/dev/null | grep -q "UP"; then
        log "ALERT: VPN tunnel is DOWN! Restarting..."
        /usr/local/bin/l2tp-vpn.sh stop
        sleep 5
        /usr/local/bin/l2tp-vpn.sh start
        log "VPN restart completed"
    
    # Проверяем есть ли маршрут
    elif ! ip route show 2>/dev/null | grep -q "$VPN_ROUTE.*ppp0"; then
        log "ALERT: Route $VPN_ROUTE is missing! Re-adding..."
        ip route add $VPN_ROUTE dev ppp0 2>/dev/null
        log "Route re-added"
    fi
    
    sleep $CHECK_INTERVAL
done
EOF

chmod +x /usr/local/bin/l2tp-vpn-monitor.sh

5. Файлы systemd для скрипто:

#keepalive
cat > /etc/systemd/system/l2tp-vpn-monitor.service << 'EOF'
[Unit]
Description=L2TP VPN Monitor Daemon
After=l2tp-vpn.service
Requires=l2tp-vpn.service

[Service]
Type=simple
ExecStart=/usr/local/bin/l2tp-vpn-monitor.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF


#runner l2tp
cat > /etc/systemd/system/l2tp-vpn.service << 'EOF'
[Unit]
Description=L2TP/IPsec VPN Client
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/l2tp-vpn.sh start
ExecStop=/usr/local/bin/l2tp-vpn.sh stop

[Install]
WantedBy=multi-user.target
EOF


5. запуск и проверка:

Запуск:
systemctl daemon-reload
# Включаем автозапуск обоих сервисов
systemctl enable l2tp-vpn.service
systemctl enable l2tp-vpn-monitor.service
# Запускаем
systemctl start l2tp-vpn.service
systemctl start l2tp-vpn-monitor.service


Проверка:
# Статус VPN
systemctl status l2tp-vpn
# Статус монитора
systemctl status l2tp-vpn-monitor
# Проверка маршрутов
ip route | grep ppp0
# Логи монитора
journalctl -u l2tp-vpn-monitor -f

P.S nmcli

0. Создание VPN-подключения через nmcli

# Импорт из конфигурационного файла
nmcli connection import type l2tp file ~/my-vpn.conf

# Или создание с нуля
nmcli connection add type vpn \
  vpn-type l2tp \
  con-name "MyVPN" \
  vpn.data "gateway = vpn.example.com, \
            ipsec-enabled = yes, \
            ipsec-psk = YOUR_PSK, \
            user = YOUR_USERNAME"


# Включить VPN:
nmcli connection up "MyVPN"
# Выключить:
nmcli connection down "MyVPN"
# Статус:
nmcli connection show --active
# Список всех подключений:
nmcli connection show



Пример файла конфига:
work-vpn.conf
--------------
ini
[vpn]
gateway = vpn.company.com
ipsec-enabled = yes
ipsec-psk = MySecretPSK123
ipsec-ike = aes256-sha256-modp2048
ipsec-esp = aes256-sha256
user = myusername
password = MyRealPassword

[ipv4]
never-default = yes
routes = 192.168.0.0/24 10.0.0.1
--------------
Рубрики
*NIX информация

debian 13 / microsocks / замена dante

Установка

apt update
sudo apt install microsocks -y

Настройка пользователя:

Создание юзака:

Генерация пароля и пользователя: 
USERNAME="user$(openssl rand -hex 3)"
PASSWORD="$(openssl rand -base64 12)"
echo "Username: $USERNAME"
echo "Password: $PASSWORD"

Создание сервиса :

cat > /etc/systemd/system/microsocks.service << "EOF"
[Unit]
Description=Microsocks SOCKS5 Server
After=network.target

[Service]
EnvironmentFile=/etc/default/microsocks
ExecStart=/usr/bin/microsocks -i 0.0.0.0 -p ${MICROSOCKS_PORT} -u ${MICROSOCKS_USER} -P ${MICROSOCKS_PASS}
Restart=always

[Install]
WantedBy=multi-user.target
EOF

cat > /etc/default/microsocks << "EOF"
MICROSOCKS_PORT="999"
MICROSOCKS_USER="USER_FIX_ME"
MICROSOCKS_PASS="PASSWORD_FIX_ME"
EOF

Запус и управление:

systemctl daemon-reload
systemctl enable microsocks
systemctl restart microsocks
systemctl status microsocks
Рубрики
всякое

Oculus quest 3

link:

Обсуждения OQ3:
https://4pda.to/forum/index.php?showtopic=1076746 

Очень длинный и страшный документ по ПКВР, но крайне рекомендую для общего развития:
https://docs.google.co…W2SwVVGZvq/mobilebasic

QOUS программа для настройки шлема:
https://4pda.to/forum/index.php?showtopic=1076746&st=2940#entry126588977

qLoader:
https://vrcomm.ru/forums/topic/94-%D0%BE%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-qloader-%D0%B0%D1%80%D1%85%D0%B8%D0%B2-%D0%B8%D0%B3%D1%80/
https://dipvr.ru/get-qLoader?no-trailers
https://dipvr.ru/get-qLoader?trailers


FAQ
https://docs.google.com/document/u/0/d/1itnB22VCTDgjyBZapVqJGvW2SwVVGZvq/mobilebasic
https://docs.google.com/document/d/1r0KpZWg-CACqIECrR3tTXSbhXF0MxkZe/edit

Памятка для активации шлема:

!!! Обязательно понадобится КВН!
!!! Обязательно понадобится КВН!
!!! Обязательно понадобится КВН!

Памятка последовательности первого запуска шлема:
0) Создать аккаунт Meta — https://www.meta.com
1) Создать свою компанию-разработчика.
Коротко:
Здесь https://accountscenter…/password_and_security включить двухфакторную аутентификацию (лучше через приложение Authorize от Google)
Создать свою компанию тут https://developers.met…/horizon/manage/create
https://developer.oculus.com/manage/verify/ — здесь должна быть зеленая галочка, что аккаунт разработчика подтверждён.
2) Включаем шлем, обновляем его.

3) Качаем приложение Meta Horizon на телефон. 
После обновления шлем даст инструкцию по подключению к приложению.

4) Теперь в Meta Horizon на телефоне надо включить режим разработчика. 
— там в настройках шлема будет пункт с тумблером "Режим разработчика".


---
Программы, которые необходимы для полноценной работы со шлемом:
QUAS - тонкая настройка, проверка/установка прошивки, бэкапы и прочее.
qLoader - кладезь всех игр, а также максимально удобный инструмент для их установки.

Для подключения к ПК потребуется установка драйвера! 
Это автоматически и с понятными подсказками поможет сделать программа QUAS -- запускаем и внимательно читаем, что пишет.



qloader mac/linux install

Mac / Linux 
Откройте терминал и отправьте эту команду (нажмите для копирования):
/bin/bash -c "$(curl -fsSL https://cloud.dipvr.ru/onlineinstall/)"

Рубрики
docker

freeipa / docker / debian 13 / docker-compose

Ставим Docker на debian 13

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Импортируем GPG-ключ для репозитория docker:
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Добавим новый репозиторий в список apt:
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
   $(lsb_release -cs) stable" |  tee /etc/apt/sources.list.d/docker.list > /dev/null

Установим докер:
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

Проверяем:
docker run hello-world

Готовим контейнер:

cd /opt
mkdir freeipa-setup && cd freeipa-setup

cat > docker-compose.yml << 'EOF'
services:
  freeipa:
    image: freeipa/freeipa-server:fedora-42
    container_name: freeipa-server
    hostname: ipa.example.com ####--#fix this string
    privileged: true
    restart: unless-stopped
    ports:
      - "443:443"
      - "80:80"
      - "53:53/tcp"
      - "53:53/udp"
      - "88:88/tcp"
      - "88:88/udp"
      - "464:464/tcp"
      - "464:464/udp"
      - "389:389"
      - "636:636"
      - "749:749"
    volumes:
      - ./ipa-data:/data:Z
    command:
      - --unattended
      - --realm=EXAMPLE.COM ####--#fix this string ###CAPS STRING
      - --domain=example.com ####--#fix this string
      - --admin-password=YourStrongPass123 ####--#fix this string
      - --ds-password=YourStrongPass123 ####--#fix this string
      - --setup-dns
      - --auto-forwarders
      - --no-ntp
      - --no-host-dns
      - --allow-zone-overlap
      - --no-ssh
      - --no-sshd

EOF



Запуск и логи:

Запуск:
docker compose up -d

Логи:
docker compose logs -f

Подключение к консоли:
docker exec -it freeipa-server /bin/bash


# Проверяем, запущен ли контейнер
docker ps -a | grep freeipa

# Смотрим логи контейнера (особенно важно - последние 100 строк)
docker logs --tail 100 freeipa-server

# Проверьте, есть ли процессы внутри контейнера
docker exec freeipa-server ps aux

# Проверьте, запущен ли httpd (веб-сервер)
docker exec freeipa-server systemctl status httpd

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

# 1. Остановите текущий контейнер
docker compose down

# 2. Удалите старые данные (ВАЖНО! это удалит предыдущие настройки)
rm -rf ./ipa-data

# 3. Отредактируйте docker-compose.yml
nano docker-compose.yml
# Измените строку с образом на: freeipa/freeipa-server:centos-8

# 4. Запустите заново
docker compose up -d

# 5. Следите за логами
docker compose logs -f

Официальная инструкция из github:

git clone https://github.com/freeipa/freeipa-container.git
cd freeipa-container

!!! Точка в конце наада точно ^_^ 
!!! -f имя файла докер
!!! -t как обозвать ваш образ
docker build -f Dockerfile.rocky-9 -t freeipa:latest .
docker build -f Dockerfile.rhel-10 -t freeipa:latest  .
docker build -f Dockerfile.centos-9-stream -t freeipa-co9 .

Проверяем образы:
docker images
Рубрики
ansible

ansible proplem version python 3.8 / docker

Идея просто локально собрать ansible в doker нужной версии.
Использовать свои локальные фалы при запуске контейнера.
в дистрибутиве apline версия ansible на 20260505 [core 2.16.1]
cat > docker-compose.yml << "EOF"
services:
  ansible:
    build: .
    volumes:
      - ./:/ansible
      - ~/.ssh/id_rsa:/root/.ssh/id_rsa
    environment:
      - ANSIBLE_HOST_KEY_CHECKING=False
    stdin_open: true
    tty: true
  
  ansible-playbook:
    build: .
    volumes:
      - ./:/ansible
      - ~/.ssh/id_rsa:/root/.ssh/id_rsa
    environment:
      - ANSIBLE_HOST_KEY_CHECKING=False
    entrypoint: ansible-playbook
EOF

cat Dockerfile << "EOF"
FROM alpine:latest

RUN apk add --no-cache \
    ansible \
    openssh-client \
    rsync

WORKDIR /ansible

ENTRYPOINT ["ansible"]
CMD ["--help"]

EOF



docker-compose run --rm ansible-playbook ping.yaml 
docker-compose run --rm ansible --version

Рубрики
*NIX информация

babeld / frr / lx2160

# distrib ubuntu focal-security
Пакеты:
apt install git make gcc linux-libc-dev pkg-config libncurses-dev flex bison  libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential 
apt install xz-utils  libncurses5-dev tcpdump frr nmap tmux ansible htop vim



cat  > etc/network/interfaces "EOF"
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto eth0:0
iface eth0 inet static
address 192.168.127.122/24

auto eth1
allow-hotplug eth1
iface eth1 inet static
address 10.22.1.1/24

auto eth2
iface eth2 inet static
address 10.22.2.1/24

auto eth3
iface eth3 inet static 
address 10.22.3.1/24

auto eth4
iface eth4 inet static
address 10.22.4.1/24



#add router link

auto eth3:0
iface eth3:0 inet static
address 10.11.3.254/24

#virtal interface
auto dummy0
iface dummy0 inet static
    address 2.2.2.2
    netmask 255.255.255.255
    pre-up modprobe dummy || true
    post-up ip link set dummy0 up


EOF

cat > /etc/frr/frr.conf << "EOF"
## Ahtung!!! need off babeld service
## systemctl stop babeld && systemctl disable babeld
frr defaults traditional
log syslog informational
service integrated-vtysh-config

router babel
 network eth1
 network eth2
 network eth3
 network eth4


redistribute ipv4 connected
redistribute ipv6 connected


babel diversity
 babel diversity-factor 128



interface eth1
 babel wired
 babel split-horizon
 babel hello-interval 12000
 babel update-interval 36000

interface eth2
 babel wired
 babel split-horizon
 babel hello-interval 12000
 babel update-interval 36000


interface eth3
 babel wired
 babel split-horizon
 babel hello-interval 12000
 babel update-interval 36000

interface eth4
 babel wired
 babel split-horizon
 babel hello-interval 12000
 babel update-interval 36000


EOF




cat  > /etc/frr/daemons << "EOF"
# This file tells the frr package which daemons to start.
#
# Sample configurations for these daemons can be found in
# /usr/share/doc/frr/examples/.
#
# ATTENTION:
#
# When activating a daemon for the first time, a config file, even if it is
# empty, has to be present *and* be owned by the user and group "frr", else
# the daemon will not be started by /etc/init.d/frr. The permissions should
# be u=rw,g=r,o=.
# When using "vtysh" such a config file is also needed. It should be owned by
# group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too.
#
user@ansible:~/prod$ cat frr_daemons.j2 
# This file tells the frr package which daemons to start.
#
# Sample configurations for these daemons can be found in
# /usr/share/doc/frr/examples/.
#
# ATTENTION:
#
# When activating a daemon for the first time, a config file, even if it is
# empty, has to be present *and* be owned by the user and group "frr", else
# the daemon will not be started by /etc/init.d/frr. The permissions should
# be u=rw,g=r,o=.
# When using "vtysh" such a config file is also needed. It should be owned by
# group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too.
#
# The watchfrr, zebra and staticd daemons are always started.
#
bgpd=no
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=yes
sharpd=no
pbrd=no
bfdd=no
fabricd=no
vrrpd=no

#
# If this option is set the /etc/init.d/frr script automatically loads
# the config via "vtysh -b" when the servers are started.
# Check /etc/pam.d/frr if you intend to use "vtysh"!
#
vtysh_enable=yes
zebra_options="  -A 127.0.0.1 -s 90000000"
bgpd_options="   -A 10.0.0.7"
ospfd_options="  -A 127.0.0.1"
ospf6d_options=" -A ::1"
ripd_options="   -A 127.0.0.1"
ripngd_options=" -A ::1"
isisd_options="  -A 127.0.0.1"
pimd_options="   -A 127.0.0.1"
ldpd_options="   -A 127.0.0.1"
nhrpd_options="  -A 127.0.0.1"
eigrpd_options=" -A 127.0.0.1"
babeld_options=" -A 127.0.0.1"
sharpd_options=" -A 127.0.0.1"
pbrd_options="   -A 127.0.0.1"
staticd_options="-A 127.0.0.1"
bfdd_options="   -A 127.0.0.1"
fabricd_options="-A 127.0.0.1"
vrrpd_options="  -A 127.0.0.1"

# configuration profile
#
#frr_profile="traditional"
#frr_profile="datacenter"

#
# This is the maximum number of FD's that will be available.
# Upon startup this is read by the control files and ulimit
# is called.  Uncomment and use a reasonable value for your
# setup if you are expecting a large number of peers in
# say BGP.
#MAX_FDS=1024

# The list of daemons to watch is automatically generated by the init script.
#watchfrr_options=""

# To make watchfrr create/join the specified netns, use the following option:
#watchfrr_options="--netns"
# This only has an effect in /etc/frr//daemons, and you need to
# start FRR with "/usr/lib/frr/frrinit.sh start ".

# for debugging purposes, you can specify a "wrap" command to start instead
# of starting the daemon directly, e.g. to use valgrind on ospfd:
#   ospfd_wrap="/usr/bin/valgrind"
# or you can use "all_wrap" for all daemons, e.g. to use perf record:
#   all_wrap="/usr/bin/perf record --call-graph -"
# the normal daemon command is added to this at the end.

EOF


/etc/sysctl.conf

net.ipv4.ip_forward=1
net.ipv4.tcp_max_tw_buckets = 65536
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_max_syn_backlog = 131072
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 8
net.ipv4.tcp_mem = 262144 524288 1048576
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_low_latency = 1

net.core.rmem_max = 134217728 
net.core.wmem_max = 134217728 
net.ipv4.tcp_rmem = 16384 174760 67108864
net.ipv4.tcp_wmem = 16384 131072  67108864

/etc/babeld.conf

 
# need off frr protocol babeld
# systemctl stop frr && systemctl disable frr
# For more information about this configuration file, refer to
# babeld(8)

smoothing-half-life 0
link-detect true

interface eth1 type wired hello-interval 2
interface eth2 type wired hello-interval 2
interface eth3 type wired hello-interval 2
interface eth4 type wired hello-interval 2


#redestribute all default
redistribute ip 10.0.0.0/8 allow
redistribute deny

#in blok me network
in ip 2.2.2.2/32 deny
in ip 10.11.3.254/24 deny
in ip 10.22.1.0/24 deny
in ip 10.22.2.0/24 deny
in ip 10.22.3.0/24 deny
in ip 10.22.4.0/24 deny
in ip 192.168.55.0/24 deny
in ip 192.168.127.0/24 deny
in allow


Рубрики
bash

blink monitor

#!/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

Рубрики
device \ устройства \ железо

Dlink DGS-3120-24SC Gigabit Ethernet Switch

Создать пользователя и включить 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
Рубрики
device \ устройства \ железо

steam desk oled

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 минут и у тебя в руках конфетка. 
Этот способ, если что, сама вульва публиковала в качестве официального, гарантия не теряется.

Продолжение следует:

...
Рубрики
*NIX информация

home-assistant install x86_x64 HAOS

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

Возможные проблемы с UEFI (нужно отключить secure boot):

Рубрики
kernel \ source \ пакеты \ исходники

linux kernel / modules / таблица модулей ядра

Часты команды:

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

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

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
Рубрики
dev

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

Рубрики
napi

debian / homed / zstack / home-assistant

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