И это всё МОЁ

Привет. Столкнулся в последнее время со странным багом. Если я добавляю новый хоткей для какого нибудь приложения, нужно перезапустить плазму, чтобы этот хоткей заработал. Арч, последняя версия плазмы. Кто-нибудь еще сталкивался с такой фигней?








 , ,








И это всё МОЁ

Вопрос собственно не про баг, ибо вот он https://lkml.org/lkml/2020/4/4/197, а скорее про Убунту 20.


А как бы мне это изменение втащить? Как тут принято? Может есть какие-то в лаунчпаде репки со свежей алсой, или с ядром 5.7 (знаю, что ещё не вышло)? Ну или качать debsrc и патчить?









 , ,








И это всё МОЁ

Есть 2 сервера и 1 маршрутизатор. 1-й сервер почта, 2-й сервер связи, 3-й маршрутизатор во внешний мир.

Настройки 1-го сервера почты (один интерфейс):
//Локальный адрес
auto eth0
iface eth0 inet static
address 130.20.1.1
netmask 255.255.255.0
gateway 130.20.1.25

Настройки 2-го сервера связи (два интерфейса):
//Локальный адрес
auto eth0
iface eth0 inet static
address 130.20.1.25
netmask 255.255.255.0

//Связь с маршрутизатором
auto eth2
iface eth2 inet static
address 8.90.6.98
netmask 255.255.255.252
gateway 8.90.6.97

Пинг с первого сервера с 130.20.1.1 проходит до второго сервера до 130.20.1.25, а также до 8.90.6.98. Но проблема в том что до 8.90.6.97 (это порт маршрутизатора) пинг уже не доходит, т. е. с внешним миром нет связи. А со второго сервера с 130.20.1.25 пинг проходит 8.90.6.97 и доходит до места назначения. Надо чтобы пинг проходил с 130.20.1.1 до 8.90.6.97 через 130.20.1.25.








 , ,








И это всё МОЁ

«Налетай-торопись, покупай живопись»!


Издательство Springer выложило более 400 книг в бесплатный доступ.
Список книг лежит вот здесь (в xslx-файле):
https://drive.google.com/drive/folders/1fD1csbKVIdfKvzLoLbIjnryae1u995YQ


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









 , ,








И это всё МОЁ

Купив новый ПК (неттоп) специально под линукс(!), обнаружил, что звук из аудио джека не работает везде, кроме некоторых дистрибутивов. Бывает так, что дистр видит устройство, но потом (после перезагрузки) не видит. На шindows всё в порядке (что и следовало ожидать).
Интересует решение проблемы на дистрибутиве Fedora.
Модель неттопа - Lenovo ThinkCentre M720 Tiny 10T7009KRU
Конфигурация:
Процессор: Intel Core i5 i5-9400T 1.80 ГГц;
Оперативная память: 8 Гб DDR4;
Видеокарта: Intel UHD Graphics 630;
Накопитель: SSD 256 Гб;








 , ,








И это всё МОЁ

Сделал тэги [ cut ] (не работают)

Всем привет. Прошу помощи, не смог осилить IPSec с сертификатами.
3 статьи перепробовал. Мб я чего-то не понимаю. Заранее спасибо за ответы.
Ошибка до боли банальная :

generating IKE_AUTH response 1 [ N(AUTH_FAILED) ]

Не прошла авторизация. Конфиг сервера:

( читать дальше... )

Конфиг клиента:

( читать дальше... )

Сертификаты, сервер:

../ipsec.d/certs/vpn-server-cert.pem
../ipsec.d/privte/vpn-server-key.pem

Клиент:

../ipsec.d/cacerts/server-root-ca.pem
../ipsec.d/certs/vpn-server-cert.pem

ipsec.secrets (сервер)

( читать дальше... )

ipsec.secrets (клиент)

( читать дальше... )

Добрые люди, выручайте!!))








 








И это всё МОЁ

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


Зачем XCOM вновь с ними борется? В этом будет какой-то смысл? Ведь пришельцы не так уж много людей убили - грипп за год убивает больше.









 








