LINUX.ORG.RU

Сообщения James_Holden

 

Помогите - KDE systemsettings не дружит с polkit

Запускаю KDE systemsetings, модуль для настройки SDDM. Там как известно, все настройки требуют повышения прав до рута через PolicyKit.

Есть другой модуль - настройка даты/времени. Там смена таймзоны требует запроса рута.

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

Модуль для SDDM не работает наглухо, при сохранении настроек выдает ошибку - permission denied, при этом никакого диалога PolicyKit не вылетает вообще.

В логах видно, что в первом (удачном) случае идет запрос к polkitd, далее к кедовому агенту, и вылетает диалог.

В неудачном случае - запроса к polkitd нет вообще. dbus-daemon сразу пишет: не удалось запустить, permission denied.

Разница, не знаю насколько это может влиять - для настройки времени (что работает) запускается сервис через systemd, для настройки SDDM - просто напрямую приложение.

Также (ВАЖНО!!) есть эталонная система, где все работает. Но я в упор не могу понять в чем разница.

Эталонная система - Arch, сломанная - самосбор.

Подскажите, куда можно копать? Подходят любые варианты, вплоть до пересборки всего вручную и запуска на gdb.

@intelfx

 , ,

James_Holden ()

Как закрыть Viber без помощи такой-то матери?

Суть проблемы проста. Есть Viber клиент под линукс. Запускается, работает без нареканий. Но - вообще нету возможности завершить приложение! Если закрыть окно, приложение остается висеть в памяти.

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

Решение:

Проблема возникает на всех DE, если ставить Viber через Flatpak. Нет иконки в трее, через которую и надо закрывать.

Чинить можно так:

flatpak override --own-name='org.kde.*' com.viber.Viber

Почему до сих пор не пофиксят на флатхабе манифест - загадка века.

 

James_Holden ()

Детект изменения состояния сетевых подключений

Есть некое embedded устройство с linux. На нем работает некий демон, запускаемый через systemd.

Задача - перезапуск демона при изменении подключения к сети. То есть если поднято/опущено любое сетевое соединение.

Для перезапуска достаточно завершить демон, systemd его само запускает обратно.

Вопрос - как наиболее просто и надежно это сделать, крайне желательно изнутри демона? Демон на языке C.

Что пробовал:

