LINUX.ORG.RU

Сообщения bigov

 

Наглый Мастдай

Всем привет! Проблема с перезаписью bootloader UEFI.

Новый ноут (HP OMEN), два диска, две оси - Мастдай и Арчик. Диски GPT, загрузка в режиме UEFI. Настроено меню загрузки для systemd-boot. Загрузка работает, загружается выбранная ось, проблем нет…

… до момента загрузки Мастдая - каждый раз он из UEFI автоматически удаляет мультисистемный загрузчик Linux и заменяет на свой. Естественно, после этого при перезагрузке выбор операционки из меню пропадает, как и само меню.

Перепробовал кучу вариантов из WiKi Archlinux - ничего не помогает! Главная трудность, что на этом ноутбуке невозможно сохранить в UEFI две загрузочные записи одновременно - остается только одна, та что была добавлена последней.

Может кто-то сталкивался с подобной ситауцией, знает как откючить перезапись?


Решение: не отключать а подправить загрузочную запись:

C:\Windows\system32>bcdedit /set {bootmgr} path \EFI\BOOT\BOOTX64.EFI

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

 , ,

bigov
()

Debian/apt - как заблокировать установку топовой версии пакета?

Всем привет! На Debian GNU/Linux 11 (bullseye) (SMP Debian 5.10.162-1 (2023-01-21)) разворачиваю веб-сервис (GLPI-10) под php8.1. Дефолтный репозиторий поддерживает максимум php7.4, поэтому пришлось подключить внешний: https://packages.sury.org/php/. Установить из него php8.1 со всеми необходимыми модулями получилось, все работает.

НО, наступил на грабли: теперь любой устанавливаемый пакет, в котором есть зависмость от php* тащит из внешнего репозитория в систему модули топовой версии php = 8.2, создавая «кашу» из разных версий.

Вопрос: как заблокировать установку 8.2 в пользу 8.1?

 , ,

bigov
()

Ansible - длинный выхлоп

Привет админам! Такая проблемка - плэйбук ансибла раскидывает ssh ключи админов по хостам

---
- name: Добавление SSH ключей админов
  ansible.builtin.shell: if grep "{{ item }}" < /root/.ssh/authorized_keys; then exit 2; else echo "{{ item }}" >> /root/.ssh/authorized_keys; fi
  args:
    executable: /bin/bash
  register: item_changed
  failed_when: item_changed.rc == 1
  changed_when: item_changed.rc == 0
  with_items: "{{ ssh_id_admins }}"

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

РЕШЕНИЕ

Всем спасибо, было много полезных советов, но решение все же выглядит так: надо заменить строку

  with_items: "{{ ssh_id_admins }}"

на следующий фрагмент:

  loop: "{{ ssh_id_admins|flatten(levels=1) }}"
    loop_control:
      index_var: id
      label: "{{ id }}"

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

 

bigov
()

https фильтрация - privoxy

Привет всем!

Чего хочется:

хочется фильтровать https/SSL трафик, чтобы на основе «регулярки» направлять запросы через разные хосты в зависимости от URL. В теории прокси, используя подставной сертификат, выдает себя за целевой хост и расшифровывает трафик клиента, а потом от его имени запрашивает странички и передает ответ клиенту.

Чего имеем:

имеем софтину «privoxy», которая тут анонсировала что умеет такое:

Supports https inspection which allows to filter https requests.

Чего не получилось:

не взлетает функционал. Может я чего не понял и в конфиге недопилил? Вот конфиги:

Основной конфиг:

confdir /etc/privoxy
logdir /var/log/privoxy
logfile logfile31017
listen-address 192.168.96.12:31017

ca-directory /usr/local/etc/privoxy/CA
ca-cert-file cacert.crt
ca-key-file cakey.pem
ca-password *********
certificate-directory /var/spool/privoxy
cipher-list  ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
trusted-cas-file cacert.pem
actionsfile https-enable.action

forward-socks5 example.ru/balala.*jpg$ 192.168.96.12:11014 .

toggle 0
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forwarded-connect-retries 0
accept-intercepted-requests 1
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
tolerate-pipelining 1
socket-timeout 300

Тут я пытаюсь перенаправлять запросы «example.ru/balala.*jpg$» через сокс-прокси «192.168.96.12». Остальное все уходит через дефолтный шлюз.

Вот файл https-enable.action

{+limit-connect{-}}                     # All ports are OK
{+limit-connect{,}}                     # No HTTPS/SSL traffic is allowed

