У вас есть два линукс изделия (другие тоже будут работать, но вам надо гуглить зачем) между которыми вы ходите уметь общение.
Самый простой вариант это по ip
, но только один раз. Завтра изделие получит другой ip
и это никак не победить.
Самый простой вариант это добавить в /etc/hosts
файл алиас:
192.168.0.48 destination
А во всех скриптах использовать алиас, например:
$ scp kitty.gif user@destination:
Но ip
всё равно меняется. Но менять уже в одном месте. Но менять всё же надо.
Самый просто вариант это починить это установить локальный DNS сервер на сервере и сделать его главным в сети и проксировать все запросы через него нет такого.
А ведь было бы здорово не менять это вручную да?
В 2025 году 25 лет назад придумали Multicast DNS (mDNS) который через бродкаст запросы делает динамический распределённый локальный DNS
о котором не надо беспокоиться и который просто работает. Но только в одной сети. И только один хост на изделие.
В линуксе оно когда конвертирует слова-имена в цифры оно делает через сервис Name Service Switch
. У этого сервиса есть /etc/nsswitch.conf где ему указано где как искать:
> cat /etc/nsswitch.conf # Name Service Switch configuration file. # See nsswitch.conf(5) for details. passwd: files systemd group: files [SUCCESS=merge] systemd shadow: files systemd gshadow: files systemd publickey: files hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns networks: files
Для хостов оно говорит сначала искать в (mymachines) в локальных контейнерах.
Потом оно ищет в (systemd-resolved
) dns который заменил собой nss-dns
. Если DNS
возвращает недоступно, то конец, не искать.
Потом смотрит в /etc/hosts
, на локальный хостнейм и потом уже в легаси DNS
.
Занимательный факт: мы можем добавить ещё сервис в этот лист. Что если мы добавим Multicast DNS (mDNS)
?
Совершенно абсолютно очевидно что на каждом изделии мы будем делать и серверную, и клиенсткую части. Поэтому всё что ниже нужно сделать везде чтобы была гармония.
https://wiki.archlinux.org/title/Avahi
Устанавливаем пакет libnss-mdns в котором будет avahi
(мы добавим в NSS hosts
как сервис):
# pacman -Sy nss-mdns # emerge -av sys-auth/nss-mdns # sudo apt-get install libnss-mdns avahi-daemon avahi-utils
Дальше добавим /etc/nsswitch.conf строку mdns_minimal [NOTFOUND=return]
:
# hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns # hosts: mymachines mdns_minimal resolve [!UNAVAIL=return] files myhostname dns
[NOTFOUND=return]
говорит не искать дальше домены *.local
, это сломает локальные записи в /etc/hosts
поэтому можно удалить чтобы работало как раньше, но лучше.
Ещё можно перехватывать на только *.local
домены, но нам это не нужно. Для этого мы будем использовать /etc/hosts
Устанавливаем наш локальный домен в файле /etc/avahi/avahi-daemon.conf
и перезапускаем и проверяем:
$ cat /etc/avahi/avahi-daemon.conf | grep host-name host-name=source $ systemctl enable avahi-daemon.service # add to autorun $ systemctl restart avahi-daemon.service # run $ avahi-browse --all --verbose --resolve --terminate $ avahi-resolve-host-name source.local source.local 192.168.100.101 $ ping source.local PING source.local 56 data bytes 64 bytes from source.local : icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from source.local : icmp_seq=2 ttl=64 time=0.067 ms 64 bytes from source.local : icmp_seq=3 ttl=64 time=0.056 ms ^C
Проблема в том что у нас может быть 1 хост на одно изделие. Если вы хотите поднимать несколько разных локальных доменов например:
git.local server.local
То это можно легко сделать через /etc/avahi/hosts
, но там тоже надо хардкодить ip
.
Самый простой способ это починить это при поднятии сети запускать несколько раз а никак живите с одним доменом всё лучше чем ничего.avahi-publish &
на каждый домен каждый раз вычисляя динамически локальный ip
$ cp /usr/share/doc/avahi/sftp-ssh.service /etc/avahi/services/ $ cp /usr/share/doc/avahi/ssh.service /etc/avahi/services/ $ systemctl restart avahi-daemon.service
Быстренько повторяем всё что сверху на втором изделии, потом ищем их друг у друга проверяем что всё работает. Настраиваем ssh
подключение по ip
между двумя изделиями. Потом в ssh
просто меняем ip
на локальный домен:
$ ssh my_user@destination.local -i ~/.ssh/my_key
Когда всё работает мы добавляем ~/.ssh/config
эти волшебные слова:
Host destination HostName destination.local IdentityFile ~/.ssh/my_key User my_user
Магическим образом был создан короткий алиас для ssh
в котором всё настроено:
$ ssh destination
Ну вот и всё, теперь мы можем легко обмениваться файлами и удалённо запускать команды:
$ cd /tmp/ $ date > temp_file $ echo "source" >> temp_file $ scp temp_file destination: $ ssh destination 'echo destination >> ~/temp_file' $ ssh destination 'cat ~/temp_file'
Уру-ру-ру, мы можем посылать файлы и удалённо выполнять команды. А главное теперь есть домены не привязанные к ip
!
Главный для меня минус в том что нельзя просто сделать несколько доменов на много сервисов на одном изделии, но с этим можно жить!
Зато таким же образом можно сделать и NFS
, и rsync
, и git
!!!
А ещё mDNS
лежит в основе IoT
и прочих home assistant
сетей!
#linux #multicastdns #mdns #dns
2025.09.28 01:53
Install the
rarAUR
package for bothRAR
andUnRAR
,unrar
for justUnRAR
, orunrar-free
for a FOSS implementation ofunrar
.
Хочешь рар, хоти и аур!
2024.12.10 14:03
Разработчики проекта Gentoo объявили о введении в строй отдельного репозитория с бинарными пакетами, собранными с поддержкой третьей версии микроархитектуры x86-64 (x86-64-v3), применяемой в процессорах Intel примерно с 2015 года
Новый репозиторий позволяет добиться более высокой производительности на современных процессорах, благодаря задействованию в программах расширенных инструкций.
Приятно видеть что мейнтейнеры генты не предают идеи генты!
2024.02.08 00:44
Традиционно, шрифты это ад и ненависть. Как настраивать fontconfig
понимают только те кто понимают, но я не из тех кто пониимает и поэтому не понимаю. При каждой попытке занырнуть в этот xml я понимаю что не стоило этого делать.
Каким-то образом понаставив каких-то пакетов наугад удалось найти какой-то моноширинный шрифт на который больно смотреть, но всё же можно смотреть. Это была победа.
Понаставив каких-то других шрифтов начали показываться эмодзи, даже цветные, но не все. Ну, это уже была победная победа.
Но после очередного обновления прекрасного прекрасного rolling release эмодзи стали показываться не все, но зато чёрно-белые. И всё, как это починить непонятно.
Доколе.
#arch #linux #fonts #emoji #hate #why #wtf
2024.02.08 00:43
А вы знаете что в линуксах есть файл /etc/services
и в него можно добавить алиасы для портов? Напрмер:
# tail -n 1 /etc/services docker-git-http 23456/tcp
Ну, знаете, удобно не хардкодить везде какие-то числа которые потом невозможно поменять, а просто пишешь алиас и везде используешь. Ну, прямо как с /etc/hosts
и всякими локалхостами! Очень удобно!
Только именованные порты не работают ни в nginx, ни в docker.
Как? Почему? Кто виноват? Как жить с этой печалью?
2024.01.03 14:35
В целом sway
вполне себе замена для awesome
, но не то чтобы он awesome.
sway
:
+ перезагрузка конфигурации на лету просто работает, и даже перезагружает конфигурацию waybar
, очень клево работает. В awesome тоже работало, но оно теряло конфигурацию воркспейсов и надо было снова перераспределять окна. Бесило неимоверное и никогда не хотелось “поменять 1 символ и релоднуть конфигурацию”.
+ может выглядеть почти как awesome
что awesome
+ нормальное распределение окон, в awesome
сценарии были какой-то хернёй, так и не получилось к ним привыкнуть.
– нет нормального способа избавиться от window header, всегда есть две полоски: waybar
+ window header. Люди советуют это всё запихнуть в waybar чтобы было как в awesome, но что-то мне пока не хочется пробовать — в стандартной конфигурации окна можно двигать в этом “типа таскбаре” (который на саомм деле просто объедененный window header) и это великолепно.
+- swaybar
херня, сразу в утиль, но зато waybar
солнышко и лапонька. Стандартные виджеты даже лучше чем в awesome
и это awesome!
#linux #x11 #wayland #sway #awesome
2023.12.07 15:16
Как вы все уже знаете у меня не получается найти замену для yeahconsole которая по шорткату падает с небес и всегда доступна.
Спасибо за ваши письма и комментарии, было очень приятно узнать что вы понимаете как мне не хватает консоли которая всегда существует, всегда под рукой и хранит историю с начала времен (с последнего ребута).
Один умный человек мне сказал что в sway
нет, конечно, никаких таких droзdown console, но есть некий виртуальный sketchpad
который как бы воркспейс который показывается поверх текущего воркспейса. И если кинуть туда обычный терминал то он будет доступен по шорткату.
Это не dropdown console
даже рядом, но другого применения этому sketchpad
я всё равно не могу придумать так что это может быть альтернативой. А может быть и нет. А может быть и да. А может быть и нет. Неприятно что можно нажать какое-нибудь ctrl+d
и случайно закрыть.
А вы что думаете? Оставляйте, пожалуйста, свои комментарии и делитесь своим мением!
#linux #wayland #sway #yeahconsole #dropdownconsole
2023.12.07 15:04
Добрый вечер! Начинавем утренний сеанс боли!
У меня на ноутбуке немецкая клавиатура. Мне в целом всё равно какие там значки где нарисованы, но вто то что левый шифт маленький, а справа от него кнопка с <>
— это вообще почему как зачем. Я не могу одной рукой нажать прекрасный шорткат <ctrl>+<shift>+<alt>+c
!
В пррошлом у меня уже была точно такая же проблема, но это было ещё во время когда systemd
не покорил мир и нет даже уверенности что это было не в hal
.
Ну а нынче, значит, это даже не udev
, а уже systemd-hwdb
что какая-то одна и та же херня и непонятно почему зачем для чего.
Этот пост уровень боли один, уровень боли wacom
будет позже.
Вам понадобится три консоли, две из них под рутом.
В первой обычной нерутовой вы делаете:
# nvim /usr/lib/udev/hwdb.d/60-keyboard.hwdb
Этот файл будет нашей путеводной звездой.
Во второй рутовой консоли вы делаете:
# true > /etc/udev/hwdb.d/72-tp-t490s-keyboard.hwdb # nvim /etc/udev/hwdb.d/72-tp-t490s-keyboard.hwdb
В третьей рутовой консоли вы начинаете плакать от жалости к себе.
Для начала нам понадобится узнать как называется клавиатура, понятия не имею как это сделать адекватно, но сделаем это неадекватно (похоже, это и есть адекватно):
# evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: Sleep Button /dev/input/event1: Lid Switch /dev/input/event10: HDA Intel PCH HDMI/DP,pcm=7 /dev/input/event11: HDA Intel PCH HDMI/DP,pcm=8 /dev/input/event12: Elan Touchpad /dev/input/event13: Elan TrackPoint /dev/input/event14: Keychron Keychron K1 SE /dev/input/event15: Keychron Keychron K1 SE /dev/input/event16: Logitech Gaming Mouse G402 /dev/input/event17: Logitech Gaming Mouse G402 Keyboard /dev/input/event2: Power Button /dev/input/event3: AT Translated Set 2 keyboard /dev/input/event4: Video Bus /dev/input/event5: PC Speaker /dev/input/event6: ThinkPad Extra Buttons /dev/input/event7: HDA Intel PCH Mic /dev/input/event8: HDA Intel PCH Headphone /dev/input/event9: HDA Intel PCH HDMI/DP,pcm=3 Select the device event number [0-17]: 3 Input driver version is 1.0.1 Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab54 Input device name: "AT Translated Set 2 keyboard" Supported events: ...
Смотрим на список доступных устройств, выбираем <3>
, оно там что-то пишет про что-т доступное и потом начинает ждать нажимания на кнопки. Нажимаем на эту дурацкую кнопку и получаем:
Properties: Testing ... (interrupt to exit) Event: time 1701374575.257013, type 4 (EV_MSC), code 4 (MSC_SCAN), value 56 Event: time 1701374575.257013, type 1 (EV_KEY), code 86 (KEY_102ND), value 1
И вот у нас уже есть всё что у нас есть!
Радостно бежим во вторую консоль (где открыт файл с будущими правилами) и горько плачем от осознания полного неосознания. Но правило надо всё же написать поэтому открываем консоль один и внимательно смотрим на то что на что мы смотреть не хотим. Но ищем там две вещи:
1. Зачем?
2. Почему?
3. За что?
Не найдя, смотрим на вообще формат и как заматчить нашу клавиатуру. Заматчить несложно, в начале этого файла есть:
# - Input driver device name and DMI data match: # evdev:name:<input device name/>:dmi:bvn*:bvr*:bd*:svn:pn* # <input device name/> is the name device specified by the # driver, </vendor>
Формат файла тоже какое-то говно с оступом правила в один пробел от матча. Это зачем? Почему? За что? (Нашли!!!)
Ищем в этом же файле как называется кнопка которая нам нужна как результат, у меня это leftshift
Собираем наш увеселительный конструктор из запчастей разбросанных выше:
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab54 Input device name: "AT Translated Set 2 keyboard" Event: time 1701374575.257013, type 4 (EV_MSC), code 4 (MSC_SCAN), value 56 Event: time 1701374575.257013, type 1 (EV_KEY), code 86 (KEY_102ND), value 1
Нам нужно имя устройства и значения первой строки где MSC_SCAN
:
# @link https://hshhhhh.name/2023/12/01/4866/ # thinkpad t490s german keyaboard evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svn*:pn* KEYBOARD_KEY_56=leftshift # button on right of the left shift <> -- remap to left shift
Hint: оставляйте крайне избыточниые комментарии потому что в следущий раз вы сюда попадете лет через 6 и будете горько плакать, ибо линукс — это путь боли и отчаяния.
Чтош. Теперь сохраняем файл, идем в третью консоль и делаем там:
# systemd-hwdb update # udevadm trigger # udevadm info /dev/input/event3 | grep KEYBOARD_KEY E: KEYBOARD_KEY_56=leftshift # evtest ... Testing ... (interrupt to exit) Event: time 1701378948.076153, type 4 (EV_MSC), code 4 (MSC_SCAN), value 56 Event: time 1701378948.076153, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 1
Ура волшебство удача победа!
Но у вас наверняка возникнет вопрос что же делать если что-то не получается, а ведь как бы ну не может быть чтобы кто-то мог с первого раза угадать это волшебство.
У меня не получилось, могу порекомендовать вам горько поплакать! И писать десять тысяч разных тупых других комбинаций на другие любые кнопки постоянно пересоздавая hwdb binary db
. Ничем не хочу вам помогать в данном случае! Вас все бросили! Вы наедине с собой! Подумайте, так ли вы хотите переопределять кнопки зачем вам это надо нормально же в целом!
Например, вы можете попробовать (у меня получмилось, но вы пробуйте! (я тоже буду в следущей части пробовать!)) использовать другой формат для матчинга:
# Supported hardware matches are: # - Generic input devices match: # evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV # This matches on the kernel modalias of the input-device, mainly: # ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and # WWWW are the 4-digit hex uppercase vendor, product and version ID and VVVV # is a variable-length input-modalias describing the device capabilities. # The vendor, product and version ID for a device node "eventX" is listed # in /sys/class/input/eventX/device/id.
Что, в теории, должно было бы собраться в такое вот правило (вывод evtest
вам в помощь), но у меня не заработало:
# @link https://hshhhhh.name/2023/12/01/4866/ # Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab54 # Input device name: "AT Translated Set 2 keyboard" # # thinkpad t490s german keyaboard # evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svn*:pn* evdev:input:b0011v0001p0001eab54* KEYBOARD_KEY_56=leftshift # button on right of the left shift <> -- remap to left shift
Больших слёз, боли и страдания!
#linux #udev #systemd #systemd-hwdb
2023.12.01 00:13
# pacman -Sy my-package # pacman -Sy my-package :: Synchronizing package databases... error: failed to synchronize all databases (unable to lock database)
О нет о нет как же быть пользователь хочет ставить два пакета одновременно о нет как же быть паника паника ошибка
2023.11.21 15:43
После генты арч не вызывает паники, но всё же некоторое недоумление:
$ modprobe acpi_call modprobe: FATAL: Module acpi_call not found in directory /lib/modules/6.5.7-arch1-1 $ uname -a Linux computer 6.5.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 10 Oct 2023 21:10:21 +0000 x86_64 GNU/Linux $ pacman -Ql acpi_call | grep '/modules/' acpi_call /usr/lib/modules/ acpi_call /usr/lib/modules/6.6.1-arch1-1/ acpi_call /usr/lib/modules/6.6.1-arch1-1/extramodules/ acpi_call /usr/lib/modules/6.6.1-arch1-1/extramodules/acpi_call.ko.xz
Это вообще как и почему произошло? Ну то есть я понимаю почему это произошло и что арч надо полностью обновлять каждые 4 минуты (и перезагружаться), но всё же у меня есть некоторые вопросы.
2023.11.19 19:13
Вообще, переезд оказался на удивление безболезненным. Уж сколько всего изменилось, а так-то никаких проблем. Копирование `/home`
— это просто магия как хорошо. Что же изменилось:
gentoo > arch X11 > wayland awesome > sway openrc > systemd bios > uefi
Арч местами удивляет, например AUR
это вообще что такое? Или в swaybar
не сделали нормально трей и поэтому иконки не кликаются… Но waybar
это чинит и даже немного становится похоже на awesome
что awesome!
Но зато каким-то образом в терминале не надо маппить кнопки типа ctrl + r
чтобы они делали мне поиск. Suspend to ram
просто работает и не надо писать никакие скрипты чтобы перезапускать сервисы. Это просто невероятный уровень искаробочности. Даже в блутузовой гарнитуре заработал микрофон что было совсем непонятно как чинить в генте.
Из непобеденных минусов: не могу найти замену для dropdown console yeahconsole. Ета грусна.
#linux #gentoo2arch #wayland #yeahconsole #dropdownconsole
2023.11.19 14:49
Итак, после того как вы скачали PKGBUILD
вы должны запустить MAKEPKG
(обожаю общесистемные правила именования!)
# man makepkg -s/--syncdeps automatically resolves and installs any dependencies with pacman before building. If the package depends on other AUR packages, you will need to manually install them first.
а slackaware LFS arch ничо!
2023.11.01 00:00
Захотелось поставить пакет из Arch AUR и это интересный опыт.
Сначала надо вручную склонировать репозиторий, потом собрать пакет, а потом установить пакет через пакман.
ERROR: Running makepkg as root is now allowed as it can cause permanent, catastrophic damage to your system
И вот мне теперь что, вместо того чтобы поставить пакет надо создавать /home
, придумывать имя пользователю и ставить из под него?
Я вот ещё не готов к такому шагу, у меня /home
ещё даже не монтирутеся, вот почему???77
В генте всё намного проще с левыми пакетами.
Можно, конечно, для Arch AUR поставить второй менеджер пакетов который будет всё это прятать в себя. Но те два на которые мне удалось проверить можно поставить только из Arch AUR.
Потрясающе!
Только для того чтобы разрешило собрать пакет из AUR надо настроить всю систему сначала.
# makepkg -scir ==> ERROR: Cannot find the fakeroot binary, ==> WARNING: Cannot find sudo binary. Will use su to acquire root privileges.
🤌
#linux #gentoo2arch #arch #wtf
2023.10.31 22:56
Ох, какой дух старой школы в мануле к netcat
. Восторг.
COPYRIGHT Netcat is entirely my own creation, although plenty of other code was used as examples. It is freely given away to the Internet community in the hope that it will be useful, with no restrictions except giving credit where it is due. No GPLs, Berkeley copy‐ rights or any of that nonsense. The author assumes NO responsibility for how anyone uses it. If netcat makes you rich somehow and you're feeling generous, mail me a check. If you are affiliated in any way with Microsoft Network, get a life. Always ski in control. Comments, questions, and patches to hobbit@avian.org. NOTES Some port names in /etc/services contain hyphens -- netcat assumes dashes are only used for ranges, so you have to escape the hyphens with backslashes (e.g. "netcat localhost 'ftp\-data'") to use them. BUGS Efforts have been made to have netcat "do the right thing" in all its various modes. If you believe that it is doing the wrong thing under whatever circumstances, please notify me and tell me how you think it should behave. If netcat is not able to do some task you think up, minor tweaks to the code will probably fix that. It provides a ba‐ sic and easily-modified template for writing other network applications, and I cer‐ tainly encourage people to make custom mods and send in any improvements they make to it. Continued feedback from the Internet community is always welcome! SEE ALSO /usr/share/doc/netcat/README.gz AUTHOR This manual page was written by Joey Hessand Robert Woodcock , cribbing heavily from Netcat's README file. Netcat was written by a guy we know as the Hobbit .
2021.10.30 19:41