Пять лучших пакетов программ для детей под Linux. Пингвин для ребенка — детские дистрибутивы Linux Что такое GNU

1.2. Что такое GNU/Linux?

Linux - это операционная система: набор программ, которые позволяют вам работать с вашим компьютером и запускать другие программы.

Операционная система (ОС) состоит из нескольких основных программ, которые нужны вашему компьютеру, чтобы он мог общаться и получать инструкции от пользователей; читать и записывать данные на жёсткие диски, ленты и принтеры; контролировать использование памяти; запускать другие программы. Самая важная часть ОС - ядро. В системе GNU/Linux ядром является Linux. Оставшаяся часть системы состоит из других программ, многие из которых написаны проектом GNU или для проекта GNU. Поскольку одно ядро Linux - это ещё не вся работающая ОС, мы предпочитаем использовать термин «GNU/Linux » для обозначения систем, которые многие люди ошибочно называют «Linux » .

Linux сделана по образцу операционной системы Unix. С самого начала Linux разрабатывалась как многозадачная, многопользовательская система. Этих факторов достаточно, чтобы сделать Linux отличной от других широко известных операционных систем. Однако, Linux отличается намного сильнее, чем вы можете себе представить. В отличие от других операционных систем, Linux никому не принадлежит. Значительная часть системы разработана добровольцами бесплатно.

Разработка того, что позже станет GNU/Linux, началась в 1984 году, когда Фонд Свободного Программного обеспечения начал разработку свободной Unix-подобной операционной системы, названной GNU.

Линус Торвальдс продолжает координировать работу нескольких сотен разработчиков с помощью нескольких сопровождающих подсистем. Есть официальный сайт для ядра Linux. Информацию о списке рассылки linux-kernel можно найти в FAQ списка рассылки linux-kernel .

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

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

Linux - общее название UNIX-подобных операционных систем на основе одноимённого ядра и собранных для него библиотек и системных программ, разработанных в рамках проекта GNU .
GNU/Linux работает на PC-совместимых системах семейства Intel x86, а также на IA-64, AMD64, PowerPC, ARM и многих других.

К операционной системе GNU/Linux также часто относят программы, дополняющие эту операционную систему, и прикладные программы, делающие её полноценной многофункциональной операционной средой. В отличие от большинства других операционных систем, GNU/Linux не имеет единой «официальной» комплектации. Вместо этого GNU/Linux поставляется в большом количестве так называемых дистрибутивов, в которых программы GNU соединяются с ядром Linux и другими программами.

Разработка

    В отличие от Microsoft Windows, Mac OS и коммерческих UNIX-подобных систем, GNU/Linux не имеет географического центра разработки. Нет и организации, которая владела бы этой системой; нет даже единого координационного центра. Программы для Linux - результат работы тысяч проектов. Некоторые из этих проектов централизованы, некоторые сосредоточены в фирмах. Многие проекты объединяют хакеров со всего света, которые знакомы только по переписке. Создать свой проект или присоединиться к уже существующему может любой и, в случае успеха, результаты работы станут известны миллионам пользователей. Пользователи принимают участие в тестировании свободных программ, общаются с разработчиками напрямую, что позволяет быстро находить и исправлять ошибки и реализовывать новые возможности.

    Именно такая гибкая и динамичная система разработки, невозможная для проектов с закрытым кодом, определяет исключительную экономическую эффективность GNU/Linux. Низкая стоимость свободных разработок, отлаженные механизмы тестирования и распространения, привлечение людей из разных стран, обладающих разным видением проблем, защита кода лицензией GPL - всё это стало причиной успеха свободных программ.

    Конечно, такая высокая эффективность разработки не могла не заинтересовать крупные фирмы, которые стали открывать свои проекты. Так появились Mozilla (Netscape, AOL), OpenOffice.org (Sun), свободный клон Interbase (Borland) - Firebird, SAP DB (SAP). IBM способствовала переносу GNU/Linux на свои мейнфреймы.

    С другой стороны, открытый код значительно снижает себестоимость разработки закрытых систем для GNU/Linux и позволяет снизить цену решения для пользователя. Вот почему GNU/Linux стала платформой, часто рекомендуемой для таких продуктов, как Oracle, DB2, Informix, SyBase, SAP R3, Domino.

Дистрибутивы GNU/Linux

