Сайт о телевидении

Сайт о телевидении

» » Почему стоит полюбить Linux: возможности и трюки. Назначение и основные возможности операционной системы Linux

Почему стоит полюбить Linux: возможности и трюки. Назначение и основные возможности операционной системы Linux

Операционная система Linux - самый популярный представитель так называемого «свободного программного обеспечения». Система Linux не лучше и не хуже Windows - она другая. У нее есть тысячи поклонников по всему миру, многие из которых принимали участие в написании системы, есть и противники. Однако единственный способ понять, нужна ли вам Linux, - попробовать с ней поработать.

Возможности, которые предоставляет ОС Linux пользователям:

q ОС Linux дает возможность всем бесплатно и легально иметь современную ОС для использования, как на работе, так и дома;

q Обладает высоким быстродействием;

q Работает надежно, устойчиво;

q Позволяет использовать полностью все возможности современных ПК,

q Эффективно управляет многозадачностью и приоритетами;

q Фоновые задачи (длительный расчет, передача электронной почты по модему и т.д.) не мешают интерактивной работе;

q Позволяет легко интегрировать ПК в локальные и глобальные сети, в т.ч. в Internet;

q Работает с сетями;

q Позволяет выполнять представленные в формате загрузки прикладные программы других ОС;

q Обеспечивает использование огромного числа разнообразных программных пакетов, накопленных в мире Unix и свободно распространяемых вместе с исходными текстами;

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

q Дает всем желающим попробовать свои силы в разработке, организовать общение и совместную работу через Internet с любыми из разработчиков ОС Linux и сделать свой вклад, став соавтором системы.

Linux является полной многозадачной многопользовательской ОС точно также, как и другие версии Unix. Она была создана с помощью многих Unix - программистов в рамках проекта GNU Free Software Foundation Camdridge, Massachusetts, но в него внесли лепту и энтузиасты из Internet и всего мира.

Специфические внутренние черты Linux включают контроль работ по стандарту POSIX, используемый оболочки - csh, bash, всевдотерминалы - pty, поддержку национальных и стандартных клавиатур динамически загружаемых драйверами клавиатур.

Ядро ОС Linux.

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

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

На самом нижнем уровне ядро содержит драйверы устройств для каждого типа поддерживаемого оборудования. Существует довольно большой набор различных драйверов, так как постоянно разрабатываются новые типы устройств. Существует довольно много одинаковых устройств, которые различаются только тем, как происходит взаимодействие между самим устройством и драйвером. Такое сходство позволяет использовать классы драйверов, поддерживающих одинаковые операции. В каждом члене такого класса используется однотипный интерфейс для ядра, но различные схемы взаимодействия с устройством. Например, все драйверы жесткого диска представляются для ядра абсолютно одинаково, то есть у них у всех имеются такие операции как "инициализация жесткого диска", "чтение сектора N", "запись сектора N".

Некоторые функции, предоставляемые ядром, имеют одинаковые свойства. Например, различные сетевые протоколы объединены в один программный интерфейс - BSD socket библиотеку. Вот другой пример - различные файловые системы, поддерживаемые системой Linux. Ядро содержит виртуальную файловую систему (Virtual File System - VFS) которая включает в себя все функции, используемые для работы системы, а также драйвер для каждой поддерживаемой файловой системы. При попытке доступа к какой-либо файловой системе запрос проходит через VFS, откуда перенаправляется к соответствующему драйверу файловой системы.

Для увеличения объема доступной памяти Linux осуществляет разбиение диска на страницы: на диске выделяется пространство для свопинга (swap space)., причем в область свопинга выгружается только отдельные части в которых нет необходимости.

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

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

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

Совместимость.

Linux предоставляет собой комбинации BSD Unix и System V Release 4 Unix. Linux достаточно хорошо совместима с рядом стандартов на уровнях исходных текстов, включая IEEE POSIX.1., System V и BSD.

Графический интерфейс пользователя.

В Linux графический интерфейс пользователя не встраивается в ядро системы. Вместо этого он представляется программами пользовательского уровня. Это применяется как к текстовым, так и к графическим оболочкам.

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

Первоначально используемой с системой Linux графической оболочкой была система X Window System (сокращенно X). X не реализует пользовательский интерфейс, а только оконную систему, т.е. средства, с помощью которых может быть реализован графический интерфейс. Три наиболее популярных версии графических интерфейсов на основе X - это Athena, Motif и Open Look.

