Как стать автором
Обновить

Комментарии 137

Классная статья.
Ещё бы что-то такое же про директории. Не всегда понятно почему часть конфигов лежит в /etc/, а часть в /usr/share/local (пример). И за что отвечают другие.
Основное, но не единственное отличие:
/etc относится к данной конкретной машине.
/usr может быть смонтирован по сети только для чтения, и быть общим для нескольких машин.
Вообще все гуглится, информации по unix-подобным системам очень много.
/usr/share/local

Нет сейчас под рукой линукса, не могу проверить, но вроде нет такого пути. Есть /usr/share, /usr/local

Вообще вот стандартная структура каталогов:
en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
Спасибо! Действительно спутал с /usr/local/share
Все, что в /usr/local — это вы сами накомпилировали и установили. Если ничего нестандартного не нужно, то там просто несколько пустых каталогов. А все настройки только в /etc и домашнем каталоге. Если вам надо править что-то вне этих каталогов, то вы делаете что-то не то, скорее всего.
В BSD, если не ошибаюсь, /usr/local/etc/ предназначена для конфигов всего, что пользователь поставил сам (в т. ч. пакетным менеджером).
В данной статье речь о Линуксе. Поэтому я и отвечал в его контексте.

В вопросах файловой иерархии (и во многих других) разница крайне мала. Ничто не мешает пользователю использовать /usr/local/ именно так на GNU/Linux, кроме того, не удивлюсь, если в каком-либо дистрибутиве так и сделано.

По изначальной задумке, есть 3 уровня иерархии, повторяющие друг друга.
Они располагаются в директориях: /, /usr, /usr/local
Пути для конфигурационных файлов должны быть, соответственно: /etc, /usr/etc, /usr/local/etc


Но в современных линуксах это правило не соблюдается, и программы, установленные в /usr, лезут не в /usr/etc, а сразу в /etc.

Спасибо.
Ещё бы что-то такое же про директории.

Бесспорно, но это уже совсем другая история, как говорит Л. Каневский.

Про директории советую почитать man hier (hierarchy). Кратко и информативно

Все очень здорово расписано, хоть маленькое уточнение сделать про Графический Тулкит — на схеме может сложиться ощущение что мол пользователь при выборе дистрибутива должен думать какой использовать, и выбрать только один. По факту, это просто библиотека, или набор библиотек, поэтому ничто не мешает иметь в системе и Qt, и GTK, и WxWidgets, и что там еще потребуется приложению которое вы захотите поставить.
Если не ограничивать себя постоянно в выборе софта, то рано или поздно в вашей установке будут как минимум Qt+GTK.
Спасибо большое за статью.
Я работаю с этим каждый день, так что вроде бы ничего нового не открыл…

Но, во-первых, просто приятно почитать.
Во-вторых, как ни странно, даже для меня оказалось полезным увидеть всю картину целиком.
Ну и в-третьих, про Alsa и PulseAudio, вот, я тоже не до конца понимал (на серверах особо не нужно, а на десктопе как-то обычно работает Out-of-Box).

В общем, спасибо… ну и если, будет желание написать прододжение — то прочту с удовольствием. Рассказать-то есть о чем.
Out-of-Box

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

А уж сколько его приходит, когда пытаешься сделать это под виндой…
USB-BT-dongle 1.1 от D-Link, версии винды от XP до 10. Комплектный bt-stack протерян лет 15 назад.
XP — установлен стек с сайта D-Link методом распаковки и ручного подпихивания
7 — старый стек утерян, завелись с грехом пополам на мешанине из распакованных стеков intel и toshiba
8 — старый стек по прежнему утерян, сайт делает вид, что не знает о такой фиговине, финт с чужими стеками больше не помогает
10 — ??? не видит устройство


Xubuntu: apt install pulseaudio-module-bluetooth (если не был установлен уже) нагугливается за минуту, никаких странных бинарей качать не надо — оно просто работает.

Я вам вполне верю, так что не «в пику» это говорю, а просто для поддержания беседы. Но моей Fedore 33 блютус наушники завелись сразу, даже толком не могу сказать, что имеено для этого надо делать.
Блютус библиотеки уже стояли, наушники нашлись и сразу и начали работать.

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

Тем не менее Линукс продолжает представлять из себя шито-перелатаного монстра. Чего стоит только установка программ. Хочешь поставить маленький индикатор сетевого соединения а оборачивается это все стягиванием из сети 4 гигабайт библиотек вроде qt4 и прочего. Или просто нерешаемая проблема с held пакетами, которая решается только полным сносом системы ( по крайней мере на Лоре говорят именно так). Мне до сих пор непонятно на что рассчитывают линуксоиды призывающие рядовых пользователей пересаживаться на Линукс, с его гребанным зоопарком малосовместимых между собой дистрибутивов. Единственный дистрибутив который мне понравился — Majaro linux, но та же проблема с установкой доп программ.

GNU/Linux можно сломать, как и всё в этом мире. Если вы хотите иметь в GNOME значок NetworkManager из KDE, вполне ожидаемо, что вам прилетят библиотеки KDE и Qt (и наоборот). Любую проблему с пакетами можно решить, вопрос обычно в том, что привело систему в такое состояние, и насколько вы готовы углубиться. Иногда действительно дешевле сохранить хомяк и переустановить систему.