Большинство пользователей для установки GNU/Linux используют дистрибутивы. Дистрибутив - это не просто набор программ, а ряд решений для разных задач пользователей, объединённых едиными системами установки, управления и обновления пакетов, настройки и поддержки.

    Самые распространённые в мире дистрибутивы:

    Ubuntu

    Быстро завоевавший популярность дистрибутив, ориентированный на лёгкость в освоении и использовании.

    openSUSE

    Бесплатно распространяемая версия дистрибутива SuSE, принадлежащая компании Novell. Отличается удобством в настройке и обслуживании благодаря использованию утилиты YaST.

    Fedora

    Поддерживается сообществом и корпорацией RedHat, предшествует выпускам коммерческой версии RHEL.

    Debian

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

    Mandriva

    Французско-бразильский дистрибутив, объединение бывших Mandrake и Conectiva.

    Slackware

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

    Gentoo

    Дистрибутив, собираемый из исходных кодов. Позволяет очень гибко настраивать конечную систему и оптимизировать производительность, поэтому часто называет себя мета-дистрибутивом. Ориентирован на экспертов и опытных пользователей.

    Archlinux

    Ориентированный на применение самых последних версий программ и постоянно обновляемый, поддерживающий одинаково как бинарную, так и установку из исходных кодов и построенный на философии простоты « KISS » («Keep it simple, stupid» / «Не усложняй»), этот дистрибутив ориентирован на компетентных пользователей, которые хотят иметь всю силу и модифицируемость Linux, но не в жертву времени обслуживания.

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

Каждый из них имеет свою концепцию, свой набор пакетов, свои достоинства и недостатки. Ни один не может удовлетворить всех пользователей, а потому рядом с лидерами благополучно существуют другие фирмы и объединения программистов, предлагающие свои решения, свои дистрибутивы, свои услуги. Существует множество LiveCD , построенных на основе GNU/Linux, например, Knoppix. LiveCD позволяет запускать GNU/Linux непосредственно с компакт-диска, без установки на жёсткий диск. Большинство крупных дистрибутивов, включая Ubuntu, могут быть использованы как LiveCD.

Для желающих досконально разобраться с GNU/Linux подойдёт любой из дистрибутивов, однако довольно часто для этой цели используются так называемые «source-based» дистрибутивы, то есть предполагающие самостоятельную сборку всех компонентов из исходных кодов, такие как LFS, Gentoo или CRUX.

Применение

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

В конечном счёте столь широкий круг поддерживаемых устройств означает превосходную переносимость программ. Например, одно и то же приложение зачастую можно запустить с минимальными усилиями и на обычном компьютере, и на мобильном телефоне на базе Linux. Для примера: Windows и её младший брат Windows Mobile являются полностью несовместимыми платформами.

Я наткнулся на предложение перевести статью GNU or Linux? за авторством David Chisnall . Автор предлагает разобраться чего же больше в ОС - GNU или же Linux? Собственно перевод этой статьи и предлагается Вашему вниманию.

GNU или Linux?

Ни одна другая система не испытывала таких споров вокруг своего имени. Огромное количество флейм войн началось после заявления FSF о том, что такие дистрибутивы как Ubuntu и Fedora должны называться GNU/Linux, вместо Linux. Пытались ли они просто заработать на чужом труде, или их аргументы небезосновательны?

Чтобы разобраться в этом вопросе давайте взглянем на то, что происходит, когда вы запускаете GNU/Linux систему - сколько используется GNU кода, а сколько Linux кода. Разработчик использует огромное количество GNU кода, к примеру GCC и GNU Make, но насколько это справедливо и для конечного пользователя?

Что делает Ядро?

Перед тем как начать разбираться где же GNU биты, а где Linux, важно понять, что именно делает ядро. Ядро выполняет две главные задачи:

* Освобождает разработчиков от необходимости изучать низкоуровневую архитектуру. Для этого необходимо наличие большого количества драйверов к устройствам и единых интерфейсов к этим драйверам. Хорошим примером служит Сокет-интерфейс. Когда вы пишете сетевой код, вы просто открываете сокет и пишите в него данные. Вам не надо заботится о типе сетевого оборудования пользователя и низлежащих протоколах.

