LINUX.ORG.RU

Сообщения CYB3R

 

Доступ к портам контейнера

Форум — Admin

Может, делаю что-то не так, но не могу подключиться к портам контейнера с хоста. Подключения типа http://172.17.0.2:8081 выдают таймаут, на пинги контейнер не отвечает. Если прокинуть порт и подключаться к локалхосту, всё нормально. Нужно что-то дополнительно прописывать, чтобы работала сеть между хостом и контейнерами?

Docker Engine 19.03.12 (macOS)

 , ,

CYB3R ()

Собирайте своё ядро clang'ом!

Форум — General

Я тут накатал довольно большой текст на (возможно, очень корявом) английском о том, что нужно собирать линукс clang’ом. Если вдруг хотите ругать мой английский, пожалуйста.

Если совсем кратко, суть такова:

Благодаря усилиям проекта ClangBuiltLinux ядро нормально собирается clang’ом, однако реально хорошо оттестированы только defconfig’и некоторых наиболее популярных архитектур. Предвосхищая вопрос «а какой от этого профит», скажу, что возможно, никакого, так что просто just for fun.

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

  1. Качаете исходники ядра (чем новее, тем лучше, но можно и свежий LTS), накатываете свои любимые патчи, подсовываете ему свой конфиг
  2. Качаете свежий clang (снова, чем новее, тем лучше; я рекомендую взять с apt.llvm.org, если пользуетесть Debian или Ubuntu)
  3. Собираете первое вторым и репортите все ворнинги и ошибки в багтрекер ClangBuiltLinux, а если стесняетесь, можно прямо в этот тред, я перепощу туда

А почему ты ещё не собрал своё ядро clang’ом?

Если вдруг кому-то покажется, что такому место в толксах, перенесите, пожалуйста!

 , , , ,

CYB3R ()

Клиент OpenID Connect с использованием ключей JWK

Форум — Development

Нужно реализовать авторизацию с OpenID Connect в приложении. Получил от провайдера OpenID client_id и client_secret, отправил ему публичную часть JWK ("use": "enc").

Делаю следующее:

  1. Issuer.discover(provider_url), получаю объект issuer
  2. new issuer.Client({ client_id: id, token_endpoint_auth_method: 'private_key_jwt', token_endpoint_auth_signing_alg: clientKey.alg, client_secret: secret, redirect_uris: uri }), получаю объект client
  3. Редирекчу пользователя на client.authorizationUrl()
  4. Когда пользователь возвращается на uri, вызываю client.callback()

И это не работает. Я подозреваю, что что-то делаю очень очевидное неправильно или не делаю чего-то очень важного.

Я использую библиотеку openid-client, так что названия функций выше специфичны для этой библиотеки, но что каждая из них делает должно быть понятно.

 , , ,

CYB3R ()

Легковесный EFI-загрузчик

Форум — General

Ищу загрузчик, способный загрузить ядро Linux (например, с CD или с флешки). Ядро собирается для x86_64, на целевой системе 64-битный EFI. Мне очень не понравились костыли gnu-efi и очень понравились, как легко собирать для EFI с clang. Хочу найти максимально простой загрузчик и скомпилировать его шлангом. Посмотрел на syslinux, посмотрел на rEFInd, посмотрел на мёртвый ELILO. А попроще ничего нет?

 , , ,

CYB3R ()

Где купить мейнфрейм от IBM?

Форум — Linux-hardware

Зачем? Чтобы пускать на нём линукс для s390x, конечно же! Хочется хотя бы z9, но желательно z10 и новее. Всё, что нашёл в интернете – это конторы в штатах, которые утверждают, что у них это барахло есть и они готовы его продать, но даже не указывают цену.

 , ,

CYB3R ()

Light Commands: лазерная аудиоинъекция в системах с голосовым управлением

Форум — Talks

