GoboLinux

GoboLinux — это свободная операционная система семейства Linux, выделяющаяся отходом от принятых в этом семействе стандартов (Filesystem Hierarchy Standard) в пользу упрощения управления и использования системы. Ключевые решения — это изменённая иерархия файлов, способ загрузки системы и управление пакетами, отчасти схожее с решениями Gentoo.

GoboLinux
Семейство ОС Linux
Исходный код открытый
Первый выпуск 20 марта 2002[1][2]
Последняя версия 017[3] (24 мая 2020 года)
Поддерживаемые языки английский, португальский, венгерский, немецкий, испанский
Поддерживаемые платформы AMD64
Тип ядра монолитное ядро Linux
Интерфейс Awesome
Лицензия GNU GPL
Состояние активный[4]
Веб-сайт gobolinux.org
 Медиафайлы на Викискладе

Общая информация

Файловая система в GoboLinux в корне меняет и упорядочивает исторически сложившуюся модель остальных Linux-систем — здесь она является не только хранилищем файлов, но и своеобразной системой управления пакетами. Так, каждая программа, со всеми настройками, библиотеками и прочими файлами, хранится в своём отдельном каталоге. Более того — в нём же могут располагаться и одновременно использоваться сразу несколько версий этой программы (каждая в своём подкаталоге с номером версии). Благодаря такой схеме управление программами упрощается до тривиальных файловых операций, взамен ограниченной системы команд типичных пакетных менеджеров[5].

Если быть точным, набор управляющих программ для пакетов в GoboLinux всё же есть, но они, скорее, играют роль «упрощающих скриптов» (даже написаны они на bash) — все те же операции над файлами можно проделать и вручную, что резко повышает «ремонтируемость» системы и гибкость управления.

Корневая иерархия каталогов в GoboLinux также подверглась модернизации — взамен разбросанных каталогов bin, lib, local, shared в системе имеется центральный каталог, под которым собраны все файлы по типам. Например, все исполняемые файлы (вернее, их символические ссылки, ведущие в персональный bin-каталог программы) собраны в каталоге /System/Links/Executables. Этот единообразный подход резко упрощает управление всей системой — становится маловероятно встретить ошибку «программа не найдена» или изменить неправильный конфигурационный файл — для всех них определено одно и только одно место. Fedora слили /bin и /usr/bin в 2012 году[6], а Debian включил слияние /usr по умолчанию в 2016 году[7].

Несмотря на радикальные различия, GoboLinux не нарушает работы существующих программ, жёстко завязанных на иерархии каталогов: в системе по-прежнему есть физические каталоги /usr, /lib и т. д., но для более удобного обращения с системой они скрываются от пользователя модулем ядра GoboHide.

GoboLinux отличается и другими нововведениями, такими как новая система запуска, отличная от SysV или BSD. Готовится к выпуску и новая система управления пакетами, которая будет включать управление не только классическим набором линукс-программ, но и модулями из таких гетерогенных систем как CPAN из Perl или RubyGems из Ruby — установка модулей из этих репозиториев станет такой же прозрачной, как и для любой обычной программы.

Иерархия файловой системы

Пример иерархии файловой системы в файловом менеджере