И это всё МОЁ

Генпрокуратура нашла основания для прекращения уголовного дела о нарушении авторских прав Rambler Group на разработки компании Nginx. Об этом пишет газета «Ведомости» со ссылкой на ответ заместителя генпрокурора Виктора Гриня на запрос замруководителя комитета Госдумы по информационной политике, информационным технологиям и связи Андрея Свинцова.


https://www.vedomosti.ru/technology/articles/2020/04/28/829241-genprokuratura-nginx









 








И это всё МОЁ

Вопрос не только касаемо Linux, но и Windows.
Чем C# лучше для решения этой задачи (под Windows)?









 , ,








И это всё МОЁ
Представлен новый выпуск децентрализованной файловой системы IPFS 0.5 (InterPlanetary File System), образующей глобальное версионированное хранилище файлов, развёрнутое в форме P2P-сети, образованной из систем участников. IPFS комбинирует идеи, ранее реализованные в таких системах, как Git, BitTorrent, Kademlia, SFS и Web, и напоминает единый "рой" BitTorrent (пиры, участвующие в раздаче), обменивающийся Git-объектами. Для доступа к глобальной ФС IPFS может использоваться протокол HTTP или монтироваться виртуальная ФС /ipfs при помощи модуля FUSE. Код эталонной реализации написан на языке Go и распространяется под лицензиями Apache 2.0 и MIT. Дополнительно развивается реализация протокола IPFS на Javasсript, которая может работать в браузере.



И это всё МОЁ

Команда специалистов по информационной безопасности ищет опытных реверс-инженеров.


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



  • Обнаружение и анализ уязвимостей IoT устройств;

  • Выполнение анализа безопасности продуктов и решений заказчиков;


Требования:



  • Опыт реверс-инженеринга;

  • Знание и понимание архитектур ARM/MIPS/x86;

  • Знание принципов работы ОС Linux;

  • Знание Assembler, C/C++, Python;

  • Владение инструментами дизассемблирования и отладки (IDA Pro, WinDBG, etc.)

  • Опыт в поиске уязвимостей;

  • Понимание технологии фаззинга;

  • Опыт написания эксплойтов;


Как плюс – умение пользоваться паяльником, программаторами, логическими анализаторами;


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


ЗП от 120 тыс рублей в месяц + хорошие бонусы


Место работы: Санкт-Петербург


По всем вопросам пишите в телеграм @plutoo2647









 , , ,








И это всё МОЁ

почему блюпуп может не заводиться на этом чуде?


в выхлопе ядра при отключении-включении вафли:


[5992567.215908] atkbd serio0: Unknown key pressed (translated set 2, code 0x88 on isa0060/serio0).
[5992567.215914] atkbd serio0: Use 'setkeycodes e008 <keycode>' to make it known.
[5992567.346477] iwlwifi 0000:03:00.0: RF_KILL bit toggled to enable radio.
[5992567.346481] iwlwifi 0000:03:00.0: reporting RF_KILL (radio enabled)
[5992567.359585] iwlwifi 0000:03:00.0: Radio type=0x2-0x1-0x0
[5992567.666598] iwlwifi 0000:03:00.0: Radio type=0x2-0x1-0x0
[5992567.673758] usb 4-1.5: new full-speed USB device number 6 using ehci-pci
[5992567.838841] usb 4-1.5: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
[5992567.838848] usb 4-1.5: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[5992567.838865] usb 4-1.5: New USB device found, idVendor=8087, idProduct=07da, bcdDevice=78.69
[5992567.838869] usb 4-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[5992567.841256] Bluetooth: hci0: unexpected event for opcode 0x0000


фирмвари в /lib/firmware лежат


# ls /lib/firmware/iwlwifi-6000*
/lib/firmware/iwlwifi-6000-4.ucode /lib/firmware/iwlwifi-6000g2a-5.ucode /lib/firmware/iwlwifi-6000g2a-6.ucode /lib/firmware/iwlwifi-6000g2b-5.ucode /lib/firmware/iwlwifi-6000g2b-6.ucode