Оказывается, MEMS-микрофоны реагируют не только на звук, но также и на лазерный луч. Для удаленного командования вашим голосовым помощником требуется только лазер (начиная от 5mW, не обязательно видимого диапазона), лазерный драйвер и усилитель для наушников, опционально телескоп (для прицеливания и наблюдения за реакцией) и штатив (для стабильности). Инжектить поисковые запросы или еще что похуже может психопат с лазерной указкой из дома напротив. Протестировали Alexa, Siri, Google Assistant. Ждем волну убийств умными домами своих хозяев из-за нашёптывания лазером гадостей про него кибердворецкому.

Подробности

 , , , ,

CYB3R ()

Отключить видеокарту или понизить напряжение её ядра

Форум — Linux-hardware

Есть плата с GeForce GT 335M. В lm-sensors выглядит так:

Adapter: PCI adapter
GPU core:     +0.90 V  (min =  +0.80 V, max =  +0.90 V)
temp1:        +35.0 C  (high = +95.0 C, hyst =  +3.0 C)
                       (crit = +105.0 C, hyst =  +5.0 C)
                       (emerg = +135.0 C, hyst =  +5.0 C)

Видеокарту эту я никак не использую. Можно ли её полностью отключить или хотя бы понизить напряжение её ядра до минимума (0.8V)?

 , , ,

CYB3R ()

Отладка ядра GDB: не загружаются скрипты для отладки

Форум — Development

Включил в конфиге следующие опции:

DEBUG_KERNEL=y
DEBUG_INFO=y
DEBUG_BUGVERBOSE=y
CONFIG_FRAME_POINTER=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
Запустил oldconfig:
Compile the kernel with debug info (DEBUG_INFO) [Y/n/?] y
  Reduce debugging information (DEBUG_INFO_REDUCED) [N/y/?] (NEW) N
  Produce split debuginfo in .dwo files (DEBUG_INFO_SPLIT) [N/y/?] (NEW) N
  Generate dwarf4 debuginfo (DEBUG_INFO_DWARF4) [N/y/?] (NEW) N
  Generate BTF typeinfo (DEBUG_INFO_BTF) [N/y/?] (NEW) N
  Provide GDB scripts for kernel debugging (GDB_SCRIPTS) [N/y/?] (NEW) Y
Enable __must_check logic (ENABLE_MUST_CHECK) [Y/n/?] y
Warn for stack frames larger than (needs gcc 4.4) (FRAME_WARN) [1024] 1024
Strip assembler-generated symbols during link (STRIP_ASM_SYMS) [N/y/?] n
Generate readable assembler code (READABLE_ASM) [N/y/?] n
Debug Filesystem (DEBUG_FS) [Y/?] y
Install uapi headers to usr/include (HEADERS_INSTALL) [N/y/?] n
Enable full Section mismatch analysis (DEBUG_SECTION_MISMATCH) [Y/n/?] y
Make section mismatch errors non-fatal (SECTION_MISMATCH_WARN_ONLY) [Y/n/?] y
Force weak per-cpu definitions (DEBUG_FORCE_WEAK_PER_CPU) [N/y/?] n
Собрал ядро, запускаю: qemu-system-i386 -m 512m -append 'console=ttyS0 nokaslr' -display none -serial mon:stdio -kernel arch/x86/boot/bzImage -s -S, и запускаю gdb vmlinux. Дебаг идет, но vmlinux-gdb.py не загружен, apropos lx не показывает ничего, add-auto-load-safe-path не делает ничего, так как я подозреваю, что gdb даже не пытается загружать скрипты.
И gdb, и qemu из репов дебиана. Какова вероятность, что проблема в них, а не в моих кривых руках? Может, я что-то очевидное делаю не так?

 , , , ,

CYB3R ()

Собираю eudev, libtool не может найти liblzma.la

Форум — Development

Пытаюсь собрать eudev, получаю сообщение от libtool, что файл «/lib/liblzma.la» не найден и такого файла действительно нет (он лежит в другом месте), pkg-config выдаёт правильный путь к библиотеке. В configure --help ни слова про lzma, в grep -ri lzma . ничего. Почему libtool ищет la именно там? Как ему указать правильный префикс? Симлинк не предлагать (с ним всё собирается), ищу нормальное решение, а не костыль.

 , , , ,

