2021-09-06 02:49 pm

Два луча благодарности....

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

Не то чтобы я чуть не поседел, но необходимость восстанавливать кучу открытых окон плюс неизбежный fsck в таком случае радости бы точно не добавили.
2021-08-06 11:05 pm

bcache over bcache

Как поставить линукс в виртуалке на bcache, при условии что инсталлятор его не поддерживает? Конечно же, отредактировать диск напрямую хостом, подключив его через loop или nbd. Итого имеем следующий "i/o-стек":

0. /dev/sda — обычный физический hdd. Из него порождается:
1. /dev/bcache0 — кэшированный "прокси" для доступа через кэш (bcache просто так работает, вставая промежуточной прослойкой за неимением фильтр-драйверов).
2. cryptsetup+LVM — вполне обычный сетап, расписанный в десятках мануалов.
3. ext4 на одном из томов lvm смонтированная в /home
4. machine.vdi — желанный образ диска, куда мы имеем намерение ставить виртуалку.

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

5. Цепляем machine.vdi к nbd0 с помощью qemu-nbd. Разбиваем на разделы, пока всё еще штатно.
6. Создаём еще один bcache поверх /dev/nbd0p2, ядро его все еще видит, любит и понимает.
Ну и наконец вызываем mkfs.ext4 на новосозданный /dev/bcache1.

И вот тут и таилась смерть Кощеева всё вешается наглухо. Ну не всё, а mkfs только, но ни прибить его не получается, ни nbd отмонтировать. В ядре невнятная ругань на зависший blkio во время flush, да и всё. Дедлок, подумал Штирлиц.

Бля.

Короче, надо было не выделываться, а просто взять другую виртуалку.
2021-08-01 12:59 pm

Buster -> Bullseye

Поскольку до релиза две недели, а RC-багов вроде как и нет, то взял и накатил. Distupgrade прошёл беспроблемно (ну для того франкенштейна в который я обычно превращаю систему к новому релизу), только wayland на i965 не завёлся. Посему 'WaylandEnable=false' в /etc/gdm3/daemon.conf и далее всё как обычно.

Хозяйке на заметку: 'В будущем надо будет делать резервные копии как lvm split mirror, а не как snapshot'*1000. А то обратно откатиться возможно, а вот сделать из снапшота самостоятельный том — уже проблема.

Продолжаю наблюдения.
2020-03-15 08:08 pm

Дизайнеры овладевают...

Cinnamon 4.4 удалось сделать то, что не удавалось ещё ни одному DE на протяжении восьми последних лет — сломать мне скринсейвер, которым у меня служил glslideshow с автоматически пополняемой коллекцией картинок из APOD. Просто напросто теперь запуск сторонних хаков не благословляется, а скринсейвером служит тщательно и любовно написанный черный экран с часами с единственной кастомизацией — можно выбрать размеры и гарнитуру шрифта. Вероятно, это и есть тот самый clean streamlined design о котором так много.

Сука, как же задолбали рисователи картинок по пикселям со своим охуенным мнением "юзеру это не нужно".
2020-02-27 05:17 pm

вакханалия какая-то

Г-ди, они и в make прикрутили возможность загружать плагины из dll (и еще скриптовать дополнительно на guile). Кто-нибудь может объяснить — зачем? Если для емакса я в принципе понимаю зачем, для bash могу себе хотя-бы примерно-теоретически объяснить, но тут-то нафига? Это помимо традиционного уже "закопайте стюардессу"...
2019-11-26 10:12 pm

KiCad 5.1.5

В Buster почти завезли свежий KiCad. Почти — потому что из-за глючного dwz(1) он не собирается в buster'овом окружении; видимо это и держит мейнтейнеров — все остальное уже спортировано. Но можно собрать самому, указав при сборке DEB_BUILD_OPTIONS=nostrip (не надо задумываться причём тут "strip", это особая дебхелперовая магия). Билд при этом несколько распухнет. Ну или в теории можно всосать свежий dwz/unstable (не пробовал). А! Еще понадобится glm/unstable, но там без проблем. Далее как обычно: apt-get source, dch --bpo, dch --local ~local, sbuild или dpkg-buildpackage (предпочитаю первый).

Получаем тонны багфиксов, новых фич вроде бы нет. Замечу что по-моему это вообще первый релиз из ветки 5.1, которым можно пользоваться не ловя ежеминутно ассерты.
2019-10-11 01:47 am

Rigol + Sigrok, вечер перестает быть томным

Люблю человекочитаемые протоколы. Можно подсоединиться телнетом и поизучать внимательно что происходит.

Как следует из upd к прошлому посту, проблема проявила себя и в raw tcp mode, где в принципе нет никакого rpc, а есть простой текстовый (протоколом это трудно назвать) обмен: туда команды в ascii, обратно такие же ответы (ну иногда с примесью binary, но это неважно). И, собственно, если поставить развертку помедленнее, внимательно смотреть за происходящим на экране скопа и сопоставлять это с тём, что печатается в терминале и появляется оттуда, можно выяснить пару интересных подробностей.

