Обновить
148.08

Настройка Linux *

Вечный кайф

Сначала показывать
Порог рейтинга

Еще один вариант маршрутизации трафика через два сетевых интерфейса на основе списка доменных имен.

Сразу оговорюсь: все лучшие и хорошие варианты решения этой проблемы уже были рассмотрены на Хабре. Но для тех, кто использует linux и кого существующие варианты почему-либо не устраивают, предлагаю рассмотреть еще один.

Краткое содержание: ставим локальный dns resolver с плагином на python, который, при разрешении имени в адрес, устанавливает маршрут через альтернативный интерфейс, если адрес соответствует регулярному выражению. Для использования решения требуется умение сконфигурировать и запустить сервис в вашем любимом дистрибутиве/сервис-менеджере, готового пакета для установки нет.

При написании кода использовалась статья Составляем DNS-запрос вручную, огромное спасибо автору и переводчику.

Для реализации идеи нужен ДНС сервер, который позволяет достаточно просто писать плагины/хуки. Первым попавшимся на глаза был PowerDNS Recursor, который позволяет писать плагины на lua. И первая реализация была для него. Но lua это больше про компактность, чем про удобство, например, поддержку регулярных выражений можно так назвать только из вежливости. Тем не менее, всё работало как предполагалось, и достаточно надежно, пока не был найден Unbound DNS который позволяет писать плагины на python, и, в итоге, был написан аналог на питоне, который и предлагаю вашему вниманию.

Все файлы доступны на github. Файлов всего 5 и все достаточно короткие.

Файл reroute.conf: пример файла конфигурации ДНС сервера. 192.168.0.1 и 172.16.17.1 — это адреса маршрутизаторов для первого и второго интерфейсов, соответственно. /etc/unbound/reroute.py — собственно плагин выполняющий основную работу. Из существенных моментов: chroot необходимо отключить, чтобы могли нормально работать скрипты на python и сервис должен работать от root чтобы добавлять маршруты.

Файл reroute.py — плагин, который выполняет необходимые дествия, reroute_conf.py — файл конфигурации для плагина, можно записать оба параметра прямо в плагин и обойтись без него. Вся работа выполняется в функции do_reroute, весь остальной код взят, практически без изменений, из документации unbound dns.

Файл rrdomains.txt — список регулярных выражений в формате python regex, при совпадении с которыми для всех ip-адресов разрешаемого доменного имени выполняется установка альтернативного маршрута.

Файл bashrc содержит определение функции reroute. Если во время работы наткнулись на сайт, для которого необходима маршрутизация через второй интерфейс, можно воспользоваться быстрым перенаправлением с помощью команды reroute в терминале. Или добавить доменное имя или регулярное выражение для него в rrdomains.txt и перезапустить dns сервер.

На этом всё, успешного маршрутизирования!

Теги:
+2
Комментарии0

@Regnar, навеяло статьёй

Свалился на меня «последний из 32-битных могикан», но машинка прямо финал возможностей архитектуры — насколько я понял, видит спокойно 8 гигов рамы (PAE во все поля?), слотов не пожалели, в общем, в такое чудо бы камень хотя бы на 2 ядра, но, увы…

Я его практически не смотрел ещё и ХЗ когда посмотрю (вроде не совсем мёртвая), но превентивно задам вопрос. Допустим, поставил я туда 32-битный BunsenLabs. Допустим, я хочу запустить какое-нибудь 64-битное приложение, которое в 32 битах давно уже не обновляется. Допустим, мне пофиг, что там в плане скорости (очень важное допущение, потому что оно как бы понятно, что там будет).

Насколько это реально — настроить для него резервативию… презервацию… короче, специально обученный загон с софтовой эмуляцией 64 бит? Существуют ли решения? Чтобы их установить и отконфигурировать, обязательно пройти все круги ада, как в той статье?

Практического смысла это по понятной причине не несёт — просто пятничное.

Теги:
-2
Комментарии0

Привет, Хабр! Наступила очередная пятница, поэтому я несу полезные материалы на выходные для тех, кто хочет получше освоить Ubuntu. Информация по ссылкам довольно базовая, для начинающих. Все бесплатно, без регистрации и смс. Поехали!

Теги:
+3
Комментарии0

Домашняя лаба на ARM64 с Incus на Ubuntu

Я постепенно перевожу свою домашнюю лабораторию с x86 на ARM последние несколько месяцев. Причины простые: на ежедневной машине у меня Mac на Apple Silicon, так что разработка под ARM64 воспринимается естественно; инстансы на Graviton обычно дешевле; и ARM64 машины намного экономичнее по энергопотреблению, что делает круглосуточную домашнюю лабораторию дешевле по электричеству и выделяет значительно меньше тепла. После нескольких лет работы с мини‑ПК Shuttle на Intel я решил перейти всерьёз и сразу после релиза заказал два Minisforum MS‑R1 - в каждом 12‑ядерный ARM64 SoC и 64 ГБ ОЗУ.