* Изолирует запущенные программы друг от друга. Изолировать процессы платформо-независимым методом просто: Позволить процессам использовать только непривилегированные инструкции процессора. К сожалению, такой подход сделает невозможным любые операции ввода/вывода для программ, что делает все программы бессмысленными. Для снятия этого ограничения существует системный вызов - механизм, который позволяет запущенному процессу запрашивать ядро для совершения привилегированной операции от имени запрашивающего процесса. Обычные примеры - запись в файл (виртуальный диск), выделение памяти, или доступ к экрану или клавиатуре.

Механизм, который используется системным вызовом, платформо-зависим. На x86 платформе распространенным методом был вызов исключения, хотя новые процессоры от AMD и Intel предоставляют инструкции, позволяющие выполнить это еще быстрее. При этом управление переходит к ядру, которое решает, как интерпретировать значения в регистрах и на стеке, а также, какие действия предпринять.

Взгляд со стороны разработчика.

Важным стандартом при программировании для *NIX или в *NIX является единая спецификация UNIX - супермножество POSIX, которое включает всё, что должно быть в UNIX системе. Код, написанный согласно этому стандарту, переносим среди ряда UNIX-подобных систем.

Стандарт не описывает системные вызовы. Наоборот, он описывает Cи-функции, которые служат оберткой для системных вызовов. Когда программист хочет вызвать функцию open (), ему не надо знать, что он поместит указатель в EBX и значение 2 в EAX, а затем вызовет прерывание 80h; стандартная библиотека Cи реализует все эти функции. Любая нетривиальная программа на Linux будет обращаться к библиотеке Си (libc, для краткости). Существует несколько вариантов реализации стандартной библиотеки Си. У каждого члена семейства BSD есть своя реализация, впрочем как и у любой коммерческой UNIX системы. Какой вариант стандартной библиотеки С используется в Linux зависит от использования; существует несколько версий для встроенных систем, но большинство декстоп дистрибутивов Linux используют GNU libc.

По количеству кода ядро и libc практически равны. На двоих они предоставляют интерфейс разработчика к системе. Поскольку стандарт определяет только Cи-интерфейсы, а не системные вызовы, то и большинство кода написано с использованием стандартное библиотеки Cи. Это правило справедливо и для других языков; если вы, к примеру, запускаете некий java или python код, то он будет получать доступ к ядру через библиотеку Cи. Для некоторых языков существует своя стандартная библиотека от GNU Project. Например, любой С++ код будет использовать GNU libstc++ на GNU/Linux платформах. Некоторые дистрибутивы также включают GNU-реализации для Java библиотек, хотя такая практика уже не так популярна, учитывая, что Sun-версии стали open source. Даже если вы используете Sun Java библиотеки, вы по-прежнему используете GNU libc на этих платформах для любого Java приложения.

C C++ нюансов еще больше, чем с другими языками. Когда вы линкуете два модуля (к примеру, исполняемый файл и библиотеку), то сразу несколько стандартов описывают модель взаимодействия этих двух модулей. При вызове функции из другого модуля необходимо явно определить порядок аргументов на стеке и в регистрах, кто очистит память впоследствии и так далее. В С++ много чего должно быть явно определено для использования классов в различных модулях. Этот набор стандартов называется Бинарный Интерфейс Приложений (Application Binary Interface, ABI). В Linux, С++ ABI определен в GCC, который является пакетом GNU, как упоминалось ранее. Скомпилированный С++ код, независимо от того, какой компилятор использовался, должен подчиняться стандартам GNU, в противном случае такой код не сможет быть повторно использован другим С++ кодом.

Современные GNU/Linux дистрибутивы начинают процесс загрузки с GRUB (GRand Unified Bootloader), который также является частью проекта GNU. (Хотя, технчиески, загрузка начинается в BIOS или другой прошивке, и это применимо для всех систем, которые запускаются на аппаратной платформе.) GRUB не создавался специально для Linux. Он может запускать и другие ОС и является стандартом для запуска некоторых систем на архитектуре x86, включая OpenSolaris и гипервизор Xen.

Затем GRUB передает управление ядру, которое продолжает инициализировать систему и конфигурирование драйверов. Ядро в свою очередь передает управление процессу init. Этот процесс отвечает за создание других процессов.

