открытый исходный код linux
Сто лучших (полезных) программ с открытым исходным кодом. Часть 1. Аудио-приложения и двумерная графика
Оригинал: Top 100 of the Best (Useful) OpenSource Applications
Автор: UbuntuLinuxHelp
Дата: 21 сентября 2007
Перевод: Александр Тарасов aka oioki
Дата перевода: 1 мая 2008
Ниже приведен список из сотни лучших приложений с открытым исходным кодом, которые на самом деле делают работу в Linux полезной и приятной. Надеюсь, что он убедит потенциальных пользователей Linux в том, что существует много приложений с открытым исходным кодом, которые полноценны, эффективны и удобны. Продвинутым пользователям Linux эта статья поможет в поиске необходимых приложений. Не нужно говорить, что для системы Linux существуют тысячи программ! Я лично занимаюсь разработкой веб-сайтов, поэтому в этом списке особое внимание будет уделено соответствующим программам.
Аудио приложения
Ardour
Audacity
Hydrogen
Jokosher
Разработчики Jokosher переосмыслили процесс создания музыки на каждом уровне, и им удалось сделать чертовски простую в использовании программу.
Можно использовать несколько звуковых карт для подключения нескольких внешних устройств и работать с ними в MusE.
Rosegarden
soundKonverter
Streamripper
С ростом популярности файлообменных сетей таких как Napster, Gnutella и теперь Mojonation и Freenet, любой пользователь Интернета может скачать практически любую MP3-композицию за довольно небольшое время, но часто люди не знают, чего они хотят. Streamripper позволяет скачивать аудиопоток от интернет-радиостанции. Многие MP3-радиостанции проигрывают лишь песни определенных жанров, так что можно скачать всю коллекцию гоа/транс музыки, коллекции джаза, панк-рока или чего хотите. Нужно лишь «натравить» Streamripper на этот аудиопоток и ждать.
Графические приложения (2D)
Cenon
Ядро Cenon является свободным, а значит доступно в исходных кодах для многих компьютерных платформ, в том числе и GNU/Linux.
GIMPshop
GIMPshop унаследовала от GIMP все преимущества, включая широкую функциональность, гибкость настройки. GIMPshop модифицирует структуру меню (так, чтобы было похоже на Photoshop), изменяет терминологию программы на терминологию от Adobe, а в Windows-версии использует расширение Deweirdifier для группировки множества окон GIMP’а в одном месте, с помощью системы MDI, обычной для графических редакторов Windows. GIMPshop не поддерживает расширения Photoshop, но расширения, фильтры, кисти GIMP, естественно, остаются.
Из-за изменений в интерфейсе, многие уроки Photoshop могут быть пройдены и в GIMPshop, а остальные могут быть адаптированы к GIMPshop с минимальными изменениями.
Hugin
Простой в использовании, кросс-платформенный набор средств для создания панорамных изображений. Основано на Panorama Tools.
С помощью Hugin можно объединить несколько фотографий в одну цельную панораму, сшить любую последовательность перекрывающихся изображений и многое другое.
Inkscape
Векторный графический редактор с открытым кодом, по возможностям похож на Illustrator, CorelDraw или Xara X. В нем используется формат файла Scalable Vector Graphics (SVG) стандарта W3C.
Inkscape поддерживает множество продвинутых функций SVG (маркеры, клоны, альфа-смешение и т.д.), особое внимание было уделено изящному интерфейсу. С легкостью можно редактировать узлы, выполнять операции по сложному пути и многое другое. Разработчики надеются улучшать проект за счет пользователей, ведь используется открытая модель разработки.
KoverArtist
Ktoon
Krita
MyPaint
OpenOffice Draw
Panorama Tools
Инструментарий для просмотра, создания и редактирования панорамных изображений:
Pixelize
Суть ее работы состоит в разбиении изображения мелкой прямоугольной сеткой. Каждый прямоугольничек анализируется и заменяется изображением, выбранным из обширной базы данных. Pixelize пробует подобрать такое изображение, которое наиболее похоже на выбранный прямоугольник.
Pixelize лучше работает, когда база данных велика. Если в ней порядка 1000 изображений, результат работы Pixelize может оказаться весьма приемлемым.
Scribus
Под современным дружелюбным интерфейсом Scribus скрываются профессиональные издательские функции, такие как поддержка цвета CMYK, управление цветами ICC и создание универсальных PDF-файлов.
Skencil
Synfig
Плоская анимация всегда была дорогой в создании, ведь каждый кадр должен быть нарисован вручную. Даже сегодня, когда в нашем распоряжении есть программы цифрового рисования, процесс все так же основан на трудоемком рисовании отдельных промежуточных кадров между опорными (твининг).
Таким образом, можно значительно ускорить процесс рисования.
Xara Xtreme
Ранее известная как Xara LX, программа основана на Xara Xtreme for Windows, которая на данный момент является самым быстрым графическим редактором. Исходный код Xara Xtreme был открыт в начале 2006 года, и был портирован на Linux. Этот процесс почти полностью завершен, и теперь Xara Xtreme for Linux доступна для скачивания.
Xara Xtreme for Linux:
Кодим в ядре Linux`а №1
Много лет тому назад, когда наша эра только-только начиналась (когда был создан первый персональный компьютер ;-)), хакеры запускали свои бэкдоры дающие шелл и т.д. и называли эти проги названиями типа top, ps, nfsd, etc для того, чтобы сисоп когда смотрел список работающих процессов думал, что эти проги нормальные системные утилиты и игнорировал их. Но технический прогресс не стоял на месте и эту фишку всё чаще и чаще стали просекать. Тогда хаксоры стали модифицировать такие системные утилиты как ps & top чтобы сисоп не мог видеть некоторые процессы, утилиты ls & du чтобы сисоп не мог видеть некоторые каталоги и файлы и т.д. Но прогресс продолжал шагать уверенным шагом вперёд в светлое будущее.
Для понимания этой статьи необходимы хотя бы базовые знания языка C и ОС Linux.
Основные команды для работы с LKM модулями под
Linux:
Основные правила и отличия программирования LKM’ов для ядра (kernel space) от обычных прог
(user space):
2. Так как практически нет методов контроля, то нет и методов исправления твоих ошибок. Если твой мод сделает что-то неправильно, то может зависнуть весь комп и kernel (ядро) убежит в «panic’е» :(. Поэтому на удаленной системе перед загрузкой модуля можешь выполнять эту команду:
$ echo «1» > /proc/sys/kernel/panic
Тогда, если произойдет panic, комп автоматически перезагрузится.
3. Нет доступа к библиотекам libc, и т.д.
4. Нет простого способа использовать системные вызовы. Иногда можно обойтись другими способами, но иногда придется
и чуть-чуть извращаться.
5. Немного другие include файлы: сначала должны быть
и другие при необходимости.
6. Вместо главной функции main() как в обычной проге в kernel module должна быть функция init_module(). А также cleanup_module() которая будет вызываться когда модуль будет выгружаться.
7. Параметры модулю должны передаваться не через переменные argc, argv, а с использованием MODULE_PARM (пример смотри в модулях ниже).
А теперь давай напишем традиционный Hello World! но в виде kernel module 🙂
int init_module()
<
printk(«Hack World!\n»);
return 0;
>
Теперь в консоле (будем считать, что ты сохранил исходный код в файле mod.c):
Если ты работаешь на обычной консоле, а не на вируальной (без X’ов и не по telnet’у/ssh), то ты
увидиш текст Hack World! на экране и без команды tail.
Ну а теперь давай перейдем к более полезным наворотам.
Обнаружение и скрытие модулей.
Список загруженных модулей можно получить командой lsmod или cat
/proc/modules. А значит сисоп может обнаружить наш модуль и удалить его командой
rmmod! Так что теперь мы поговорим о том как прятать модули 🙂
Это можно сделать несколькими способами, но мы воспользуемся самым простым и эффективным. Для начала небольшое отступление.
char *hide;
long show=0;
// следующие 2 строки нужны чтоб передать модулю параметры (адрес или название мода для скрытия или восстановления)
MODULE_PARM(hide, «s»);
MODULE_PARM(show, «l»);
int init_module(void)
<
struct module *corr, *prec;
prec = corr = &__this_module; // инициализируем переменные для поиска
Использование мода.
Компилируем:
$ insmod hmod.o hide=имя_модуля_для_прятания
Теперь модуль будет спрятан (можно проверить командой
lsmod), а адрес инфы о модуле будет выведен на консоль и в /var/log/messages
Смотрим адрес инфы о модуле:
А теперь снова показываем модуль путем впихивания инфы о модуле в связный список (необходимо указать адрес из
/var/log/messages):
$ insmod hmod.o show=0xd089200
С этим модулем ты можешь прятать любой мод, rootkit, и т. д.
Но помни: сисоп может, например, модифицировать команду insmod,
чтобы она стучала ему на мыло когда кто-то загружает модуль!
О более продвинутых методах загрузки, обнаружения и скрытия модулей мы поговорим в следующий раз.
Пишем простой модуль ядра Linux
Захват Золотого Кольца-0
Linux предоставляет мощный и обширный API для приложений, но иногда его недостаточно. Для взаимодействия с оборудованием или осуществления операций с доступом к привилегированной информации в системе нужен драйвер ядра.
Модуль ядра Linux — это скомпилированный двоичный код, который вставляется непосредственно в ядро Linux, работая в кольце 0, внутреннем и наименее защищённом кольце выполнения команд в процессоре x86–64. Здесь код исполняется совершенно без всяких проверок, но зато на невероятной скорости и с доступом к любым ресурсам системы.
Не для простых смертных
Написание модуля ядра Linux — занятие не для слабонервных. Изменяя ядро, вы рискуете потерять данные. В коде ядра нет стандартной защиты, как в обычных приложениях Linux. Если сделать ошибку, то повесите всю систему.
Ситуация ухудшается тем, что проблема необязательно проявляется сразу. Если модуль вешает систему сразу после загрузки, то это наилучший сценарий сбоя. Чем больше там кода, тем выше риск бесконечных циклов и утечек памяти. Если вы неосторожны, то проблемы станут постепенно нарастать по мере работы машины. В конце концов важные структуры данных и даже буфера могут быть перезаписаны.
Можно в основном забыть традиционные парадигмы разработки приложений. Кроме загрузки и выгрузки модуля, вы будете писать код, который реагирует на системные события, а не работает по последовательному шаблону. При работе с ядром вы пишете API, а не сами приложения.
У вас также нет доступа к стандартной библиотеке. Хотя ядро предоставляет некоторые функции вроде printk (которая служит заменой printf ) и kmalloc (работает похоже на malloc ), в основном вы остаётесь наедине с железом. Вдобавок, после выгрузки модуля следует полностью почистить за собой. Здесь нет сборки мусора.
Необходимые компоненты
Прежде чем начать, следует убедиться в наличии всех необходимых инструментов для работы. Самое главное, нужна машина под Linux. Знаю, это неожиданно! Хотя подойдёт любой дистрибутив Linux, в этом примере я использую Ubuntu 16.04 LTS, так что в случае использования других дистрибутивов может понадобиться слегка изменить команды установки.
Во-вторых, нужна или отдельная физическая машина, или виртуальная машина. Лично я предпочитаю работать на виртуальной машине, но выбирайте сами. Не советую использовать свою основную машину из-за потери данных, когда сделаете ошибку. Я говорю «когда», а не «если», потому что вы обязательно подвесите машину хотя бы несколько раз в процессе. Ваши последние изменения в коде могут ещё находиться в буфере записи в момент паники ядра, так что могут повредиться и ваши исходники. Тестирование в виртуальной машине устраняет эти риски.
И наконец, нужно хотя бы немного знать C. Рабочая среда C++ слишком велика для ядра, так что необходимо писать на чистом голом C. Для взаимодействия с оборудованием не помешает и некоторое знание ассемблера.
Установка среды разработки
На Ubuntu нужно запустить:
Устанавливаем самые важные инструменты разработки и заголовки ядра, необходимые для данного примера.
Примеры ниже предполагают, что вы работаете из-под обычного пользователя, а не рута, но что у вас есть привилегии sudo. Sudo необходима для загрузки модулей ядра, но мы хотим работать по возможности за пределами рута.
Начинаем
Приступим к написанию кода. Подготовим нашу среду:
Запустите любимый редактор (в моём случае это vim) и создайте файл lkm_example.c следующего содержания:
Мы сконструировали самый простой возможный модуль, рассмотрим подробнее самые важные его части:
Теперь можно внедрить модуль и проверить его. Для этого запускаем:
Если всё нормально, то вы ничего не увидите. Функция printk обеспечивает выдачу не в консоль, а в журнал ядра. Для просмотра нужно запустить:
Вы должны увидеть строку “Hello, World!” с меткой времени в начале. Это значит, что наш модуль ядра загрузился и успешно сделал запись в журнал ядра. Мы можем также проверить, что модуль ещё в памяти:
Для удаления модуля запускаем:
Если вы снова запустите dmesg, то увидите в журнале запись “Goodbye, World!”. Можно снова запустить lsmod и убедиться, что модуль выгрузился.
Как видите, эта процедура тестирования слегка утомительна, но её можно автоматизировать, добавив:
в конце Makefile, а потом запустив:
для тестирования модуля и проверки выдачи в журнал ядра без необходимости запускать отдельные команды.
Теперь у нас есть полностью функциональный, хотя и абсолютно тривиальный модуль ядра!
Немного интереснее
Копнём чуть глубже. Хотя модули ядра способны выполнять все виды задач, взаимодействие с приложениями — один из самых распространённых вариантов использования.
Поскольку приложениям запрещено просматривать память в пространстве ядра, для взаимодействия с ними приходится использовать API. Хотя технически есть несколько способов такого взаимодействия, наиболее привычный — создание файла устройства.
В нашем примере мы возвращаем “Hello, World”. Хотя это не особенно полезная функция для приложений, она всё равно демонстрирует процесс взаимодействия с приложением через файл устройства.
Вот полный листинг:
Тестирование улучшенного примера
Теперь наш пример делает нечто большее, чем просто вывод сообщения при загрузке и выгрузке, так что понадобится менее строгая процедура тестирования. Изменим Makefile только для загрузки модуля, без его выгрузки.
Теперь после запуска make test вы увидите выдачу старшего номера устройства. В нашем примере его автоматически присваивает ядро. Однако этот номер нужен для создания нового устройства.
(в этом примере замените MAJOR значением, полученным в результате выполнения make test или dmesg )
Параметр c в команде mknod говорит mknod, что нам нужно создать файл символьного устройства.
Теперь мы можем получить содержимое с устройства:
или даже через команду dd :
Вы также можете получить доступ к этому файлу из приложений. Это необязательно должны быть скомпилированные приложения — даже у скриптов Python, Ruby и PHP есть доступ к этим данным.
Когда мы закончили с устройством, удаляем его и выгружаем модуль:
Заключение
Надеюсь, вам понравились наши шалости в пространстве ядра. Хотя показанные примеры примитивны, эти структуры можно использовать для создания собственных модулей, выполняющих очень сложные задачи.
Просто помните, что в пространстве ядра всё под вашу ответственность. Там для вашего кода нет поддержки или второго шанса. Если делаете проект для клиента, заранее запланируйте двойное, если не тройное время на отладку. Код ядра должен быть идеален, насколько это возможно, чтобы гарантировать цельность и надёжность систем, на которых он запускается.
Администрирование систем Linux. Ядро Linux
Часть VI. Работа с ядром ОС
Глава 28. Ядро Linux
28.1. О ядре Linux
В 1991 году Linus Torvalds разработал первую версию ядра Linux. Он выложил исходный код ядра в открытый доступ, после чего другие люди начали вносить свой вклад в его развитие. В разработке одной из версий ядра (а именно, версии 2.6.27, выпущенной в ноябре 2008 года) поучаствовало более 4000 разработчиков.
28.1.3. Файл /proc/cmdline
28.1.4. Однопользовательский режим
В некоторых дистрибутивах данная возможность заблокирована (на этапе компиляции ядра ОС).
28.1.5. Параметр init=/bin/bash
28.1.6. Файл журнала /var/log/messages
28.1.7. Утилита dmesg
Утилита dmesg выводит все сообщения ядра ОС (с момента последней загрузки системы).
28.2. Исходный код ядра Linux
28.2.1. Ресурс ftp.kernel.org
Каждый человек может воспользоваться ftp-клиентом для осуществления анонимного входа на ресурс ftp.kernel.org.
Архивы исходного кода всех версий ядра Linux расположены по пути pub/linux/kernel/.
28.2.2. Директория /usr/src
Данная структура поддиректорий очень похожа на структуру поддиректорий директории /usr/src в дистрибутиве Ubuntu за тем исключением, что в данном случае в директории расположен исходный код одной версии ядра (и эта версия более новая).
Нам придется погрузиться немного глубже в дерево директорий для того, чтобы добраться до исходного кода ядра ОС в дистрибутиве Red Hat!
28.2.3. Загрузка исходного кода ядра ОС
После этого вы можете использовать команду aptitude install для загрузки и установки пакета программного обеспечения с исходным кодом ядра Linux из состава дистрибутива Debian.
Red Hat Enterprise Linux
Ранее пакет программного обеспечения с исходным кодом ядра ОС располагался на четвертом установочном диске с пакетами исходного кода дистрибутива Red Hat Enerprise Linux. Файл пакета программного обеспечения носит имя kernel-2.6.9-42.EL.src.rpm (пример для дистрибутива RHEL версии 4 с обновлением 4). Также данный пакет доступен по адресу ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/ (пример для дистрибутива RHEL 5).
Для загрузки пакета исходного кода ядра ОС дистрибутива RHEL следует использовать длинную команду (команда должна располагаться в одной строке без завершающего символа \).
Нам придется выполнить дополнительные действия для того, чтобы использовать исходный код ядра ОС из пакета программного обеспечения по назначению.
28.3. Файлы, используемые в процессе загрузки ядра ОС
Файл vmlinuz из директории /boot является сжатым исполняемым файлом ядра ОС.
28.3.3. Файл System.map
Файл System.map содержит таблицу символов и изменяется при каждой компиляции ядра ОС. Таблица символов также присутствует в файле /proc/kallsyms (до выпуска ядра Linux версии 2.6 данный файл носил имя /proc/ksyms).
Последним файлом, копируемым в директорию /boot, является файл со значениями параметров конфигурации ядра ОС, используемый в процессе его компиляции. Данный файл не должен находиться директории /boot для корректного функционирования ядра ОС, но размещение его копии в данной директории является обычной практикой. Благодаря его наличию появляется возможность осуществления повторной компиляции ядра ОС с использованием тех же значений параметров конфигурации, которые были использованы для компиляции существующего работоспособного ядра ОС.
28.4. Модули ядра Linux
28.4.1. Информация о модулях ядра Linux
Ядро Linux является монолитным ядром с поддержкой загружаемых модулей. Данные модули содержат части ядра ОС, обычно используемые в качестве драйверов устройств, реализаций файловых систем и сетевых протоколов. В большинстве случаев необходимые модули ядра ОС загружаются автоматически и динамически без вмешательства системного администратора.
28.4.2. Директория /lib/modules
28.4.4. Утилита lsmod
28.4.5. Файл /proc/modules
28.4.6. Зависимости модулей ядра ОС
Некоторые модули ядра ОС зависят от других модулей ядра ОС. В следующем примере вы можете увидеть, что модуль ядра ОС с именем nfsd зависит от модулей с именами exportfs, lockd и sunrpc.
28.4.7. Утилита insmod
Утилита insmod не определяет зависимости между модулями ядра ОС, поэтому в следующем примере нам не удалось загрузить с помощью данной утилиты модуль с именем isdn (так как модуль с именем isdn зависит от модуля с именем slhc).
28.4.8. Утилита modinfo
28.4.9. Утилита modprobe
Большим преимуществом утилиты modprobe перед утилитой insmod является возможность первой утилиты загружать все необходимые модули ядра ОС, в то время, как вторая утилита требует загрузки всех необходимых модулей ядра ОС в ручном режиме. Другое преимущество данной утилиты заключается в отсутствии необходимости указания полного пути к файлу загружаемого модуля ядра ОС.
В данном примере показан способ загрузки модуля с именем isdn с помощью утилиты modprobe с автоматической загрузкой модуля с именем shlc в фоновом режиме.
28.4.10. Файл /lib/modules/ /modules.dep
28.4.11. Утилита depmod
28.4.12. Утилита rmmod
28.4.14. Файл конфигурации /etc/modprobe.conf
28.5. Компиляция ядра ОС
28.5.1. Дополнительная версия
Перейдите в директорию /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/ и измените дополнительную версию ядра ОС, заменив значение параметра extraversion в файле с именем Makefile.
28.5.2. Команда make mrproper
28.5.4. Команда make menuconfig
28.5.5. Команда make clean
28.5.6. Команда make bzImage
Исполнение данной команды завершится выводом информации о пути к результирующему файлу bzImage (а также времени компиляции, если вы также использовали команду time ).
28.5.7. Команда make modules
28.5.8. Команда make modules_install
Для копирования всех скомпилированных модулей ядра ОС в директорию /lib/modules следует всего лишь выполнить команду make modules_install (на установку модулей уйдет примерно 20 секунд). В примере ниже приведен список содержимого директории модулей перед исполнением упомянутой команды.
А это список содержимого этой же директории после исполнения этой команды. Обратите внимание на то, что в процессе исполнения команды make modules_install была создана новая директория для модулей нового ядра ОС.
28.5.9. Директория /boot
28.5.10. Утилита mkinitrd
Ядро ОС обычно использует файл initrd в процессе загрузки. Мы можем использовать утилиту mkinitrd для генерации этого файла. Убедитесь в том, что вы используете корректное имя ядра ОС!
28.5.11. Системный загрузчик
На этом компиляция ядра ОС закончена, но не следует забывать о необходимости создания дополнительного станса для отображения пункта в меню системного загрузчика grub или lilo.
28.6. Компиляция отдельного модуля ядра ОС
28.6.1. Файл исходного кода hello.c
Небольшая программа на языке C послужит основой для нашего модуля ядра ОС.
28.6.2. Файл Makefile
Файл для сборки модуля ядра ОС будет содержать следующие строки.
Для компиляции модуля необходимы только два описанных файла.
Теперь у нас больше файлов.
Отлично, значит мы можем загрузить наш модуль ядра ОС с именем «hello».
4 дистрибутива Linux с полностью открытым исходным кодом
Linux — предпочтительная ОС для любящих свободу хиппи, но в ядре скрыт грязный маленький секрет
: не все, что вы видите, с открытым исходным кодом!
Ядро Linux содержит двоичные двоичные объекты, собственный код, который обеспечивает работу определенного оборудования. Многие ноутбуки имеют Wi-Fi или видеокарты, которые не работают без встроенного программного обеспечения, поставляемого производителем.
Это не беспокоит многих пользователей Linux. Если производители не хотят делиться своим кодом, но хотят внести свой вклад в Linux, позвольте им! Но, с другой стороны, это закрытый исходный код, и это означает, что пользователи не могут проверить, что происходит внутри. Это частично объясняет, почему Free Software Foundation не поддерживает многие из самых популярных дистрибутивов. Это включает в себя Fedora, которая не допускает никаких программ с открытым исходным кодом в своих репозиториях.
Вместо этого FSF рекомендует дистрибутивы, которые не содержат никакого закрытого исходного кода, даже на уровне ядра. Эти дистрибутивы не так популярны, но есть еще множество вариантов.
1. Трискель — легкий выбор
Ищете простой и удобный в использовании дистрибутив с большим количеством программного обеспечения? Трискель — хорошее место для начала. Этот дистрибутив основан на релизах Ubuntu LTS, что делает его относительно современным.
Большая разница между Trisquel и Ubuntu заключается в отсутствии двоичных двоичных объектов и проприетарного программного обеспечения любого рода. Trisquel не рекомендует устанавливать закрытые драйверы оборудования или кодеки. Но вы сохраняете свободу, вы должны настроить свой опыт, как в Ubuntu. Добавить PPA для установки программного обеспечения
это не доступно в репозиториях.
Поскольку каждый релиз основан на Ubuntu LTS, опыт начинает ощущаться устаревшим через некоторое время. Многое происходит в течение двух лет в мире свободного программного обеспечения. Установка Trisquel 7 означает, что вы будете запускать приложения с 2014 года. Хотя с Ubuntu 16.04 теперь доступно
следующий релиз не должен быть слишком далеко
2. Парабола — для новейшего программного обеспечения
Parabola — это Arch Linux с удаленными или замененными закрытыми битами.
Как Арка, Парабола — это то, что ты делаешь. Веб-сайт предоставляет вам текстовый установщик, который дает то, что вам нужно для создания своего собственного компьютера. В Интернете есть руководство, но здесь мало чего можно ожидать.
Из-за этого Parabola ориентирована на более продвинутых пользователей. Это также для любителей свободного программного обеспечения, которые хотят получить доступ к текущему программному обеспечению, поэтому в отличие от Trisquel, вы не будете застревать, используя устаревшие версии.
3. gNewSense — пробовал и тестировал
Поскольку Trisquel основан на Ubuntu, gNewSense является производным от Debian. Это дает вам представление о том, чего ожидать от каждого. Где первый имеет свою собственную тему и макет, последний довольно ванильный.
Сходства между gNewSense и Debian на этом не заканчиваются. Поскольку Debian использует старые, но стабильные версии программного обеспечения, gNewSense делает то же самое. Это может оставить вас в прошлом. При установке последней версии gNewSense в 2016 году вы будете запускать приложения с 2012 года.
«Преимущество» перед Debian заключается в удалении любых ссылок на программное обеспечение с закрытым исходным кодом. Вы не увидите определенные кодеки и несвободные приложения в репозиториях. Разработчики gNewSense также удалили упоминания и предложения по установке проприетарного программного обеспечения. Если вам нравится Debian, но вам не нравится готовность этого проекта к размещению и предоставлению несвободного кода, это может быть дистрибутивом для вас.
4. BLAG — для любителей RPM
Не фанат экосистемы Debian? Предпочитаете RPM по сравнению с DEB? BLAG — ваша альтернатива Trisquel и gNewSense на основе Fedora.
Вы могли бы описать BLAG как Fedora с удаленными двоичными BLOB-объектами. BLAG также поставляется с несколькими сторонними репозиториями, такими как Freshrpms. Но последняя версия основана на Fedora 14, выпущенной в мае 2011 года.
BLAG означает Brixton Linux Action Group. В дистрибутиве есть антикорпоративная, анархистская культура, которая может отличаться от того, к чему вы привыкли. Будь то за или против — решать вам.
Как насчет моего текущего дистрибутива?
Ubuntu, Fedora, openSUSE, Arch Linux и другие известные дистрибутивы
все поставляются с ядром Linux, которое содержит двоичные двоичные объекты. Но вам не нужно использовать эти ядра. Можно установить ядро linux-libre и продолжить использовать дистрибутив, который вы уже знаете и любите. Фонд свободного программного обеспечения Латинская Америка предлагает несколько способов сделать это.
Это также хороший способ проверить, работает ли ваше оборудование с ядром linux-libre, прежде чем пробовать полноценный дистрибутив. Если они этого не делают, вы можете вернуться к версии ядра, которая работает
Ваш компьютер уважает вашу свободу?
Многие пользователи Linux хотят свободы делать все, что хотят. Некоторые просто используют программное обеспечение с открытым исходным кодом, потому что это практично. Другие пытаются использовать исключительно открытое программное обеспечение
, Но что ваш мотивация?
Считаете ли вы, что дистрибутивы Free Software Foundation рекомендует зайти слишком далеко? Является ли удаление всего закрытого исходного кода единственным способом, которым вы чувствуете себя в безопасности на своем компьютере? Означает ли свобода возможность устанавливать то, что вы хотите? Я хотел бы услышать ваши мысли!