FreeBSD ездит с ноута на ноут zfs send -R | zfs recv -F. [по желанию] Ядро адаптировал — и вперёд. А тут — "дешевле переустановить систему". Это уж точно [вендовый] мрачище.

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


zpool attach <pool> <existing vdev drive> <new drive>
… wait for resilver …
zpool detach <old drive>

нельзя detach. это хуже чем destroy. лучше zpool split. вот где рулез :)

Oh, boy! It's really cool, I'm sorry, I've missed it.

Linux ездит с помощью rsync ничуть не хуже, и даже ядро адаптировать не нужно, в худшем случае собрать новый initrd потребуется. А от помойки из пакетов и самосбора FreeBSD еще меньше застрахована в силу того, что пользовательская база меньше и пространства для рукоприкладства больше :)

rsync? setenforce 0? ага.
написано русским по белому: ядро по желанию. костыля initrd нет как класс — загрузка с zfs без танцев с бубном родным лоадером. одновременно можно иметь возможность грузиться в uefi и legacy. рукоприкладство — это [у вас] в /opt и /usr/local :) у нас всё для людей: pkg check -sa && pkg check -d.

initrd — это костыль, а ядро «адаптировать» (теперь уже по желанию) — норм, да? гвозди бы делать из этих людей :)
Вот для таких, как вы, лучше и не упоминать, что ядра бывают с кастомным конфигом.
А бывают еще и без кастомного? Правда?
Бывают с дефолтным, очевидно. И очевидно, что я отвечал на то, что вы считаете, видимо, сарказмом. initrd не всегда костыль, но в данном случае да.

N.B. как удобно мы фокусируемся на том, что выгодно и опускаем то, на что неудобно отвечать :)


  • rsync и selinux всегда польностью забэкапят, ась?
  • а "рукоприкладство" (Ваше, кстати, словечко-то), свойственное для линуха и разводимое в /opt и /usr/local? В том числе потому, что вместо make package самому сделать пакадж не постигнув дзен rpm/deb с наскоку фиг получится?
  • ещё раз: ядро пересобирать не надо. это не как в линух продираться сквозь миллион опций через надцать экранов. для желающих процедура описана в хэндбук. мне её повторить — не тяжелее юнита для системд с нуля написать.
Каюсь, сфокусировался на самом очевидном. А вы с самого начала после предложения клонировать бардак с помощью zfs ожидали конструктивного обсуждения? Ну так более терпеливые участники дискуссии ниже уже объяснили, в чем вы неправы, нет?

Я вроде бы понял ваш тезис: вы, кажется, хотите сказать, что пакеты/порты FreeBSD на голову выше всех линуксовых реализаций того же самого и не позволят устроить бардак в принципе (или, как минимум, не будут провоцировать его устраивать), верно? Т.е. это не вопрос дисциплины? Ну не знаю… опыта с FreeBSD у меня нет и чисто теоретически я готов такое допустить, но вряд ли это так. Или у вас есть жизненные примеры?

Насчет совместимости rsync и selinux ничего не скажу, я последний просто не использую (и поэтому setenforce 0 не делаю). А zfs позволит все корректно перенести потому что работает уровнем ниже? Т.е. dd+resize2fs тоже справятся?

Насчет пересборки и адаптации ядра: ну да, в линуксе тоже можно втянуть в ядро больше модулей, чем обычно принято делать — и initrd станет не нужным (если в нем нет никакой загрузочной логики вроде корня по nfs/nbd, но допустим, что нет) — однако зачем? И расскажите уж тогда, что такое адаптация? Это что-то отличное от пересборки? Повторюсь, что про FreeBSD я мало что знаю и практического интереса у меня к ней нет, но теоретически любопытно, что там действительно сделано лучше.

В FreeBSD загрузчик (не grub) умеет грузить модули для ядра из обычной файловой системы (ufs или zfs) без промежуточных виртуальных дисков. Впрочем что grub+linux мешает делать также я не знаю — файловую систему grub вроде тоже умеет парсить, но пользуется этим крайне ограниченно.
С "адаптацией" технически всё то же самое что в линуксе: модули либо вкомпилены в ядро, либо могут быть подгружены отдельно. Разница в том, что сборка модулей по дефолту включена для вообще всего (и я даже не интересовался можно ли отключить — всё равно оно компилируется быстро), а настройка при пересборке — только списка статически слинкованного в ядро, так что нужные модули после переезда всегда можно догрузить (и без пересборки всяких initrd которых нет). Но если хотите иметь идеальное ядро под конкретное железо (т.е. всё что нужно — статически слинковано, всё что не нужно — убрано в модули и не грузится) то придётся пересобрать, да. Но настройка этого всего всё равно проще чем в линуксе.
Впрочем многие (может и большинство) (как и в Linux-ах) пользуются дефолтным ядром и ничего не пересобирают — запускается оно наверно везде, а всякий тюнинг подгружают модулями.


Вообще — непонятно о чём дискуссия, ветка началась с исправления испорченной системы, а не с переезда. Переезд по-моему и там и там одинаково просто делается, если необязательные пересборки не учитывать.
А вот исправлять систему проще в FreeBSD (если сравнивать с популярными deb/rpm-based системами), потому что её НЕ надо переустанавливать, чтобы вайпнуть состояние пакетного менеджера. Можно просто удалить и создать пустыми /usr/local (если были кастомные конфиги — забекапить /usr/local/etc), /var/db/pkg (а ещё /usr/ports, /var/db/ports, /var/db/portsnap — если пакеты собирались из исходников) — и всё, в системе не осталось никаких следов пакетов, но она осталась в рабочем состоянии (с консолью), все данные (/home и /var) сохранены. Можно заново установить нужные пакеты по списку (заметно более короткому чем обычно в линуксах) и продолжить работу.