Машины приехали 29 ноября. В тот же день вышел Incus 6.19. Я хотел как можно быстрее поднять хотя бы одну коробку, поэтому установил Ubuntu 24.04.3 (arm64), поставил Incus 6.19 и потратил пару часов, чтобы контейнеры запускались и вели себя как надо. Для повседневной работы с контейнерами переход оказался удивительно плавным.

Но железо редко ведёт себя с первого раза так, как ожидаешь. MS‑R1 идет с двумя RTL8127 10‑Gbit сетевыми картами, и из коробки стандартное ядро Ubuntu их не увидело. Первой мыслью было поставить mainline ядро - я установил 6.16, драйверы RTL появились, начали мигать сетевые индикаторы, и я с облегчением выдохнул.

Это облегчение оказалось недолгим. Используемое мной mainline ядро устроено так, что опция MODULES в kernel не включена, чтобы DKMS смог собрать модуль ZFS, который мне нужен для Incus. Пересобирать всё ядро показалось чрезмерным, пока я не обнаружил, что у Zabbly (разработчик Incus) есть собственный репозиторий кастомных ядер для Ubuntu и соответствующие пакеты ZFS. Переход на ядро от Zabbly решил 2 проблемы: драйвер RTL8127 и пакеты ZFS, которые устанавливаются через DKMS. В этот момент Incus, сеть и ZFS pool заработали нормально.

Остались две проблемы - обе странные, обе упрямые и обе порождают больше вопросов, чем ответов.

Первая касается локального дисплея. После загрузки с ядром Zabbly система жива и доступна по SSH, но подключённый HDMI‑монитор не обновляется дальше стартового изображения BIOS. Экран зависает на заставке BIOS, в то время как ядро и userspace тихо продолжают загрузку в фоне. Пока не нашёл явных сообщений об ошибках в привычных логах, которые указывали бы на конкретный драйвер.

Вторая проблема - с виртуальной машиной Windows 11. Я попытался поставить Windows 11 ARM64 под Incus по тем же шагам, что и на x86‑64 хостах. Процесс VM стартует, но зависает на экране BIOS/UEFI и не доходит до инсталлятора. Моя первая гипотеза - отсутствует или неправильно сконфигурирована aarch64 UEFI прошивка, либо нужна какая‑то конкретная опция machine/cpu для Windows on ARM. Но ещё не пришёл к выводу, падает ли прошивка молча или она просто ждёт чего‑то, чего я не передал.

Что пробовал уже - практично, но пока не окончательно. Установка mainline ядра решила проблему с NIC; переход на ядро Zabbly решил и NIC, и ZFS. Могу подключиться по SSH к хосту при зависшем дисплее, значит это не полная паника ядра. Для ВМ вижу процесс qemu, но экран не двигается дальше BIOS.

Если кто‑то сталкивался с подобным, буду признателен за опыт и решения. Несколько конкретных вопросов, по которым надеюсь на помощь сообщества:

  • Кто‑нибудь видел ситуацию, когда HDMI‑дисплей после переключения на кастомное ядро arm64 "замораживается" на заставке BIOS и не обновляется дальше, хотя ОС при этом загружается?

  • Что я упустил для запуска Windows 11 (aarch64) под Incus/QEMU на Ubuntu?

Помогите, если есть опыт!

Теги:
+1
Комментарии13

Привет, Хабр! Новая пятница — новые знания для начинающий специалистов! Сегодня у нас небольшая подборка инструкций по работе с командами в Linux. Пригодится будущим и начинающим системным администраторам. Как всегда, все материалы доступны бесплатно и без регистрации. Поехали!

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

Теги:
+2
Комментарии0

Самый простой способ сообщить об успешном подключении по SSH

Всем привет! Вообще-то, обычно решают обратную задачу - сообщить о неудачных попытках подключения по SSH, а еще лучше - сразу заблокировать. С этим прекрасно справляет, например, Fail2ban, но, рассказ не о нем. Может оказаться полезно получать уведомления именно об успешных подключениях, особенно, в тот момент, когда сам НЕ подключаешься. Так же, хочется сделать это с наименьшими усилиями, без написания скриптов, без установки специфического ПО, что бы было легко "скопипастить" решение на множество систем. Так же, хочется знать не тoлько о подключениях, получивших shell, но и о удаленном выполнении команд, или копировании файлов по протоколу SSH.

Все есть в этом решении:

$ sudo apt install curl

$ sudo nano /etc/pam.d/sshd

оставьте, все, что было в этом файле и добавьте в конец:

session optional pam_exec.so /bin/bash -c (echo${IFS}Subject:ssh-${PAM_USER}@$(hostname)-${PAM_RHOST};/usr/bin/env)|/usr/bin/curl${IFS}smtp://mailhub.yourcorp.ru${IFS}--mail-from${IFS}noc@yourcorp.ru${IFS}--mail-rcpt${IFS}yourlogin@yourcorp.ru${IFS}--upload-file${IFS}-

Да, этого достаточно!

Как оказалось, curl умеет отправлять почту, в сообщении будут присутствовать все подробности, кто, когда, откуда подключился, и, даже, когда отключился. Правда, в этом решении требуется корпоративный почтовый сервер (mailhub.yourcorp.ru в нашем "однострочнике"), готовый принять письмо без аутентификации. Это допустимо, если он же является конечным сервером с ящиком пользователя, или, есть разрешение пересылки писем из корпоративной сети (в этом случае можно использовать любой другой почтовый адрес, вместо yourlogin@yourcorp.ru). Однако, такой сервер не всегда имеется, и решение не годится для персонального использования.

В этом случае, предлагаю Вам вебинар , демонстрирующий решение той же задачи, с отправкой сообщений в Telegram

На этом все, спасибо, буду рад ответить на вопросы!

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Linux Mint 22 - KiCad-5 с GUI и графическим ускорением на карте AMD в Docker-контейтере.

При перезде с Минт-20 на Минт-22 мне захотелось сохранить возможность полноценной работы с проектами выполнеными в KiCad-5, без конвертации их в формат KiCad-9 на который я плавно мигрирую при перезде на Минт-22. Специфика в том, что KiCad-5, в том числе в виде AppImage на Минт-22 запускаться категорически не хочет.

Из возможных вариантов выбрал для себя запуск KiCad-5 в Docker-контейтере, с пробросом графики через X11. За основу взял эту реализацию. Добавил к ней проброс графического ускорения(без него GUI будет подтормаживать) своей карты AMD, русификацию, и Firefox, для плагина InteractiveHtmlBom. В итоге получился вот такой dockerfile:

FROM linuxmintd/mint20-amd64

ENV LANG=ru_RU.UTF-8

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y nano sudo keyboard-configuration software-properties-common x11-apps xdg-utils \
    locales language-pack-ru-base language-pack-ru xed xed-dbg firefox firefox-locale-ru && \
    update-locale LANG=ru_RU.UTF-8

RUN add-apt-repository --yes ppa:kicad/kicad-5.1-releases && \
    apt-get update && \
    apt-get install --no-install-recommends -y kicad kicad-locale-ru kicad-doc-ru

# Укажите здесь используемые на вашем хост-компьютере
# имя пользователя, идентификатор пользователя и идентификатор группы.
ENV USER_NAME=vasily
ENV UID=1000
ENV GID=1000

ENV HOME=/home/${USER_NAME}
ENV XDG_RUNTIME_DIR=/tmp/runtime-${UID}


RUN mkdir -p ${HOME} && \
    echo "${USER_NAME}:x:${UID}:${GID}:USER_NAME,,,:${HOME}:/bin/bash" >> /etc/passwd && \
    echo "${USER_NAME}:x:${UID}:" >> /etc/group && \
    echo "${USER_NAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${USER_NAME} && \
    chmod 0440 /etc/sudoers.d/${USER_NAME} && \
    chown ${UID}:${GID} -R ${HOME}

USER ${USER_NAME}

# Раскомментируйте программу, которую вы хотите запустить в контейнере.
#ENTRYPOINT ["eeschema"]
ENTRYPOINT ["kicad"]

Обратите внимание, что значения USER_NAME, UID, GID, в строках 17, 18, 19 в dockerfile берутся из вашего аккаунта на хост-машине.

Образ создается как обычно выполненой в открытом в одной директории с dockerfile терминале командой(не забываем пробел и точку в конце команды):

docker build -t kicad5 .

Размер образа получаеться около 800 Мбайт.

Скрипт для старта контейнера на машине с графической картой AMD:

#! /usr/bin/env bash

docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /usr/share/kicad5:/usr/share/kicad -v $HOME:$HOME --device=/dev/dri:/dev/dri kicad5

До первого запуска контейнера:

1). Создаете в Минт-22 директорию /usr/share/kicad5 и копируете туда содержимое /usr/share/kicad из Минт-20 с установленным kicad5

2). Копируете содержимое $HOME/.kicad_plugins из Минт-20 с установленным kicad5 в $HOME/.kicad_plugins в Минт-22

3). Копируете содержимое $HOME/.config/kicad/ из Минт-20 с установленным kicad5 в $HOME/.config/kicad в Минт-22

Теперь можете запускать KiCad-5 с GUI и графическим ускорением на карте AMD в Минт-22 и паралельно установить в Минт-22 KiCad-9.