На структуру GoboLinux повлияли ранние системы, такие как NeXTSTEP, AtheOS и BeOS, которые использовали собственную структуру файловой системы, сохраняя заметную совместимость с Unix. В корне GoboLinux лежат 6 каталогов: Programs, Users, System, Files, Mount и Depot. Содержимое каждого из них описано ниже.

  • /Programs/ — этот каталог содержит по одному каталогу на каждую установленную программу. Каждый из них, в свою очередь, содержит один или больше каталогов для разделения версий и, возможно, каталоги Settings и Variable. Примеры путей — /Programs/Bash/3.0/bin/bash, /Programs/Xorg-Server/Settings/X11/xorg.conf.
  • /Users/ — этот каталог содержит домашние каталоги пользователей. Например, для пользователя harley домашним каталогом будет /Users/harley.
  • /System/ — важные системные файлы. Большинство управляется системными утилитами (например, /System/Settings/passwd) и скриптами GoboLinux (например, /System/Links).
    • Links/ — содержит каталоги с символическими ссылками на файлы из /Programs.
      • Environment/ — ссылки на файлы окружения. Эти файлы собираются вместе в один файл, который потом загружается шеллом, позволяя программам устанавливать переменные окружения.
      • Executables/ — содержит ссылки на файлы из каталогов bin и sbin каждого пакета.
      • Headers/ — этот каталог содержит ссылки на файлы из каталога include каждого пакета.
      • Libraries/ — ссылки на файлы из каталога lib каждого пакета.
      • Manuals/ — содержимое man и info.
      • Shared/ — ссылки на файлы из каталога share каждого пакета.
      • Tasks/ — ссылки на файлы из каталога Resources/Tasks каждого пакета.
    • Settings/ — конфигурационные файлы и ссылки на файлы из каталога Settings каждого пакета.
    • Variable/ — различные журналы, временные файлы и файлы очередей.
      • tmp/ — временные файлы.
    • Kernel/ — Каталоги, относящиеся к ядру.
      • Boot/ — программы и файлы конфигурации, используемые во время загрузки системы. Здесь находятся ядро и конфигурационные файлы загрузчика.
      • Devices/ — файлы устройств (этим каталогом управляет udev).
      • Modules/ — содержит модули ядра, упорядоченные по версии ядра.
      • Objects/ — предоставляет доступ к информации об устройствах и настройки ядра (появилось в качестве виртуальной файловой системы sysfs в ядре Linux 2.6).
      • Status/ — предоставляет доступ к информации о процессах (виртуальная файловая система procfs).
  • /Files/ — хранит используемые программами данные, которые не являются частью этих программ. Файлы в данном каталоге обычно самодостаточные, например, шрифты, кодеки, плагины и тому подобные, которые не требуют управления со стороны менеджера пакетов. Программы могут создавать здесь свои подкаталоги, чтобы хранить данные, относящиеся к системе, в которой они установлены. Например, Compile — сборщик пакетов в GoboLinux — использует эту возможность.
  • /Mount/ — содержит точки монтирования для подключения дополнительных локальных и удалённых файловых систем. Содержит такие точки монтирования, как CD-ROM, Floppy и Zip.
  • /Depot/ — хранилище пользовательских файлов. Это хранилище пользователи могут организовывать так, как им надо. Никакие подкаталоги /Depot/ не входят в стандартную иерархию GoboLinux.

Программа «Compile»

Compile — утилита, позволяющая скачать исходники указанной программы, распаковать их, скомпилировать и установить в систему одной командой (например, Compile foo, чтобы установить программу foo из исходников). Compile использует простые сценарии компиляции, называемые «рецептами» (англ. «recipes»)[8].

Compile в чём-то схожа[9] с системой Portage в Gentoo, которая основана на FreeBSD Ports и выполняет установку, руководствуясь «ebuild'ами». Но система Portage создана для работы в традиционной файловой иерархии, совместимой с FHS, а система Compile расширяет возможности файловой иерархии в GoboLinux до сферы управления пакетами. Так, в GoboLinux файловая система служит менеджером пакетов (см. «The Ideas Behind Compile»[10]).

Система Compile появилась в GoboLinux версии 011. До этого велись разговоры о портировании системы Portage из Gentoo в GoboLinux в качестве проекта GoboPortage на Sourceforge.net.[11][12]