Ага, спасибо, теперь понятна суть претензий к initrd. Да, в простых случаях (если загрузчик в состоянии прочесть файловую систему с модулями) можно было бы обойтись без него — но тут уже встает вопрос интеграции ядра и загрузчика (и ее осмысленности — раз уж мы все равно не планируем ограничиваться простыми случаями). Скажите, а как в FreeBSD принято грузиться с nfs/nbd/luks?

Что касается исправления системы — ну так нам же никто не обещал, что систему изуродовали исключительно в рамках возможностей пакетного менеджера, иначе линксовые пакетные менеджеры тоже справились бы. Можно ведь и в основной системе отлично поиграться — и разломать FreeBSD таким же точно образом. Да, отчасти явное выделение базовой системы спасает положение (и одновременно его усугубляет если сломали саму базовую систему), но раз уж на то пошло — chroot/jail & snap & flatpack & контейнеры & виртуалки решают проблему еще более радикальным образом.
вопрос интеграции ядра и загрузчика (и ее осмысленности — раз уж мы все равно не планируем ограничиваться простыми случаями).

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


Скажите, а как в FreeBSD принято грузиться с nfs/nbd/luks?

Не особо интересовался всякими экзотическими загрузчиками, но думается все отличия заканчиваются на том моменте, где ядро с модулями уже в памяти, а дальше оно уже по штатным конфигам работает. Чтобы ядро загрузить по сети, есть pxeboot (а потом можно смонтировать / из nfs).


Вместо линуксового luks есть geli, пишут что к / оно тоже применимо, подробности лень выяснять, но ядро кажется должно лежать в незашифрованном разделе, загрузчик сам видимо расшифровывать не умеет, ссылки: 1 2

В FreeBSD загрузчик (не grub) умеет грузить модули для ядра из обычной файловой системы (ufs или zfs) без промежуточных виртуальных дисков.

Initrd дает большую гибкость — у вас может быть корнем файловая система вообще не поддерживаемая ядром. Более того, технически поддержка ФС может быть полностью вынесена из ядра.
Загрузчик файловыми системами может не владеть в принципе, как systemd-boot или efistub.


Можно ли заставить фряху грузиться с чужеродной ФС как efi-приложение?

Там выше товарищ описал не переезд с ноута на ноут, а установку маленького индикатора, обернувшуюся стягиванием из сети гигабайт. Совершенно внезапно для пользователя, разумеется.
С таким подходом совершенно неясно, что он еще наворотил в системе: подключал ppa в дебиан, или # chmod -R 777 / .

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

Поздравляю, у вас просто понимание устройства фряхи и прямые руки. Но данное утверждение вообще никоим образом не характеризует FreeBSD
как "лучшую" систему. Потому что у меня лично вот линукс без сложностей уже лет восемь с лишним с ноута на ноут кочует и обновляется. А кто-то (офигеть не встать!) и винду так таскать умеет.

Да, ещё с помощью dd отлично ездит (как *BSD, так и GNU/Linux). Только не понятно, к чему вы это, вроде не про миграцию системы ветка.
то есть все таки зоопарк? Откуда мне как пользователю знать про эти ваши заморочки «Это же GNOME!!! а ты ламер из KDE значок ставишь!»
Вот недавно только читал на хабре как все просто и замечательно в мире линукса последнее время для ОБЫЧНОГО пользователя. А тут вот опять — ты должен много знать… и тогда «любую проблему с пакетами можно решить»…
Никакой проблемы: захотел — поставил. Пользователь поставил и нашёл себе проблему — оказывается, ещё какие-то библиотеки бессовестно ставятся. Хотя даже если вы поставите GNOME и KDE вместе, ваша система всё равно будет меньше, чем некоторые другие настольные ОС.

Только что попробовал поставить plasma-nm (тот самый «индикатор сети») на чистый Debian с Xfce. Для скачивания 44,8 МБ, к установке 204 МБ (включая библиотеки KDE 5). Так что, как говорится, делите на два.

Не утверждаю, что GNU/Linux — беспроблемная система. Так никогда не будет. И что простая для рядового пользователя тоже утверждать не возьмусь. Хотя, если пользователю нужен браузер, проигрыватель, офис и, скажем, проприетарный Steam, то, пожалуй, очень простая.

Ну, возьмите этого своего ОБЫЧНОГО пользователя, и дайте ему диск с виндой и пустой комп — узнаете много нового о сексуальной жизни себя и своих предков.


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


Вы же говорите о том, что имея win-бэкграунд некомфортно вдруг оказаться в положении, когда снова надо что-то изучать.
Но, чтобы не называть вещи своими словами, вы притягиваете обычного пользователя, который Ох, как мативировал! И меня мативировал, и тебя, Василь Иваныч, мативировал!

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