{+https-inspection \
 +ignore-certificate-errors }
example.ru

В мануале есть замечание, что

Note that the action has to be enabled based on the CONNECT request which doesn’t contain a path. Enabling it based on a pattern with path doesn’t work as the path is only seen by Privoxy if the action is already enabled.

Только я не понял, это надо как-то в конфиге подключить или это просто описание процесса? Может кто пользовался уже и знает в чем проблема?

Алтернативные решения приветствутся. Главное, чтоб софт под Linux работал.

 , , ,

bigov
()

wireguard

Кто-нибудь пробовал (НА ПРАКТИКЕ) объединить две подсети от двух wg-серверов, чтоб хосты из разных подсетей друг-друга «видели»? Маршруты с двух сторон на хостах прописаны, «соседние» подсети в интерфейсах добавлены - глухо.

tcpdump на граничном хосте показывает, что пакеты с интерфейса уходят в соседнюю подсеть. Но до целевого хоста не долетают. Похоже, что wg-сервер их дропает, а на нем IP не прописан (маршрут не добавить).

PS: теоретики, советов не надо, если нет ссылки на описание практической реализации.

 , ,

bigov
()

mitmproxy

Всем привет! Кто юзал сабж, подскажите умеет ли он кэшировать статику (для экономии трафика), как squid например?

 , ,

bigov
()

Debian сборка

Привет, народ!

Кто Дебиан хорошо знает, подскажите как проще собрать свой автономный установщик, которому для разворачивания новой системы с подобранным предустановленным ПО не требуется интернет?

 , ,

bigov
()

Отложенный старт сетевого интерфейса

Всем привет!

Народ, вопрос для тех кто понимает как управлять загрузкой сетевых интерфейсов.

На Дебиане по USB подключено несколько модемов, которые при загрузке создают сетевые интерфейсы eth1, eth2, eth3. Я по событию if-up (/etc/network/if-up.d/my-init) на этих интерфейсах запускаю скрипт инициализации нужных сервисов, привязанных к ним.

Вопрос: как управлять очередностью их запуска в зависимости друг от друга в нужной мне последовательности?

 ,

bigov
()

gcc -no-pie on clang

Привет всем!

Собираю приложение из нескольких модулей при помощи cmake. Чтобы из файлового менеджера в иксах бинарник «запускался» кликом мышки, указываю для «CMAKE_CXX_FLAGS» одним из параметров "-no-pie". При сборке GCC проблем нет. Но тут захотелось нового...

Пытаюсь собрать clang-ом с параметром "-fno-PIE", все модули выдают ошибку:

/usr/bin/ld: CMakeFiles/appdbg_clang.dir/src/io.cpp.o: перемещение R_X86_64_32 для «.rodata.str1.1» не может использоваться при создании объект PIE; recompile with -fPIE

и результирующий файл не собирается. А без "-fno-PIE" файл собирается как исполняемый, но не кликабельный из иксов.

Кто имеет опыт работы со «шлангом», подскажите, что почитать?

---

РЕШЕНИЕ: использовать в CMakefile.txt не «CMAKE_CXX_FLAGS», а опцию:

SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie" )

Рабочий пример кода можно посмотреть тут: https://github.com/bigov/daft-lib/tree/master/gui_samples/gtkmm

 ,

bigov
()

Linux на USB3 HDD

Привет всем!

Настроил Арчика на внешнем SSD Samsung 500Gb [USB-3.0 Box «Transcend» с SATA контроллером], системный раздел ext4. Все летает, как на «внутреннем» диске. Одна проблема: диск периодически отваливается - полностью, со всеми последствиями, и никаких логов. Работа восстанавливается только рестартом компьютера.

В БИОСе все опции энергосбережения, какие нашел, повыключал, в ОС тоже все, что связано в энергосбережением выключено. К самому Арчику вопросов нет: пользуюсь не первый год в нескольких местах - на разу ничего похожего не случалось.

Подозрение, что косячит контроллер «Transcend». Кто-нибудь сталкивался с подобной проблемой, как диагностировать и можно ли лечить?


РЕЗЮМЕ: Помогла только замена HDD-бокса.

P.S.: внезапно выснилось, что на некоторых «старых» мамках (HP 2009 г.) из бокса USB-3.1 ядро не загружается.