На Linux системах, init это очень маленькая программа, которая делает нечто большее, чем просто запуск скрипта. В некоторых дистрибутивах init заменен на Upstart, программу, которая не является ни частью Linux, ни частью GNU, и имеющая более сложную управляемую событиями модель. Скрипты, запущенный init’ом или Upstart’ом - это просто набор команд, интерпретируемых командной оболочкой (shell).

Спецификация POSIX содержит описание минимальной функциональности оболочки. Если вы хотите писать портативные shell-скрипты, то можете оставаться в рамках данной ограниченной функциональности, и, в итоге, получите скрипты, которые будут идти на всех UNIX-подобных системах.

Однако, большинство init скриптов не портируемы. Они используют расширенную функциональность командной оболочки, присутствующей в большинстве Linux дистрибутивов - Bash, командная оболочка от GNU.

Что в стандарте?

Единая Спецификация UNIX содержит намного больше, чем просто набор Cи-функций. В частности, стандарт определяет набор пользовательских утилит, которые обязаны присутствовать в UNIX-подобных системах. Многие программы используют эти утилиты через shell-скрипты или другие вызовы. Большинство из них содержатся в пакете корневых утилит GNU. Опять-таки, сравнивая количество строк кода, размер корневых утилит сравним с размером ядра.

Можно предположить, что эти утилиты не столь важная часть системы, однако это не так. Без утилит большинство init скриптов просто не запустятся (даже при наличии Bash), а система будет непригодна к использованию. Большинство инсталляторов также не запустятся, а это значит, что вы не сможете установить ни одной программы. Даже базовая функциональность, такая как копирование файлов использует корневые утилиты.

Единая UNIX Спецификация предоставляет список из 175 программ, которые должны присутствовать в каждой UNIX системе. Большинство из которых (с некоторыми исключениями, типа vi) созданы GNU и присутствуют в большинстве Linux дистрибутивов. Часть из них никогда не используются обычными пользователями; к примеру, стандарт предписывает наличие c99 и fort77 утилит для компилирования программ написанных на C и Fortran (обе утилиты предоставляются GNU).

На что еще следует обратить внимание?

Ранее я говорил, что у ядра две роли. Главная роль в предоставлении программам пользователя доступ к аппаратной части. Поэтому большинство Linux кода (и кода большинства других ядер) состоит из драйверов устройств. Но, отдельно стоит упомянуть о графике.

Старая модель драйвера XFree86 слабо зависела от ядра. Х-сервер запускался как привилегированный процесс и получал прямой доступ к аппаратной части. Я сам видел живой пример этого при попытке использования бинарного Linux драйвера Matrox под FreeBSD. Хоть драйвер и был написан для Linux, он прекрасно встал на FreeBSD, т.к. он напрямую взаимодействовал с Х-сервером и железом, а вовсе не с ядром FreeBSD.

Новые драйвера используют Инфраструктуру прямого рендеринга (Direct Rendering Infrastructure (DRI)). Эта система состоит из двух компонентов, называемых DRI и DRM. DRI - это драйвер пользовательского окружения, который снабжает командами аппаратную часть и предоставляет API другим пользовательским программам. DRM, в свою очередь, является маленьким модулем ядра, который проверяет команды и передает их аппаратной части.

Часто при холиварах на тему «готов ли Linux для десктопа» люди спрашивают, а как хорошо работает 3D в Linux? Вообще-то, обработка 3D это не задача Linux на большинстве системах. Linux всего-лишь предоставляет прямой интерфейс к аппаратной части, а уже X.Org пишет драйвера. Эти же драйвера могут быть запущены на FreeBSD, OpenBSD и еще ряде систем. В мире GNU/Linux систем Linux не занимается разработкой драйверов для одной из сложнейших частей аппаратной составляющей современного дектопа/лэптопа.

С изобретением FUSE, которая также работает на FreeBSD, NetBSD, and Mac OS X, ядро часто перестает предоставлять все драйвера для файловых систем, что еще больше умаляет роль «Linux» в системе.

Удаление GNU или Linux.

Возможно самый правдивый тест на важность того или иного компонента системы состоит в том, насколько просто обойтись без данного компонента в системе. Некоторые Linux платформы используют не так много GNU программ; например использование busybox для утилит командной строки и uclibc для стандартной библиотеки. Часть GNU платформ, такие как Nexenta или Debian GNU/kFreeBSD не используют ядро Linux.