Одновременное выполнение нескольких программ.

Так называемая виртуальная мультиконсоль дает возможность на одном дисплее организовать работу нескольких консолей. На первой консоли запускается процесс трансляции. Комбинацией клавиш Alt-F2 следует переход на вторую консоль. Трансляция продолжается, но при этом первая консоль на экране дисплея заменяется новой картинкой второй консоли. В которой, например, запускается редактор текста. Комбинацией Alt-F3 следует переход на третью консоль, в которой запускается отладчик и т.д. Обычно в системе 8 консолей, но можно установить до 64-х. В любой момент времени можно переключиться на любую консоль.

На отдельной консоли может работать как текстовая, так и графическая программа. На одной из свободных консолей можно запустить оконную графическую систему X Window System. Открываете окно на экране и играете в DOOM. Можно через сеть с партнером. А в других окнах - база данных, почта, редактор, трансляция и т.д.

Таким образом, одновременно работает много консолей, а на одной из консолей еще и много окон X Window System.

Кроме того, в системе одновременно работают фоновые процессы, которые не выдают информации на дисплей, но делают свою работу, например, передают данные по модему, печатают на принтере, передают почту по сети и т.д. Фоновый процесс может инициировать как пользователь, так и сама ОС в соответствии со сложившимися условиями (есть почта для отправки, данные для печати, наступило время связи по модему и т.п.). Linux обеспечивает физическое распараллеливание вычислений на многопроцессорных машинах (до 32 процессоров), но это не имеет прямого отношения к одновременному выполнению нескольких программ. Операционная система позволяет одновременно выполнять несколько задач на одном процессоре, сотни раз в секунду переключая процессор с задачи на задачу.

Структура файловой системы.

Поддерживаемые файловые системы Linux позволяют работать с различными типами файловых систем, а некоторые из них как например, EXT2/3, ReiserFS и JFS считаются базовыми для Linux. Поддержка FAT (файловая система MS-DOC) позволяет непосредственно обращаться к файлам на жестком диске.

Файловая система разделяется на несколько частей: файловая система root, состоящая из каталогов /bin, /lib, /etc, /dev и некоторых других, файловая система /usr, где хранятся различные программы и данные не подлежащие изменению, файловая система /var, где содержатся изменяемые файлы (такие как log файлы и др.) и файловая система /home, которая состоит из личных каталогов пользователей. Разделение может существенно отличатся от выше указанного в зависимости от работы системного администратора и конфигурации аппаратного обеспечения.

Работа с сетью.

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

Сетевые возможности Linux обеспечивают полный набор протоколов ТСР/Р для работы в Internet и поддерживается весь спектр клиентов и услуг ТСР/Р, таких как FTP,TELNET, NNTP и SMTP. Имеется возможность долучения доступа к сетям Internet без установки сетевого адаптера посредством установки модема и протокола РРР. ОС Linux обеспечивает эффективный и надежный шлюз РРР для удаленных пользователей по коммутативной линии.

Подключение к системе через сеть работает несколько иначе, чем обычное подключение. Существуют отдельные физические последовательные линии для каждого терминала, через которые и происходит подключение. Для каждого пользователя, подключающегося к системе, существует отдельное виртуальное сетевое соединение и их может быть любое количество. Однако не представляется возможным запустить отдельный процесс getty для каждого возможного виртуального соединения. Существуют также и другие способы подключения к системе посредством сети. Например, telnet и rlogin - основные службы в TCP/IP сетях.

При использовании сети для подключения к системе, кроме большого количества процессов getty используется отдельная программа-демон (при использовании как telnet так и login используются различные программы-демоны), которая отслеживает все попытки соединения с компьютером. Если опpеделяется попытка соединения, то программа создает новый процесс - создает сама себя для обработки этого соединения - а затем продолжает отслеживание новых соединений. Создаваемый процесс идентичен программе getty.

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

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

Почтовая система состоит из множества различных программ. Доставка писем к локальным или удаленным почтовым ящикам производится одной программой (например, sendmail или smail), в то время как для обычной отправки или просмотра писем применяется большое количетсво различных программ (например, Pine или elm). Файлы почтовых ящиков обычно хранятся в каталоге /var/spool/mail.

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

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

Оборудование, на котором работает Linux.