31 июля 2013 года USB 3.0 Promoter Group объявила о принятии спецификации следующего интерфейса, USB 3.1, скорость передачи которого может достигать 10 Гбит/с.

Загрузчик отрабатывает, а в момент старта ядра индикатор питания бокса выключается и все останавливается. На более новых мамках с поддержкой USB 3.1 все OK. При использовании бокса USB-3.0 (DEXP) никаких проблем не возникло - двое суток, полет нормальный.

 

bigov
()

USB3 bootable & mountable

Привет всем! Нужен специалист по модулям ядра.

Я сделал аварийную мультизагрузочную USB-3 флэшку на Archlinux с загрузчиком grub и несколькими разделами. Загрузочный раздел (UEFI + legacy) в fat32, система установлена на разделе ext4. Загрузка прекрасно работает и в режиме UEFI и в легаси, но только когда флэшка в порту USB-2.

В порту USB-3 загружается grub, стартует ядро и останавливается из-за ошибки монтирования системного раздела в корень файловой системы. Ядро не видит раздел диска, подключенный через порт USB-3. Пробовал на разных компьютерах и ноутах - результат одинаковый.

Подскажите, кто в курсе, где можно найти информацию с описанием функционала подключаемых модулей ядра? Думаю, нужно просто грамотно добавить в initrd модуль поддержки интерфейса USB-3.

P.S. Решение:

Два модуля в initrd - «xhci-hcd» (USB-3) и «ehci-hcd» (USB-2), позволяют без проблем монтировать корневой раздел, размещенный в любом USB порту. Можно еще добавить «ohci-hcd», если ожидается использовать USB-1.1

В ArchLinux модули вносятся в файл «/etc/mkinitcpio.conf» как параметр: MODULES=(xhci_hcd ehci_hcd)

 , ,

bigov
()

Энергосбережение в X11 + virtualbox

Привет всем!

Есть виртуальная машинка (Archlinux с X11) под Virtualbox. Менеджеров рабочих столов нет, только иксы. Запускаю на ней графическое приложение из командной строки в формате:

$ xinit /usr/bin/application

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

 , ,

bigov
()

using FLTK

Привет всем, если у кого-то имеется опыт разработки на FLTK, дайте совет пожалуйста!

Пытаюсь реализовать для «Fl_Input» функционал редактирования как в терминальной строке - стрелками вверх/вниз подгружать историю ввода. Но засада с обработкой клавиш стрелок - не получается подвесить отдельный обработчик события на «стрелки» - приходится только полностью все события клавиатуры обрабатывать в собственном цикле. Или например такой вариант:


Fl_Simple_Terminal *Tty = nullptr;
Fl_Input* Input = nullptr;

/// callback
void cb(Fl_Widget*, void*)
{
  auto key = Fl::event_key();
  if(key == FL_Up) Tty->printf( "%s\n", "UP-key" );
  else if(key == FL_Down) Tty->printf( "%s\n", "Down-key" );
  else Tty->printf( "%s\n", Input->value() );
  Input->take_focus();
  return;
}

