LINUX.ORG.RU

Сообщения bigov

 

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

Форум — Linux-install

Всем привет! Проблема с перезаписью 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 - как заблокировать установку топовой версии пакета?

Форум — Admin

Всем привет! На 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 - длинный выхлоп

Форум — Admin

Привет админам! Такая проблемка - плэйбук ансибла раскидывает 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

Форум — Admin

Привет всем!

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

хочется фильтровать 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

Форум — Admin

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

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

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

 , ,

bigov
()

mitmproxy

Форум — Admin

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

 , ,

bigov
()

Debian сборка

Форум — Linux-install

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

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

 , ,

bigov
()

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

Форум — Admin

Всем привет!

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

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

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

 ,

bigov
()

gcc -no-pie on clang

Форум — Development

Привет всем!

Собираю приложение из нескольких модулей при помощи 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

Форум — Linux-hardware

Привет всем!

Настроил Арчика на внешнем 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

Форум — Linux-hardware

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

Я сделал аварийную мультизагрузочную 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

Форум — Desktop

Привет всем!

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

$ xinit /usr/bin/application

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

 , ,

bigov
()

using FLTK

Форум — Development

Привет всем, если у кого-то имеется опыт разработки на 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

Форум — Desktop

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

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

 ,

bigov
()

cmake & pkg-config

Форум — Development

Всем привет!

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

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

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

 

bigov
()

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

Форум — Desktop

Привет всем.

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

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

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

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

 ,

bigov
()

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

Форум — Desktop

Доброго дня всем! Бодаюсь с 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 настройка отступов

Форум — Desktop

Привет всем.

Кто знает/помнит такие настройки 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

Форум — Security

Привет всем!

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

И вот уже несколько раз попадаются мне предупреждения 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
()

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

Форум — Admin

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

Кто-нибудь сталкивался с такой проблемой: после добавления пользователю членства в новой группе клиентское подключение по 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 подписка на новые темы