Linux вместе с X Windows работает на большом количестве марок компьютеров и ноутбуков

Версии ОС Linux имеют различные дистрибутивы - Mandrake, Red Halt, Alt и другие. Дистрибутив системы Linux содержит подробный перечень поддерживаемого оборудования, включая типы графических адаптеров, контроллеров, сетевых плат и т.д.

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

Введение……………………………………………………………………..

1. ОС Linux…………………………………………………………………..

2. Функциональные возможности ОС Linux………………………………

3. Преимущества и недостатки ОС Linux…………………………………

5. ОС Knoppix……………………………………………………………….

6. Функциональные возможности ОС Knoppix…………………………..

7. Преимущества и недостатки ОС Knoppix……………………………...

Заключение…………………………………………………………………..

Список используемой литературы…………………………………………

Введение

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

Ос Linux

Linux - это операционная система, являющаяся одним из вариантов (клонов) операционной системы типа Unix. В своем первоначальном виде она была создана Линусом Торвальдсом (Linus Torvalds) как версия ОС UNIX для IBM-совместимых персональных ЭВМ. При этом Торвальдс опубликовал исходные коды своей системы в Интернет (файлы первого варианта ОС Linux, опубликованные Торвальдсом в Интернет, датированы 17 сентября 1991 года), и к развитию системы подключилось большое число независимых разработчиков. Благодаря этому на сегодняшний момент Linux - самая современная, устойчивая и быстро развивающаяся система, почти мгновенно вбирающая в себя самые последние технологические новшества. Может использоваться как в качестве серверной ОС, так и на сетевых рабочих станциях или персональных компьютерах. В 1998 Linux была самой быстро развивающейся операционной системой для серверов, распространение которой увеличилось в том же году на 212%. Сегодня пользователей Linux насчитывается более 20,000,000. Под Linux существует множество приложений, предназначенных как для домашнего использования, так и для полностью функциональных рабочих станций UNIX и серверов Internet.

Операционная система Linux, альтернатива Windows. Внешний вид схож с Windows, такие же меню, значки, курсоры и другие элементы интерфейса. Это полноценная операционная система, подходящая как для работы на домашнем компьютере так и в офисах и даже используется в качестве серверов. Поддерживает русский язык. Считается достаточно устойчивой. Большое преимущество – низкая стоимость, а Debian-системы вообще являются бесплатными, но, не смотря на это, не уступают в работоспособности Windows.

Функциональные возможности ос Linux

Linux имеет в своем составе множество пакетов программ: мультимедиа (аудио и видео проигрыватели), графические редакторы, средства веб-разработки и интегрированные среды программирования, программы для работы в Интернет, офисные пакеты (редакторы текста, таблиц), множество полезных утилит. В Linux есть все что нужно для работы дома и офисе и проблема поиска нужного приложения снимается. Не случайно дистрибутивы занимают по несколько компакт-дисков. На диски с дистрибутивом включены справочные руководства и исходные коды. Реально, дистрибутив - это набор установочных утилит и набор пакетов программ (которые можно произвольно устанавливать), поставляемых на компакт-дисках либо выложенных в Сети. Каждый дистрибутив имеет свое название и версию. Кроме того, важной частью этой операционной системы является ее ядро, которое тоже имеет версию. Поэтому очень часто вопрос "какие есть версии Линукса" звучит несколько неконкретно. Нужно уточнять, что вас интересует: ядро, дистрибутив или другое.

Совместимость Linux с Windows. Прежде всего, следует сказать, что изначально это несовместимые системы. В Linux, посредством специальных утилит (например, Wine) предусмотрена возможность запуска Windows-приложений, хотя, чаще всего, сложные программы так и не удается запустить на выполнение. С форматами прочих файлов (текст, мультимедиа и др. проекты) дело обстоит проще: в Linux используются как свои форматы документов так и совместимые с Windows. ОС Linux используют свои таблицы размещения файлов (ext, ext3, nfs и другие), предусмотрена возможность работы с дисковыми разделами Windows – FAT16, FAT32, NTFS (работа с NTFS в режиме записи может привести к порче разделов и потере данных). А чтобы поработать из под Windows с разделами Linux необходимо обзавестись специальной программой.

Оборудование. Современное оборудование компьютера в основном без проблем работает под управлением Linux. Есть возможность работы со сканерами, принтерами, цифровыми камерами, DVD, CD-RW, DVD-RW, USB-Flash, устройствами на USB и другим компьютерным “железом”.