int nl_socket = socket (AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
addr.nl_family = AF_NETLINK;
addr.nl_pid = getpid ();
addr.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR;
bind (nl_socket, (struct sockaddr *) &addr, sizeof (addr));

и так далее. В целом это работает, но столкнулся с проблемой - если в сети выполнить arp-scan, срабатывает такой детектор и демон неправомерно перезапускается.

Как это сделать минимально сложно и максимально надежно?

 ,

James_Holden ()

Как устроен Flatpak?

Суть вопроса проста. Интересует ваше представление о том, что есть в техническом плане Flatpak.

Например -

  1. это виртуалка

  2. это контейнер как Docker

  3. какой-то иной тип контейнера

  4. пакет, в виде образа и архива, который содержит приложение и все его зависимости.

  5. и так далее - ваше видение.

Особенно приглашаются люди, которым не нравится флатпак. Которые считают, что подобному подходу не место в линуксе. Очень интересует ваше текущее представление о том, чем же флатпак является технически.

И конечно, наиболее интересно услышать по этому вопросу мнение @theLORdweller, претендующего на звание ведущего здешнего эксперта. Ему, мягко говоря, есть что рассказать о различных дистрибутивах, пакетных системах и о флатпаке в частности. Ждем.

Особое пояснение. интересует именно ваше представление на данный момент. Не надо ссылок на документацию и подобного. Мне интересна картина представлений в головах людей.

 

James_Holden ()

Установка библиотек C, C++ прямо в проект

Есть ли готовые решения в виде менеджера пакетов, желательно source-based, который бы ставил все нужные зависимости не в систему, а в папку проекта?

Желательно чтобы это было кроссдистрибутивно (но интересуют и иные варианты, если нельзя так).

То есть - менеджер должен из некоего репозитория ставить исходники библиотеки. Бинарники - дело десятое, в принципе они в данном подходе не нужны, потому что все равно будут собраны не под целевую систему.

Вроде простая задача, и во всяких Node, Python решается штатно, а такой затык. Или я в танке еду и не знаю про очевидные решения. Помогите, кто знает?

 ,

James_Holden ()

Pipewire - неизбежная... победа!

Есть snap, flatpak, wayland. Вроде хорошее дело, но - они добавляют изоляцию между приложениями, и такие штуки как jack, pulseaudio уже не могут работать как раньше. Надо что-то решать. И тут появляется надежда - pipewire. Но надежда ложная, потому что это катастрофа!

Нет, надежда все-таки есть.

Вот мои претензии (которые в итоге разрешились):

1. Обязательный ресемплинг. Как известно, pulseaudio поддерживало две частоты дискретизации микшера - основную и альтернативную. Это позволяло, в случае воспроизведения например только музыки со spotify переключать микшер на частоту дискретизации потока и УБРАТЬ ресемплинг! Если воспроизводит только одно приложение, ресемплинга быть НЕ ДОЛЖНО! Потому что он не нужен. Pipewire не позволяет, и похоже что реализовать это в той архитектуре, которую заложили, будет весьма непросто. На практике он всегда делает ресемплинг и всегда портит звук.

Последняя версия pipewire поддерживает до 16 значений частоты дискретизации и будет переключаться на нужную, когда это возможно.

Переключение РАБОТАЕТ уже сейчас, на версии из Git! На релизе 0.3.33 у меня не работает.

КАК СДЕЛАТЬ:

В pipewire.conf пишем:

default.clock.rate          = 48000
default.clock.allowed-rates = [ 44100, 48000 ]

Можно перечислить в allowed-rates до 16 значений. Все!

ТЕПЕРЬ - если воспроизведения не было, и запустить на воспроизведение ОДНО приложение, pipewrire будет переводить себя и звуковую карту на частоту дискретизации этого приложения, и ресемплинга НЕ БУДЕТ.

2. При работе с jack клиентами может меняться размер буфера. Занавес! То есть я играю на гитаре, и тут мне меняют размер буфера? А ничего что это приведет к слышимому и чувствуемому изменению задержки звука? Как играть??? Так НЕЛЬЗЯ ДЕЛАТЬ, а надо делать ровно наоборот. Я уже молчу про то, что изменение на лету размера буфера может просто крашануть jack приложение, которое такого бреда не ожидало!

3. Для того, чтобы вообще хоть как-то задать размер буфера для jack клиентов, надо запускать приложение с переменной окружения PIPEWIRE_LATENCY. То есть мне теперь все приложения из консоли стартовать? Или все desktop файлы править? С настоящим jack это решается элементарно - программой управления типа qjackctl. Там просто выбирается какой буфер, и все приложения используют его. Должно быть ВОТ ТАК.

Решение:

pw-metadata -n settings 0 clock.force-quantum <size>

устанавливает фиксированный размер буфера.

Или в jack.conf:

node.lock-quantum = true

4. Нельзя нормальным образом поменять частоту дискретизации при работе с jack клиентом. Используется та, на которую настроен pipewire своим конфигом. С нормальным jack частота просто выбирается в qjackctl. А с pipewire что, мне править конфиг и перезапускать его, или как?

Решение, можно менять на лету:

pw-metadata -n settings 0 clock.force-rate <samplerate>

В итоге, имеем огромные практически нерешаемые проблемы на уровне архитектуры, из-за которых pipewire идет в противоположную от нужной сторону.

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

 , ,

James_Holden ()

Правильный деплой Python приложения - как лучше?

Есть некое приложение на Python, чисто серверное без GUI (хотя в данном случае не важно). Оно использует ряд модулей.

При разработке и отладке на целевой системе я просто использовал virtualenv. Теперь встал вопрос - как лучше сделать бандл, чтобы его могли:

  1. Ставить люди, не шарящие в кишках питона. Просто брать и ставить.

  2. Ставить в любое место.

  3. Без интернета.

То есть в идеале - надо сделать папку, в которой приложение, и все site-packages которые оно использует. И прямо из этой папки должно все стартовать.

Все что пишут по поводу Python deploy - либо докер, либо virtualenv, либо накатывать через pip пакеты на целевой системе. Это какое-то не то. Как можно сделать проще?

PyInstaller делает то что нужно, но он не подходит потому что заворачивает все в бинарники. Мне надо чтобы py файлы остались и можно было править код по живому.

 

James_Holden ()

Автоудаление забанься дебила

Очень очень простой вопрос.

В связи с обострением эпидемии забаньсядебилизма, почему бы не сделать автоудаление поста с этим выражением?

Какие-то религиозные предубеждения против автоудалений?

Зачем отрывать уважаемых пользователей, таких как @fernandos например, от комментирования необходимостью репортить на дословно один и тот же пост, появляющийся везде постоянно?

 

James_Holden ()

Что за TPM дурацкий?

Тема навеяна темами про Win 11. Там нужен какой-то TPM.

Просвятите пассажира бронепоезда, что это за новая ересь, почему я о ней слышу в первый раз, и зачем она может быть нужна для систем на основе Linux?

Это что, новый способ майкрософта насадить всех на кукан?

 

James_Holden ()

Помогите с расчетом CRC8 суммы

Поможите люди добрые! Сами мы не местные (не ассемблерщики и вообще не очень умные, как видно).

Есть весы, работающие по протоколу Тензо М. В описании протокола для расчета CRC суммы приведен вот такой код на ассемблерной вставке якобы для C++

BYTE CDeviceTestDlg::CRCMaker(BYTE b_input, BYTE b_CRC)
{
__asm
{
  mov al,b_input
  mov ah,b_CRC
  mov cx,8
mod1:
  rol al,1
  rcl ah,1
  jnc mod2
  xor ah,69h
mod2:
  dec cx
  jnz mod1
  mov b_CRC,ah
}
return b_CRC;

Мать их, 16 битный ассемблер в 2021!!! Да чтоб они так жили.

В эту функцию, насколько я понял, надо подставить байты пакета по очереди и в итоге на последнем байте получится CRC. Как это сделать толком тоже не понятно, но ладно - мне бы сначала просто скомпилировать эту функцию! Подскажите, как вообще при помощи gcc собрать такой код на современной системе?

Что делал. В лоб конечно не собирается. Добавлял .code16, .intel_syntax noprefix - ругается все равно что таких инструкций асма нет.

Пример гарантированно правильных кадров с верной CRC суммой, сдамплено сниффером с фирменной утилиты

0xFF 0x02 0xC3 0xE6 0xFF 0xFF
0xFF 0x01 0xC3 0xE3 0xFF 0xFF

Третий с конца байт - это CRC. 0xFF - разделители, и вот тут вообще не понятно, надо ли их пихать в расчет контрольной суммы. Если кто имеет опыт с протоколом Тензо М, подскажите пожалуйста.

Но основной вопрос - что делать с ассемблерной вставкой.

 ,

James_Holden ()

Tidal - банальный развод??

Приложения под линукс нет! Или я плохо искал? Уже это может ставить на нем крест.

Но, давайте взглянем пристально на этот сервис. Чем он лучше, например, Spotify? Яндекс музыки? А ведь стоит он весьма реальных денег.

Многие ответят что - лучше качество. Типа, HiFi. А mp3 320, или там aac 256 у других сервисов это что, не HiFi? Ну cерьезно? Кто-то еще верит в эту лапшу? Ну сейчас мы ее с ушей снимем.

Tidal предлагает нам формат MQA, который якобы, по утверждениям специалистов с диванов по всему миру дает качество цифрового мастера, 24/192 или хотя бы 24/96. Вас обманули! Он не дает даже качество CD.

А что дает? Огород, DRM, развод на бабки, лапшу на уши. Нравится?

Зайдем с технической стороны - что внутри этого MQA. Имеем обычный FLAC файл с потоком 24/48 либо 24/44.1. Казалось бы, неплохо. Только подвох в том, что звук там - только первые 13 бит. Остальное - шум, в котором закодированы некие мистические аудиоданные, после раскодирования (unfolding) дополняющие базовый 13/48 звук до 13(???)/96 и второй «унфолд» до 192 кГц с разрядностью какой - я так и не понял.

Интересно, что последнее улучшение возможно только аппаратным путем, потому что алгоритм огорожен и секретный, только в железе поставляется. Гениальное решение. Никому не нужны дорогие «HiFi» проигрыватели потому что встройка ноутбука дает неотличимый от них звук? Так мы это поправим - сделаем секретный кодек который не раскодируется на компе никак.

А теперь самая мякотка. Максимальное качество, и раскодирование, получается только на спец железе, но ведь дураку понятно, что никакого улучшения не будет! От перехода с 96 кГц на 192 кГц ничего на слух не улучшится никогда. Как же продавать железо??? А очень просто - добавим в кодек эквалайзер! Вот так. Последнее, самое «ценное», раскодирование включает обработку эквалайзером. Я выдохнул.

А почему такой развод, кто эти злобные гении? Да все те же, авторы абсолютно дебильного DVD Audio. Это был чистый Hi-Res, который ожидаемо провалился, потому что слушать Hi-Res это идиотизм. Не удалось обмануть людей. Поэтому сейчас сделали намного умнее - слушай как хочешь. MQA формат вообще можно воспроизводить как простой FLAC 13-битный. Хочешь - улучши программным плеером. Мало этого - тот же файл на аппаратном декодере заиграет еще лучше. Красота? Да. Если не учитывать того факта, что все это ложь.

Но люди ведутся, покупают дорогущие подписки за пустышку, которая хуже MP3. Добро пожаловать в 2020-е.

 , , ,

James_Holden ()

Возможно ли в KDE без помощи программиста-проктолога сменить разрешение экрана?

Имеется HDMI->VGA адаптер. Подключаю через него внешний монитор. При этом в списке разрешений оказываются как рабочие, так и неверные. Ну видимо, такой адаптер. Но эта проблема меня пока не волнует.

Через kscreen отключаю экран ноутбука и выставляю для внешнего монитора максимальное разрешение. Все гаснет, на мониторе надпись - за пределами допустимого.

И вот тут самый смак. Как откатить назад??? ЕМНИП в Windows 95 уже в таких случаях по таймеру откатывалось назад. Но в плазме в 2021 году это слишком круто. Надо выставить сразу нерабочее разрешение и все убить!

Нерабочее разрешение конечно же радостно запоминается, и ни перезагрузка, ни перелогин не помогают.

Срочно вызванный внутренний програпроктолог переключился в ядерную консоль, и стал через xrandr пробовать все устаканить как надо. Фиг там! xrandr не может изменить разрешение вообще. При активации экрана ноутбука через xrandr напрочь отключается HDMI адаптер. Перетыкаю его - kscreen радостно восстанавливает нерабочее состояние!

Класс. Просто класс. Вот так создается патовая ситуация на пустом месте.

В толксах это, потому что проблему то я знаю как решить. С помощью программиста. А без помощи?

 ,

James_Holden ()

Баг в Midnight Commander

Насколько я помню, здесь разработчики MC обитают?

Есть проблема - некорректно стало работать с архивами rar, если в системе rar 6 версии. Причина - в скрипте /usr/lib/mc/extfs.d/urar

mcrarfs_list ()
{
    [ x$UNRAR_VERSION = x5 ] && mcrar5fs_list "$@" || mcrar4fs_list "$@"
}

Проверяется пятая или четвертая версия unrar, а уже шестая! Поэтому не работает. Костыль - если заменить 5 на 6 то все работает

mcrarfs_list ()
{
    [ x$UNRAR_VERSION = x6 ] && mcrar5fs_list "$@" || mcrar4fs_list "$@"
}

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

Если кто из разработчиков читает - исправьте пожалуйста. Если нет ни у кого времени, могу я пулл-реквест оформить.

 

James_Holden ()

Загадка поддельных китайских транзисторов

Покупал на али транзисторы JFET 2N3819, и час не мог понять почему они не работают, даже не открываются. Даже подавал 24 вольта прямо между истоком и стоком. Он вообще не открывается.

Само по себе это не удивило, ну прислали брак. Но тут меня осенило - а вдруг это биполярный транзистор. Проверил - так и есть, это NPN. Чудеса просто. При этом маркировка на нем нормальная, как на 2N3819.

Собственно вопрос - а зачем они это делают? Какой экономический смысл?

Или это не злонамеренно? Ничего не понимаю.

В интернете с этими транзисторами таких историй море. То есть это целая система? Как теперь людям верить…

 ,

James_Holden ()

Shared папка с Windows 10 на Virt Manager

Недавно было высказано мнение, что Virtualbox фуфло и нет никакого смысла в нем даже для запуска Windows в качестве гостя.

Я задумался, и решил пропробовать поднять Windows 10 гость через Virt Manager.

И уперся в казалось бы, простейший вопрос - как создать shared папку? Кто использует винду на KVM, подскажите, как вы делаете.

ИТАК, РЕШЕНИЕ!!! Со встроенной в qemu самбой. Есть в треде, но там пропущен один пункт и оно не работает. Здесь - полное.

  1. Создаем виртуальную машину с Win10 в Virt Manager, все по дефолту.

  2. Удаляем сетевую карту (дефолтную) из оборудования.

  3. Включаем редактирование XML в настройках Virt Manager, переходим на вкладку XML и добавляем:

В тег <domain>

xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0"

И одновременно с этим - именно одновременно! Иначе никакие изменения сохраняться не будут! Меняем /path/to/folder на свой путь.

В конец перед </domain>

  <qemu:commandline>
    <qemu:arg value="-net"/>
    <qemu:arg value="nic"/>
    <qemu:arg value="-net"/>
    <qemu:arg value="user,smb=/path/to/folder>
  </qemu:commandline>
  1. Теперь сетевая карта и QXL устройство окажутся на одном слоте PCI, устраняем этот конфликт. Находим кусок и заменяем slot=«0x01» на slot=«0x03», как в примере ниже.
<video>
  <model type="qxl" ram="65536" vram="65536" vgamem="16384" heads="1" primary="yes"/>
  <alias name="video0"/>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</video>
  1. В файле /etc/libvirt/qemu.conf
security_default_confied = 0
seccomp_sandbox = 0
security_driver = "none"
  1. Перезапуск systemctl libvirtd restart

7.После этого в винде:

Проводник -> Этот компьютер -> Подключить сетевой диск

на адрес

\\10.0.2.4\qemu

ВАЖНО!!! Чтобы был доступ не только на чтение, qemu должен иметь права на работу с расшаренной папкой. А через Virt Manager он запускается по умолчанию не от имени текущего пользователя! (В отличие от прямого запуска qemu_system из консоли, как многие тут любят, и с чем проблемы нет).

Исправляем это в /etc/libvirt/qemu.conf

user = "username"
group = "groupname"

где username, groupname это ваш текущий пользователь и группа, которому принадлежит расшариваемая папка!

Плюс к этому - есть способ через Virtio FS, расписан тут. Подключает папку как локальный диск, без всякой самбы, и с высокой производительностью. Но - там какие-то заморочки с правами на запись, я пока не разобрался, и в этом случае перестает работать Выключить -> Сохранить (состояние виртуалки).

Вот ссылка на источник, из которого брался процесс настройки для этого случая

https://libvirt.org/kbase/virtiofs.html

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

 ,

James_Holden ()

Отвалилось bumblebee

Дистрибутив Arch.

Помогите пожалуйста - после недавних обновлений отвалилась дискретка nvidia на ноутбуке, которая использовалась через bumblebee.

Инфа:

lspci | grep NVIDIA
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 520M] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GF108 High Definition Audio Controller (rev ff)

Драйвер - легаси 390.xx (важно!).

Симптомы:

$optirun glxgears
[  322.458748] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
[  322.458844] [ERROR]Aborting because fallback start is disabled.

Лог исков:

https://pastebin.com/FbvqatNF

В арчвики рецепт сделал, не помогает:

[ERROR]Cannot access secondary GPU - error: X did not start properly
Set the "AutoAddDevices" option to "true" in /etc/bumblebee/xorg.conf.nvidia (see here):

Section "ServerLayout"
    Identifier  "Layout0"
    Option      "AutoAddDevices" "true"
    Option      "AutoAddGPU" "false"
EndSection

/etc/X11/xorg.conf отсутствует.

/etc/X11/xorg.conf.d пустой.

 , ,

James_Holden ()

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