Чтобы оценить важность Linux, давайте взглянем на Linux совместимое окружение в FreeBSD. При запуске Linux программ на FreeBSD, происходит установка модифицированного обработчика системного вызова, который вызывает функции ядра FreeBSD, в ответ на системные вызовы Linux. Этот поход позволяет запускать программы, написанные под Linux, без их изменения.

Для того чтобы данный метод работал, часто устанавливают урезанную версию Linux в отдельном окружении. Программы написанные под Linux в итоге смогут найти все необходимые библиотеки и утилиты, включая GNU утилиты, GNU grep, Bash и другие пакеты.

О чем это говорит? Это говорит о том, что если вы хотите запустить GNU/Linux программу на другой системе, то это легко выполнимо без Linux, а вот без GNU обойтись не так-то просто.

Безусловно, большинство программ успешно запустятся без всяких режимом совместимости, если вы их перекомпилируете. В этом случае они не будут использовать GNU libc, GNU утилиты или bash. Некоторые программы для успешной компиляции требуют GNU компилятор или GNU Make, однако, после компиляции эти программы больше не потребуют никаких GNU утилит, кроме:

  • программ, использующих С++, которые скорее всего будут использовать GNU libstdc++.
  • программ, явно использующих одну из многих GNU библиотек.

Так что удаление GNU из GNU/Linux видится намного более сложным, нежели удаление Linux. PC-BSD или Nexenta - это хорошие десктопные ОС без капли Linux кода внутри, но с большим количеством GNU кода. Те Linux системы, которые не так сильно зависят от GNU кода - это сплошь интегрированные системы, названия которых не знакомы пользователям десктопных и серверных вариантов Linux.

Так как же стоит говорить, Linux, GNU или GNU/Linux? Я называю GNU, потому что, как программист и пользователь, я пользуюсь, в большинстве своем, теми инструментами, которые разработаны GNU. Когда я портирую код из FreeBSD, проблемы возникают только в корневых утилитах или в стандартной библиотеке Си. Если бы я хотел запустить этот же код на HURD или любой другой GNU системе, то я бы использовал те же самые интерфейсы.

В общем, я предпочитаю выделять дистрибутивы, типа Fedora или Ubuntu, и не упомянать GNU или Linux. Система включает в себя огромное количество кода из различных источников. Среди самых больших поставщиков кода фигурируют Проект GNU и X.org, но Ubuntu GNOME/X.Org/GNU/Linux звучит слегка длинновато. А включая в названия системы такую небольшую и без проблем удаляемую часть, как Linux, поступают несправедливо по отношению к множеству разработчиков, чей код также присутствует в системе.

С овременный компьютерный мир – это не только устройства на операционных системах Windows или macOS. Существует еще одна очень интересная система – это Linux. Честно говоря, ОС Linux – это, наверное, самая универсальная операционная система в мире, которая подходит для любого устройства. Например, когда вы каждый раз пользуетесь своим смартфоном на мобильной операционной системе Android, то вы обращаетесь напрямую к ядру Linux. Мы точно уверены, что вы хотя бы краем уха слышали об автомобилях с автопилотом. Угадайте, на основе какой операционной системы создано программное обеспечения таких самоуправляемых автомобилей? Правильно, Linux.

Мы уже много писали на нашем сайте об , и . Так вот, все они работаю под управлением программного обеспечения на ядре Linux. Кроме того, все большие сервера в дата центрах, на которых размещены интернет сайты, также работают на Linux. Почему ОС Linux такая популярная? Все это благодаря тому, что она полностью бесплатна и ее исходный код полностью открыт. Все это и способствует тому, что разработчики могут легко изменять код так, как это будет им нужно.

В нашем материале мы продолжим вас знакомить с операционной системой Linux. И, пожалуй, сегодня мы основной упор сделаем на том, чтобы разъяснить вам что собой являет операционная система вообще и, в частности, GNU / Linux. Если вам все еще интересно, тогда мы приступаем.

Что такое операционная система?

Возможно это прозвучит глупо, но не все до конца понимают, что собой представляет операционная система. И так, операционная система – это специальное программное обеспечение, которое используется для взаимодействия оборудования между собой и помогает пользователю взаимодействовать с компьютером.