Безопасность. ОС Linux считаются устойчивыми системами и потери данных случаются редко. Система разграничения прав доступа не позволит обычному пользователю разрушить систему, как бы ему этого не хотелось. Для доступа к уязвимым местам системы, с целью ее настройки, нужно авторизоваться в как root (в WindowsNT/XP – администратор). И еще один плюс заключается в том, что под Linux существует меньше вирусов, чем под Windows.

Офис . Пакет программ OpenOffice является альтернативой Microsoft Office из Windows. Приложения из обоих пакетов очень похожи друг на друга, т.е. при знании даже одного из них возможна комфортная работа в обоих.

Таблица альтернатив

Что еще может пригодиться в офисе? Сканирование и распознавание текстов, печать, работа с факсами – все необходимое программное обеспечение в наличии. Так что для работы в офисе есть все, что нужно.

Мультимедиа. Аудио-проигрыватель XMMS (сильно напоминающий WinAMP) поддерживает wav, mp3, аудио-CD. Имеет дружественный интерфейс. Видео-проигрыватель XINE позволяет просматривать avi и mpeg-4. Свой выбор можно остановить на любом другом мультимедиа-проигрывателе из комплекта Linux.

Графика. Сюда можно отнести просмотрщики и редакторы графических файлов, программы чтения PDF (Adobe Acrobat Reader из Windows), программы для сканирования и распознавания текстов.

Особое внимание хочется обратить на профессиональный графический редактор GIMP, который является серьезной альтернативой известной в Windows программе Adobe Photoshop. GIMP может все, что необходимо дизайнеру и оформителю: работа со слоями, масса инструментов и графических эффектов, дальше перечислять не могу, так как я имею слабое представление о дизайне.

Разработка. Интегрированная среда разработки KDevelop в содружестве с QtDesigner позволяет легко и быстро создавать программы под Linux (правда, для это еще необходимы некоторые знания языка программирования C или C++).

Жизнь веб-разработчиков облегчают: KDevelop и Quanta Plus, и даже в некоторых текстовых редакторах (например, KWrite, Kate) предусмотрена подсветка синтаксиса различных языков программирования и языков сценариев (скриптов). И самое главное, так это то, что в нем присутствует сервер Apache (с поддержкой PHP), базы данных MySQL. Помимо этого поддерживаются другие скрипты (например, Perl, Python) и базы данных.

Кроме сред для разработки программ, есть редактор QCad для создания чертежей (по аналогии - Компас и AutoCAD из Windows).

Интернет . Интернет-браузеры, программы для работы с почтой, чат-программы (ICQ, IRC), менеджер закачек. Linux имеет хорошую поддержку локальной сети и множество утилит для работы с ней.

Утилиты. В основном для рядовых пользователей могут пригодиться следующие программы:

– запись CD и DVD (K3b);

– работа с разделами жесткого диска;

– органайзер, адресная книга, будильник, напоминания, калькулятор;

– настройка оборудования и системы;

– и множество других.

Проводя аналогию с операционными системами, позволю себе заявить, что единственное, чему никогда не научатся "Форточки" - материнской любви к пользователю. Windows всегда будет закрытой системой, и в следующей, и через десять версий (дай ей Бог здоровья). Поэтому всегда останется в мире место для системы, о которой пользователь может узнать все из документации, или, на худой конец, покопавшись в прилагающихся исходниках, и за которую он никому ничего не будет должен.

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

Самое главное - многопользовательская многозадачность. Это значит, что несколько человек могут одновременно запускать свои программы, используя ресурсы системы на полную катушку. Кроме того, поддерживаются легковесные процессы (потоки), которые работают в пределах одной задачи и потому расходуют меньше памяти и быстрее запускаются. Многозадачность Linux работает стабильно, один процесс не может завалить всю систему, как это происходит в Windows 95. Более того, два процесса также не могут завалить систему...

Далее, Linux поддерживает множество платформ. Наиболее распространена версия Linux для процессоров Intel 386+, также поддерживаются платформы Motorola 680x0 (компьютеры Amiga и Atari, старые Маки), PowerPC, DEC Alpha, Sun SPARC, в настоящее время идет работа над версиями для процессоров MIPS и ARM, и ядром для встроенных систем, которое будет работать и на Intel 8086. Также с помощью специального модуля можно обеспечить совместимость Linux со SCO, SVR3 и SVR4 на уровне исполнимых файлов и с другими версиями Unix, совместимыми с POSIX или BSD, на уровне исходников.