Если вы ставите части другого окружения (панель, виджеты, оконный менеджер), вы можете их использовать, но подразумевается, что вы понимаете, что вы будете с ними делать (а иначе что вас побудило ставить непонятные пакеты?). Остальное ПО (типа почтовиков, магазинов приложений) вы можете ставить, не беспокоясь о DE. Более того, попытка держать ПО только на GTK 3, или только на Qt 5, или ни за что не ставить ПО на Java, или на Electron — это натуральный невроз, не дающий ничего, кроме нескольких сотен МБ на диске и временного иллюзорного удовлетворения.


Почему вам доступны куски одного DE под другим — потому что вы можете поставить сразу несколько DE — одно для себе, второе для супруги, третье для кота. Зачем усложнять пакетный менеджер, чтобы лишить пользователей этой возможности?

Это проблема не столько именно линукса, сколько вообще мироустройства. Оно позволяет действовать без понимания происходящего, но требует этого понимания для предвидения побочных эффектов ваших действий. Мироустройство без проблем позволит вам разогнать автомобиль до двухсот километров в час — но внезапно не позволит на этой скорости вписаться в резкий поворот. Вы легко можете убить человека, и в момент убийства ничто не подскажет вам, что оживить убитого окажется далеко не так легко.
Наконец, вы можете написать на техническом ресурсе, что вы не хотите ни в чем разбираться — и (возможно) удивиться негативной оценке ваших комментариев.
Линукс — это очень частный случай мироустройства, очень.
НЛО прилетело и опубликовало эту надпись здесь

В винде тоже такое — хочешь поставить маленькую программулину типа Paint.NET, сначала поставь .NET Framework.
В новых виндах дотнет предустановлен, и это аналогично тому, как если после установки линукса сразу предустановить либы Qt/GTK/etc.

Когда ты ставишь Винду, как правило ты сразу ставишь direct x и .net framework, опционально java runtime, и все. Все ставиться и все работает.

Qt — изначально коммерческий проприетарный тулкит, сейчас является свободным ПО (но по-прежнему коммерческим).

И скоро снова может стать коммерческим. Они же в начале года опосредованно заявили, мол, извините, мы будем закрывать исходники. Сообщество KDE начало негодовать, и Qt Project выпустили пост, который одновременно и опровергает это, и не вносит никакой конкретики. Я думаю, что как только коронавирус пройдет, как Qt Company восстановится, нас может ожидать немало интересных сюрпризов.


Графическое API

Хотелось бы прочитать про всё это подробнее, как там всё взаимодействует: DRM, блобы в ядре, opengl, weston, kms, cuda, qt/gnome. Разобраться новичку очень сложно.


Соответственно, SELinux поставляется в RHEL и производных, а AppArmor — в Ubuntu. Оба модуля имеют сходное назначение и привносят в систему мандатное управление доступом. Оба модуля повышают безопасность системы, не позволяя приложениям делать то, что от них не ожидается.

SELinux, по-моему, является образцом того, как не надо делать продукт. Его довольно сложно конфигурировать, он плохо написан, он использует параллельно два или три языка для написания политик безопасности, при этом у этих языков есть конфликтующие ключевые слова (одно написание, но разный смысл). При всём этом политика безопасности по умолчанию практически совсем не защищает данные пользователя обычного десктопа.


Наиболее популярные проекты: Flatpack от Gnome, Snap от Canonical и AppImage сам по себе. Они несколько отличаются подходами, но в общем случае обеспечивают установку приложений со всем рантаймом и некоторой степенью изоляции от системы.

Только вот работать с ними не очень удобно, конфигурировать их не очень удобно (уже есть графические утилиты, как у Android Permsission Manager?), иногда бывает так, что устанавливаешь пакет со всем рантаймом, а он говорит, что зависимости не удовлетворены.


В годы юности NM вызывал приступы фрустрации у пользователей, но потом всё стало неплохо.

Мне кажется, что до сих пор всё не стало "хорошо". Конфигурировать сеть через него в разы сложнее, чем через ifconfig или ip, всё это может конфликтовать, работа с VPN соединениями в NM у меня как-то совсем не сложилась. Ещё почему-то в моём дистрибутиве иногда не запоминается последняя использованная сеть.


Зато радует pulseaudio. Если раньше им было очень сложно пользоваться, то сейчас он очень удобен и стабильно работает.

А можно узнать, что с NM на компе с gui не так?
У меня было дофига компов, юзеров с разным уровнем владения пк и ни одного нарекания на NM.
Чем сложнее в NM сеть конфигурировать?
Какой тип VPN использовался?

Ну как бы GNU/Linux не только на компах.
Когда есть несколько сетевых интерфейсов, несколько сетей, в некоторых из них несколько VLAN, есть объединение интерфейсов в bonding, зеркалирование трафика, двойная звезда и т.д. — хотел бы я посмотреть на того, кто все это в gui конфигурирует.

В этом я не спорю, только консоль с утилитами ip, ifconfig
Как для домашнего юзера — проблем с nm не видел

Для замороченных конфигураций самое просто и удобное — альт-специфичный www.altlinux.org/Etcnet — в отличие от net-scripts из RH это минимальная надстройка над ip l/a/r/ru с идентичной семантикой. Отсюда же и минусы по сравнению NM или systemd-networkd (и netplan поверх них) — поднятие десятка вланов реально сопровождается как минимум десятком вызовов ip l add + еще столько же на ip a add + еще какие-нибудь ip r/ru

RouterOS?