В чем состоит суть процесса управления операционной системой аппаратным оборудованием компьютера? Если возьмем во внимание обычный компьютер, то операционная система отвечает за работу процессора, оперативной памяти, жесткого диска, модулей беспроводной связи, мышки, клавиатуры, портов USB, видеокартой, подсветкой экрана и многим другим, то есть, реально всем. Кроме того, операционная система должна также управлять и внешними устройствами, которые могут подключаться к компьютеру. Это могут быть внешние жесткие диски, принтеры, сканеры, флешки, смартфоны и так далее.

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

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

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

Что такое GNU / Linux?

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

Но когда мы говорим «операционная система Linux», то в большинстве случаев имеем ввиду проект GNU / Linux. По большому счету, Linux – это ядро, в котором четко прописано, как между собой должны взаимодействовать аппаратные составляющие компьютера. А вот как должен пользователь взаимодействовать с ядром Linux как раз определяет GNU. Так давайте разберемся, что такое GNU.

Что такое GNU?

GNU – это исторически первая попытка мирового сообщества программистов сделать программное обеспечение свободным. По сути, GNU представляет собой набор бесплатных инструментов, которые помогают пользователю взаимодействовать с ядром Linux. Давайте детальнее рассмотрим, что же представляет собой этот набор инструментов.

Итак, для взаимодействия с ядром операционной системы на базовом уровне, вам нужен как минимум терминал. Терминал представляет собой командную строку, через которые вы можете посылать команды ядру, и оно будет выполнять некие действия (а еще терминал – это то, за что программисты и системные администраторы просто обожают Linux). GNU предлагает свою «фирменную» оболочку под терминал, которая называется BASH.

Но на одном терминале далеко не уедешь, поскольку никто не хочет запоминать сотни команд и видеть на компьютере просто черный экран в 2017 году. Поэтому пользователям нужен рабочий стол на подобии того, который они видят в Windows. И тут GNU также не пасет задних, предлагает своим пользователям один из лучших рабочих столов в мире Linux – это GNOME. Кроме того, самый популярный бесплатный кроссплатформенный графический редактор GIMP, который является достойной альтернативой мощному Adobe Photoshop, также разрабатывался сначала специально под GNU.

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

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

Что такое рабочий стол в GNU / Linux?

Сам по себе рабочий стол в GNU / Linux представляет собой наслоение программ, которые помогают пользователю взаимодействовать с ядром операционной системы. Очень удобно рассматривать рабочий стол как некую пирамиду из программ разного уровня. На самом нижнем уровне находится аппаратное обеспечение, которое напрямую взаимодействует с ядром. Программное обеспечение состоит из набора библиотек, которые обеспечивают, например, распределение системных ресурсов и работу с периферией.

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

Резюме

Мир Linux – это удивительный мир свободного программного обеспечения. И во многом такой популярности способствовал GNU / Linux. Создателям GNU стоит отдать должное за то, что они уже очень много лет работают над тем, чтобы мир программного обеспечения стал свободным. В нашем материале мы постарались дать вам основную информацию о Linux как операционной системе. Кроме того, мы постарались дать вам базовое представление о рабочем столе и том как он взаимодействует с ядром Linux. Мы очень надеемся, что наш материал развеял ваши страхи и опасения насчет использования операционной системы Linux и, в частности – GNU, в повседневной работе.

There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine"s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.

Many users do not understand the difference between the kernel, which is Linux, and the whole system, which they also call “Linux”. The ambiguous use of the name doesn"t help people understand. These users often think that Linus Torvalds developed the whole operating system in 1991, with a bit of help.

Programmers generally know that Linux is a kernel. But since they have generally heard the whole system called “Linux” as well, they often envisage a history that would justify naming the whole system after the kernel. For example, many believe that once Linus Torvalds finished writing Linux, the kernel, its users looked around for other free software to go with it, and found that (for no particular reason) most everything necessary to make a Unix-like system was already available.

What they found was no accident—it was the not-quite-complete GNU system. The available free software added up to a complete system because the GNU Project had been working since 1984 to make one. In the GNU Manifesto we set forth the goal of developing a free Unix-like system, called GNU. The Initial Announcement of the GNU Project also outlines some of the original plans for the GNU system. By the time Linux was started, GNU was almost finished.

Most free software projects have the goal of developing a particular program for a particular job. For example, Linus Torvalds set out to write a Unix-like kernel (Linux); Donald Knuth set out to write a text formatter (TeX); Bob Scheifler set out to develop a window system (the X Window System). It"s natural to measure the contribution of this kind of project by specific programs that came from the project.