Кроме работы на различных процессорах, Linux может также работать с многопроцессорными системами SMP (Symmetric Multi Processing) на платформах Intel и SPARC, и используется в некоторых специфических системах, например, в кластерах Beowulf и суперкомпьютерах Fujitsu AP1000+ на базе SPARC.

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

Чтобы не быть голословным, приведу в пример собственный компьютер, 5x86-133/16 Мб. Даже при выполнении такой ресурсоемкой задачи, как компиляция Pretty Good Privacy 5.0i на фоне просмотра документов HTML, размер свопа не превышал полумегабайта, и оставалось еще 2 Мб на кэш диска. Как в такой конфигурации работает Windows 95, не говоря уже об NT, объяснять не надо.

Среди прочих удобств стоит отметить динамически загружаемые библиотеки, сохранение образа разрушенного процесса для "посмертной" отладки, эмуляцию математического сопроцессора на уровне ядра, систему "виртуальных консолей", позволяющую работать в нескольких сессиях одновременно, и поддержку локализации (в том числе три русских раскладки (две koi8 и одна alt-codes (MS-DOS)) и множество русских шрифтов).

Linux использует собственную файловую систему, ext2 (разделы до 4 терабайт и имена файлов до 255 символов), но может также работать с файловыми системами других юниксов, с DOS FAT, Windows 95 VFAT, OS/2 HPFS, Macintosh HFS и всеми стандартными форматами CDROM. Более того, Linux можно установить на DOS-овский раздел, поверх которого развернута система UMSDOS, в каждый каталог записывающая файл с недостающими в FAT атрибутами вроде длинных имен и прав доступа.

Что касается сетевых возможностей, то в стандартное ядро Linux обычно включается поддержка протоколов TCP, IPv4, IPX, DDP (Appletalt) и AX.25 (любительские радиосети). Существуют также модули, позволяющие Linux выполнять функции клиента или сервера в сетях NetWare, и разделять диски и принтеры в сетях на основе протокола SMB (Session Message Block, известен также как NetBIOS или LanManager), который используется в сетях Windows 3.11/95/NT.

Минимальная конфигурация для Linux - 386SX-16, 1 Мб ОЗУ и дисковод, но рекомендуется 4 Мб ОЗУ для работы в текстовом режиме и 8 Мб - для X/Windows. Как я уже говорил, в клиентской конфигурации с запасом хватает AMD 5x86-133 и 16 Мб ОЗУ, больше нужно только для серверов или графических станций. Объем требуемого дискового пространства сильно зависит от набора используемых программ. Для базового набора системных утилит вполне достаточно 10 Мб, остальное добавляется на пользовательские файлы и программные пакеты, и может составить от 60 до 300 Мб.

Список поддерживаемого оборудования называется Linux Hardware Howto и занимает десятки страниц, найти его можно по адресу http://sunsite.unc.edu/mdw/ HOWTO/Hardware-HOWTO.html или в стандартном комплекте документации. Для примера скажу лишь, что новомодные 3D-акселераторы Voodoo и Riva 128 в Linux поддерживаются.

Теперь о небогатом выборе программного обеспечения. В области коммуникационных программ и средств разработки с этой системой могут сравниться только другие Юниксы, программисту в Linux создаются все условия для плодотворной работы: десятки языков программирования, сотни редакторов, визуальные средства разработки - все это входит в большинство серьезных дистрибутивов Linux. То же с обработкой текстовых данных - в Unix изначально была сделана ставка на хранение информации в текстовом формате, и соответствующих средств было написано великое множество.

Графических программ под Linux также довольно много - от простых смотрелок до мощных редакторов и средств трехмерного моделирования и рейтрейсинга (в том числе и некоммерческих!). Более-менее полный список можно найти в Linux Graphics Mini-Howto на том же sunsite. То же со звуком - разного рода проигрывателей в дистрибутив Linux входит немало, а вот программу для серьезной звукозаписи придется поискать, а то и купить.

С базами данных дело обстоит сложнее. Конечно, их под Linux немало, в том числе свободная СУБД Postgres95, работающая с надмножеством SQL, но сколько бы их не было, мало кто решится переводить всю фирму со старого доброго FoxPro на неизвестно что. А для менее серьезных задач и база данных обычно не требуется.