Другие особенности Compile:

  • Скачивает исходники пакетов из первоисточника: хранилище дистрибутива (или одно из его зеркал) содержит только рецепты. Рецепты могут скачиваться "на лету" либо заранее все сразу.
  • Использует минималистичные и декларативные сценарии компиляции: обычная последовательность «configure; make; make install» может быть записана в виде двухстрочного рецепта, что очень облегчает поддержку рецептов в актуальном состоянии.
  • Поддерживает зависимости в стиле GoboLinux: программы, скомпилированные пользователем «вручную», тоже учитываются при учёте зависимостей пакетов.
  • Не зависит от путей: может работать в так называемом режиме «Rootless»[13] — установке GoboLinux, например, в каталог $HOME внутри другого дистрибутива.

Отличия от традиционных дистрибутивов

Файловая иерархия

В иерархии GoboLinux файлы сгруппированы по функциональному назначению в категории с использованием индексации, основанной на симлинках. Индекс хранится в каталоге /System/Links/: все исполняемые файлы доступны в /System/Links/Executables/, все библиотеки — в /System/Links/Libraries, и так далее. Такой подход устраняет традиционные, характерные для FHS различия между несущественными файлами, находящимися в /usr, и критически необходимыми файлами, которые находятся в корне /. Разработчики других дистрибутивов стараются этого придерживаться, потому что такие различия были когда-то полезны, но сегодня, в совершенно другой, современной среде, они не являются необходимостью.

Симлинки

Существуют символические ссылки, обозначающие обычные каталоги Unix, но указывающие на структуру каталогов GoboLinux. Поэтому можно найти каталоги /etc, /var/log и usr/bin на старых местах. Эти ссылки указывают на эквивалентные каталоги в /System/Links/, так что ключевые пути, такие как /bin/sh или /etc/passwd, остаются корректными. Такие ссылки совместимости скрываются из виду с помощью модуля GoboHide для ядра. Этот модуль, который реализует сокрытие файлов в Linux, используется чисто из эстетических соображений и вовсе не обязателен.

Суперпользователь

Суперпользователь, традиционно известный как «root» с UID равным 0, может иметь любое другое имя в GoboLinux, выбираемое при установке. В отличие от других дистрибутивов, в GoboLinux домашний каталог суперпользователя вовсе не /root, а /User/NAME — как и у других пользователей. Согласно статье hisham, так было решено, потому что ему никогда не нравилось понятие обособленного суперпользователя.

Система загрузки

GoboLinux использует собственную процедуру запуска, в отличие от других дистрибутивов Linux, в которых применяются системы запуска systemd или System V. В каталоге /System/Settings/BootScripts лежат несколько файлов, которые полностью управляют процессом загрузки: BootUp и ShutDown выполняются, соответственно, во время запуска и остановки системы. В дополнение к ним можно создавать скрипты для различных «уровней запуска» (англ. «runlevel»), чтобы управлять способами, которыми может быть загружена система (например, создать скрипт Single для однопользовательского режима, Multi — для многопользовательского, Graphical — для графического режима, и так далее). Файл /System/Settings/BootOptions отделяет настройки системы от других скриптов. Скрипты для запуска или останова демонов и применения настроек находятся в /System/Links/Tasks и могут быть запущены скриптами загрузки.

Релизы

