LINUX.ORG.RU

Сообщения vel

 

Raspberry PI4 разъём питания

Не могу найти размеры разъёма питания для RPI4

Сколько милиметров диаметры отверстия и штыря?

Питание через usb type-c не рассматривается.

 

vel ()

Сколько можно ломать nvme?

Второй раз ломают nvme в ядре!

Решил посмотреть на 5.7, а оно говоит «нет у тебя nvme»!

Гугление «nvme nvme0: Identify Descriptors failed» приводит к коммиту для 5.4 который с небольшим напильником применяется к 5.7.9

 , ,

vel ()

сравнить настройки двух профиле firefox

Есть 2 профиля. В одном все работает, во втором безумные тормоза при наличии видео или html5/canvas(?)

Чем можно экспортировать настройки профиля в текстовый вид для последующего сравнения?

 ,

vel ()

Пластиковые крепления кулера - ЗЛО!

Давно я так не охреневал заглянув в комп :)

(Картинки на яндекс-диске. У кого изжога на него - проходите мимо)

Вот так вот, хрусь и пополам! Жертва - Arctic Freezer Xtreme выпуска до 2014 года.

Дело было вечером, время 21 час, т.е. в магазин бежать поздно, да и денег жалко на старенький комп.

Пришлось колхозить крепление из ляминия.

Так оно выглядит перед сборкой.

 ,

vel ()

tomcat7 bigbluebutton javax.xml.parsers.SAXParserFactory

Есть работающий bigbluebutton сервер. API реализовано на tomcat7

В ходе разборок с одной проблемой выяснилось, что один запрос API дает кучу запросов к несуществующим файлам