Чтобы заархивировать созданный образ выполняем в терминале:

docker save -o ./my_bac_kicad5_image.tar kicad5

Чтобы развернуть заархивированый образ на другом машине выполняем в терминале, открытом в одной директории с файлом my_bac_kicad5_image.tar, на нее скопированном:

docker load -i ./my_bac_kicad5_image.tar
Теги:
Рейтинг0
Комментарии0

Selectel выпустил заключительную часть курса «Системный администратор Linux»

Модули курса выходили постепенно, и недавно вышел последний — теперь обучение доступно целиком. Финальная часть посвящена настройке сетей, управлению пакетами и логами, а также работе с контейнерами.

Курс полностью бесплатный и не привязан к датам — можно изучать материалы в комфортном темпе.

После завершения вы получите сертификат. Как его оформить — рассказываем в последнем уроке. 

Начните изучение по ссылке ➡️

Теги:
Всего голосов 6: ↑6 и ↓0+10
Комментарии0

Как устроен livepatch-модуль для ядра Linux

С точки зрения пользователя (в данном случае человека, отвечающего за обновления данной Linux-системы) лайвпатч — это просто модуль ядра Linux, в котором содержится как минимум следующее: 

  • исправленный код одной или более функций из vmlinux и/или из модулей ядра,

  • метаданные, указывающие, как применить эти исправления к соответствующим компонентам ядра Linux. 

Чтобы применить лайвпатч-обновление, нужно загрузить этот модуль ядра, например, с помощью insmod или modprobe, а затем активировать его, как правило, через sysfs. 

При этом старый код ядра Linux (тот, который хотим обновить) и новый (тот, что в лайвпатч-модуле) сосуществуют в памяти системы. Это дает возможность при необходимости отменить лайвпатч-обновление в runtime: деактивировать его через sysfs, а затем выгрузить лайвпатч-модуль.

Важный момент: если используются средства для работы с лайвпатчами из mainline-ядра, то при активации и деактивации лайвпатч-обновлений работающие процессы не нужно завершать или даже останавливать на сколько-нибудь существенное время.

Примечания:

  • У TuxCare / KernelCare лайвпатчи поставляются в другом, проприетарном, формате, но мы его рассматривать не будем.

  • Для некоторых архитектур, например RISC-V, при активации и деактивации патча вызывается stop_machine(), то есть работающие процессы при этом все-таки останавливаются на некоторое время. Начиная с версии 6.16 ядра Linux, для RISC-V stop_machine() уже, вероятно, не будет использоваться в таких ситуациях.

Все, что нужно знать о лайвпатингче для ядра Linux, вы найдете в цикле статей: от подготовки лайвпатча до работы на x86, ARM и RISC-V.

Читать первую часть →

Читать вторую часть →

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Настройка КриптоПро HSM Client на Suse/RedHat/ROSA Linux

Подготовили пошаговую подробнейшую инструкцию со скриншотами для разработчиков информационных систем со встроенными СКЗИ по настройке КриптоПро HSM Client на Suse, RedHat и ROSA Linux (включая ошибки, которые позволяет обойти данное руководство) для того, чтобы использовать HSM как самостоятельный криптографический провайдер с выполнением всей математики на борту или в качестве надежного хранилища ключевого материала.

Заходите, читайте, сохраняйте в закладках.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Хэндлим обработку некорректного ввода в ZSH для поднятия настроения

Сегодня хочу рассказать о том, как немного разнообразить времяпрепровождение в консоли, добавив немного юмора, если ваша командная оболочка zsh.

Все, кто работает в терминале (эмуляторе терминала, чтобы меня тут не покусали в комментариях :)), думаю, периодически сталкиваются с тем, что вводят команду неправильно. Например, есть шуточная команда sl, которая рисует движущийся поезд, если вы случайно опечатались, когда хотели набрать команду ls.
Это служит некой разрядкой и поводом лишний раз улыбнуться. Вот репозиторий этой утилитки на GitHub для любознательных.

А что, если мы хотим, чтобы на ввод любой несуществующей команды, мы получали что-то аналогичное выводу команды sl? По умолчанию в ZSH в этом случае выводится сообщение “command not found”. Давайте это исправим.

Для этого нам понадобится:

  • непосредственно zsh в качестве командной оболочки;

  • cowsay - утилита командной строки, которая рисует разные фигурки, которые как бы говорят, наподобие героям комиксов.

  • lolcat - утилита для разукрашивания текста градиентом, добавления анимации и т.д.

В ZSH предусмотрена возможность переопределять поведение при возникновении каких-то ситуаций, в том числе, переопределение поведения при возникновении ошибок. В нашем случае нам нужно переопределить вывод, когда команда, вводимая пользователем не найдена. Для этого будем использовать метод command_not_found_handler. Добавим в .zshrc файл следующий код:

command_not_found_handler() {    
  cowsay -f tux "LOL! Command not found: $1" | lolcat -a -s 150
  return 127
}

Немного пояснений: первая строка будет рисовать там пингвина, говорящего, что введенная нами команда не найдена, пингвин будет появляться построчно (150 - скорость появления). Более подробно с доступными параметрами lolcat можно ознакомиться, набрав man lolcat. 127 - это код, который zsh отправляет по умолчанию, сохраним это поведение.

Вот так примерно это выглядит:

Ну вот, собственно говоря, и все. Мелкие моменты, которые нас окружают в повседневности, делают нас (по крайней мере меня) чуточку счастливее :)

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Isar и еще 8 систем сборки для создания дистрибутива на Linux

Isar — система сборки, представляющая собой набор скриптов для создания пакетов и дистрибутивов на базе Debian с возможностью настройки. Организация проекта Isar похожа на Yocto Project, для сборки используется Bitbake.

Перед сборкой можно настроить параметры файловой системы, ядра, модификации списка пакетов (добавление и удаление пакетов, в том числе и собственных, изменение существующих пакетов). Систему сборки разрабатывает компания ilbers GmbH.

Архитектура системы

Так как Isar основан на Bitbake, архитектура решения состоит лишь в нескольких слоях для Bitbake, реализующих сборку и установку пакетов в соответствии с конфигурацией сборки. В основе всех этих слоев и рецептов лежат утилиты Debian Build Toolchain, которые ответственны за непосредственную сборку пакетов, разрешение зависимостей и т.д.

Как проходит процесс сборки дистрибутива в Isar
Как проходит процесс сборки дистрибутива в Isar

Особенности решения

  • Аналогично Yocto требует усилий на начальных этапах для освоения инструмента.

  • Поддерживает загрузку готовых пакетов из репозиториев Debian.

  • Подходит для embedded-дистрибутивов, где необходимо сочетание Debian-экосистемы и глубокой конфигурации.

О других embedded- и desktop-решениях решениях рассказали студенты и преподаватели СПБГЭТУ «ЛЭТИ» в обзоре систем для создания Linux-дистрибутивов.  

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Решение проблемы с bluetooth-гарнитурой Fedora

Возникала проблема: не воспроизводился звук через Bluetooth-гарнитуру.

  • Изначально не было подключения

  • Потом звук был прерывистый и работал только через гарнитуру (HFP), а не A2DP

  • Плюсом к тому, нигде не находилась та самая "таблетка от всего".

Что имеем

Для начала расскажу о том, какой у меня дистрибутив. В качестве дистрибутива - Fedora (Workstation Edition)

neofetch
neofetch

Что было сделано

Методом проб и пыток, вынес некоторое решение, которое на данный момент работает:

  • Установка проприетарных репозиториев

  • Установка пакетов/драйверов

  • Очищение всех ошибочных конфигураций

<spoiler>Не знал, что изначально проприетарные драйвера недоступны и некоторые репозитории отсутствуют, такие как RPMFusion</spoiler>

Установка проприетарных репозиториев

Для начала, я решил начать с проприетарных репозиториев, использовал данные команды:

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-41.noarch.rpm
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-41.noarch.rpm
sudo dnf install gstreamer1-plugins-ugly gstreamer1-plugins-bad gstreamer1-plugins-good gstreamer1-plugins-base

Установка пакетов

Дальше я принялся искать, какие пакеты мне нужны для правильной работы bluetooth-наушников, в итоге выкопал такой список:

sudo dnf install gstreamer1-plugins-ffmpeg
sudo dnf install ffmpeg
sudo dnf install alsa-plugins-pulseaudio --allowerasing
sudo dnf install gstreamer1-plugins-ugly gstreamer1-plugins-bad gstreamer1-plugins-good gstreamer1-plugins-base --allowerasing
sudo dnf install bluez-libs-devel
sudo dnf install bluez-tools
sudo dnf install pipewire pipewire-pulse pipewire-alsa pipewire-jack wireplumber
sudo dnf install pulseaudio-module-bluetooth-freeworld

Очистка ошибочных конфигураций

Желательно очистить все изменения, что вносились без этого руководства, в моем случае в конфигурации bluez блокировалось подключение a2dp

rm -rf ~/.config/pulse
rm -rf ~/.cache/wireplumber
systemctl --user restart wireplumber
sudo systemctl restart bluetooth

Примечание

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

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии1

Ближайшие события

Claude-desktop на Arch Linux

Дисклеймер: автор не несет ответственности за использование вами стороннего ПО из неофициального источника, вы устанавливаете ПО на свой страх и риск.

Введение