ось - гента, ядро 5.4.11.









 ,








И это всё МОЁ

Коллеги, добрый день, а может, у вас уже вечер!)
На данный момент нахожусь в поиске специалиста на позицию «Team Lead QA Automation» в крупнейший частный банк в России, входящий в пятерку крупнейших банков России по объему активов по данным рейтингов РБК и Forbes.
Москва, офис в 3-х минутах ходьбы.


О проекте - это единое окно сотрудника, основной целью деятельности которой является автоматизация процесса операций в отделении для физических лиц.


Обязанности:


Планирование регрессионного, интеграционного, нагрузочного и приемочного тестирования;


Выстраивание процессов тестирования среди 8 команд с упором на автоматизацию;


Автоматизировать процессы разработки и тестирования;
Выстраивать CI/CD проекта;


Налаживание взаимодействия QA инженеров в нескольких командах;
Поддерживать и развивать разработанные решения по автоматизации;
Разрабатывать фреймворк автоматизации;


Исследовать новые технологии и внедрять их на проекте;


Подготовка метрик автоматизированных тестов;


Принятие решений о внедрении / обновлении программного обеспечения.


Требования:
Опыт в тестировании от 5ти лет


Опыт в автотестировании от 3 лет


Опыт руководства группой тестировщиков от 2х лет


Практический опыт применения практик тест-дизайна


Умение проектировать тест-кейсы и подготавливать тестовые данные для тестирования


Хорошие знание Java, стандартных и дополнительных библиотек


Уверенное использование и понимание как работает под капотом
Selenium Webdriver (Selenide и Appium для мобильных платформ)


Опыт работы в unix системах


Опыт работы с API (Soap, Rest)


Опыт использование git


Опыт использование CI (желательно, но не обязательно Jenkins)


Опыт работы с Docker


Опыт составления запросов SQL


Опыт управления непрямыми (функциональными) подчиненными


Умение контролировать несколько проектов одновременно


Умение мотивировать команду, опыт управления рисками, мониторинг эффективности.


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


Оформление производится на интегратора, так как проект аутсорс, после возможен переход в штат.


ДМС+ стоматология в лучших клиниках Москвы.


За всеми подробностями можете обращаться в телеграм или написать здесь. @zhukovadasha









 , ,








И это всё МОЁ

Всем привет!

Сервер Proxmox, на одной из vm находится web server, на второй vm запускаю стресс тест:

hping3 -c 15000 -d 128 -S -w 64 -p 443 --flood --rand-source IP_WebServer 

На машине с web сервером растет %si до 20%, процесс ksoftirqd уходит в 100%, начинаются потери пакетов до этого сервера в районе 40%.

Абсолютно также убивается любая другая виртуалка внутри Proxmox.

Версия Proxmox 6.1, виртуалки на Ubuntu 18.04, сеть virtio.

Что можно сделать и предпринять в данном случае для улучшения ситуации?

PS На удаленной площадке есть ESXi, в качестве теста повторил тоже самое на нем, %si поднялся также до 20, ksoftirqd 0%, потерь нет.








 








И это всё МОЁ

Добрый день. Сейчас стоит Manjaro Gnome, раньше был Ubuntu, но проблема такая же. На всех chrome браузерах не работает режим картинка в картинке, появляется просто белое окно, которое ни на что не реагирует. Расширения менял, не помогает, в яндексе, опере все работает отлично.









 








И это всё МОЁ

