Linux book/Before start
Материал из eSyr's wiki.
Содержание |
[править] Зачем Linux?
Перед тем, как рассуждать, что такое Linux, зададимся вопросом, почему возникла такая ситуация, почему мы им заинтересовались. Каждый человек, которму предстоит освоить Linux, должен задаться вопросом: «Зачем мне Linux?». Ответов на него довольно много.
- «Было интересно». Если человеку интересно всё, что связано с компьютером, а Linux это такая компьютерная штука, то это интересно. «Just for fun». Действительно, Linux — штука интересная для освоения и изучения.
- Для решения каких-то задач. Есть класс задач, которые разумнее, быстрее, безопаснее решать с помощью Linux и UNIX-подобных систем.
- «Хочу стать кем-то», «Нужно повышать компьютерную грамотность, иначе меня не возьмут в системные администраторы», и т. п., то есть, для повышения квалификации. Представляется разумным изучать ОС, программное обеспечение, разработку ПО с помощью такой среды, где на все эти пункты не наложено никаких ограничений, и Linux такой средой является.
- Обеспечение лицензионной чистоты. То ПО, которое продаётся на дисках стоимостью 70 рублей, обычно стоит не 70 рублей, а гораздо больше, что приводит к многочисленным проблемам уголовного характера. Использованее бесплатного ПО в данном случае гораздо безопаснее, и, как следствие, удобнее.
На каждый указанный выше ответ может найтись контрпример. Например, может быть неинтересно, и компьютер предназначен для решения ограниченного круга задач. Или задачи специфические. Или аллергия на знания. Или лицензионная чистота обеспечивается тратой большего количества денег.
После понимания, зачем Linux нужен, возникает ряд других вопросов:
- А какой такой, собственно, Linux, что это такое?
- Какое аппаратное обеспечение под это потребуется?
Главный же вывод, который можно сделать, состоит в следующем: Для изучения Linux нужен Linux, нужно желание его изучать и нужен компьютер.
[править] Что такое Linux?
После того, как стало понятно, зачем нужен Linux, настало время определиться с тем, что же это такое. Существует некоторая путанница с тем, что именно называется словом «Linux».
[править] Linux — это ядро ОС
Формально, точным определением термина «Linux» является следующее:
История появления подобно описана его автором, Линусом Торвальдсом, в книге «Just for fun». Что такое ОС? Ядро — та часть операционной системы, которая обеспечивает доступ к ресурсам аппаратной части компьютера (внешние устройства и виртуальные ресурсы, то есть те ресурсы, которые реально есть, но они не имеют физического представления: процессорное время, виртуальная память…).
[править] Linux — это дистрибутив
Поскольку те люди, которые используют Linux как операционную систему, вряд ли имеют в виду ядро, попробуем дать не столь точное, но более адекватное определение, которое можно сделать на основании следующего рассуждения: если мы хотим иметь Linux, то мы хотим иметь операционную систему. Но было бы глупо называть Linux операционной системой. Было бы правильнее называть Linux дистрибутивом оерационной системы. И это в качестве определения это и возьмём:
Дистрибутив — нерусское слово, написанное русскими буквами. Оно означает набор программных продуктов, который позволяет сделать операционную систему на базе ядра Linux на конкретном компьютере путём установки. Это узкое определение. Но, тем не менее, тот же дистрибутив офисных программ — набор программ, из которых можно сделать офисный пакет путём установки.
Теперь поговорим про дистрибутив, опишем его. Вот вам попал в руки блин, или вы скачали ISO-образ. Это набор, набор программных продуктов. Более того, можно сделать очень смелое заявление — с помощью этого набора можно сделать ОС. Звучит невероятно. Потому что, что такое ОС — набор ПО, которое позволяет пользователю решать его пользовательские задачи. Как бы сказать — когда за 150 долларов покупаем Windows, получаем не ОС для конечного пользователя, а среду для запуска программ. Это — ОС для системных интеграторов. Тут же утверждается, что при помощи этого набора можно решить 95 процентов пользовательских задач. Это значит, что вот в рюкзачке у лектора лежит десктопный дистрибутив, и на нём программ лежит много, даже больше, чем на типичном пиратском диске. Вот на одном DVD — порядка 4000 программ (пакетов).
Да, дистрибутив это ещё установка и манипуляция.
[править] Linux — это сообщество
Далее, возникает вопрос. Кто авторы этого ПО? Например, ALT выпускает такой дистрибутив, что, он все эти программы написал? Конечно нет, существует множество авторов (upstream). Идея в чём: какие-то люди разрабатывают программные продукты, а сообщество дистрибутива занимается тем, что подгоняет эти программные продукты под единую базу (оформление, гайдлайны, установка-удаление).
Если авторов множество, то очевидно, что какие-то авторы какого-то OpenOffice или другого программного продукта не имеют желания адаптировать свои продукты под все триста существующих дистрибутов, это смерть на взлёте. Соответственно, должен найтись человек, который хочет пользоваться этим программным продуктом и этим дистрибутивом. Такой человек становится сопровождающим (maintainer). Множество мэнтейнеров образуют team. Это совершенно необязательно значит, что за это получают деньги, деньги можно получать за то, что это работает. И, ещё, выпускающие (core team) — команда, их интерес — сделать хороший дистрибутив, и в очень многих случаях это — работники компании. Хотя, существуют примеры очень успешных Linux-сообществ, core team которых не получают за это ни копейки.
На вопрос «Откуда берутся программы?» лектор ответил наполовину, поскольку абсолютно непонятно, почему это легально. Вопрос — где нас надули, почему это стоит 600 рублей, почему это может использоваться ещё в трёхстах дистрибутивов, почему говорят, что это хорошо, ведь говорят, что убил бобра — спас дерево. Возникает ещё один вопрос: что такое свободное ПО?
[править] Свободное ПО
Ситуация очень простая. Существует очевидный зазор между распространением материальных объектов и информации. В первом случае можно отчитаться, что на изготовление 4 горшков было потрачено 4 кг глины, потрачено 4 часа горшечника и т. п. Есть линейная зависимость:
1 горшок = 1 единица глины + 1 единица труда 1 000 горшков = 1 000 единиц глины + 1 000 единиц труда
С экономической точки зрения — постоянная зависимость затрат от объёма. С программными продуктами другая зависимость:
1 копия = 1 диск + 1 труд программиста 1 000 копий = 1 000 дисков + 1 труд программиста
Линейной зависимости нет, диски стоят копейки, и основные затраты в труде программиста (хотя сейчас всё уже зависит от пиарщика). Существует забавная ситуация, как этим воспользоваться: сделать вид, что второго нет, и программисты делают горшки: один диск стоит 150 долларов, 1000 дисков стоит 150 000 долларов.
Как это зарождалось: сидит такой программист, учёный, кудесник, занимается своими учёными делами, защищает диссертацию, пишет программы, даёт другим учёным исходный код. Это такой академический стиль разработки программ. Есть другой вариант: есть дистрибутив, который решает круг задач, и чтобы этот дистрибутив было другому человеку использовать, и если другой человек решит свои другие задачи с использованием этого дистрибутива, то будет обоюдная польза (решение задач и расширение возможностей дистрибутива).
Если работает по первой схеме, то покупается за тысячи долларов программист, который умеет рисовать зайцев, его код — собственность компании и больше ничья.
Правовладельцам выгодно как можно меньше распространять исходный код, в отличие от программиста.
[править] Способы разработки
И тут начался водораздел на два противоположных направления разработки продуктов:
- Закрытый. Любое распространение информации оценивается через пользу бизнесу и исходный код — последнее, чем они могут поделиться. Очень узкий круг разработчиков. Каждый новый разработчик должен подписать NDA, и корпорация должна его прокормить от начала до конца. Такой способ выгоден правовладельцу. Правовладелец существует, есть некая персона, которая владеет всеми правами на программный продукт. Только в этом случае можно продавать ПО
- Открытый. Главное — распространение информации, в первую очередь — исходного кода. Сообщество организуется очень большое, идея состоит в том, что чем больше людей и чем грамотнее они организуются, тем лучше. Не существует некоего человека или организации, называемой правовладельцем, которая обладает всеми правами. Даже наоборот, в лицензии может быть прописано, что при получении продукта передаются все не исключительные права.
Существует свободное ПО и правовладельческое. Свободное ПО основывается на открытом способе разработки, правовладелеческое — на закрытом, есть 4 условия открытости ПО (как недавно лектор выяснил, что есть две формулировки, одна лекторская, одна каноническая):
- Свобода использования
- Свобода распространения
- Свобода изучения и внесения изменений (как следует, наличие исходного кода)
- Распространение изменённых версий — это именно тот рычаг, который приводит весь механизм в действие, то есть, если кто-то захочет сделать лучше, у него не будет преград
Именно при обеспечении этих 4 требований разработка может быть открытой, эффективной.
У этого определения существует один изъян: я человек, который желает раздавать программы как горшки, но я не хочу писать программу, что я делаю: я беру свободную программу, что-то хакаю, и закрыто продаю. Это разрешено 4 степенями свободы с лёгкостью. Поэтому во многих лицензиях в дополнение к этим 4 степеням приписывают одно ограничение: когда вы занимаетесь распространением с исп. GPL'ного продукта, то лицензия на распространение ПО должна быть не хуже GPL.
Сразу же возникает вопрос об адекватной и эффективной модели ведения бизнеса на базе OpenSourse.
Третий пункт: Linux это сообщество. Этот пункт не мешает иметь в голове всем нам, когда изучаем Linux. Если в случае с Word авторы — это буковки в окне о программе, то в случае с Linux авторы не просто есть, а одна из них обязанностей — поддерживать программу, кроме того, есть пласт пользователей, которым эта программа небезынтересна. И при использовании Linux нужно включиться в сообщество (не нужно при этом по 5 часов заниматься этим Linux'ом добровольно-принудительно). Кроме того, в сообщество все эти люди именно пришли, и они пришли, потому что им надо, и им совсем не пофигу, если вы нашли ошибку, и сказали о ней, и это поведение отличается от закрытой модели разработки.
[править] Коротко про оставшиеся вопросы
- Выбор дистрибутива. Что-то вроде домашнего задания. Давайте не будем решать вопрос, какой дистрибутив нужен, мы можем составить список задач, пойти на http://distrowatch.com, и посмотреть, как идёт жизнь дистрибутивов, какие дистрибутивы бывают. Подсказка: одного DistroWatch недостаточно (для примера, см. информацию по ALT Linux). Тем не менее, это хороший ресурс. Выбор — какой понравится.
- Пойдём с другой стороны — какие бывают дистрибутивы?
- Не хотим сносить ту систему, которая стоит на машине. Самый простой вариант — live cd. Это дистрибутив Linux, который уже установлен внутри некоей виртуальной ФС на компакт-диске, которая при запуске разворачивается частично в память, частично читается с диска же. Таких дистрибутивов много, самый известный — Knoppix. В последнее время практически каждый дистрибутив имеет свой Live CD, часто с опцией установки. Недостатки: работает очень медленно, нужно довольно много памяти, проблемы с настройкой (есть вариант Live Flash)
- Двухсистемная машина. Несложно установить две ОС на один компьютер. Придётся постоянно перегружаться. Нужно достаточно хорошо понимать, что такое разметка диска.
- Всё снести, поставить Linux
- Эмулятор. VMWare, VirtualBox. Работает довольно медленно и как-то неправильно
Не охваченный вопрос — каким должен быть компьютер в плане железа. На самом деле, вопрос это довольно сложный, единственное, что лектор может сказать, что существует понятие аппаратной совместимости, и до установки Linux нужно посмотреть, совместимо ли имеющееся железо.