/// MAIN
int main(int, char**)
{
  ...
  Fl::option(Fl::OPTION_ARROW_FOCUS, true);
  Tty = new Fl_Simple_Terminal(0, 0, width, tty_h);
  ...
  Input = new Fl_Input(0, tty_h, width, input_h, nullptr);
  Input->callback(cb);
  ...

В таком варианте корректно обрабатывается только одно нажатие на стрелку сразу после ввода/удаления символа в строке ввода. Два нажатия подряд не работают. Что-то надо переключить в состоянии, но что? Или может использовать другой класс для ввода строки?

Ответ (спасибо, rymis):

#include <functional>
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Simple_Terminal.H>

Fl_Simple_Terminal *Tty = nullptr;
Fl_Input* Input = nullptr;

class History {
  public:
  void log (const char* msg){ Tty->printf( "%s\n", msg ); }
  void up  (void){ log("Up is pressed."); };
  void down(void){ log("Down is pressed."); };
  void add (const char* msg){ log(msg + 2); };
};

class MyInput : public Fl_Input {
    History hist;
public:
    template <typename...Args>
    MyInput(Args&&...args) : Fl_Input(std::forward<Args>(args)...) { }

    int handle(int ev) override {
       if (ev != FL_KEYDOWN) return Fl_Input::handle(ev);
       auto key = Fl::event_key();
       if (key == FL_Up) {
           hist.up();
           return 1;
       } else if (key == FL_Down) {
           hist.down();
           return 1;
       } else if (key == FL_Enter) {
           hist.add(value());
           value("$ ");
           return 1;
       }
       return Fl_Input::handle(ev);
    }
};

int main(int, char**) {
  int width = 500; int tty_h = 500; int inp_h = 24;
  Fl_Window *Win = new Fl_Window(width, tty_h + inp_h, "App");
  Win->begin();
  Tty = new Fl_Simple_Terminal(0, 0, width, tty_h);
  Input = new MyInput(0, tty_h - 3, width, inp_h, nullptr);
  Input->insert("$ ");
  Win->end();
  Win->resizable(Tty);
  Win->show();
  Fl::focus(Input);
  return Fl::run();
}

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

 ,

bigov
()

нюансы работы VIM

Привет всем! Кто постиг Вим, можете пояснить, почему (у меня) во время набора текста (в режиме вставки) при вводе символа открывающей угловой скобки < курсор не сразу переходит на позицию следующего символа, а с некоторой задержкой. Сбивает с ритма, можно-ли такое поведение отключить?

Я использую sintastic и completor. Если надо посмотреть мой конфиг, то он на https://bigov@github.com/bigov/vimfiles.git, плагины вложены как git submodule.

 ,

bigov
()

cmake & pkg-config

Всем привет!

Пишу приложение с wxWidgets. Подскажите пожалуйста, кто освоил cmake, можно-ли при помощи pkg_check_modules найти настройки для скомпилированых библиотек, расположеных не в «системных» папках, а в подкаталоге проекта - недавно вышел свежий релиз, а менять версию в системе чревато...

Какая-то настройка для поиска по командам, для примера, вида:

find_package( PkgConfig REQUIRED )
pkg_check_modules( WX31 wx_gtk2u_richtext-3.1 )

 

bigov
()

Подключение к X серверу удаленным клиентом

Привет всем.

Насколько я помню описание иксов, там написано, что X-сервер проектировался и разрабатывался как сетевой сервер, и в него (вроде как) ИЗНАЧАЛЬНО! заложена возможность подключаться удаленными клиентами.

Х.З, может я не в теме, но почему как начинаешь поиск как подключиться удаленно, то сплошь натыкаешься на советы типа: «установи VNC», «используй RDP» (мелкомягкого - я в шоке!), проброс портов «по SSH» ... и т.д.

Не могу сказать, что досконально «прошерстил» сайт http://www.freedesktop.org/wiki/, но так и не нашел ответ - как же это делается, и главное - ГДЕ это «заложено»?

Люди добрые, киньте ссылкой на мануал в первоисточник - как с пользовательской X&nix станции удаленно подключаться к X-серверу (без сторонних приложений)?

 ,

bigov
()

Emacs - подгрузка модулей для режима

Доброго дня всем! Бодаюсь с Emaсs, никак не осилю - документации тонны, а хочется все и сразу! Помогите пожалуйста, если кто в теме:

настроил я конфиг для работы с языком программирования Go (отдельным модулем):

(add-to-list 'load-path "~/.emacs.d/my-custom") ; папка с файлами настроек режимов
(require 'my-custom-go)

Все красиво и удобно! Тут тебе и синтаксис и грамматика и автодополнение, короче - все удобства в наличии. Но вот из-за того, что для режима работы с исходниками на Go требуется 12 дополнительных модулей, то Emaсs при загрузке чуть притормаживать стал. Конечно, 2 секунды - это ерунда, но стало мне любопытно, ведь я же с кучей языков еще работаю - плюсы, питон, java, веб-скрипты, шелл, конфиги всякие... И если я не 12 а 120 модулей со временем на него загружу, то как он «взлетать» то будет?

Вроде бы самое очевидное решение - подгружать конфиги по мере необходимости (при помощи хука):

(add-to-list 'load-path "~/.emacs.d/my-custom") ; папка с файлами настроек режимов
(add-hook 'go-mode-hook (lambda () (require 'my-custom-go))

Но так не работает. ЧЯДНТ??

---

Спасибо за подробные и полезные советы, особенно товарищу «amd_amd». Всегда любил ЛОР за его тонкий юмор! На самом деле надо использовать функцию:

(add-to-list 'load-path "~/.emacs.d/my-custom") ; папка с файлами настроек режимов
(add-hook 'go-mode-hook (load "my-custom-go.el"))

Странно, что об этом господа «советчики» не знают.

 

bigov
()

Emacs настройка отступов

Привет всем.

Кто знает/помнит такие настройки Emacs, подскажите пож-ста, как настроить пользовательский конфиг, чтоб по клавише «Tab» он не умничал, перепрыгивая в позицию первого пробела верхней строки, а тупо (это я ляпнул «сгоряча») вставлял заданное количество заданных пробельных символов?

А то по «C-h a indent» вываливает кучу статей на чужом языке, где фиг что найдешь ;-)

а вот это не помогает

(setq-default tab-width          4)
(setq-default c-basic-offset     4)
(setq-default standart-indent    4)

---

спасибо активной помощи Zmicier.

 , ,

bigov
()

GPG: плохая подпись GNU

Привет всем!

Я работаю несколько лет под Арчиком, но никогда раньше не пользовался Имаксом. На прошлой неделе что-то «накатило» - плотно занялся его освоением и попутно Лиспом (куда же без него и Имаксе?).

И вот уже несколько раз попадаются мне предупреждения gpg о неверной подписи или отсутствии ключа и невозможности ее проверить. Крайний раз при установке пакета ORG:

Failed to verify signature org-edna-1.0alpha1.tar.sig:
Bad signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org>
Command output:
gpg: [don't know]: indeterminate length for invalid packet type 14
gpg: Подпись сделана Вт 30 май 2017 06:05:03 +09
gpg:                ключом DSA с идентификатором 474F05837FBDEF9B
gpg: ПЛОХАЯ подпись пользователя "GNU ELPA Signing Agent <elpasign@elpa.gnu.org>" [неизвестно]

Но проблема, похоже, не в Эльпе. Потому что:

$ curl -O https://beta.quicklisp.org/quicklisp.lisp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 57144  100 57144    0     0  28572      0  0:00:02  0:00:02 --:--:-- 21410
[07:29 ib@alzs] ~/files
$ curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   882  100   882    0     0    882      0  0:00:01 --:--:--  0:00:01   923
[07:29 ib@alzs] ~/files
$ gpg --verify quicklisp.lisp.asc quicklisp.lisp
gpg: Подпись сделана Чт 29 янв 2015 05:13:26 +08
gpg:                ключом RSA с идентификатором 307965AB028B5FF7
gpg: Не могу проверить подпись: Нет открытого ключа

Ладно, думаю. Хоть в мои планы и не входило изучать как работает GPG, тем не менее пробежал по хелпу, полистал маны на оф. сайте. Выяснил - нужно импортировать открытый ключ. Нашел там-же: https://beta.quicklisp.org/release-key.txt. Импортировал... Оно снова матерится, еще страшнее:

$ gpg --verify quicklisp.lisp.asc quicklisp.lisp
gpg: Подпись сделана Чт 29 янв 2015 05:13:26 +08
gpg:                ключом RSA с идентификатором 307965AB028B5FF7
gpg: Действительная подпись пользователя "Quicklisp Release Signing Key <release@quicklisp.org>" [неизвестно]
gpg: Внимание: Данный ключ не заверен доверенной подписью!
gpg:           Нет указаний на то, что подпись принадлежит владельцу.
Отпечаток первичного ключа: D7A3 489D DEFE 32B7 D0E7  CC61 3079 65AB 028B 5FF7

Что за «танцы с бубнами» на пустом месте? Нахрена вся эта навороченая безопасность с подписями которая не работает, или я чего-то «не догоняю»?

Кто-нибудь знает, в чем причина, и как поступать в таких случаях?

 , ,

bigov
()

проблема с добавлением группы пользователю

Привет админам!

Кто-нибудь сталкивался с такой проблемой: после добавления пользователю членства в новой группе клиентское подключение по ssh не видит добавленной группы:

$ ssh www_server -l ershin
$ whoami
ershin
$ pwd
/usr/home/ershin
$ groups 
ershin wheel prog
$ groups ershin
ershin wheel www prog

Тут по ssh пользователь не видит своего членства в группе www, и соответственно не получает предоставляемых членам этой группы прав на файлы. Но если авторизуется локально (из аппаратной консоли сервера) - все группы отображаются корректно и набор прав доступа соответствует. Кто-то знает, что это за грабли?

---

Выяснено, что проблема в кэшировании параметров SSH-сессий на стороне клиента. Решается [грубо] перезагрузкой клиентского хоста, хотя наверняка есть и более корректное решение.

 , ,

bigov
()

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