Спасибо, отличный обзор! Больше десяти лет назад мы (региональный LUG) пробовали делать что-то похожее для школьных учителей информатики, презентация до сих пор жива — enp.itx.ru/linux/alt/schools/linux-inside.pdf — но местами устарела (потому как в ней нет ничего про systemd, dbus и прочий freedesktop)

По тексту я бы еще чуть больше сказал про сеть (от systemd-networkd до Ubuntu-специфичного netlplan и ALT-специфичного etcnet + всякие детали резолвинга, включающие resolvconf) — но наверняка кто-то из читателей найдет другой свой любимый молоток, придерется к тому, что нет ничего про виртуализацию и контейнеры — и т.д. :)

А вы возьмите и расскажите :) спасибо за методичку, скачал себе

По большому счёту все претензии к Linux сводятся к трём вещам: отсутствие вертикальной совместимости (даже на уровне glibc), отсутствие актуальной документации (man'ы — это хрень, а не документация. Попробуйте по ним научиться пользоваться, скажем, ffmpeg или rsync) и отсутствие полноценной поддержки аппаратуры (особенно это касается ноутов, где зачастую проблема даже добиться нормальной работы со спящим режимом).
Отсутствие вертикальной совместимости — не всегда минус: здорово, когда не приходится тащить наследие предков, а если у вас есть исходники связываемого приложения, его можно пересобрать. Маны — очень простой, конечно, инструмент, но это здорово, что они есть. Аппаратура — да, полностью согласен. Но тут Linux сложно винить. Где-то в идеальном мире вендоры публикуют открытые спецификации и даже референсные драйверы.
Про маны ffmpeg и rsync — я пробовал, что не так?

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

НЛО прилетело и опубликовало эту надпись здесь
отсутствие вертикальной совместимости

Это минус, когда у вас всегда строго одна поддерживаемая архитектура и строго closed-source приложения.


Только вот линукс — это OSS.

Линукс — это OSS, но далеко не все приложения OSS. А для работы нужен как раз софт. Ну и даже OSS софт далеко не всегда оперативно обновляется авторами, если в операционке что-то изменилось.

OSS можно обновить и без авторов, если у вас достаточно денег/вы можете найти энтузиастов/разобраться сами.
В случае closed sources такой возможности вы лишены по определению.

Почему? Всегда можно связаться с авторами и уточнить условия. Но в любом случае основной проблемы это не отменяет — нужный мне софт может быть closed source независимо от операционки, на которой он у меня крутится.

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

Безусловно, всё возможно. Но вы на все случаи жизни соломки не подстелите.

этот аргумент Р. Сталман приводит на своих лекциях, зачем нужно ПО с открытым кодом. Он утверждает, что это обычная ситуация, особенно если П.О было разработано давно.

Я не думаю, что на эту тему имеется хоть какая-то надёжная статистика. Безусловно, технически у открытого софта больше шансов «пережить зиму», если понадобится, но на практике мы знаем массу примеров всех возможных сочетаний этих двух категорий: живое/сдохшее, проприетарное/открытое. К тому же, опять-таки, «долговременная живучесть» — важный фактор, но лишь в ряду прочих факторов. Вполне можно решить, что конкретно моей ситуации это вообще непринципиально. Допустим, есть у меня софт, который делает бэкапы. Если он по какой-либо причине перестанет работать, я найду аналог, вряд ли это такое уж экстраординарное дело. Но бывают случаи и гораздо сложнее, конечно.

есть такая штука: https://en.wikipedia.org/wiki/Digital_dark_age
Это когда ваши старые бэкапы перестанут читаться, потому что софт который их делал больше не работает, а обновлений нет и не будет.

НЛО прилетело и опубликовало эту надпись здесь

Да, историю с left-pad можно вспомнить.

Не передергивайте: софт и формат данных — это совершенно разные, не связанные между собой вещи. И да, закрытый и неопубликованный формат — это больший риск, который в моём представлении выше риска проприетарщины. Но прямого отношения эти вещи друг к другу не имеют.

на ум сразу приходит опубликованный и открытый формат .docx который производит MS Office.

Да много чего на ум приходит. GIF, ZIP, AVI и ещё огромная куча форматов. Более того, я бы сказал, что форматы в среднем переживают софт, поэтому в нашей повседневной практике используется масса форматов, придуманных тогда, когда об открытости и вопросах лицензий вообще мало кто задумывался. А с реализацией везде проблемы: docx открыть в OpenOffice — криво, odt открыть в MS Word — точно так же криво, чего тут удивительного. HTML страницы в разных браузерах тоже по-разному отображаются, хотя казалось бы.
в нашей повседневной практике используется масса форматов, придуманных тогда, когда об открытости и вопросах лицензий вообще мало кто задумывался.

формат .txt, что-ли? GNU существует с 1984г.

И что, многие задумывались об открытости и вопросах лицензий в 1984 году? Мне кажется, отдельные личности, не более того.

есть такая книжка "Numerical Recipes", её авторы явно задумались об закрытости своей лицензии, хотя все исходники в книжке есть. Вышла она в 86 году. Я помню как читал в советские времена ещё ксерокопию, типа настольной библии была.

Не, ну с этим я не спорю — конечно, отдельные эпизоды такого рода были, были и люди, которые задумывались об этих вопросах. Но мне кажется, что основной массив исходников жил в условиях «дикой природы», да и судебная практика ещё не устаканилась, даже в 90-х годах была масса прецедентных решений.
А с реализацией везде проблемы: docx открыть в OpenOffice — криво

Оно и под самим MSO криво. MSO fo Mac вспоминали тут дюже. Накладные от кока-колы хорошо не снятся… как две мажорки сменилось — так и рассыпается.
Но у меня ж работает!!!111адынадын

Всегда можно связаться с авторами и уточнить условия

И? Автор может охладеть к проекту, не владеть правами на распространение этого софта, потерять память или вообще помереть.
В любом случае, OSS продолжит жить и развиваться за счет сообщества пока он востребован, CSS — кирдык-капут.


нужный мне софт может быть closed source

Может. Но, в целом, вы, в свою очередь, можете постараться не спонсировать столь паску… вольную манеру с софтом, который вам нужен.

Ну и что? А завтра меня может переехать автобус. Это всё оценки рисков, не более того.

Может. Но, в целом, вы, в свою очередь, можете постараться не спонсировать столь паску…

Мне кажется, вы избыточно идеологизируете проблему. Вокруг меня масса вещей, которыми я пользуюсь. Часть из них заведомо под моим контролем (мебель, положим), часть вообще никак не зависит (автобусные маршруты), часть идёт с vendor lock (конкретные мешки для пылесоса).

Софт в этой картине — всего лишь один мелкий элемент, а «проприетарность» — всего лишь один из рисков. Я вполне себе помню нужный мне open source софт который по сути сдох из-за недостатка интереса к себе. Что мне толку с того, что он open source? Я не могу его сам поддерживать (других дел хватает), сообщество не хочет. Стало быть, переезжаем на другой — возможно, тоже open, а может, и проприетарный, если риски от потери интереса фирмы мне кажутся менее вероятными, чем риски от потери интереса сообщества.
А завтра меня может переехать автобус

Но это же не повод перебегать на красный свет?
Вот так и с софтом.

Не уверен, что я удачно донёс свою мысль. Риски у вас есть всегда и везде, и «проприетарность» должна рассматриваться абсолютно в ряду прочих и занимать соответствующее место. Она абсолютно ничем не заслуживает уподобления красному свету на перекрёстке.

Скажем, я всю жизнь пользуюсь проприетарным MS Office, и пока всё более-менее хорошо, даже обратная совместимость соблюдается. Авторы не потеряли интереса, как видите. И есть достаточное количество open source продуктов, от которых пришлось таки отказаться: Bazaar и Java PathFinder, например. Не помогла их опенсорсность ни разу.

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

Звучит весьма разумно.
Да, вы правы.

Вам не нравятся маны? Попробуйте без них научиться пользоваться rsync! Да и всем остальным.
Маны — это такое супер-изобретение, что я прям сколько использую линукс, столько и счастлив, что есть адекватная документация по большинству команд, очень удобно.

Вам не нравятся маны? Попробуйте без них научиться пользоваться rsync! Да и всем остальным.

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

Кому как. Между манами и получасовым видосом парня с мощным индусским акцентом под электронщину про то как сделать десятисекундное действие, выберу маны 11 раз из 10.
А других туториалов поди поищи еще.

Если я никогда не пользовался программой, то я обычно выбираю стек оверфлоу

Все зависит от ситуации. Я когда код пишу — тоже использую как официальный JavaDoc от Оракла, так и стек оверфлоу. И один не отменяет другой. У мана есть неоспоримый плюс — он есть здесь и сейчас. И еще в них обычно есть секция EXAMPLES — там часто есть готовое решение для большинства случаев.
НЛО прилетело и опубликовало эту надпись здесь

В хороших манах есть раздел examples

ffmpeg или rsync

Да они и под Windows ведут себя так же.

По описанию и по картинке создаётся впечатление, что NetworkManager работает непосредственно с Сетевым Стеком. Получается, что сеть целиком можно настроить с помощью NetworkManager?


Как минимум устройства то предоставляются не непосредственно ядром, а udev. На картинке udev находится там, где systemd? Или новое устройство можно сделать другой программой, например openconnect, с помощью которой я настраиваю vpn. Это тоже ведь не уровень ядра.


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


Например, мне нужно сконфигурировать компьютер, так, чтобы в один адаптер втыкался шнур от интернета, а в другой свитч, через который работает внутренняя сеть в доме. Мне для этого хватит нетворк менеджера? Или он таким не занимается и понадобится дополнительный софт? Или NetworkManager как раз и занимается тем, что абстрагирует этот дополнительный софт, используя его под капотом?


И может вы в курсе, как связаны NetworkManager и networkd? Одно заменяет другое? Или NetworkManager работает поверх networkd?

en.wikipedia.org/wiki/Netlink — вот через него ip l/a/r/ru и прочие NM, networkd и openconnect (или даже github.com/svinota/pyroute2) уговаривают ядро сконфигурить сетевой стек требуемым образом

Ага. Получается network manager говорит с ядром по специальному протоколу. А для того, чтобы сделать допустим enp0s3 достаточно этого протокола? Я так понимал, что udev это делает.


И network manager он может вообще без других программ работать? Его получается достаточно? Я думаю нет, но если он работает с ядром по этому протоколу, то получается, что да?

точнее udev (как часть systemd)
Тут — developer.gnome.org/NetworkManager/stable/NetworkManager.html — пишут, что NM таки пользуется услугами udev для обнаружения сетевых интерфейсов. Но udev — это такой же точно клиент netlink, поэтому я не вижу теоретических препятствий к тому, чтобы реагировать на появление/исчезновение сетевых интерфейсов самостоятельно — тот же networkd, насколько я понимаю, именно так и делает (а еще умеет переименовывать сетевые интерфейсы без помощи udev).

Вообще я могу ошибаться в деталях, поэтому как эксперта могу как раз посоветовать автора вышеприведенной библиотеки для работы с netlink — лет десять назад он был довольно общительным и делал (сначала на AWK, а потом на python) свою свободную систему управления сетевыми интерфейсами (и не только) поверх netlink c JunOS-like CLI — но, видимо, опередил свое время :(
Графический тулкит — библиотека или фреймворк, упрощающая рисование формочек и кнопочек, причём в едином стиле. То, чем занимается Windows Forms на ОС другого производителя, а так же занимался некогда полулярный Motif на старых юниксах (Open Motif доступен поныне).

Windows Forms — это ООП обертка(Delphi VCL-like) над win32 api.

20 лет назад считал своим долгом превратить Linux в такую же удобную для пользователя систему, как и Windows. Делал всякие графические улучшения и программки на QT для настройки конфигов. А потом познал дзен и стал использовать линукс таким какой он есть: быстрым, удобным, настраиваемым. И все эти богатства только для интеллектуального сообщетсва.

20 лет назад может быть и надо было что-то делать, а сейчас-то все искаропки хорошо
Особенно Гном 3.

Огромное Вам спасибо за статью! Стиль вашего изложения очень приятен, читать одно удовольствие!
Было очень интересно увидеть общую архитектуру. Все названия (masa, qt, SELinux итд) видел множество раз, но именно после прочтения вашей работы, многое в понимании стало на места! Также то что Вы провели параллели с одинаковыми по сущности продуктами и вкратце упомянули их историю, тоже для меня было ценно. Ещё раз спасибо большое за Ваш труд!

Статья хорошая, но ломают всё же копья, а не копии :)

Скрипя сердцем.

У меня сложилось впечатление, что многие пользователи GNU/Linux слабо представляют, из чего сделана эта операционная система, поэтому утверждают, что она сляпана из попавшихся под руку кусков.

Наоборот, как раз хорошо представляют, потому и утверждают. И ваша статья — только подтверждает данное утверждение.


В то же время, архитектура большинства дистрибутивов является устоявшейся

Это не значит что она не сляпана. Да, технология "сляпать из кусков", к сожалению, устоялась.


регламентируется рядом стандартов

Что-то регламентируется, что-то не регламентируется. Где регламентируется — у каждой подсистемы свой стандарт, делавшийся либо без оглядки на остальных, либо, в местах неизбежного соприкосновения, с учётом необходимых костылей для подгона одного к другому. Нет единого плана разработки, да и не может быть с таким подходом — найдём кто что сделал в опенсорсе и как-нить прикостылим к тому что уже есть.

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


Ммм, мы же сейчас про ReactOS говорим?)
Или это то самое имя, которое нельзя называть?