Доброе время суток. Установил только что Fedora 31 и имею следующую проблему:
После установки Vmware Workstation 15.5.2 не открывает файл с расширением .ova
В логах следующее:
cat /tmp/vmware-kai/vmware-ui-12639.log
2020-04-29T10:18:28.198+03:00| vmui| I125: Log for VMware Workstation pid=12639 version=15.5.2 build=build-15785246 option=Release
2020-04-29T10:18:28.198+03:00| vmui| I125: The process is 64-bit.
2020-04-29T10:18:28.198+03:00| vmui| I125: Host codepage=UTF-8 encoding=UTF-8
2020-04-29T10:18:28.198+03:00| vmui| I125: Host is Linux 5.6.6-200.fc31.x86_64 Fedora 31 (Workstation Edition) Fedora 31
2020-04-29T10:18:28.189+03:00| host-12639| I125: Using GTK 3.24.13
2020-04-29T10:18:28.195+03:00| host-12639| I125: UTIL: Change file descriptor limit from soft 1024,hard 524288 to soft 16384,hard 524288.
2020-04-29T10:18:28.197+03:00| vmui| I125: VTHREAD 139976211046272 «vmui» tid 12639
2020-04-29T10:18:28.197+03:00| vmui| I125: DictionaryLoad: Cannot open file «/usr/lib/vmware/settings»: No such file or directory.
2020-04-29T10:18:28.197+03:00| vmui| I125: [msg.dictionary.load.openFailed] Cannot open file «/usr/lib/vmware/settings»: No such file or directory.
2020-04-29T10:18:28.197+03:00| vmui| I125: PREF Optional preferences file not found at /usr/lib/vmware/settings. Using default values.
2020-04-29T10:18:28.197+03:00| vmui| I125: DictionaryLoad: Cannot open file «/home/kai/.vmware/config»: No such file or directory.
2020-04-29T10:18:28.197+03:00| vmui| I125: [msg.dictionary.load.openFailed] Cannot open file «/home/kai/.vmware/config»: No such file or directory.
2020-04-29T10:18:28.197+03:00| vmui| I125: PREF Optional preferences file not found at /home/kai/.vmware/config. Using default values.


2020-04-29T11:43:35.279+03:00| vmui| I125: Spawning OVFTool:
2020-04-29T11:43:35.279+03:00| vmui| I125+ ‘–machineOutput’ ‘–X:logFile=/tmp/vmware-kai/ovftool.log’ ‘–X:logLevel=verbose’ ‘–allowExtraConfig’ ‘/home/kai/downloads/GNS3.VM.VMware.Workstation.2.2.7/GNS3 VM.ova’
2020-04-29T11:43:35.279+03:00| vmui| I125: GLib: posix_spawn avoided (workdir specified) (fd close requested) (child_setup specified)
2020-04-29T11:43:35.312+03:00| vmui| I125: OVFTool::OnExit
2020-04-29T11:43:35.312+03:00| vmui| W115: OVFTool::OnUnexpectedExit: Unknown error with output:
2020-04-29T11:43:35.312+03:00| vmui| W115+









 








11:18

TON OS

И это всё МОЁ

Поговаривают, что скоро в Play и AppStore. А где же подробности об «операционке» от Дурова?









 , ,








И это всё МОЁ

./nginx -V


nginx version: nginx/1.16.1
built by clang 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
built with OpenSSL 1.0.2j 26 Sep 2016
TLS SNI support enabled
configure arguments: –prefix=/opt/nginx –with-pcre=/home/user/pcre-8.40 –with-zlib=/home/user/zlib-1.2.11 –with-openssl=/home/user/openssl-1.0.2j –with-http_ssl_module –with-http_realip_module –with-http_stub_status_module –with-http_secure_link_module –add-module=/home/user/njs/nginx –with-http_sub_module


конфиг без воды относящийся к делу


location /doc
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log logs/443.doc.access.log up_log;
error_log logs/443.doc.error.log;

client_max_body_size 50M;
subrequest_output_buffer_size 100M;
js_content write_body;
}

location /NJSNJS/doc
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log logs/443.doc_njs.access.log up_log;
error_log logs/443.doc_njs.error.log;

client_max_body_size 50M;
subrequest_output_buffer_size 100M;

proxy_pass 10.2.11.1/doc;
}