Короче говоря, похоже что никакой "проблемы short reads" не существует в принципе. Авторы libsigrok приняли за проблему совершенно штатное поведение скопа, а именно, что пока идет развертка, то полному кадру данных взяться НЕОТКУДА, эти события еще не произошли. Поэтому отдается ровно то что есть на момент прихода команды. Ну а если скоп в этот момент только ждет триггера (или набралось меньше половины кадра, потому что pretrigger, да), то отдается ПОСЛЕДНИЙ полный кадр. Т.е. если sigrok'у по какой-то причине именно полный кадр и нужен, придётся либо останавливать развертку и читать из background memory как сказано в мануале, либо же как-то переделать работу с триггером чтобы гарантированно дожидаться окончания кадра. Вероятнее первое, поскольку если мы хотим работать со скопом как с LA (триггер-записали-вычитали награбленное), то так и надо делать, а чтение "по-живому" из front buffer оставить для live view (или как там эту функцию могли бы назвать маркетологи).

Окей, гугл, как объяснить девелоперам что у них ВСЁ сделано неправильно???

PS. Блин, как неохота загружать в голову еще три бегамайта исходников...

UPD Родные тулзы скопа (Ultraview или как его там) делают ровно то что я описал: нет данных — рисуют кусок графика.
2019-10-09 11:26 pm

Rigol + Sigrok = ?

Пытаюсь заставить sigrok получать данные с осциллоскопа. LXI, сеть, все дела — как у взрослых, короче.

Результаты пока не то чтобы обнадеживают, но и полностью неудачными их назвать нельзя. В принципе, всё почти работает, но на развёртках короче 10ms (включительно). Pulseview рисует красивые графики, и даже почти ничего не падает. На более длинных (100ms и выше) начинаются приколы: данных вообще нет, в логах невнятная ругань на "Discarding short data block" и "Received invalid data block header". Вдумчивая медитация на --loglevel=5 и grep выводят на дивный комментарий:

libsigrok-0.5.1/src/hardware/rigol-ds/protocol.c +654

 /* At slow timebases in live capture the DS2072
  * sometimes returns "short" data blocks, with
  * apparently no way to get the rest of the data.
  * Discard these, the complete data block will
  * appear eventually.
  */


Судя по всему, "eventually" никакие больше данные не приходят, а приходит мусор. Сколь чуден и многогранен мир embedded-реализаций протоколов!!!

Пойду штоль письмо на деревню дедушке напишу...

UPD. Wireshark показывает что мусора таки нет — приходящий "короткий" пакет является единственным пакетом с данными, а больше от осциллоскопа ничего не приходит. Т.е. как это ни удивительно, но китайские программисты, в данном случае, похоже не виноваты — это sigrok наступает себе же на яйца и считает рандомный буфер пакетом.

UPD2. А в RAW TCP всё тоже самое. Там вообще нет пакетов, просто в порт льется текстовый поток SCPI команд и ответов на них, а sigrok всё равно ругается на невалидные заголовки. Здравствуй, дебаггер.

UPD3. И lxi tools ведут себя схожим образом, да что ж такое.
2019-08-28 01:09 am

9 -> 10

Относительно беспроблемно в этот раз. Отвалился (в смысле отказался апгрейдиться и самоудалился) только kicad (ставится из backports), torbrowser (хз покаmy bad, франкенштейна из системы сделал) и virtualbox (ставится из unstable¹). Традиционно поехали шрифты и иконки, но это мелочи. Даже crossover, требующий для себя i386 библиотек не сдох, и лтспайс и дубльгис запускаются как запускались.

Продолжаю наблюдение.

UPD: Sysv-rc теперь окончательно всё, вплоть до apt purge.

UPD2: Отвалилась пара VPN'ов по той простой причине что OpenVPN теперь хочет tls-min-version 1.2 по соображениям всё того же секьюрити. Лечится явным указанием версии: либо Buster даунгрейднуть до tls-min-version 1.1 (это если на секьюрити насрать), либо в устаревших пирах поднять до 1.2.



1. Идиотская политика Oracle привела к тому что его из stable вынесли по соображениям секьюрити.
2019-03-03 07:28 pm

QCAD