Теперь о ложке дегтя. Действительно, Linux работает очень быстро. И все в ней можно настроить. Беда только в том, что многое в ней НУЖНО настраивать. Компании, занимающиеся разработкой и распространением дистрибутивов Linux, борются с этой проблемой с переменным успехом и предлагают заранее сконфигурированные пакеты, но всегда есть вероятность того, что придется лезть в систему руками. Такова цена за гибкость.

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

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

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

Командная строка
Самая страшная ассоциация Линукса, которая нагоняет страх на всех юзеров - это командная строка. Пользователи ненавидят командную строку! Миф о том, что в линуксе все делается только с помощью команд на черном экране пересказывают миллионы чайников друг другу ночью, слушая потрескивание дровишек в торрент клиенте, докачивающем свежую порнушку. Сколько не объясняй чайнику, что свои любимые видеофильмы на немецком про любовь он сможет спокойно смотреть на линуксе, все равно распространенность мифа не дает побороть ужас неизвестного: "А вдруг не смогу?".

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

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

Решение из командной строки состоит из двух команд: изменить текущую директорию куда будет сохраняться файл и собственно скачивание файла
$ cd /tmp
$ wget http://example.com/das-ist-fantastich.avi

Что? Говорите преймущество неочевидно? Тогда представим что у нас есть список URL по которым надо скачать тысячу файлов. В командной строке для решения достаточно указать в каком файле или по какому URL лежит этот список:
$wget -i /tmp/spisok.txt

Командная строка удобна при составлении списков заданий. Следующая строка подождет два часа (7200 секунд) пока доиграет жена, запустит обновление системы, после чего запакует директорию /mnt/work в архив /tmp/work.tar.gz и запишет архив на DVD на восьмой скорости без создания файловой системы для экономии места:
sleep 7200; emerge -DuN world; tar -zcvf /tmp/work.tar.gz /mnt/work; cdrecord dev=/dev/sr0 speed=8 /tmp/work.tar.gz

В общем, командная строка ускоряет, облегчает и даже отстраняет пользователя от нудной работы. Из командной строки можно выполнять такие действия, которые казалось бы ну никакой логикой с ней не связаны. К примеру, обработка графических изображений. Следующая строка открывает изображение in.png , уменьшает его пропорционально до 800 пикселей по ширине и сохраняет в out.jpg с качеством "90". Эта манипуляция требует установленый пакет ImageMagick

$convert -quality 90 -resize 800 -strip in.png out.jpg

Следующий пример сложен, но способен сохранить вам дни и недели нудной работы в фотошопе, если требуется обработать тысячи изображений. Следующая строка находит с помощью команды find в текущей директории все файлы с расширением.jpg. Названия найденых файлов передаются через xargs команде convert как параметр {}. Эта команда в каждый найденый графический файл в координатах 80x80 вписывает время и дату съемки фотографии, которые берет из EXIF. Файл сохраняется с тем же названием в директорию /tmp:
$find . -iname "*.jpg" | xargs -l -i convert -font Arial -pointsize 72 -fill white -annotate +80+80 % {} /tmp/{}

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

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

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

Удаленный запуск программ
Допустим на домашнем компьютере у меня в браузере прикреплены сертификаты для электронных платежей. С собой я их не ношу. С любого линукс-компьютера я подключаюсь на домашний линукс-компьютер командой
ssh -X login@homeip
и запускаю браузер
$opera
Происходит чудо: я вижу графический интерфейс моей оперы с домашнего компьютера. Захожу на нужные сайты, делаю необходимые платежи и закрываю браузер.

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

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

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

Смотрим в каких группах состоим. Читай: какие права имеются у пользователя, под которым мы работаем в системе.
$groups
tty wheel uucp audio cdrom video usb users plugdev oper

Не хотим чтоб сотрудники использовали видеоускоритель для игры в 3D игры?
$gpasswd -d username video

Таким же макаром можно перекрыть доступ к звуковой карте, USB-портам, рекордеру дисков и т.п.

Использование песочницы
Если на очень важном сервере необходимо запустить приложение, которое является потенциальной брешью безопасности, то проблема решается созданием директории с упрощенным дубликатом linux системы. В эту директорию (назовем /mnt/sandbox) скидывается программа и все необходимые программе части системы: например /bin, /sbin, /usr/sbin/, /var.