function write_body (r) {


var TOURI = "/NJSNJS" + r.variables.request_uri;

// if ( 0 )


if ( 1 )
{
var HEADERS = "";
var h;
for (h in r.headersIn) {
HEADERS += " header '" + h + "' is '" + r.headersIn[h] + "'\n";
}

r.subrequest(TOURI, { method: r.method }, function logging(res)
{
var dater;
dater = "\n\n========== " + r.variables.time_local + " =========="; //Date of the request

if ( res.status == "301" || res.status == "302" || res.status == "303" || res.status == "307" || res.status == "308";)
{
r.return (res.status, r.variables.http_location);
}
else
{
r.return (res.status, res.responseBody);
}

var HEADERSOUT = "";
var g;
for (g in r.headersOut) {
HEADERSOUT += " header '" + g + "' is '" + r.headersOut[g] + "'\n";
}

var BODY = "Source IP - " + r.remoteAddress + " Method - " + r.method + " Status - " + res.status + " URI - " + r.variables.request_uri + "\n" + " Headers in " + "\n" + HEADERS + "\n Headers out\n" + HEADERSOUT + "\nRequest body - " + r.requestBody + "\nResponse body - " + res.responseBody;
var messageTOlog = dater + "\n" + BODY;
var fs = require('fs');
var filename = "/opt/nginx/logs/BODY.txt";
fs.appendFileSync(filename, messageTOlog, { encoding: 'utf8' });
}
);
}
else
{
r.internalRedirect(TOURI);
}

}


Если идти по ветке else (т.е. без подзапроса) то хедеры присутствуют в полном объеме, если идти по пути подзапроса то хедеров нет, что видно и по вгету и по логированию. В случае 301 302 итд хедер Location есть, но пустой, что неприемлемо.
Доки 3 раза уже перечитал, гугл тоже, уже подозреваю что баг в njs.









 








И это всё МОЁ

Для многих пользователей слово Linux с каждым годом звучит всё более привычно. Усилиями тысяч программистов операционные системы семейства Unix стали гораздо дружественнее, а их установка — простой и комфортной. Сегодня сделаем обзор Antix Linux - удобного и нетребовательного к ресурсам компьютера дистрибутива Linux — лучшего представителя образов Live-USB для работы, восстановления или установки на компьютеры. Обзор Antix Linux Antix Linux — легковесный дистрибутив, созданный на основе Debian. Имеет в базе более 60 тыс. приложений с возможностью установки по сети из репозиториев. На сайте antixlinux.com есть несколько вариантов 32-разрядных и 64-разрядных дистрибутивов. Пользователям предлагаются следующие редакции: base — вариант базовой установки


Запись Обзор Antix Linux впервые появилась Losst.






@темы: Обзоры

И это всё МОЁ

По аналогии с debootstrap, pacstrap, не найдя аналога для своего уютненького CRUX, решил заняться написанием сей утилиты. Приглашаю к тестированию.

Если у вас CRUX, она у вас будет работать из коробки (на самом деле нет). Если у вас другой дистрибутив, то вам в любом случае необходимо подготовить среду для развёртывания КРАКСИКОВ. Это как ФИКСИКИ, только КРАКСИКИ. :3

  • Сохраняем эту портянку кода в ./cruxstrap (Внимание! Объявление: ищу хостинг).
  • Скачиванием CRUX, последнюю версию, например отсюда: http://ftp.morpheus.net/pub/linux/crux/latest/iso/crux-3.5.iso
  • # mkdir /mnt/crux-install
  • # mount crux-3.5.iso /mnt/crux-install — монтируем образ
  • # cp -r /mnt/crux-install/crux/core . — копируем порты, это установочные пакеты. Они нужны, чтобы КРАКСИКИ могли плодиться.
  • # tar -C /tmp -x -f core/pkgutils/pkgutils#*.pkg.tar.xz usr/bin/pkgadd - извлекаем pkgadd, необходимый для работы скрипта.
  • Всё готово, вы великолепны!

Запускать так:

# mkdir chroot/
# cruxstrap --pkgadd /tmp/usr/bin/pkgadd chroot/ core/

Где, chroot/ — это директория, куда будет установлен CRUX, core/ — это директория с пакетами, которые будут установлены. Если у вас CRUX, указывать путь до pkgadd и вообще извлекать его не нужно.