А статья приятная, да, спасибо.
Дефолтным загрузчиком сегодня является GNU GRUB
Только в большинстве дистрибутивов: в Gentoo и Arch Linux, например, вообще нет никаких умолчаний, поскольку нет самого процесса автоматизированной установки.
Другой загрузчик с давней историей — Syslinux.
Есть ещё LILO, тоже с давней историей (ещё более давней, если не ошибаюсь), и до сих пор худо-бедно развивается.
Познавательная статья, спасибо. Ждем продолжение про директории!
… Пакетный менеджер..

а где Portage?
для меня Portage самый лучший пакетный менеджер — исходники берутся напрямую из github, нативная сборка (-march=native), тонкая настройка (USE, env, выбор версии… )

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

И поэтому есть отличный компромисс — Nix. Собирает всё из исходников, но качает готовые результаты из кеша.
Эх! Расскажите мне лучше как в Win сделать окно в фокусе, но не в топе. Как в свое время было хорошо в BlackBox :,(

ЗЫ. А по теме, что Linux, что Win всего лишь интерфейс к инструменту решения задач. И чем они меньше создают проблем в достижении цели использования компьютера тем лучше. Не надо делать ни из того ни из другого культ, т.к. и то и то костыль и должно быть отброшено.
Расскажите мне лучше как в Win сделать окно в фокусе, но не в топе.

К сожалению, не подскажу.


А по теме, что Linux, что Win всего лишь интерфейс к инструменту решения задач.

Я не люблю эту расхожую трактовку. Это нормально — любить и холить свой инструмент. Что такое решение задачи? Это незначительный момент, когда вы прошли длинный путь, и пришли к месту назначения. Хотелось бы, чтобы путь был приятен сердцу.


и то и то костыль и должно быть отброшено

В пользу новых «более лучших» костылей, всё верно.

Ребёнок!
«Истинно говорю вам, если не обратитесь и не будете как дети, не войдёте в Царство Небесное.»
Эх! Расскажите мне лучше как в Win сделать окно в фокусе, но не в топе.

Есть куча утилит, которые могут повесить флаг «Поверх всех окон», как на диспетчере задач. Тогда можно работать с другим окном, которое будет ниже.
Слишком много манипуляций получается
И главное непонятно зачем. Я вот дома использую PowerToys для тайтловой раскладки окон, чтобы они вообще не перекрывали друг друга.
Эх! Расскажите мне лучше как в Win сделать окно в фокусе, но не в топе
<сарказм>У 1С в терминальной сессии это замечательно получается до сих пор делать. ))) </сарказм>
Все в 1С!
CUPS — изначально не был разработан Apple.