Всем привет, хотел бы рассказать вам о небольшом открытии для себя, а именно: установке claude-desktop на Arch Linux со всеми фичами, доступными Windows и MacOS пользователям. В принципе аналогично можно сделать для большинства других линукс дистрибутивов.

ссылка на пост в реддите с которого вроде как все началось (NixOS): https://www.reddit.com/r/ClaudeAI/comments/1hgsmpq/i_successfully_ran_claude_desktop_natively_on/

Спойлер: за нас с вами уже все сделали, нужно просто ввести пару комманд в терминале.

Все мы слышали про MCP и про то, как тулы можно интегрировать в ваши десктопные приложения такие как Claude-desktop, Cursor, Windsurf, VSCode, а также использовать в своих проектах при разработке агентных систем, значительно упрощая себе жизнь и разрешая ИИ-асситенту творить некоторые вещи с вашими данными.

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

Пререквезиты

Claude-desktop же чуть более заморочен. Он требует от вас иностранный номер и некоторых махинаций.

Давайте представим что эти проблемы вы решили либо самостоятельно, либо обратились к знакомым, либо посмотрели решения из этой статьи: статья.

Так или иначе у вас есть работающий аккаунт и прямой доступ к claude.ai из вашего браузера

Установка

Базово Claude использует электрон и отсутствие порта на Linux, как говорят в реддите, просто лень разработчиков.

Благо в опен сорсе есть множество решений, на которые мы можем обратить внимание, пакетов в aur настолько много что разбегаются глаза и не совсем понятно какой конкретно нужно ставить, а еще большая часть из них не поддерживается , а последний коммит был условно год-полгода назад, следовательно если у вас хоть что то из этого запустится - вам повезло.

Альтернативно, имея Wine на своей системе, вы сможете скачать Claude-desktop для Windows и использовать через Wine, однако это очень криво и неудобно, а еще ужасно лагает.

Я потратил некоторое время и нашел рабочий пакет, вот ссылка на него: https://github.com/aaddrick/claude-desktop-arch

для установки вам просто нужно выполнить ряд комманд:

# Clone this repository
git clone https://github.com/aaddrick/claude-desktop-arch.git
cd claude-desktop-arch

# Update checksums (needed once, or after PKGBUILD/install script changes)
updpkgsums

# Build and install the package
# This command automatically handles dependencies, builds, and installs
# Use makepkg -sci to automatically clean up build files afterwards
makepkg -si

Обязательно обновите checksums, иначе поймаете ошибку.

Профит

Скриншот с тулами
Скриншот с тулами

Теперь приложение Claude есть в списке доступных через ваш менеджер приложений. Учитывайте при запуске свою геолокацию и не забывайте о ней, чтобы избежать потенциальной блокировки со стороны Claude.

MCP

Доступно и работает из коробки, json для редактирования доступен в директории: ~/.config/Claude/claude_desktop_config.json

Не забудьте установить Nodejs и Uv/Python для запуска нужных вам тулов.

Дальше просто следуем документации от разработчиков MCP-сервера и ставим его, например mcp-filesystem из оффициальной доки: https://modelcontextprotocol.io/quickstart/user

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

После обновления конфига перезаходим в Claude и смотрим на появившиеся кнопочки с новыми тулами.

Да не все будет работать так гладко, как могло бы на Windows/MacOS, например puppeteer у меня запускает изолированный браузер и проверить его работу я могу только через просьбу сделать скриншот (полагаю проблема в том, что я рукожоп), тем не менее:
это работает на Linux.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Объявлено решении включить в состав выпуска GNOME 49 видеопроигрыватель Showtime, который станет поставляться под именем GNOME Video Player и будет задействован по умолчанию вместо видеопроигрывателя Totem (GNOME Videos).

Для желающих протестировать Showtime не дожидаясь осеннего релиза GNOME 49 подготовлен пакет в формате flatpak. Программа отличается минималистичным интерфейсом, отображаемым поверх содержимого и скрываемым во время просмотра. Поддерживаются типовые элементы управления, полноэкранный режим, изменение скорости воспроизведения, показ субтитров и создание скриншотов.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Недавно я задумался, а как создать systemd-timer для текущего пользователя без sudo прав, ведь c cron в этом вопросе проблем не было? Оказывается можно создавать локальные для пользователя systemd таймеры и сервисы и никакой root или sudo не нужны для создания файлов в /etc/systemd/system/ ! И как оказалось это касается не только таймеров и сервисов но и вообще всех сущьностей.

И так у меня есть задача конвертировать записи экрана сделанные с помощью Spectacle из vp9/webm в h264/mp4 и h265/mp4, так как он не умеет ещё в аппаратное энкодирование с GPU , а собственные записи в h264/mp4 крайне плохого кчества о чём был даже баг.

Создаём нужный подкаталог и сервисный файл:

mkdir -p ~/.config/systemd/user 
nano ~/.config/systemd/user/screencast-transcoder.service

Сам screencast-transcoder.service:

[Unit]
Description=Screencast Transcoder Script
After=graphical-session.target

[Service]
Type=simple
ExecStart=/home/user/.local/bin/sc_formater_nvenc.sh
Restart=on-failure
Environment=DEBUG=false

[Install]
WantedBy=default.target

Обновляем список и стартуем сервис:

systemctl --user daemon-reexec
systemctl --user daemon-reload
systemctl --user enable --now screencast-transcoder.service
systemctl --user status screencast-transcoder.service

Если надо, то смотрим логи:

journalctl --user -o short -n 10 -f -u screencast-transcoder.service

---

Если вдруг вам интересно, то скрипт выглядит так:

#!/bin/bash
set -euo pipefail
DEBUG=${DEBUG:-false}
if ${DEBUG}; then
    set -x
fi
DN="${HOME}/Videos/Screencasts"
while true; do
    if FN=$(inotifywait -e close_write,moved_to --format %f "${DN}"); then
        if [[ "${FN##*.}" == "webm" ]]; then
            INPUT="${DN}/${FN}"
            BASENAME="${FN%.webm}"

            # H.264
            ffmpeg \
                -hide_banner \
                -hwaccel cuda \
                -i "${INPUT}" \
                -c:v h264_nvenc \
                -cq 23 \
                -preset p7 \
                -f mp4 "${DN}/${BASENAME}.h264.mp4" &

            # HEVC / H.265
            ffmpeg \
                -hide_banner \
                -hwaccel cuda \
                -i "${INPUT}" \
                -c:v hevc_nvenc \
                -cq 23 \
                -preset p7 \
                -f mp4 "${DN}/${BASENAME}.hevc.mp4" &
        fi
    fi
done
Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии6

Хабр, привет!

Приглашаем на митап о карьере в Linux🐧.

19 марта эксперты компании и приглашенный гость — блогер Константин Дипеж (DeusOps) — обсудят профессиональный путь Linux-специалиста.

— как безболезненно «вкатиться» в Linux

— с чем откликаться на вакансию

— какие вопросы задают на техническом интервью

— как расти профессионально после оффера

— как развиваться в DevOps и не только

Приглашаем Linux-специалистов, которые видят зоны роста и хотят выйти на новый уровень профессиональной экспертизы

Во время дискуссии можно будет задать вопросы спикерам. За лучшие – обещаем мерч;)

Встреча пройдет онлайн, 19 марта в 18:00 (мск). Подробности и регистрация на сайте.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Много лет назад, устав от постоянных тормозов Windows, открыл для себя существование UNIX, точнее, FreeBSD. Иксовый десктоп, все программы - на том же компьютере всё летало заметно быстрее.
Даже Quake (да, он тоже работал во Фре).

Куда-то пропали все тормоза. К тому же всё оказалось проще настраивать - у каждой программы свой конфиг, и если что-то где-то даже настроил не так - все остальные программы от этого работать не перестают.
Да, пришлось переходить на совсем другой набор программ, далеко не все игры можно было запустить и так далее - но всё равно было быстрее и удобнее работать.

ИМХО, самое главное отличие было как раз вот в этом: в то время как в мире Windows активно продавливали идею "интегрированной среды", где всё вместе и взаимосвязано в монолит - там работал подход "одна задача - одна программа". И если программа не работает как хочется - меняется на аналог, не затрагивая всего остального.
Почти любую сложную задачу можно было разбить на отдельные мелкие и подобрать набор утилит для ее решения - как кто-то метко выразился - "стройная система костылей и подпорок".

И вот прошли годы. Уже Линукс (прежде всего из-за лучшей поддержки разного железа), Убунта, которая с каждой версией становилась всё замедленнее и усложненнее.

Видимо, программисты из мира Windows принесли своё вИдение прекрасного: появились D-bus, systemd, gsettings - теперь далеко не всегда можно поправить конфиг-файл от программы XXXX, а потом смотреть в лог /var/log/xxxx.log - нет, теперь настройки хранятся где-то в скрытом месте и меняются специальными командами, а лог полагается смотреть через специальную утилиту, и запускается всё это не простым скриптом типа пошагового выполнения /etc/rc.local, а набором команд systemctl, которые сработают или не сработают, в зависимости от наличия определенных файлов в нужных местах...

А самое главное - после проведенной "интеграции" всё стало тормозить и глючить.
Задумчивый Gnome медленно и печально открывает окошки - ага, с экраном повернутым на 90 градусов. Потому что новая "интересная фишка" - считывать датчик ориентации экрана, но считывается он не всегда правильно, а "просто закомментировать в конфиге" нельзя, можно только через меню, потом Сохранить, а потом настройка опять вдруг слетает после незаметного автообновления, которое как бы отключено, но не совсем...
Погодите-ка, что-то это мне напоминает? Шаманство, глюки, неустранимые достоинства, "слетевшие драйвера"...