If we tried to measure the GNU Project"s contribution in this way, what would we conclude? One CD-ROM vendor found that in their “Linux distribution”, GNU software was the largest single contingent, around 28% of the total source code, and this included some of the essential major components without which there could be no system. Linux itself was about 3%. (The proportions in 2008 are similar: in the “main” repository of gNewSense, Linux is 1.5% and GNU packages are 15%.) So if you were going to pick a name for the system based on who wrote the programs in the system, the most appropriate single choice would be “GNU”.

But that is not the deepest way to consider the question. The GNU Project was not, is not, a project to develop specific software packages. It was not a project to develop a C compiler , although we did that. It was not a project to develop a text editor, although we developed one. The GNU Project set out to develop a complete free Unix-like system : GNU.

Many people have made major contributions to the free software in the system, and they all deserve credit for their software. But the reason it is an integrated system —and not just a collection of useful programs—is because the GNU Project set out to make it one. We made a list of the programs needed to make a complete free system, and we systematically found, wrote, or found people to write everything on the list. We wrote essential but unexciting components because you can"t have a system without them. Some of our system components, the programming tools, became popular on their own among programmers, but we wrote many components that are not tools . We even developed a chess game, GNU Chess, because a complete system needs games too.

By the early 90s we had put together the whole system aside from the kernel. We had also started a kernel, the GNU Hurd , which runs on top of Mach. Developing this kernel has been a lot harder than we expected; the GNU Hurd started working reliably in 2001 , but it is a long way from being ready for people to use in general.

Fortunately, we didn"t have to wait for the Hurd, because of Linux. Once Torvalds freed Linux in 1992, it fit into the last major gap in the GNU system. People could then combine Linux with the GNU system to make a complete free system — a version of the GNU system which also contained Linux. The GNU/Linux system, in other words.

Making them work well together was not a trivial job. Some GNU components needed substantial change to work with Linux. Integrating a complete system as a distribution that would work “out of the box” was a big job, too. It required addressing the issue of how to install and boot the system—a problem we had not tackled, because we hadn"t yet reached that point. Thus, the people who developed the various system distributions did a lot of essential work. But it was work that, in the nature of things, was surely going to be done by someone.

The GNU Project supports GNU/Linux systems as well as the GNU system. The FSF funded the rewriting of the Linux-related extensions to the GNU C library, so that now they are well integrated, and the newest GNU/Linux systems use the current library release with no changes. The FSF also funded an early stage of the development of Debian GNU/Linux.

Today there are many different variants of the GNU/Linux system (often called “distros”). Most of them include nonfree programs—their developers follow the associated with Linux rather than the “free software” philosophy of GNU. But there are also completely free GNU/Linux distros . The FSF supports computer facilities for a few of them.

Making a free GNU/Linux distribution is not just a matter of eliminating various nonfree programs. Nowadays, the usual version of Linux contains nonfree programs too. These programs are intended to be loaded into I/O devices when the system starts, and they are included, as long series of numbers, in the "source code" of Linux. Thus, maintaining free GNU/Linux distributions now entails maintaining a free version of Linux too.

Whether you use GNU/Linux or not, please don"t confuse the public by using the name “Linux” ambiguously. Linux is the kernel, one of the essential major components of the system. The system as a whole is basically the GNU system, with Linux added. When you"re talking about this combination, please call it “GNU/Linux”.

If you want to make a link on “GNU/Linux” for further reference, this page and are good choices. If you mention Linux, the kernel, and want to add a link for further reference, http://foldoc.org/linux is a good URL to use.

Postscripts

Aside from GNU, one other project has independently produced a free Unix-like operating system. This system is known as BSD, and it was developed at UC Berkeley. It was nonfree in the 80s, but became free in the early 90s. A free operating system that exists today

  • On the other hand, in the years since this article was written, the GNU C Library has been ported to several versions of the BSD kernel, which made it straightforward to combine the GNU system with that kernel. Just as with GNU/Linux, these are indeed variants of GNU, and are therefore called, for instance, GNU/kFreeBSD and GNU/kNetBSD depending on the kernel of the system. Ordinary users on typical desktops can hardly distinguish between GNU/Linux and GNU/*BSD.