Вот из Вики:
Разработка CUPS началась в 1997 году, а первая публичная бета-версия появилась через два года. Изначально CUPS использовал протокол LPD, но через некоторое время LPD был заменён на Internet Printing Protocol. CUPS был быстро принят как система печати по умолчанию в нескольких дистрибутивах Linux, на текущий момент применяется в большинстве дистрибутивов. В марте 2002 года, корпорация Apple приняла CUPS как систему печати для своей операционной системы Mac OS X 10.2, а в феврале 2007 наняла главного разработчика CUPS и приобрела права на исходный код.

В декабре 2019-го года, основатель проекта CUPS уволился из компании Apple
В разделе «Графические тулкиты» можно было ещё упомянуть EFL, на котором зиждется Enlightenment.
Большое спасибо, очень здорово увидеть картину в целом. Подписался, надеюсь на дальнейшие статьи с этим же подходом к изложению.

Рад, что вам понравилось! На меня подписалось несколько хабрапользователей. К сожалению, коллеги, не думаю, что в ближайшее время ещё чем-нибудь разрожусь.

Очень мудрая статья. Комментарии не менее мудрые к ней. Но мне как "домозозяйке" линукс за 15 лет нравиться начал только с Ubuntu12. И вообще я особо не замарачиваюсь если всё что надо работает, ну и ладно как там всё собрано. Главное не виснет и не тормозит, в деле помогает. Спасибо всем кто сделал операционную систему Линукс!