Запускаем вебсервер Apache, который теоретически через кривые скрипты сайтов может стать причиной взлома всю имеющейся системы

$chroot /mnt/sandbox /usr/sbin/apache

Если же злоумышленик через кривой скрипт получит доступ к серверу, то он будет ограничен директорией /mnt/sandbox. Если он получит пароли или даже сотрёт всё из этой директории, то на работу сервера за пределами этой директории его деятельность никак не повлияет.

Виртуальные машины
Предыдущий инструмент chroot - прост, но не решает проблему разделения ресурсов. Не только злоумышленик, но и обычный владелец сайт может разместить скрипт чрезмерно прожорливый к ресурсам, отобрав ценные ресурсы (память и процессорное время) у других пользователей и программ. Эта задача решается через виртуальные машины.

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

Одной из распространенных бесплатных программ для создания виртуальной машины является программа VirtualBox. Запустив VirtualBox мы можем создать вирутуальный компьютер, выделив место под жесткий диск, данные которого будут лежать в файле выделенного нами размера. Мы можем настроить для этого виртуального компьютера количество выделеной памяти, количество выделеных ядер процессора, выбрать ISO образ диска, который будет вставлен в виртуальный DVD. После настройки запускаем виртуальный компьютер, загружаемся с DVD-образа и устанаваливаем на виртуальный жесткий диск операционную систему. Вся прелесть такой виртуальной машины в том, что мы можем установить не только линукс, а любую операционную систему: Windows, Solaris, MacOS, FreeBSD.

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

KSM
Запуск вируальной машины вполне возможен на множестве других операционных систем. Почему это находится в статье про Linux? Linux превосходно справляется с запуском множества виртуальных машин! Одной из функций улучшающих эффективность запуска множества виртуальных машин на одном физическом компьютере является KSM - Kernel Samepage Merging.

Допустим мы запустили на одном компьютере 10 виртуальных Windows-машин, каждой из которых выделено по полгига памяти. Элементарная математика говорит о том, что сожрут они 5 гиг памяти. Чем же заняты эти пять гиг памяти? В основном дубликатом операционной системы Windows и дубликатами одинаковых программ, которые запущены на этих виртуальных машинах. Допустим из 512 мегабайт виртуальной машины 200 уходит на код одинаковой системы и программ. Подсистема KSM в линуксе отслеживает одинаковые страницы памяти и объединяет их таким образом, что они находятся в одном экземпляре для всех запущеных виртуальных машин. Таким образом можно серьезно сэкономить память предоставляя в аренду виртуальные хостинговые и виртуальные сервера на одном физическом сервере.

Драйвера
На производителей оборудования в плане драйверов под линукс надеяться пока не приходится: большинство производителей железа либо не делает дров под линукс либо делает что либо кривое чтоб отмахнуться. Драйвера различных устройств в линуксе как правило идут вместе с ядром и поддержка новых устройств появляется с выходом свежих ядер. Поэтому линукс всегда имеет поддержку всего распространенного оборудования.

Вся прелесть драйверов в линуксе заключается в том, что мизерный по размерам драйвер какого либо чипсета поддерживает устройства всех производителей. Скажем, если я знаю что материнская плата на чипе NVidia, то совсем нет необходимости разбираться кто является фирмой-производителем Asus, Palit, Gigabyte или еще какая то китайская контора. Очень удобно когда втыкаеш вебкамеру в USB и с большой вероятностью ядро ее определяет и тут же позволяет работать.

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

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

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

Совковая лопата - глубокая, с закраинами. Предназначена для работы с сыпучими грузами. Для каждого вида груза разработана своя форма. Песочная - обычный прямоугольник; зерновая - то же увеличенной длины и ширины; растворная - с увеличенной глубиной. угольная, породная - заостренный треугольник.

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

Правильный ответ: Gentoo Linux! Конечно же я немного утрирую насчет идеальности, но именно эта система дает невероятные возможности для тюнига такого инструмента как компьютер.

Сейчас раскажу каким образом. Программисты пишут на Си++ и потом его компилируют в бинарный код, который непосредственно выполняется процессором компьютера. Компиляция - очень сложный процесс, который имеет множество настроек. Чтоб бинарный код одинаково хорошо работал на всех компьютерах всегда главным условием идет универсальность. Именно с расчетом на универсальность поставляются почти все операционные системы. Я говорю о всех бинарных системах, которыми являются так же и большинство Linux систем: Arch, Ubuntu, Debian, Slackware.