TODO: реализовать установку не всех подряд пакетов из директории, а возможность указывать их списком # cruxstrap chroot /usr/ports bash linux linux-firmware ...

#!/bin/bash

panic() {
if [ -d "$TMP" ]; then
rm -rf $TMP 2>/dev/null
fi
exit ${1:1}
}

got_cmdline() {
while [ "$1" ]; do
case "$1" in
-pa|--pkgadd) shift ; PKGADD_BIN="$1" ;;
-v|--version) echo "`basename $CRUXSTRAP_COMMAND` $CRUXSTRAP_VERSION" ; exit 0 ;;
-h|--help) got_help ; exit 0 ;;
*)
if [ -z "$CHROOT_DIR" ]; then
CHROOT_DIR="$1"
shift
continue
fi
if [ -z "$MIRROR_DIR" ]; then
MIRROR_DIR="$1"
shift
continue
fi
TO_INSTALL+=($1)
shift
;;
esac
done
}

search_in() {
for obj in $1/*; do
if [ -f "$obj" ]; then
case "$obj" in
*.pkg.tar.gz) echo $obj ;;
*.pkg.tar.bz2) echo $obj ;;
*.pkg.tar.xz) echo $obj ;;
*.pkg.tar.zstd) echo $obj ;;
esac
elif [ -d "$obj" ]; then
search_in $obj
fi
done
}

search_for() {
# TODO
echo
}

got_help() {
echo "usage: `basename $CRUXSTRAP_COMMAND` [options] new_chroot_dir/ /ports_dir [package ...]"
echo "options:"
echo " -pa, --pkgadd set path to pkgadd [/usr/bin/pkgadd]"
echo " -v, --version print version and exit"
echo " -h, --help print help and exit"
}

main() {
PKGADD_BIN="/usr/bin/pkgadd"
CHROOT_DIR=""
MIRROR_DIR=""
TO_INSTALL=()

got_cmdline "$@"

if [ ! -n "$CHROOT_DIR" ] || [ ! -n "$MIRROR_DIR" ]; then
got_help
exit 0
fi

if [ ! -x "$PKGADD_BIN" ]; then
echo "Can't find $PKGADD_BIN, try add: --pkgadd ./pkgadd"
panic
fi

if [ ! -d "$CHROOT_DIR" ]; then
echo "'$CHROOT_DIR' is not directory."
panic
fi

if [ ! -d "$MIRROR_DIR" ]; then
echo "'$MIRROR_DIR' is not directory."
panic
fi

if [ ! -z "$TO_INSTALL" ]; then
SEARCH_FOR=$TO_INSTALL
TO_INSTALL=()
for pkg in ${SEARCH_FOR[@]}; do
TO_INSTALL+=($(search_for $MIRROR_DIR $pkg))
done
else
TO_INSTALL=($(search_in $MIRROR_DIR))
fi

if [ ! -n "$TO_INSTALL" ]; then
echo "Nothing to do. Check for $MIRROR_DIR dir."
panic
fi

for db in $CHROOT_DIR/var/lib/pkg{,/db}; do
case "$db" in
*/var/lib/pkg) install -d $db ;;
*/var/lib/pkg/db) touch $db ;;
esac
if [ $? = 0 ]; then
echo Database connected: $db
else
echo Unable to connect: $db
panic
fi
done

for pkg in ${TO_INSTALL[@]}; do
echo -n "Installing ${pkg##*/} ..."
$PKGADD_BIN --root $CHROOT_DIR $pkg 2>&1 >$TMP/log
if [ "$?" = "0" ]; then
echo " OK"
else
echo " ERROR"
cat $TMP/log
fi
done
}

trap "panic" INT HUP QUIT TERM EXIT

readonly CRUXSTRAP_COMMAND="$0"
readonly CRUXSTRAP_VERSION="0.1"

TMP="$(mktemp -d)"

main "$@"

Картинка для привлечения внимания.