grep ENOENT | sort | uniq -c

    125 stat("/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
      8 stat("/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
    125 stat("/usr/share/bbb-web/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
      8 stat("/usr/share/bbb-web/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
    125 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
    125 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1030) = -1 ENOENT (No such file or directory)
      8 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
      8 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1560) = -1 ENOENT (No such file or directory)
    125 stat("/usr/share/bbb-web/WEB-INF/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
      8 stat("/usr/share/bbb-web/WEB-INF/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)

Можно ли это как-то исправить?

 , ,

vel ()

git и изменение стиля форматирования проекта на С

В основном проекте решили начать переформатирование кода.

merge дает коллизии по несколько сотен строк :(

При том, что «diff -ubwB» говорит о незначительных изменениях.

Может есть способы немного облегчить/автоматизировать этот процесс ?

 , ,

vel ()

ffmpeg перекодирование в vp9

Два вопроса:

- есть ли в ffmpeg аппаратного ускорения для перекодирования в vp9 ? (судя по всему из vp8)

- какую железку при этом нужно иметь для этого ?

 ,

vel ()

транслятор cBPF в eBPF есть?

Есть ли живая поделка для получения object-pinned из классического BPF для актуальных ядер ?

Ну или один работоспособный пример для «iptables -m bpf --bbject-pinned ...»

filter2xdp с github не актуален. За 3 года в ядре что-то сильно поменялось и валидатор eBPF ругается на все инструкции.

 , ,

vel ()

Чем админить ssh с oath ?

Есть работающая связка openssh + pam_oath + freeotp

А чем файл с f2a кодами редактировать кроме как текстовым редактором?

Хочется уметь добавлять/заменить/убавить коды для юзера.

А юзеру, при вводе своего пароля, показывать код и qrcode (для freeotp например).

Вход по ключам при этом тоже существует.

 , , , ,

vel ()

libfuse, треды и timerfd

до запуска fuse_main() создается тесколько тредов.

В каждом треде создаётся таймер через timerfd_create(CLOCK_REALTIME, 0)

далее делаем timerfd_settime(tfd, TFD_TIMER_ABSTIME,...)

таймер через 2 секунды и интервал 2 секунды.

все работает!

как только запускается fuse_main() в виде демона, то все чтение из tfd прекращается.

Что это за @#$%^&*! ?

 , ,

vel ()

Информация из объектного файла

Есть объектный файл с отладочной информацией.

1. Хочется получить список функций имеющихся в нём.

nm или objdump решают эту задачу.

2. Для каждой функции получить список вызываемых функций.

Чем это можно сделать?

 

vel ()

капча для программеров

Пропуск в мир JS :)

 ,

vel ()

Тихо легализуем MITM?

Новость не совсем свежая, но все-таки https://www.securitylab.ru/news/504821.php

Под видом обеспечения доступа к гос. ресурсам будут втюхивать корневой сертификат на все девайсы?

 ,

vel ()

Есть кто использует imapproxy?

Есть вебморда (roundcube) и почтовик на другой машине.

На каждый клик в вебмейле оно подключается на почтовик, что IMHO не здорово.

Есть imapproxy, который умеет кешировать коннекты по логину. На тестовой системе все просто сказочно!

А в продакшене его кто-нибудь использует?

 , ,

vel ()

Фильтрация трафика приложения или группы приложений.

Владельцам ядер ниже 4.4 можно не читать.

Собственно есть cgroup и iptables -m cgroup. Почему бы не создать отдельный cgroup и фильтровать локальный трафик для этой группы?

1. Не забываем включить классную фичу

sysctl -w net.ipv4.ip_early_demux=1
# на ядрах 4.10+
sysctl -w net.ipv4.tcp_early_demux=1
sysctl -w net.ipv4.udp_early_demux=1

2. Создаем группу

mkdir /sys/fs/cgroup/net_cls/testgroup2
echo 1234 >/sys/fs/cgroup/net_cls/testgroup2/net_cls.classid

3. создаем тестовые правила

iptables -A INPUT -m cgroup --cgroup 1234 -p icmp
iptables -A INPUT -m cgroup --cgroup 1234 -p udp
iptables -A INPUT -m cgroup --cgroup 1234 -p tcp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p icmp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p udp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p tcp

4. Переносим себя в эту группу

echo $$ >/sys/fs/cgroup/net_cls/testgroup2/tasks

5. Тестируем UDP

dig google.com
iptables -nvxL INPUT; iptables -nvxL OUTPUT

Chain INPUT (policy ACCEPT 2 packets, 255 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            udp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            icmp --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
Chain OUTPUT (policy ACCEPT 2 packets, 91 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0            icmp --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       2       91            udp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234

6. Тестируем TCP

iptables -Z
wget -4 -O /dev/zero https://google.com
iptables -nvxL INPUT; iptables -nvxL OUTPUT

Chain INPUT (policy ACCEPT 4 packets, 538 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       4      538            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            udp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            icmp --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
Chain OUTPUT (policy ACCEPT 6 packets, 451 bytes)
Chain OUTPUT (policy ACCEPT 6 packets, 451 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0            icmp --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            udp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       6      451            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234

7. Тестировать остальные протоколы бесполезно, т.к. они не поддерживаются в early_demux

Что имеем в результате? TCP можно контролировать для группы, а с UDP пролный 3.14ц!

Поковыряв ядро становится полностью понятно почему.

Проблема в том, что в UDP можно сделать bind() только на порт, что делает поиск сокета на которые пришли данные в два раза сложнее. __udp4_lib_demux_lookup() делает поиск только по номеру порта и адресу, игнорируя сокеты привязанные только к номеру порта.

Заменив __udp4_lib_demux_lookup() на полноценный поиск udp сокета через __udp4_lib_lookup()

для ядра 4.14.165

diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 731ea78..6143ca5 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -2295,8 +2295,8 @@ int udp_v4_early_demux(struct sk_buff *skb)
                                                   uh->source, iph->saddr,
                                                   dif, sdif);
        } else if (skb->pkt_type == PACKET_HOST) {
-               sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr,
-                                            uh->source, iph->saddr, dif, sdif);
+               sk = __udp4_lib_lookup(net, iph->saddr, uh->source, iph->daddr, uh->dest,
+                                       dif, 0, &udp_table, NULL);
        }

        if (!sk || !refcount_inc_not_zero(&sk->sk_refcnt))

Да, это дополнительные накладные расходы, но мы дважды это подтвердили через net.ipv4.ip_early_demux=1 и net.ipv4.udp_early_demux=1

Но теперь мы получаем в п.5

Chain INPUT (policy ACCEPT 2 packets, 255 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       1      226            udp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            icmp --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
Chain OUTPUT (policy ACCEPT 2 packets, 91 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0            icmp --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       2       91            udp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
       0        0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            cgroup 1234
Т.е. оно стало работать!

Но это патч ядра, который не все могут осилить.

Есть возможность получить аналогичный результат при помощи модуля ядра. ( https://github.com/vel21ripn/ipt_sk_helper )

Чтоб оно заработало нужно сделать sysctl -w net.ipv4.ip_early_demux=2

Работа проверялать на 4.4.209 и 4.14.165. Собирается даже на 5.4.х

Если кто может попробовать собрать его и протестировать - напишите что получилось.

PS Если починить эту фичу в официальном ядре, то станет доступной фильтраци входящего трафика по UID/GID.

 , ,

vel ()

Странные Li-Ion аккумы на 1.5В

В продаже появились Li-Ion аккумы с контроллером изображающие батарейки в формате AA/AAA (1.5V)

А никто не встречал Li-Ion аккум в размерах 2xAA изображающий напряжение 2.4-3.0V

Хочется заменить в навигаторе 2 батарейки на Li-Ion аккум.

 ,

vel ()

Загрузка ядра через kexec

Как определить, что ядро загружено через kexec если использовалось --reuse-cmdline ?

 ,

vel ()

SFP+ 10GBASE греется

Никому не доводилось использовать microtik S+RJ10? ( модуль SFP+ 10Gbit/s TP до 20 метров.)

Если верить ddm (и собственным ощущениям) оно греется ~70℃

А не дофига ли?

 , ,

vel ()

ядро 5.4 не торт!

С nvme не загружается :(

Aufs до сих пор нет.

Черт меня дернул попробовать обновиться до появления .3

PS 5.2/5.3 замечательно работает.

 , , ,

vel ()

Этому ssd пора на покой ?

Model Family:     Samsung based SSDs
Device Model:     SAMSUNG SSD PM810 2.5" 7mm 256GB
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   091   091   ---    Pre-fail  Always       -       539
  9 Power_On_Hours          0x0032   098   098   ---    Old_age   Always       -       7479
 12 Power_Cycle_Count       0x0032   095   095   ---    Old_age   Always       -       4050
175 Program_Fail_Count_Chip 0x0032   091   091   ---    Old_age   Always       -       335
176 Erase_Fail_Count_Chip   0x0032   100   100   ---    Old_age   Always       -       0
177 Wear_Leveling_Count     0x0013   099   099   ---    Pre-fail  Always       -       22
178 Used_Rsvd_Blk_Cnt_Chip  0x0013   060   060   ---    Pre-fail  Always       -       1594
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   064   064   ---    Pre-fail  Always       -       2906
180 Unused_Rsvd_Blk_Cnt_Tot 0x0013   064   064   ---    Pre-fail  Always       -       5158
181 Program_Fail_Cnt_Total  0x0032   093   093   ---    Old_age   Always       -       539
182 Erase_Fail_Count_Total  0x0032   100   100   ---    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   093   093   ---    Pre-fail  Always       -       539
187 Uncorrectable_Error_Cnt 0x0032   001   001   ---    Old_age   Always       -       152541
195 ECC_Error_Rate          0x001a   001   001   ---    Old_age   Always       -       152541
198 Offline_Uncorrectable   0x0030   100   100   ---    Old_age   Offline      -       0
199 CRC_Error_Count         0x003e   253   253   ---    Old_age   Always       -       3
232 Available_Reservd_Space 0x0013   060   060   ---    Pre-fail  Always       -       2438
241 Total_LBAs_Written      0x0032   009   009   ---    Old_age   Always       -       3936079957
242 Total_LBAs_Read         0x0032   003   003   ---    Old_age   Always       -       4196060295
SMART Error Log Version: 1
ATA Error Count: 9591 (device log contains only the most recent five errors)

Диск из dell xps 14z (образца 2012 года если верить серийнику S0NUNEAC101977)

ddresque дал 1770 областей с ошибками (4316160 байтов).

Но ведь это уже пушистый зверек ?

 

vel ()

RSS подписка на новые темы