В отличие от бинарных систем Gentoo Linux компилируется из исходных кодов во время установки в соответствии с настройками компилятора. Таким образом, я записываю настройки в файл /etc/make.conf:

CFLAGS="-march=k8-sse3 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
ACCEPT_KEYWORDS=~amd64

При компиляции ядра и всех программ операционной системы компилятор будет использовать оптимизацию под процессор AMD Athlon64. В результате моя операционная система получает большой прирост производительности при работе на Атлонах, но будет хуже работать на процессорах Intel (или вообще не будет работать на Intel).

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

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

Работа под администраторскими правами
Как то раз меня вызвали в полицейское отделение и задали вопрос, знаю ли я человека с фотографии. Я человека знал. Он терся у меня в клубе и был клиентом. Об этом я и поведал сотрудникам полиции. На что они мне говорят
- А вот он пишет, что он у вас работает. Его принял на работу один из операторов. Вот читайте.
- А вам не режет глаза логическая ошибка. Каким образом оператор принял на работу человека с улицы?

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

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

Права на запись
Мне очень нравится принцип всех линукс программ: не записывать свои файлы где попадет. Для работы системы требуется запись в /tmp и в домашнюю директорию пользователя. В случае запуска более сложных программ требуется еще /var (например, mysql хранит в этой директории базу данных).

С использованием различных инструментов системы линукс можно подключить все необходимые для записи директории в память, на сетевой диск или на любой другой удобный носитель. Это позволяет легко и непринужденно запускать систему любым удобным способом: с CD, DVD, с флэшки и даже по сети с сервера.

Обновления
Чтоб обновить систему я пишу команду

#emerge --sync; emerge -DuN world

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

Я замерял и заметил, что после обновления Xorg сервера и драйверов nvidia тест glxgears показывает на одном и том же железе лучшие цифры. Разница не существенная, но прогресс есть всегда.

Иногда, надо сказать, обновления могут принести глюки и деградацию. Для решения этой проблемы новый пакет можно замаскировать и выбрать одну из предыдущих версий. Так, например в неэмуляторе винды WINE регулярно начинают переписывать какую то сложную подсистему и тогда новые версии несут в себе глюки. В этом году была проблема, когда отлично работающая в линуксе гама Warcraft DOTA перестала работать по сети с выходом новых версий WINE.

И самое главное, если вам надоели проблемы с , переходите на линукс. Linux - это единственное верное решение!

Linux по умолчанию работает со своим «родным» протоколом TCP/IP, протоколом, на котором функционирует Интернет. Также Linux способна работать, при установке соответствующего оборудования, с протоколами IPX/SPX фирмы Novell Netware, протоколами NetBIOS (Microsoft Windows 3.1x, Windows9x/Me, Windows NT/2000) и AppleTalk (Apple Mac OS). И это еще не все, что она понимает и поддерживает, хотя перечисленные 4 сетевых протокола сегодня используют наверное более чем в 95% случаев. Из аппаратных средств Linux способна работать практически с любым оборудованием, предназначенным в том или ином виде для использования в сетевых соединениях: сетевые карты Ethernet, Radio Ethernet, ArcNet, аппаратура для спутникового Интернета, ISDN, ATM, обычные модемы и многое другое.

Сетевые сервисы.

Что интересует пользователя в Интернете? На первый, поверхностный, взгляд Web-сайты, FTP, электронная почта и новости. Но для нормального и комфортного функционирования Интернета необходимо множество других сервисов – это и DNS, и прокси-серверы, и серверы точного времени и многое другое. Все это для Linux есть, и не в единственном экземпляре, нужно только выбрать, какой тяжести инструмент необходим. Сказанное касается и серверного программного обеспечения, и клиентского.

Файловые менеджеры

Для пользователей старой закалки, знакомых еще с DOS, непременным атрибутом работы за компьютером был файловый менеджер. Хотя адепты Linux упорно твердят о ненужности файлового менеджера для Linux, тем не менее спрос рождает предложение. Есть несколько файловых менеджеров и для Linux. Есть они как и для текстовой консоли так и для Х Windows. Самый известный из них– Midnight Commander (почти полный эквивалент Norton Commander).