Релизы нумеруются в восьмеричной системе счисления. Авторы говорят, что они выбрали её из-за нуля в первой цифре (в языке Си при записи чисел в восьмеричной системе в первой цифре ставится ноль), и является насмешкой над гонкой за версиями, происходившей среди дистрибутивов примерно в 1999 году. Если читать число как десятичное, то происходит предсказуемый «скачок» версии каждые 8 релизов. До версии 014 в GoboLinux не было минорных релизов, то есть версия состояла всего из одного числа, чтобы не вводить в заблуждение, что один релиз более стабилен, чем другой. Традиция была нарушена при выпуске релиза 014.01 — обновления, которое содержало, в основном, исправления ошибок релиза 014.

  • Релизы до 005 использовались только внутри группы разработчиков.
  • 005—2003: первый публичный релиз в сети.
  • 006 — 9 мая 2003: добавлен модуль GoboHide, введено использование песочницы для установки пакетов.
  • 007 — 22 октября 2003: добавлен каталог Resources для хранения метаданных о пакетах.
  • 010 — 7 января 2004: добавлен графический установщик, доступный в среде рабочего стола, запущенного с LiveCD.
  • 011 — 7 июня 2004: добавлена утилита Compile — инструмент сборки пакетов в GoboLinux.
  • 012 — 6 июня 2005: добавлена утилита Manager для управления системой в графическом интерфейсе.
  • 013 — 2 ноября 2006: добавлена утилита Listener, позволяющая следить за событиями в файловой системе и назначать действия, выполняемые автоматически.
  • 014 — 31 декабря 2007: новый стабильный релиз, включающий обновления пакетов, исправления ошибок и новые версии утилит управления GoboLinux-ом.
  • 014.01[14] — 30 марта 2008: обновление для релиза 014, содержащее исправления багов и несколько обновлений пакетов.
  • 015 alpha — 21 января 2014: Релиз первой альфы после долгого перерыва.
  • 015 — 7 мая 2014: первая стабильная версия после шестилетнего перерыва.

Портирование

По данным на март 2006 года Gobolinux официально выпускается только под i686, и портирование под i386 носит частный характер, а потому неполный. Однако в 2003 году Hisham Muhammad, главный разработчик в проекте GoboLinux, написал «Сляпанное наспех руководство по портированию»[15] для тех, кто хотел портировать GoboLinux под платформу PowerPC и другие архитектуры. Он также занимался портированием сам.[16] Были получены версии для встраиваемых систем, таких как ARM и SuperH, которые легко делались с помощью утилиты Bootstrap[17], специально созданной для автоматизации портирования.

Мнения

LWN.net рассмотрел GoboLinux 010 в 2004 году[18].

Linux.com написал обзор на GoboLinux 013[19].

Джесси Смит из DistroWatch Weekly рассмотрела GoboLinux 015[20]. Смит также рассмотрела версию 016[21].

Примечания

  1. Muhammad H. A bit of history // The Unix tree rethought: an introduction to GoboLinux — 2003.
  2. https://github.com/gobolinux/gobolinux.org/blob/master/lang/en_US/pages/k5.html#L28-L71
  3. GoboLinux 017 - Release Notes.
  4. Статус разработки на DistroWatch.
  5. pkgsrc and the concepts of package management 1997-2007 (part 2).
  6. Features/UsrMove. Fedora Project Wiki.
  7. Index of /changelogs/main/d/debootstrap/.
  8. GoboLinux’s recipe for delicious package management Архивная копия от 17 сентября 2008 на Wayback Machine. Linux.com.
  9. GoboLinux Compile — A Scalable Portage? Slashdot.
  10. «The Ideas Behind Compile» Архивная копия от 13 июня 2010 на Wayback Machine Архивировано 13 июня 2010 года.
  11. GoboGentoo. Gentoo Forums.
  12. GoboPortage. SourceForge.net.
  13. Mayank Sharma. GoboLinux: An Interview with Lucas Villa Real] (21 августа, 2007). Дата обращения: 31 марта 2008.
  14. Thom Holwerda. GoboLinux 014.01 Released (недоступная ссылка) (4 апреля 2008). Дата обращения: 4 апреля 2008. Архивировано 7 июня 2012 года.
  15. Quick-and-Dirty Porting Guide Архивная копия от 21 октября 2016 на Wayback Machine.
  16. GoboLinux PPC.
  17. GoboLinux Embedded Архивировано 29 июня 2012 года..
  18. GoboLinux - Fun with File System Hierarchy. LWN.net.
  19. GoboLinux's recipe for delicious package management. Linux.com.
  20. DistroWatch Weekly, Issue 562, 9 June 2014.
  21. DistroWatch Weekly, Issue 696, 23 January 2017.

Литература

  • Мэтт Хэнсон. Что за штука GoboLinux // Linux Format. — 2014. — Август (№ 186). С. 60-61.

Ссылки


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.