>Современный GNU/Linux в представлении художника
Оно и заметно, что художника.
На самом деле там больше слоев, ну или меньше:) Ситемды, удев или инит работает в юзерспейсе, как ни странно, а на картинке какой-то гибридный L4. Если картинка для юзера — то ему про кернел/юзер спейс делить не рекомендуется, делите уж на кернел, тулчейн, систему ( примерно это tasksel без целей в Деб басед), Иксы, DE и user soft — всем будет проще.
10 лет ждат эту статью, большое спасибо автору!)
Живу без загрузчика уже несколько лет. Устройства с UEFI (который, по сути, новый BIOS) умеют загружать ядро с образами с раздела FAT32, смонтированного на /boot (по умолчанию), и предоставляют свое меню на мультибут.
Есть еще systemd-boot загрузчик, как замена Grub.

Резонное замечание, спасибо! Я не сподобился попробовать. А где параметры ядра указываются?

Все параметры, включая параметры ядра, прописываются при создании загрузочной записи в NVRAM. Со встроенной EFI Shell работать не пробовал, для Linux есть удобная программа efibootmgr. Еще, в относительно свежих оболочках (что до сих пор по привычке называют «BIOS») встречаются специальные меню настроек загрузочных записей.

UEFI предоставляет опцию выборочной загрузки, если успеть нажать специальную клавишу (зависит от вендора МП). При обычной загрузке берется запись под номером 1.
НЛО прилетело и опубликовало эту надпись здесь
А преимущество в чём? Меньше промежуточных уровней при загрузке?

Типа того.


Но сейчас компьютеры очень редко перезагружаются, в основном, засыпают между использованием.

Или уходят в hibernate — именно отключаются. И в итоге приятно, что ноут включается и полностью загружается секунд за 5, а не 20-30, как это было раньше.

Меньше промежуточных уровней при загрузке?
Почему бы и нет. Особенно, если система одна (или, как у меня, вторая система загружается раз в месяц), а трогать параметры ядра приходиться не часто.

Выраженных преимуществ я бы не выделил. Кроме очевидных отличий, в сравнении с отдельным загрузчиком есть такой нюанс — наличие других ОС при прямой загрузке не выявляется.
Отличная статья, спасибо!
Сейчас всем привычней Windows и даже после статьи особо не вижу необходимых функций, ради которых бы хотелось привыкать к Linux
Могу написать прямо противоположное: «не вижу необходимых функций, ради которых бы хотелось привыкать к Windows».

Я уже лет 10 не пользуюсь виндой и когда приходится с ней изредка сталкиваться, то испытываю не самые приятные ощущения.

В заметке пользовательские функции, вроде как, и не рассматривались. Главная функция GNU/Linux для меня — предоставлять свободное ПО, с чем система отлично справляется. Microsoft Windows с этой функцией пока справляется значительно хуже, но кто знает.

SELinux и AppArmor. Первый явлен миру АНБ и развивается Red Hat, второй рождён в рамках ОС Immunix и сегодня развивается Canonical Ltd. Соответственно, SELinux поставляется в RHEL и производных, а AppArmor — в Ubuntu.
AppArmor не имеет отношение к Ubuntu и Canonical (ну или очень незначительное). Его в основном SUSE развивает. А позже в Ubuntu его стали также (как и в SUSE) устанавливать по-умолчанию.

CUPS — «общая система печати UNIX», рождённая компанией Apple.
Не рожденный, а взятый «под крыло Apple» в 2007году (в 2019-го года, основатель проекта CUPS уволился из компании Apple), сам проект начался в 1997году.

… отображающее нажатие клавиш на различные раскладки.
Немного кривое предложение.

Статья хорошая
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.