Начал пакетировать сабж (http://www.qcad.org), а то LibreCAD какой-то уж совсем убогий, а предлагаемый авторами метод "работать прямо из сборочной директории" вообще ни в какие рамки.

https://github.com/pixeldexter/qcad-debian

Пока что никаким policy оно не соответствует, lintian выдает длинную простыню, но вроде бы собирается и работает.
2019-02-18 08:21 pm

Внезапное осознание

... все что делают т.н. "дистрибутивы" (линуксовые) и прочие системы упаковки софта — натужно, медлено и со скрипом, в ручном режиме восстанавливают метаданные, успешно проебываемые традиционными тулзами. Можно переложить часть заботы на пользователя (gentoo), можно просто закрыть глаза на проблему (slack, bsd), можно строить систему устойчивую к (nixos кажется, и что там Поттеринг строит). Но сам факт лежащий в корне никуда не денешь.
2018-12-03 05:57 pm

Обнять и плакать...

Сегодня точно не первое апреля?
https://lists.freedesktop.org/archives/dri-devel/2018-November/198581.html

Суть проведенных изменений:

cd /usr/src/linux
sed s/fuck/hug/gi */*.[ch]


То ли ржать, то ли правда плакать....
2018-11-01 09:25 pm

dotfiles...

На башоргВ .bashrc

if [[ -n $(type -t _command) ]] ; then
    complete -F _command eatmydata
fi



Может быть, когда-нибудь впилят в bash-completion, но пока так.
2018-07-27 01:01 am

speedcrunch

Баг штоль? Или просто потеря точности?
(2*pi*sqrt(330e-6*10e-6))**-1
= 2.77053194271996246042e3-214.604481485801913136e-39j

o_O !!


Что интересно,
(sqrt(330e-6*10e-6)*2*pi)**-1
такого эффекта не дает...

PS. заслал багрепорт.
2018-07-26 01:32 am

Красноглазие здорового линуксоида

К вопросу о ночной адаптации: в clutter-based менеджерах (mutter, muffin) вполне работает вот такой код.

Clutter = imports.gi.Clutter
Main = imports.gi.Main

red  = new Clutter.Color({ red: 255, green: 0, blue: 0});
eyes = new Clutter.ColorizeEffect({ tint: red });
Main.uiGroup.add_effect(eyes); // а обратно remove_effect(eyes)


В отличие от просто redshift'а обращается с цветами корректно, т.к. работает через промежуточный grayscale. В этом случае, например, красный текст на белом фоне будет виден, тогда как redshift покажет и красный и белый одинаковым оттенком.

Внутри просто напросто вот такой шейдер (tint это параметр):
float gray = dot(cogl_color_out.rgb, vec3(0.299, 0.587, 0.114)));
cogl_color_out.rgb = gray * tint;


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

PS. Кажется, можно взять вот этот экстеншн и слегка поправить.
2018-07-24 03:28 am

KiCad 5 : релиз

Собственно сабж. Новость на офсайте. В unstable уже залили пакеты.
2018-07-20 11:03 pm

KiCad 5 : скриптинг. Терминологическое.

TL;DR То, что я пытался запускать — это вообще не плагин с точки зрения кикада.

Как заведено среди некоторых разработчиков, куча разных вещей могут называться одним и тем же именем, лишь бы "в ту степь" было. Вот и авторы кикада не избежали этой пагубной тенденции.
дальше много занудства )

Чтобы закрыть эту тему скажу следующее: я лично в этой системе вижу набор скриптов, отчаянно пытающийся стать настоящей плагинной системой. С одной стороны, совершенно недостаточно положить в заранее предусмотренное место™ скрипт, безусловный список которых бы держала система, и которым она же бы выдывала при запуске весь нужный контекст (как бы делал я) — нужно предпринимать специальные действия для того чтобы тебя вообще опознали3. А с другой — для двух видов скриптов, сводящихся к методу "run" всё это совершенно избыточные телодвижения.

Короче говоря, нормальный уровень средневекового зверства4. И не с таким люди живут.



3. Если делать в лоб — например, позвать pcbnew.GetBoard() не в методе, а просто в теле скрипта — будет бумс, просто потому что в момент загрузки никакого "board" еще нету. Ну и так далее в таком духе.

4. Очень было бы забавно выяснять всё это без отладочной консоли (см прошлый пост).
2018-06-01 11:22 pm

Kicad 5

Таки в unstable залили 5.0.0-rc2 в котором исправлена тонна багов из rc1, а главное — проблема с зависимостями wxpython из за которой rc1 толком не собирался на stretch.

Короче. Собрал. Поставил. Запускается. Дополнительно потребовался python-wxgtk3.0 из /testing и пока еще не обновился kicad-templates, но сходу заметных проблем больше нет. Вроде бы графика в pcbnew стала пошустрее, и сходу предлагают включить акселерацию, чего четверка не делала.

Сижу смотрю вот...
2017-04-29 12:00 am

А если вдруг...

... кто-то еще пользуется openssl enc для прятания порнушки, то имейте в виду, что где-то в районе openssl 1.1.0 там сменили умолчальный message digest, в результате чего зашифрованное старым не читается новым. Короч, openssl -md md5, да...

Главное, в мануале об этом так вскользь, а то вдруг кто-то прочитает, и его инфаркт не тяпнет. Пойти накатить грамм триста корвалола от нервов штоли...
2017-04-23 08:52 pm

Первая проблема программирования

Это которая про именование. Ну и как нетрудно видеть, не до всех эта простая истина доходит. Не дошла она и до авторов systemd, и они именуют вещи как бог на душу положит. Например, вот кто, не заглядывая в man systemd.path сможет сказать, чем отличается условие PathChanged от PathModified? Вот то-то же.

Не будьте такими как авторы systemd.