CYB3R ()

Получить exit code, с которым завершилась программа в середине скрипта

Форум — General

Это уже мой третий тред за неделю с глупыми вопросами по скриптингу.

На этот раз мне нужно получить exit code от command1 в конструкции { command1 2>&3 | command2; } 3>&1 1>&2 | command3, чтобы вывести сообщение об ошибке и завершить выполнение скрипта.

В первых двух тредах мне не без помощи скрипт-гуру удалось сделать следующее:

sim.sh:

#!/bin/sh

filter() {
  local l n
  while read -r l; do
    n=${l#\[ninja\]}
    [ "x$l" != "x$n" ] && printf "%s\n" "$n" || printf "%s\n" "$l" >&2
  done
}

cat log | filter

exit 1

test.sh:

#!/bin/sh
set -e

process() {
  while read line; do
    printf "%s\n" "${line}" >> "std$1.txt"
    printf "$2"
  done
}

{ ./sim.sh 2>&3 | process out .; } 3>&1 1>&2 | process err x

printf '\nthis should never be printed\n'

log содержит следующие строки, взятые из вывода настоящего ninja:

[ninja][72/154] Building C object src/CMakeFiles/git2internal.dir/oid.c.o
[ninja][73/154] Building C object src/CMakeFiles/git2internal.dir/parse.c.o
[ninja][74/154] Building C object src/CMakeFiles/git2internal.dir/patch.c.o
[ninja][75/154] Building C object src/CMakeFiles/git2internal.dir/pack.c.o
../src/pack.c:790:22: warning: incompatible pointer types assigning to 'mz_alloc_func' (aka 'void *(*)(void *, unsigned long, unsigned long)') from 'void *(void *, unsigned int, unsigned int)' [-Wincompatible-pointer-types]
        obj->zstream.zalloc = use_git_alloc;
                            ^ ~~~~~~~~~~~~~
../src/pack.c:868:16: warning: incompatible pointer types assigning to 'mz_alloc_func' (aka 'void *(*)(void *, unsigned long, unsigned long)') from 'void *(void *, unsigned int, unsigned int)' [-Wincompatible-pointer-types]
        stream.zalloc = use_git_alloc;
                      ^ ~~~~~~~~~~~~~
2 warnings generated.
[ninja][76/154] Building C object src/CMakeFiles/git2internal.dir/posix.c.o
[ninja][77/154] Building C object src/CMakeFiles/git2internal.dir/patch_generate.c.o
[ninja][78/154] Building C object src/CMakeFiles/git2internal.dir/pqueue.c.o
[ninja][79/154] Building C object src/CMakeFiles/git2internal.dir/patch_parse.c.o

К сожалению, скрипт не завершается с ошибкой, а выводить на экран «this should never be printed». Буду благодарен любым подсказкам, как реализовать завершение скрипта при ошибке.

 , , ,

CYB3R ()

Перенаправить stderr и stdout в подпрограммы

Форум — General

В соседнем треде мне посоветовали, как Разделить stderr и stdout. Спасибо vodz, который предложил следующую функцию:

filter() {
  local l n
  while read -r l; do
    n=${l#\[ninja\]}
    [ "x$l" != "x$n" ] && printf "%s\n" "$n" || printf "%s\n" "$l" >&2
  done
}
А теперь я хочу разделить stderr и stdout в разные файлы, напечатав в stdout по одному символу в счет каждой строки в соответствующем файле.

Т.е. для файла «log» со следующим содержанием:

[ninja][72/154] Building C object src/CMakeFiles/git2internal.dir/oid.c.o
[ninja][73/154] Building C object src/CMakeFiles/git2internal.dir/parse.c.o
[ninja][74/154] Building C object src/CMakeFiles/git2internal.dir/patch.c.o
[ninja][75/154] Building C object src/CMakeFiles/git2internal.dir/pack.c.o
../src/pack.c:790:22: warning: incompatible pointer types assigning to 'mz_alloc_func' (aka 'void *(*)(void *, unsigned long, unsigned long)') from 'void *(void *, unsigned int, unsigned int)' [-Wincompatible-pointer-types]
        obj->zstream.zalloc = use_git_alloc;
                            ^ ~~~~~~~~~~~~~
../src/pack.c:868:16: warning: incompatible pointer types assigning to 'mz_alloc_func' (aka 'void *(*)(void *, unsigned long, unsigned long)') from 'void *(void *, unsigned int, unsigned int)' [-Wincompatible-pointer-types]
        stream.zalloc = use_git_alloc;
                      ^ ~~~~~~~~~~~~~
2 warnings generated.
[ninja][76/154] Building C object src/CMakeFiles/git2internal.dir/posix.c.o
[ninja][77/154] Building C object src/CMakeFiles/git2internal.dir/patch_generate.c.o
[ninja][78/154] Building C object src/CMakeFiles/git2internal.dir/pqueue.c.o
[ninja][79/154] Building C object src/CMakeFiles/git2internal.dir/patch_parse.c.o
после пропускания через фильтр и обработки особым образом должно в stdout.txt быть:
[72/154] Building C object src/CMakeFiles/git2internal.dir/oid.c.o
[73/154] Building C object src/CMakeFiles/git2internal.dir/parse.c.o
[74/154] Building C object src/CMakeFiles/git2internal.dir/patch.c.o
[75/154] Building C object src/CMakeFiles/git2internal.dir/pack.c.o
[76/154] Building C object src/CMakeFiles/git2internal.dir/posix.c.o
[77/154] Building C object src/CMakeFiles/git2internal.dir/patch_generate.c.o
[78/154] Building C object src/CMakeFiles/git2internal.dir/pqueue.c.o
[79/154] Building C object src/CMakeFiles/git2internal.dir/patch_parse.c.o
а в stderr.txt следующее:
../src/pack.c:790:22: warning: incompatible pointer types assigning to 'mz_alloc_func' (aka 'void *(*)(void *, unsigned long, unsigned long)') from 'void *(void *, unsigned int, unsigned int)' [-Wincompatible-pointer-types]
        obj->zstream.zalloc = use_git_alloc;
                            ^ ~~~~~~~~~~~~~
../src/pack.c:868:16: warning: incompatible pointer types assigning to 'mz_alloc_func' (aka 'void *(*)(void *, unsigned long, unsigned long)') from 'void *(void *, unsigned int, unsigned int)' [-Wincompatible-pointer-types]
        stream.zalloc = use_git_alloc;
                      ^ ~~~~~~~~~~~~~
2 warnings generated.
на терминал при этом печатается:
....xxxxxxx....

Как это реализовано сейчас (внимание, говнокод, эстетам не смотреть):

process_out() {
	while read line; do
		echo "${line}" >> stdout.txt
		/bin/echo -n "."
	done < fifoout
}

process_err() {
	while read line; do
		echo "${line}" >> stderr.txt
		/bin/echo -n "x"
	done < fifoerr
}

mkfifo fifoout
mkfifo fifoerr
process_out &
process_err &
cat log | filter >fifoout 2>fifoerr
sleep 0.1
Почему сделано через FIFO? Важно, чтобы этот код работал с dash и busybox ash. Возможно ли реализовать то же самое, только лучше?

 , , , ,

CYB3R ()

Разделить stderr и stdout

Форум — General

На входе в stdin есть набор строк. Хотелось бы те из них, в которых есть слово «error» отправить в stderr, а остальные в stdout. Вроде бы должно быть просто, но никак не могу написать функцию на шелле, хотя кажется, я это уже делал и даже успешно. Может у grep или tee есть такой режим работы?

 , , ,

CYB3R ()

Бесплатные электронные книги по C11/C18/C2x

Форум — Development

Посоветуйте литературу. Обязательно на английском языке, желательно в EPUB, хорошо бы, если opensource. Ищу не для себя, но тоже почитаю, если найдется хорошая книга.

 , , , ,

CYB3R ()

Фильтр по звездам

Форум — Linux-org-ru

Нужна настройка, включив которую можно видеть только темы и комментарии от пользователей с минимум одной/двумя/тремя/четырьмя/пятью звездами. Так можно очень легко выбирать «стаж» участников дискуссии для себя.

 ,

CYB3R ()

LoRa модем без трансивера

Форум — Linux-hardware

Может, странного хочу, но почему-то не могу найти LoRa-модемов отдельно от трансиверов, только комбо. Может как-то неправильно ищу? А может я дурак и не понимаю, почему их разделять нельзя?

 , , , ,

CYB3R ()

Какое ARM-железо выбрать для сервера?

Форум — Linux-hardware

На али много дешёвых плат с распаянным интеловским процессором и пассивным охлаждением. Найти можно, например, по запросу "pfsense" Довольно дёшево для того, чем оно является, но довольно дорого для китайского ноунейм говна. Из плюсов: должна быть относительно беспроблемная установка почти любой ОС и большинстве случаев наличие более одного гигабитного Ethernet.
А какой выбор подобного оборудования на ARM?

  • Wi-Fi роутеры, например (обычно довольно мало ROM и RAM)
  • Одноплатники, например (часто отсутствие ROM и использование SD-карты под систему, отсутствие корпуса или очень примитивный корпус из плексигласа)
  • Медиаприставки и HDMI-свистки, например (скорее всего, будет трудно поставить туда что-то кроме родной прошивки)
  • Тонкие клиенты, например (дороговато для таких спеков)

Что из этого стоит взять для организации сети? Хочу взять несколько максимально дешёвых и простых подобных компьютеров, чтобы на каждом из них крутился какой-нибудь полезный сервер — DHCP, DNS, веб-сервер, сервер баз данных, redis. Что подойдёт?
Какие процессоры лучше всего поддерживаются ядром? MediaTek, RockChip, AMLogic, AllWinner, HiSilicon?

 , , ,

CYB3R ()

LXC — poweroff и reboot

Форум — Admin

В LXC контейнерах нормально работает poweroff — контейнер останавливается, но не работает reboot — вместо этого происходит halt, т.е. процессы убиваются и контейнер замораживается в бесконечном цикле, пока я его не убью. У меня одного так? Если кто-то сталкивался, как исправили?

 , ,

CYB3R ()

SEGGER Embedded Studio и libopencm3

Форум — Development

Недавно приобрел китайский клон J-Link для того, чтобы прошить nRF52, попробовал их самопальную IDE – SEGGER Embedded Studio. И мне очень понравилась отладка там. Сейчас попробовал поставить VSCode и PlatformIO, но там отладка только по подписке, а SES бесплатна для некоммерческого использования. Хочу делать всякое мелкое говно для домашней автоматизации на STM32F1, так как дешево, удобно и можно использовать libopencm3. Встал вопрос, а в чём писать? Если бы к SES можно было прикрутить libocm3, было бы идеально. Есть истории успеха? Если идея плохая, посоветуйте IDE.

 , , , ,

CYB3R ()

USB PWM для вентилятора

Форум — Linux-hardware

Продаются ли сабжевые устройства? Если да, есть ли драйвера в мейнлайне? От устройства нужно: управление по USB, molex разъём, чтобы получать для 12В, контроль оборотов вентилятора при помощи PWM, считывание тахометра вентилятора, возможность полной остановки вентилятора. Желательно подключение нескольких вентиляторов к одному контроллеру.

 , ,

CYB3R ()

ninja объединяет stdout и stderr

Форум — General

Может кто-нибудь объяснить, почему ninja перенаправляет stderr в stdout при сборке? Как мне вычленить сообщения компилятора? Можно как-то отключить такое поведение?

 , , , ,

CYB3R ()

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