victor_sudakov: (Default)
Parallels Desktop конечно очень хорош, может запускать полноценную VM даже с иксами.

Но если нужно запустить на Маке text mode Linux, я пока не нашёл ничего лучше OrbStack. Это не полноценная VM, как Parallels или VirtualBox c (пара)виртуализацией железа, а нечто ближе к Debootstrap или WSL. Но это настоящая Ubuntu, Centos, Gentoo etc (OrbStack предлагает выбор из 16 дистрибутивов линукса). Файловая система VM при этом доступна с MacOS хоста и наоборот, можно файлы легко копировать в/из VM. Если установить внутри VM сетевое ПО, например NGiNX или Kubernetes с ингрессом, все слушающие порты будут слушать на localhost Мака. Можно выполнять команды Linux из MacOS и наоборот с помощью утилит orb и mac соответственно.

Зачем нужен text mode Linux на Маке, если MacOS это UNIX-подобная ОС и для нее есть Homebrew?

Если вы много занимаетесь администрированием Linux, то отличия CLI Linux и MacOS (которая BSD) будут вам доставлять постоянное неудобство, в том числе при написании скриптов, сравните хотя бы ключи команды date. Конечно, если использовать из MacOS только Терминал для ssh-доступа в облако, то никакой OrbStack не нужен, и даже Homebrew не нужно.

Внутри OrbStack можно запустить настоящий линуксовый docker и Kubernetes, например Kind. Зачем Kind, если для MacOS есть 1) Docker Desktop и 2) Kubernetes встроенный в OrbStack? А затем, что оба они однонодовые, если же нужен multi-node cluster (например потестировать node affinity), надо ставить Kind или K3d.

Виртуальных машин OrbStack можно сделать сколько угодно с разными дистрибутивами Linux, например для любителей пакетного менеджера pacman есть Arch. Файлы с одной VM на другую можно копировать через /mnt/machines.

Из недостатков:

1. Клонировать VM нельзя. Можно автоматизировать настройку новой VM, поддерживается Cloud-init, но мне проще ansible-pull.

2. Иксовые приложения внутри VM просто так не запустишь, но в документации пишут, что можно, если в качестве X-сервера запустить XQuartz на Маке, или Xrdp. Ну или если у вас в сети есть X-terminal, наверное можно $DISPLAY туда отправить, я не пробовал за ненадобностью.

3. USB устройства внутрь VM пока не пробрасываются.
victor_sudakov: (Default)

Иногда надо сравнить два JSON файла, данные в которых отличаются мало, а записи перемешаны как попало. diff в этой ситуации использовать невозможно. Есть онлайн инструменты, например The semantic JSON compare tool, но отправлять туда свои данные как-то не хочется.

Оказывается jq умеет сортировать JSON, поэтому можно использовать его для предварительной сортировки и потом отдавать в diff:

diff -u <(jq -S < file1.json ) <(jq -S < file2.json)

victor_sudakov: (Default)

Соединил два Linux компьютера A и Б по Ethernet, как зайти с А на Б по ssh? IPv4 адресов не назначено, либо адрес Б неизвестен.

Можно воспользоваться IPv6 link local адресами. На компьютере А:

  1. Командой ip a выясняем имя интерфейса, к которому подключен Б. Пусть это окажется например enp2s0
  2. Посылаем ping на мультикастовый адрес ff02::1 (All Nodes) на этом интерфейсе: ping -6 ff02::1%enp2s0 или ping6 -I enp2s0 ff02::1
  3. Компьютер Б ответит со своего link local адреса, например fe80::4bb0:f155:45f5:7ee7
  4. Заходим на него по ssh pupkin@fe80::4bb0:f155:45f5:7ee7%enp2s0 с указанием интерфейса.
victor_sudakov: (Default)

Что поставить сразу после установки ubuntu mate:

  • apt install gnome-system-tools mate-themes wireguard lightdm-gtk-greeter-settings traceroute openssh-server exfat-fuse ncdu mc ncal
  • Google Chrome
  • Zoom
  • Anydesk
  • apt install telegram-desktop
victor_sudakov: (Default)

Спустя четверть века использования FreeBSD на домашнем десктопе, я всё-таки пересел на Linux (Ubuntu Mate).

На ноутбуках наших и родителей давно уже Linux, на работе на десктопе тоже Linux, и вот пал последний бастион.

victor_sudakov: (Default)

