LINUX.ORG.RU

Сообщения 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
()

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

Форум — General

Есть такой скрипт:

if ! myprgm; then
  echo "fail"
  exit 1
fi

Я хочу сохранять то, что выводит myprgm в stdout в файл stdout.txt и для каждой строчки печатать в stdout «o», а вывод в stderr сохранять в stderr.txt и и для каждой строчки печатать в stdout «x». Вот что у меня получилось:

mkfifo out
mkfifo err

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

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

if ! myprgm > out 2> err & process_out & process_err; then
  echo "fail"
  exit 1
fi
Но это не будет работать, потому что $?, от которого зависит срабатывание if будет принадлежать функции process_err, а не myprgm.

Как можно грамотно переписать этот говнокод? Хотелось бы, чтобы работало в POSIX-совместимом шелле.

 , , ,

CYB3R
()

Десктопная мать стандарта mATX с ARM

Форум — Desktop

Нагуглить смог только MP30-AR0, которая старая и её нет нигде уже. Хотелось бы: mATX, 64-битный ARM с кучей ядер, USB 3.0, встроенное аудио, встроенная графика с HDMI/DP, слоты DDR4 (на худой конец DDR3), хотя бы парочку PCIe 4.0 (на худой конец 3.0), SATA, LAN, питание от стандартного ATX-совместимого БП. ThunderX круто, но если есть варианты, очень интересно было бы о них узнать.

 ,

CYB3R
()

Единый интерфейс для всех архиваторов

Форум — General

Уверен, что это 100 раз написано уже, потому свой велосипед пилить не буду, а спрошу, кто чем пользуется.

Никто не хочет запоминать ключи к tar, ar, zip, rar и сотне других архиваторов, а временами может попасться какой-нибудь древний ace или новый xar. Нужен скрипт, который сначала запустит `file`, чтобы определить, какой архив ему скормили, а потом преобразует свои универсальные аргументы в архиватороспецифичные. Таким образом можно будет легко распаковать/запаковать/добавить файлы в/получить список файлов любого архива, не куря перед этим ман соответствующего архиватора. Есть такое?

 , , , ,

CYB3R
()

Может ли setfacl устанавливать setuid, setgid, sticky bit?

Форум — Admin

Сабж. Если да, то какой синтакс?

 , ,

CYB3R
()

В каких дистрибутивах всегда свежие qemu и libvirt?

Форум — Admin

Собираюсь делать сервер для виртуализации. Для этих целей есть HP ProLiant ML350p (Gen8). Хочу всегда иметь самые свежие версии qemu и libvirt. Какой дистрибутив выбрать? Насколько арч плохой выбор для сервера? Если нет свежих версий в основных репах, сторонние репы тоже подойдут (но предоставьте ссылки на них).
В виртуалках Fedora, Windows 10 и macOS, если это важно.

 , , , ,

CYB3R
()

Беспроводная сеть под контролем TP-LINK OC200

Форум — Admin

Решил делать беспроводную сеть с seamless roaming на TP-LINK Omada. В качестве точек доступа скорее всего будут три EAP245, свитч TL-SG1008PE и контроллер OC200. И этот контроллер – это самая интересная деталь. Главная его функция – обеспечение работы seamless roaming. У него два сетевых интерфейса. Первый к PoE свитчу, а второй куда? Может ли он выступать в качестве роутера? Если да, можно пруф? Если нет, посоветуйте проводной гигабитный роутер, желательно тп-линковский (сейчас сеть медная, апгрейд до оптики вряд ли будет в ближайшем будущем).

 , ,

CYB3R
()

sudoers: запустить команду от имени www-data без пароля

Форум — Admin

Вот мой sudoers:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	targetpw

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
Добавил в него такое:
# Allow running anything as www-data without password
www-data ALL=(ALL) NOPASSWD:ALL
Хочу, чтобы sudo -u www-data anycmd выполнялось без пароля. Команды же, выполняемые от имени других пользователей, должны тебовать пароли соответствующих пользователей. Как правильно написать это в конфиге?

 , ,

CYB3R
()

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