Напоследок, дисклеймер, зачем это не нужно. В данный момент я разворачиваю куда более грандиозную систему по автоматизации сборки образов для виртуальных (и не только) машин. CRUXSTRAP лишь вершина, оно создаёт ванильный, это важно, chroot, который затем упаковывается в squashfs. Рядом с ним кладётся другой squashfs, в котором лежат только настройки системы (при загрузке системы настройки ложатся «поверх» через overlay). Вся эта порнография упаковывается в общий initramfs, которые вместе с vmlinuz по итогу отдаются по сети (PXE) на любые устройства в сети.

Всё это именуется общими названиями: [default], [internet-gateway], [mailer-daemon]... При загрузке DHCPD + TFTP отдают GRUB2, который пытается загрузить grub.cfg глядя на MAC-адрес:

set default=0
set timeout=0

set menu_color_highlight=white/dark-gray
set menu_color_normal=black/light-gray
set color_normal=light-blue/blue

regexp --set=1:m1 --set=2:m2 --set=3:m3 --set=4:m4 --set=5:m5 --set=6:m6 '^([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})' "$net_pxe_mac"
set mac="${m1}-${m2}-${m3}-${m4}-${m5}-${m6}"

source /os/mac-$mac/grub.cfg

if [ "$default" = "0" ]; then
source /os/pxe-default/grub.cfg
fi

Если конфигурации с таким MAC не предусмотрено, отдаётся /os/pxe-default. Просто делаем ln -sf /var/tftpboot/os/pxe-internet-gateway /var/tftpboot/os/mac-52-54-00-12-34-56, и теперь вместо /os/pxe-default машина с этим адресом пройдёт по симлинку и получит конфигурацию /os/pxe-internet-gateway. grub.cfg:

set default="pxe-internet-gateway"

menuentry "Configuration [internet-gateway] for ${net_pxe_ip} (${net_pxe_mac})" --id=pxe-internet-gateway --unrestricted {
linux /os/pxe-internet-gateway/vmlinuz
initrd /os/pxe-internet-gateway/initrd
}

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

В случае поломки софта или атаки хакеров, ты нажимаешь кнопочку Reset или ПОПРОБУЙТЕ ВЫКЛЮЧИТЬ И СНОВА ВКЛЮЧИТЬ, система загружается по сети с нуля, как ни в чём небывало.

В случае поломки железа, ты даже не заморачиваешься, включаешь в сеть другую железку, меняешь её аки лампочку в цоколе, и всего-навсего прописываешь ln -sf новый MAC, чтобы теперь эта железка выполняла такую-то роль в сети. И всё.

Вся настройка, всех хостов лежит на твоей стороне. Структура:

/var/tftpboot/os/pxe-default/grub.cfg

/var/tftpboot/os/pxe-default/vmlinuz
/var/tftpboot/os/pxe-default/initrd

/var/tftpboot/os/pxe-default/packages
/var/tftpboot/os/pxe-default/packages/bash#5.0.17-1.pkg.tar.xz -> /usr/ports/core/bash/bash#5.0.17-1.pkg.tar.xz
/var/tftpboot/os/pxe-default/packages/linux#5.6.7-1.pkg.tar.gz -> /root/ports/linux/linux#5.6.7-1.pkg.tar.gz
...

/var/tftpboot/os/pxe-default/persistent
/var/tftpboot/os/pxe-default/persistent/etc
/var/tftpboot/os/pxe-default/persistent/etc/rc.conf
/var/tftpboot/os/pxe-default/persistent/etc/ssh
/var/tftpboot/os/pxe-default/persistent/etc/ssh/sshd_config

Для каждого хоста свои пакеты, своя конфигурация. Обновил конфигурацию, пересобрал образ, перезагрузил хост. Не важно, виртуальная это машина или стационарный ПК.

И не важно, это может быть не CRUX, а любой другой дистрибутив, собранный в chroot: он точно так же будет упакован в squashfs, со своими настройками, и будет загружаться по сети со своим ядром.

P.S.: А чём вы занимаетесь на карантине?








 , ,