Часто нужно, чтобы доменное имя отлаживаемого сайта временно разрешалось в 127.0.0.1, ::1 или приватный адрес в локальной сети. Обычно для этого редактируют /etc/hosts, но если нет возможности или желания это делать (например потому, что изменения в /etc/hosts действуют на все процессы всех пользователей данной машины), некоторые HTTP клиенты позволяют переопределить разрешение имен встроенными средствами.

Предположим, вы отлаживаете сайт https://www.mysite.example/ на сервере 192.168.10.10, тогда:

Для curl можно использовать

curl --resolve '*:443:192.168.10.10' https://www.mysite.example/

Для Google Chrome

google-chrome --host-resolver-rules='MAP www.mysite.example 192.168.10.10

Для FireFox в about:config переопределить переменную network.dns.forceResolve в 192.168.10.10, можно создать отдельный профиль с такой настройкой.

victor_sudakov: (Default)

Оказывается есть pull request для ljdump, который позволяет снова использовать скрипт после отключения challenge auth в Dreamwidth.

victor_sudakov: (Default)
Удобный многоплатформенный графический редактор ksnip для обработки скриншотов. Обрезать, размыть персональные данные, вставить нумерованные стрелочки и маркеры, текстовые комментарии и многое другое. Для Ubuntu есть в стандартном наборе пакетов.

https://github.com/ksnip/ksnip
victor_sudakov: (Default)

nmcli connection add type dummy ifname lo1 ipv4.method manual ipv4.addresses 192.168.170.1/32

Will be permanently saved to /etc/NetworkManager/system-connections/dummy-lo1.nmconnection

Странно, что из Network Manager GUI никак не добавить loopback интерфейс, или я не нашёл нужной кнопки.

victor_sudakov: (Default)

Если нужно потестировать двухфакторную аутентификацию и не хочется засорять Google Authenticator тестовыми ключами, можно использовать oathtool (security/oath-toolkit) для генерации OTP:

oathtool --totp -b H5HBQM3VSPSZLDCI

Для настоящих ключей это небезопасно (секретный ключ видно в списке процессов, истории команд shell и т.д.), но для тестов самое то.

victor_sudakov: (Default)

В 1997 году я случайно в терминале FreeBSD набрал "ci" вместо "vi" и... это стало любовью на всю жизнь.

А вы как познакомились со своей первой системой контроля версий?

Что интересно, я до сих пор использую rcs, когда нужно всего пару файликов в каталоге поместить под контроль версий. hg или git в этом случае overkill.

victor_sudakov: (Default)

Можно сгенерировать QR code своей WiFi сети, например чтобы предлагать гостям, на https://qifi.org/. Якобы всё генерируется локально на JS и SSID/пароль никуда не передается.

Можно конечно сделать echo "WIFI:S:<SSID>;T:<WPA|WEP|>;P:<password>;;" | qrencode -s 10 -o wifi.png если под рукой есть Unix.

victor_sudakov: (Default)

Мы смеемся над линуксоидами, когда они используют команду cat для просмотра файла, вместо more, less или view. А зря смеемся. Линуксовый терминал по умолчанию настроен так, что после выхода из less, vim и пр. экран очищается, а часто нужно оставить фрагмент просмотренного текста перед глазами.

victor_sudakov: (Default)

Аналогом FreeBSD-шной /usr/bin/limits в Linux является /usr/bin/prlimit.

Пример запуска программы через обертку, с ограничением доступной памяти в 1GB:

$ prlimit --as=1073741824 stress-ng stress-ng --vm 1 --vm-bytes 2G
stress-ng: info:  [19042] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [19042] dispatching hogs: 1 vm
stress-ng: error: [19044] stress-ng-vm: gave up trying to mmap, no available memory
stress-ng: info:  [19042] successful run completed in 10.01s
$

Еще варианты задать ограничение ресурсов:

  1. В bash можно пользоваться ulimit
  2. cgexec из cgroup-tools
  3. systemd-run --scope --user -p MemoryMax=1G (работает странно и сложным путем)

pcregrep

May. 12th, 2021 01:17 pm
victor_sudakov: (Default)

Regex flags следует указывать внутри (?) перед регулярным выражением, например извлечь из mbox только тела писем:

pcregrep -v -M '(?sU)^From .*^$' Mail/1.mbox

Извлечь тела писем можно и

formail -I "" -s cat < Mail/1.mbox

это просто пример использования сабжа.

PS удобный дебаггер PCRE

victor_sudakov: (Default)

Интересная возможность сабжевая в bash есть, можно работать со stdout как с файлом:

$ diff -q <(echo qq) <(echo qq1)
Files /dev/fd/63 and /dev/fd/62 differ

BSD apply

Mar. 19th, 2021 03:56 pm
victor_sudakov: (Default)

Под FreeBSD привык к утилите apply, очень не хватало ее под линуксом для повседневных задач. Под линукс нашлась утилита xe, которая делает то же самое, хотя с непривычки кажется, что менее удобно.

$ apply 'host -t ns' yandex.ru google.com
yandex.ru name server ns2.yandex.ru.
yandex.ru name server ns9.z5h64q92x9.net.
yandex.ru name server ns1.yandex.ru.
google.com name server ns3.google.com.
google.com name server ns2.google.com.
google.com name server ns1.google.com.
google.com name server ns4.google.com.

$ xe -a host -t ns -- yandex.ru google.com
yandex.ru name server ns1.yandex.ru.
yandex.ru name server ns9.z5h64q92x9.net.
yandex.ru name server ns2.yandex.ru.
google.com name server ns4.google.com. 
google.com name server ns1.google.com.
google.com name server ns2.google.com.
google.com name server ns3.google.com.

apply еще красиво работает с подстановкой, с xe этот момент выглядит гораздо кривее

$ apply 'host -t %1 ya.ru ' ns soa
ya.ru name server ns1.yandex.ru.
ya.ru name server ns2.yandex.ru.
ya.ru has SOA record ns1.yandex.ru. sysadmin.yandex.ru. 2021031809 900 600 2592000 900

$ xe -n -a -p % host -t % ya.ru -- ns soa 
host -t ns ya.ru
host -t soa ya.ru

$ xe -a -p % host -t % ya.ru -- ns soa
ya.ru name server ns2.yandex.ru.
ya.ru name server ns1.yandex.ru.
ya.ru has SOA record ns1.yandex.ru. sysadmin.yandex.ru. 2021031809 900 600 2592000 900

UPD А еще можно собрать настоящий apply из outils. Для сборки на Debian достаточно build-essential.

victor_sudakov: (Default)
Уничтожить метку, оставшуюся на диске после того, как там побывал Вася btrfs:

wipefs -n /dev/nvme1n1
wipefs -t btrfs -f -a /dev/nvme1n1


Иначе "btrfs filesystem show" "находит" свои FS даже там, где их давно нет.

Статья на вики btrfs
victor_sudakov: (Default)

Для ремонта, установки операционных систем и т.п. С поддержкой загрузки с UEFI. Не требует пересборки при добавлении ISO-шника, достаточно положить новый ISO-шник на FAT32 раздел.

www.ventoy.net

Интересно, что в режиме GPT Ventoy создает загрузочный раздел с типом не EFI AKA c12a7328-f81f-11d2-ba4b-00a0c93ec93b, а с типом ms-basic-data AKA ebd0a0a2-b9e5-4433-87c0-68b6b72699c7. И при этом загрузка с данного раздела всё равно происходит (я проверял на двух разных компах).

Автор говорит, что

That is a workaround. If I set the efi partition c12a7328-f81f-11d2-ba4b-00a0c93ec93b then we will not be able to install windows. Because windows require that only one efi system partition can be exist in the whole system.

А всё равно грузится потому, что

Many UEFI firmare has a good compatibility. So if you have a FAT partition (even in MBR), then is will detects it as bootable in UEFI mode.

Вот и в UEFI у нас теперь начались обходные пути, и что характерно, опять для обхода странностей Windows.

victor_sudakov: (Default)

По максимуму ставим всё из пакетов:

apt install cubicsdr soapysdr-tools libsoapysdr-dev soapysdr-module-audio  
apt install git build-essential automake cmake

Скачиваем и ставим SDRPlay API 3.07 или свежее с сайта производителя (ставится в /usr/local). прямая ссылка на 3.07.1

chmod +x SDRplay_RSP_API-Linux-3.07.1.run
./SDRplay_RSP_API-Linux-3.07.1.run

Собираем вручную модуль SoapySDRPlay

git clone https://github.com/pothosware/SoapySDRPlay.git
cd SoapySDRPlay
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install
sudo ldconfig
SoapySDRUtil --info

Проверяем работу модуля

SoapySDRUtil --probe="driver=sdrplay"

Можно запускать CubicSDR

Источник

Сайт производителя

Profile

victor_sudakov: (Default)
Виктор Судаков

December 2024

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 11th, 2025 06:30 pm
Powered by Dreamwidth Studios