Правда, можно повыключать всё это вместе с Гномом - и всё снова быстро летает: ок, так и сделал, вернул любимый WindowMaker, всё прекрасно.
Но вот обновление версии какой-то программы - а новая теперь только через flatpak, а ему теперь необходим d-bus, "если его нет можно поставить эмулятор", блаблабла...

Но зачем?! Зачем было делать из Linux такой же интегрированный сам в себя монолит, с неким "реестром" настроек и "системным журналом", в который нельзя просто так посмотреть?
Для этого уже есть Windows! Зачем тащить это сюда?

Теги:
Всего голосов 7: ↑5 и ↓2+4
Комментарии27

⌨️ КАСТОМНЫЙ МАППИНГ КЛАВИШ В ЛИНУКС: ПРЕВРАЩАЕМ IJKL В СТРЕЛОЧКИ

Для навигации в среде разработки я использую использую маппинг ijkl на стрелочки и оказывается можно сделать этот маппинг на уровне всей ос, а не только IDE.

Маппить будем с помощью xremap (подходит для Wayland и X, простая конфигурация в yaml, написан на расте).
Я буду показывать процесс настройки для федоры, но для других дистрибутивов он похожий.

🔧 Устанавливаем xremap из репозитория fedora copr

🔧 Создаем конфигурационный файл, который замапит клавиши ijkl на стрелочки при зажатом капсе:

virtual_modifiers:
  - CapsLock

keymap:
  - remap:
      CapsLock-i: Up
      CapsLock-j: Left
      CapsLock-k: Down
      CapsLock-l: Right
      CapsLock-h: Home
      CapsLock-semicolon: End
      CapsLock-u: PageUp
      CapsLock-o: PageDown

🔧 Тестируем работу с помощью команды:

sudo xremap /home/your-username/.config/xremap/config.yml

Если вам нужно определить название для клавиши запустите xremap в режиме дебага

sudo RUST_LOG=debug xremap /home/your-username/.config/xremap/config.yml

и нажмите эту клавишу.

🔧 Создаем сервис для работы xremap в фоне при запуске системы
Создаем файл с конфигурацией сервиса:

sudo nano /etc/systemd/system/xremap.service
[Unit]
Description=Start xremap

[Service]
Type=exec
ExecStart=xremap /home/your-username/.config/xremap/config.yml

Включаем сервис:

sudo systemctl daemon-reload
sudo systemctl start xremap.service

Включаем запуск xremap при старте компьютера:

sudo systemctl enable xremap.service

👨‍💻 Джуниор

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии1

Быстрое трудоустройство в YADRO для разработчиков на С++

У нас стартовал SPRINT OFFER в команду разработки телеком-оборудования. Для «плюсовиков» это возможность получить предложение о работе всего за несколько дней. Если хотите пропустить долгие этапы собеседований, отправляйте заявку до 9 марта. 

Как все происходит

  1. Подаете заявку — мы оперативно рассматриваем анкеты.

  2. Проходите HR-скрининг и техническое интервью — без недель ожидания между этапами.

  3. Получаете оффер — если все этапы успешно пройдены, предложение будет у вас в течение 3 дней.

Где предстоит работать 

Дивизион телекома создает решения для мобильных сетей. Инженеры разрабатывают базовые станции GSM/LTE, полный стек телекоммуникационных протоколов, а также системы управления и мониторинга. Большую часть кода разработчики пишут на C++. В зависимости от задачи они используют как современные возможности C++20, так и низкоуровневые оптимизации для повышения производительности.

Кого мы ищем

→ Software Engineer (Telecom Platform)

Требуемый уровень: middle, senior, tech lead.

Чем предстоит заниматься:

  • Разработкой платформы для базовых станций LTE/GSM (middleware, high availability, node management, delivery).

  • Проектированием архитектуры, работа с C++/Linux.

  • Интеграцией с аппаратной и программной частью системы.

  • Оптимизацией кода и решение проблем производительности.

  • Разработкой API, unit-тестирование, документация.

→ Software Engineer C/C++ (LTE/GSM)

Требуемый уровень: middle, senior, tech lead.

Чем предстоит заниматься:

  • Разработкой программного обеспечения для базовых станций LTE.

  • Реализацией стека протоколов 3GPP.

  • Интеграцией с другими системами, оптимизация кода.

  • Решением задач производительности и стабильности системы.

Подробнее о вакансиях и команде читайте на странице SPRINT OFFER. Успейте подать заявку до 9 марта!

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0
1
23 ...

Вклад авторов