GNU/Linux | Notes
前往频道在 Telegram
Open Source, GNU/Linux, Debian/Ubuntu, Dotfiles, Software, Scripts, Notes, Terminal, Shell, Tools, Games, Fun, Misc, Music, Geek, Free Software Movement. Почта: krekhov.dev@gmail.com Кто я: https://t.me/krxnotes/246 GitHub: https://github.com/krekhovx
显示更多2 232
订阅者
-124 小时
-17 天
-530 天
帖子存档
2 233
Многие по привычке считают создателем современных дистрибутивов одного человека — Линуса Торвальдса. Но Linux — это не дистрибутив, а только ядро операционной системы.
Современный дистрибутив включает огромный набор компонентов: утилиты, компиляторы, оболочки, библиотеки, менеджеры пакетов, графические окружения. Большая часть базовых инструментов появилась благодаря проекту GNU, созданному Ричардом Столлманом и сообществом ещё до появления ядра Linux.
Именно поэтому корректнее говорить GNU/Linux: ядро от Торвальдса + системные утилиты и инфраструктура GNU, плюс множество пакетов от сотен независимых разработчиков. При этом GNU сам по себе не был дистрибутивом — он дал инструменты, но не имел собственного рабочего ядра.
GNU дало основу, Linux — ядро, а остальные начали собирать на этой базе свои дистрибутивы.
Современный дистрибутив — результат коллективной работы тысяч людей и проектов, а не одного автора.
#people #software #kernel #opensource
2 233
Куда уходит оперативная память в современных системах?
Почему раньше нам хватало условно 4гб оперативной памяти, а теперь и 32гб мало? Современные программы используют больше:
- браузеры: десятки вкладок (гигантский расход памяти)
- мессенджеры, клиенты, сервисы (всё держится в фоне)
- тяжёлые веб‑технологии (Electron, JavaScript‑UI)
- высокие DPI, большие текстуры, анимации
- безопасность: песочницы, изоляция процессов
- кеширование для скорости работы
Железо стало мощнее -> разработчики меньше оптимизируют.
Когда компьютеры были слабее, разработчики вынуждены были оптимизировать каждую деталь: экономить память, избегать лишних процессов, писать компактный код. Любая неэффективность сразу делала программу медленной или вовсе неработоспособной. Сейчас же даже бюджетные ПК имеют десятки гигабайт ОЗУ и многоядерные процессоры. В результате давление на оптимизацию сильно снизилось: софт может позволить себе быть тяжёлым, потому что «железо вытянет».
Кроме того, современные фреймворки, библиотеки и веб‑технологии экономят время разработчиков, но требуют больше ресурсов. Использовать готовые решения проще и быстрее, чем писать максимально оптимизированный нативный код — это выгодно бизнесу, но увеличивает расход памяти. Поэтому, хотя память растёт, её часто «съедают» новые уровни абстракций и удобства разработки.
#memory #software #misc #theory
2 233
Выпуск набора утилит GNU Coreutils 9.10
Новость: https://www.opennet.ru/opennews/art.shtml?num=64742
#news
2 233
Выпуск Ubuntu 24.04.4 LTS c обновлением графического стека и ядра Linux
Новость: https://www.opennet.ru/opennews/art.shtml?num=64789
#news
2 233
Выпуск минималистичного дистрибутива Tiny Core Linux 17.0
Он сделан как полностью самостоятельный, ультра‑минималистичный дистрибутив со своей системой пакетов (tcz), своим подходом к загрузке и вообще отдельно от Debian‑семейства.
Новость: https://www.opennet.ru/opennews/art.shtml?num=64781
#news
2 233
Почему вокруг systemd возникают споры и какие init-системы существуют?
Debian официально выбрал systemd в качестве системы инициализации по умолчанию в феврале 2014 года. Это решение было реализовано в релизе Debian 8 «Jessie» (выпущенном в 2015 году), заменив собой старую систему SysVinit, после интенсивных дебатов технического комитета. До этого, в Wheezy, systemd была доступна лишь как экспериментальная опция. Частичная поддержка systemd и udev началась раньше, но переход стал обязательным для стандартизации управления службами.
Init‑система — это первый процесс, который запускается ядром Linux при загрузке и управляет стартом всех остальных служб и программ. Она отвечает за запуск демонов, настройку окружения, контроль за работой сервисов и корректное завершение системы. Без init система просто не сможет полноценно загрузиться и работать.
Почему сообщество разделилось на тех, кто принимает systemd, и тех, кто его не принимает? systemd сильно меняет привычный Unix‑подход. Одни считают его удобным, современным и более надёжным, другие — слишком сложным, монолитным и навязывающим свои стандарты. Поэтому часть пользователей поддерживает его, а другая предпочитает более простые и традиционные init‑системы.
-> Почему часть сообщества не любит systemd:
1. Слишком большой и комплексный. Это уже не просто init, а набор сервисов. Некоторым не нравится монолитность.
2. Нарушает принцип «делай одно и делай хорошо». Традиционный Unix‑стиль — маленькие утилиты. Systemd считают слишком громоздким.
3. Сложнее для отладки. Логи в журнале, конфигурации не всегда очевидны.
4. Сильная интеграция. Он тесно переплетён с другими компонентами системы, и это затрудняет замену.
5. Идеологические причины. Часть пользователей предпочитает классическую философию Unix, и systemd воспринимается как отход от неё.
6. Централизация власти. Некоторые опасаются, что Red Hat фактически диктует направление развития Linux‑экосистемы. systemd изначально разработан сотрудниками Red Hat, и компания активно его продвигает и поддерживает. Поэтому часть сообщества опасается, что Red Hat получает слишком большое влияние на ключевые компоненты Linux.
Дистрибутивы без systemd:
* Devuan (клон Debian без systemd)
* Void Linux (runit)
* Alpine Linux (OpenRC)
* Gentoo (OpenRC)
* Artix Linux (OpenRC, runit, s6)
* Guix System (shepherd)
-> Какие существуют init-системы:
* SysVinit
Классическая и очень старая система инициализации. Скрипты запуска — обычные shell‑скрипты. Простая, понятная, но медленная и плохо подходит для параллельного запуска сервисов.
* OpenRC
Развивается в Gentoo и используется в Alpine. Лёгкая, быстрая, умеет параллелить запуск, но остаётся достаточно простой и прозрачной. Не такая «всё‑в‑одном», как systemd.
* runit
Минималистичная, очень быстрая init‑система. Имеет простой механизм supervision для постоянного контроля служб. Используется в Void Linux. Максимально лёгкая и предсказуемая.
* s6
Продвинутая, модульная система supervision. Очень надёжная, но сложнее в настройке, чем runit. Выбирают те, кому важна предсказуемость и устойчивость. Поддерживается в Artix.
* shepherd
Init из проекта GNU. Написан на Scheme. Глубоко интегрирован в философию GNU Guix. Гибкий, но мало распространён за пределами Guix System.
* BusyBox init
Минимальная init‑система для встраиваемых систем. Почти ничего лишнего, используется в крошечных и специализированных окружениях.
* systemd
Самая распространённая init‑система в современных дистрибутивах (Debian, Ubuntu, Fedora, Arch и т.д.). Делает не только запуск служб, но и управление логами, точками монтирования, сетью и многим другим. Мощная, но крупная и спорная.
P.S. Debian по умолчанию использует systemd, но заменить init можно — Debian предлагает пакеты SysVinit и OpenRC. Однако поддержка альтернатив менее полноценна, чем в Devuan.
#debian #opensource #misc #theory
2 233
Какие дистрибутивы используют Debian как базу и зачем клонировать Debian?
Debian — один из самых старых и стабильных дистрибутивов. Он даёт огромный репозиторий, строгую политику качества и предсказуемость. Но именно за эту стабильность его и форкают — слишком медленные релизы, консервативные версии ПО, бюрократия разработки и отсутствие «готового для пользователя» опыта. Поэтому поверх Debian рождаются десятки проектов.
Каждый Debian‑based дистрибутив синхронизируется с разными ветками Debian: кто-то берёт stable, кто-то — testing, а самые смелые — unstable. Поэтому у каждого свой темп обновлений и свой уровень свежести пакетов.
-> Самые известные дистрибутивы, выросшие из Debian:
* Ubuntu — сделали Debian «более свежим» и удобным: быстрые релизы, улучшенный desktop‑опыт, драйвера, корпоративная поддержка.
* Linux Mint — взяли Ubuntu (а значит и Debian) и повернули его в сторону удобства и классического интерфейса.
* Pop!_OS — еще один Ubuntu‑based, ориентированный на железо System76, на удобство out‑of‑the‑box и рабочие фичи вроде auto‑tiling.
* Zorin OS, Elementary OS, KDE Neon — визуально отполированные пользовательские системы, которым Debian казался слишком «голым».
* MX Linux и antiX — прямые Debian‑based дистрибутивы, но легче, быстрее, с меньшим количеством системных демонов.
* Kali Linux и Parrot OS — сделанные специально для тестирования безопасности. В них сразу встроены нужные инструменты и свои правила обновлений.
* Devuan — у проекта не устроило внедрение systemd. Они выкинули systemd полностью и продолжают развивать Debian без него.
* Raspberry Pi OS — адаптация Debian под ARM и особенности железа Raspberry Pi.
* Tails — безопасность и анонимность, завязка на Tor; Debian как надёжный фундамент.
* Proxmox — корпоративная виртуализация, где Debian служит стабильной платформой.
Зачем они это делают? Потому что Debian — отличный фундамент, но не всегда идеален для конечной цели. Одним нужен более свежий софт, другим — другой init, третьим — особая специализация, четвертым — удобство для новичков. Debian даёт кирпичи, а форки строят свои дома.
P.S. Если вы делаете вклад в дистрибутив Debian, он растекается по остальным Debian-based дистрибутивам.
#debian #opensource
2 233
skel
/etc/skel — это шаблон домашней директории.
В нем лежат файлы, которые копируются в домашний каталог каждого нового пользователя. Обычно это начальные настройки: .bashrc, .profile, .bash_logout и подобное. Если нужно, чтобы все новые пользователи автоматически получали какие‑то файлы или настройки — можно положить их в /etc/skel
Это как бы некий скелет (skeleton).
#shell2 233
Какие VPN я использую?
На iPhone я использую платную версию hitvpn, использую довольно давно, нареканий нет. На Debian использую платную версию AdGuard-VPN, мне нравится их CLI-клиент и он кстати открытый. Обычно я пишу:
$ adguardvpn-cli connect -l Helsinki
и вуаля! весь мой интернет‑трафик начинает проходить через сервер в Хельсинки. Физически я остаюсь там, где и был, меняется только внешний IP‑адрес и геолокация моего трафика, как её видят сайты и сервисы. Короче говоря, для интернета я как бы нахожусь в Хельсинки, хотя на самом деле это не так. VPN создаёт туннель, через который проходит трафик.
Безопасно ли это? Что это за сервера? Хранится ли на этих серверах история моего трафика? Можно ли доверять VPN провайдеру? Будет ли передаваться информация обо мне третьим лицам? Это вам на подумать.
P.S. Обычный VPN не делает тебя частью даркнета. Он просто меняет IP и шифрует трафик. Чтобы попасть в даркнет, нужен как минимум Tor (используется для анонимности и доступа к .onion‑сайтам).
#misc2 233
dotfiles-debian
В репозитории находятся различные конфигурации инструментов, которые я использую в окружении Xfce для Debian, это моё повседневное рабочее окружение: firefox, bash, vim, vifm, mc, tmux, gdb, git, newsboat, neomutt, dircolors, bash-completion, различные цветовые схемы для xfce4-terminal,
.bash_aliases, .bashrc, локальные скрипты, классические игры и многое, многое другое.
> GitHub
#shell #terminal #dotfiles #debian #info2 233
Локализация
Набор переменных, который определяет язык приложений, консоли и другие локальные параметры системы.
Например, разбор en_US.UTF8:
en - язык.
US - региональная настройка.
UTF8 - кодировка.
Язык - тут думаю понятно.
Региональная настройка - это определенные параметры, такие как формат даты и времени, валюта,
числовой формат и другие локальные настройки, которые могут отличаться от других стран.
Кодировка - определяет соответствие между символами и числовыми значениями, которые используются
компьютером для их хранения и обработки.
Получить все доступные локализации:
$ locale -a
Чтобы изменить локализацию можно задать:
$ export LANG=en_US.UTF8
Если при выводе выдаются ошибки типа: Cannot set LC_CTYPE to default locale: No such file or directory
То скорее всего задается локализация, которая не была сгенерирована. Для этого нужно подправить /etc/locale.gen файл. В этом файле нужно раскомментировать нужную локализацию, например en_US.UTF-8 UTF-8
Затем выполнить:
$ locale-gen
Появится новая локализация:
$ locale -a
Можно запустить приложение с другим языком, например:
$ LANGUAGE=zh_TW vim
LANG - Локализация, установленная в этой переменной используется в качестве значения для всех остальных LC_* переменных.
LANGUAGE - Запасные локализации (нужно для вывода сообщений на разных языках).
#shell #utils2 233
Debian: Самый стабильный Linux и тёмная история создателя
Ссылка: https://www.youtube.com/watch?v=qx6Ejwsdj-U
#debian #opensource
2 233
Пашка Дуров лучше бы вместо рекламирования своей спермы занялся устранением повсеместных нарушений, на которые указывает РФ: скам, боты, мошенничество — всё это здесь сплошь и рядом. В итоге получаем замедление нашего любимого Telegram, жалко, конечно :( Придется сидеть через VPN или можно в целом больше перерыва от Telegram делать, пусть глазки отдыхают, хех 😳
2 233
Это я заглянул в коммиты сайта AppVeyor. С ветки support-ukraine чот в голос. Это же надо быть такой бестолочью, чтобы обмазывать этим крупные проекты.
Я придумал шутливые комментарии под эту ситуацию:
"Феодор ФРИЦнер сделал вклад"
"Как выглядят коммиты твоих коллег"
#fun
2 233
Что такое ИИ агенты?
AI‑агенты — это по сути автономные помощники, которые могут выполнять задачи без постоянного ручного контроля. Они умеют анализировать окружение, принимать решения, вызывать инструменты, писать код, запускать скрипты, общаться с API и доводить задачу до результата.
Где используются:
- автоматизация рутины у разработчиков и админов
- CI/CD и тестирование
- сопровождение инфраструктуры
- генерация и рефакторинг кода
- мониторинг и реакция на инциденты
- внутренняя автоматизация в компаниях
Заменяют ли они инженеров? Нет. Они пока что работают как умные ассистенты, которым всё равно нужен человек — поставить задачу, проверить, скорректировать. Это ускорение, а не замена.
Есть ли они на GitHub/GitLab? Да. Примеры: OpenAI, OpenDevin, AutoGPT, CrewAI, LangChain Agents, и десятки кастомных фреймворков. Их можно разворачивать локально, натравливать на свои проекты и подключать к CI.
В целом это просто новая ступень автоматизации, а не "конец профессии".
#misc
2 233
Какие ИИ я использую?
Мне очень нравится Mistral. Он отлично обрабатывает большие объёмы текста — можно кинуть скрипт на 1200 строк, и он спокойно выдаст общую картину. Например, ChatGPT такие объёмы не принимает и жалуется, что сообщение слишком большое, приходится сокращать. Я использую платную версию Mistral (из РФ оплату не принимает).
В Telegram у меня подключена платная и самая мощная версия GPT — использую её для коротких и быстрых запросов: советы, обсуждения, жизнь, рекомендации, код, решения. Работает отлично, ошибается редко, полностью устраивает.
Иногда использую бесплатную веб‑версию ChatGPT — для простых вопросов.
Бывает, что рабочая задача настолько сложная, что я подключаю сразу три ИИ. Заставляю их спорить, анализировать и дополнять ответы друг друга. Это называется промпт‑инженеринг. И он тоже выматывает: вокруг тебя пролетают тонны информации, всё нужно учитывать, потому что ИИ может ошибаться и дезинформировать. На проверку результатов (тестирование) уходит много времени.
Часто я сам не знаю, чего хочу. И мне нравится, что ИИ всё равно меня понимает — несмотря на мою косноязычность, ошибки в грамматике и иногда полную белиберду. Я нередко составляю промпты в одном ИИ, потом передаю их другому — и он уже идеально понимает, что мне нужно, и выдаёт результат гораздо лучше.
И да, чтобы пользоваться искусственным интеллектом, нужно самому обладать интеллектом =) Нужно уметь формулировать запросы, чётко объяснять, чего ты хочешь, желательно максимально подробно. Этому нужно учиться.
#misc
2 233
GitHub Pages
Это встроенный в GitHub хостинг статических сайтов, который автоматически публикует HTML, CSS и JavaScript прямо из репозитория. Он удобен для личных страниц, документации и простых проектов, не требует отдельного сервера и обновляется при каждом пуше.
Custom Domain позволяет привязать к сайту на GitHub Pages своё собственное доменное имя. Для этого нужно прописать нужные DNS‑записи у своего регистратора (обычно A или CNAME, указывающие на GitHub), затем указать домен в настройках Pages. GitHub автоматически выдаёт бесплатный HTTPS через Let's Encrypt.
Чтобы использовать GitHub Pages для персонального сайта, нужно создать репозиторий с именем
user.github.io, где вместо user используется твой логин GitHub. Всё, что лежит в этом репозитории, автоматически становится доступным по адресу https://user.github.io
Я например использую GitHub Pages для своей сайт-визитки, очень простенький сайт и репозиторий для наглядности.
> Документация
#misc