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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: В начале была командная строка... (In The Beginning Was The Command Line) - Нил Стивенсон на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Героические поэмы, подобные Гильгамешу продолжают жить и не теряют своего очарования и притягательной силы, ибо они — плоть от плоти создавшего их народа; их учили наизусть, передавали из уст в уста, каждый раз привнося что‑то новое, что‑то свое. Неудачные придумки терялись из людской памяти, их забывали быстро и навсегда, а хорошие подхватывали другие рассказчики, и затем, до блеска отточив слог и стиль, помещали в эпос. Unix потому так и любим несметным количеством хакеров, что любой из них, возникни у него такая необходимость, может создать его с нуля. Для людей, уверенных, что операционные системы необходимо покупать, это просто немыслимо.

Более–менее успешные попытки создать Unix заново принимались неоднократно. Каждый придумывал что‑то свое. Некоторые «усовершенствования» не прижились, другие слились с себе подобными, изобретенными в то же самое время другими хакерами, третьи заслуженно вошли в эпос. Как из крохотного семени постепенно вырастает огромное ветвистое дерево, так из простого маленького ядра,

путем добавлений и исправлений, родился Unix. Чисто технически такие вещи объяснить трудно, поэтому я прибегну к метафоре.

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

Но всё оказалось именно так. В 1991 году финн Линус Торвальдс, использую некоторые GNU–утилиты, собрал Unix–подобное ядро, которое запускалось на IBM–совместимых компьютерах. За одно это Торвальдсу следует сказать огромное спасибо. Более, чем огромного. Но в одиночку он бы не справился. Никто бы не справился, даже Ричард Столлман. Для разработки кода Торвальдсу потребовался инструмент – могучий, но дешевый, и он его получил в рамках разработанного Столлманом проекта GNU.

А для запуска кода ему нужно было недорогое «железо». Дешевое «железо» — это вам не дешевое программное обеспечение, достать его намного сложнее. Написать «софт», а затем бесплатно выложить его в интернете, способен и один человек (тот же Столлман). Совсем другое дело — «железо», над которым работает целая промышленная отрасль и которое одна только сила мысли доступным не сделает. Единственный способ получить желаемое – произвести несметное количество аппаратного оборудования, ибо в этом случае цена единицы продукции неизбежно резко пойдет вниз. Я уже объяснил, почему компания Apple не стремилась к снижению цен. И если бы не Microsoft, дешевого «железа» у Торвальдса бы не оказалось.

Корпорация Microsoft отказывалась заниматься аппаратной частью ПК. Утверждая, что ее программное обеспечение запускается на любом «железе», она незаметно, исподволь, поставила рынок в такие условия, что цены на технику рухнули. Таким образом, Linux — творение рук не одного человека. Как Святая Троица не мыслима без всех трех своих ипостасей, так и Linux немыслим без Линуса Торвальдса, Ричарда Столлмана и Билла Гейтса. Лишите этот причудливый симбиоз любого из них, и не видать вам Linux, как своих ушей.

Операционно–системный шок

Америка — огромная страна, однако жизнь на ее обширных территориях везде одинакова, поэтому юные американцы, оказавшись за границей, обычно проходят три стадии культурного шока. Вначале — широко распахнутые глаза и немое удивление. Затем — робкие попытки освоения новых традиций, заморской кухни, систем общественного транспорта и туалетов. И, наконец, последняя, самая короткая стадия — смехотворная уверенность в том, что теперь они это страну знают, как свои пять пальцев. Если визит затягивается, путешественников начинает одолевать тоска по родине, они наконец‑то понимают (впервые в жизни!), как хорошо живется в Америке, как хорошо в ней всё то, что раньше воспринималось, как должное. Одновременно с этим наступает прозрение – оказывается, другие, такие непохожие и странные (одно левостороннее движение чего стоит) культуры и традиции тоже имеют право на существование. И вот наши пилигримы возвращаются домой, вспоминают свои приключения на чужбине и приходят к выводу, что за время странствий они узнали о родной Америке гораздо больше, чем о чужбине.

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

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

Мы, американцы обожаем простые, ничем не замутненные сделки. А вот, допустим, приехали вы в Египет, взяли первое попавшееся такси и — автоматически превратились в одного из ближайших друзей водителя. Денег он с вас не возьмёт — вы же друзья! Зато он покажет вам город и зальется крокодильими слезами, реши вы пересесть в другое такси. В завершение он познакомит вас с семьёй и детьми, и вы голову сломаете, придумывая, как же его всё‑таки отблагодарить, чтобы ни в коем случае не обидеть. Это изматывает. Иной раз вам взгрустнётся по непритязательному шоферу с Манхеттена, который потребует с вас деньги и без лишних слов отвезёт куда надо.

Однако такой вот удобный американский образ не возникает сам по себе.

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

Apple и Microsoft работают по Манхеттенской схеме. Сложный, громоздкий, отлаженный механизм, приводящий в движение систему, спрятан за привлекательной завесой пользовательского интерфейса. Linux творит на египетский манер, его интерфейс — сплошная неразбериха. Вы загружаете Linux, и земля уходит у вас из‑под ног, такое ощущение, что неведомая сила взяла и в мгновение ока перенесла вас с Манхеттена прямиком в Египет. Вы сбиты с толку, вы воздеваете руки к небу и восклицаете: «Господи, Боже мой! Да они что тут, с ума все посходили?!». И зря. Так вы друзей в среде Linux не обретёте, как, впрочем, и в Египте.

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

Linux не просто набор единиц и нулей, это — хакерская субкультура, зародившаяся и самоорганизовавшаяся в недрах Сети. В результате напряженного коллективного труда возник необъятный исходный код, в большинстве своём написанный на Cи (основном языке программирования). «Исходный код» — текст компьютерной программы, набранный и отредактированный кем‑нибудь из хакеров. Если исходный код написан на Си, файл имеет расширение *.c или *.cpp[15] (в зависимости от того, к какой школе принадлежит программист, написавший текст программы). У файлов с программами на других языках расширение будет другим. Обычно такие файлы размещаются в директории /src, что на хакерском аббревиатурном наречии означает «source» (исходные текты).

Ни компьютеру, ни большинству пользователей исходные файлы не интересны. Linux открывает их любому желающему, а вот Microsoft и Apple хранят их в строжайшей тайне за семью замками и печатями, для них исходные файлы на вес золота. В голливудских боевиках главные герои гонялись бы за исходными файлами Apple и Microsoft точно так же, как за технологией создания ядерной бомбы, секретными чертежами («перед прочтением сжечь!»), чемоданом, набитом ценными облигациями или совершенно засекреченной микропленкой. Как сказал сэр Альфред Джозеф Хичкок, «неважно, что это за вещь; главное, что все хотят обладать ею». Размести кто‑нибудь эти файлы в интернете, ОС Windows и MacOS стали бы свободными и бесплатными, как Linux, не такими хорошими, правда, не осталось бы никого, кто взвалил бы на себя обязанность подчищать «баги» и отвечать на бесконечные вопросы пользователей. Так что фраза «программное обеспечение с открытым исходным кодом» означает всего–навсего, что любой (абсолютно любой человек) имеет право получить исходные файлы и распоряжаться ими по собственному разумению.

И вашему компьютеру, и вам исходный код нужен не больше, чем собаке пятая нога. Что ему действительно требуется, так это объектный код. Файлы, содержащие объектный код, обычно имеют расширение *.o и совершенно нечитабельны для большинства пользователей, так как состоят из нулей и единиц. Лишь малая горстка очень странных людей способны прочесть эти файлы, размещенные в директории с именем /bin, что значит «binary» («двоичный»).

Исходные файлы — обычные текстовые файлы в кодировке ASCII, которая переводит алфавитные и цифровые символы, знаки и управляющие команды в набор битов. Каждому символу соответствует комбинация из восьми битов. Это позволяет определить 256 различных символов — «алфавит» — на основе которого восьмибитовые знаки формируют разнообразные кодовые вариации. В повседневной жизни, мы, конечно же, ограничиваемся обыкновенными, простейшими буквами и цифрами. Когда‑то, еще в школьные годы, для зримого отображения букв и цифр этот же набор битов использовался в телетайпах, пробивавших дырки на перфолентах. А еще ранее, за несколько десятилетий до телетайпов, его применяли в телеграфной связи. Короче говоря, текстовые файлы в ASCII–кодировке — это безыскусные телеграммы, не отформатированные и не приукрашенные. И потому они — вечные. Кодировка никогда не меняется. Она единая, неделимая, всеобщая. Любой текстовый редактор любого программного обеспечения о ней знает.

Итак, в любом текстовом редакторе можно создавать, редактировать и читать исходные файлы. Из исходных файлов с помощью компилятора получают объектные файлы, а затем к работе над объектными файлами приступает компоновщик («линкер»).

Этой триады – редактора, компилятора и компоновщика — вполне хватает для разработки программ. Сегодня, конечно, можно купить их «в одном флаконе», собранными в один программный пакет, снабженный к тому же миленьким ГПИ и тому подобными обворожительными «мулечками» и «фишками». В некоторых случаях не самое плохое вложение капитала. Не стоит только забывать, что на противоположной стороне дороги совершенно бескорыстно раздают отличнейшее ПО. Редактор, компилятор и компоновщик для хакера то же, что конь, седло и колчан стрел для монгола–кочевника. В виртуозности владения рабочим инструментом хакеры ни в чем не уступают лихим наездникам–монголам. Хакер всегда на коне, когда пишет программу. Никакой инженер–разработчик, да пусть хоть самый лучший инженер–разработчик из сонмища наилучших (и все равно — лишь один их них), не создаст ничего стоящего, если будет корпеть над чистым листом белой бумаги, вместо того, чтобы взять в руки хакерский инструментарий.

В мире GNU/Linux есть два ведущих текстовых редактора – скромный и непритязательный vi (или же его клоны elvis и vim) и «большой, толстый и красивый» emacs. Лично я пользуюсь emacs — он крут донельзя. Как‑никак, детище самого Ричарда Столлмана, что тут говорить! Написан он на Lisp–е, единственном по–настоящему красивом языке программирования. Он превосходен, он выше всяких похвал, но редактирует только простые текстовые файлы, поэтому забудьте о разномастных шрифтах, жирных начертаниях и нижних подчеркиваниях. Человеко–часы, затраченные разработчиками Microsoft Word на «приблуды» типа mail merge и вставку полнометражных фильмов в манагерские презентации, в случае с emacs пошли совсем на другое дело – на решение такой обманчиво простой проблемы, как редактирование текста. Причем решалась данная проблема поистине с маниакальным упорством. Если вы профессиональный писатель и, соответственно, кто‑то другой заботится о надлежащем форматировании ваших текстов, чтобы они достойно выглядели на печати, то без emacs вы как без рук, он затмит любой текстовый редактор в мире — так солнце, вышедшее во всей красе на небосвод, затмевает звезды. Не потому, что оно больше и мощнее, просто на его фоне всё остальное бледнеет и прячется в тень. А для верстки текста и печати готового макета нет ничего лучше TeX – общепринятой издательской системы набора текстов, написанной на C и свободно выложенной в Сети.

Я мог бы вам много чего рассказать и про emacs, и про TeX, но глава посвящена совсем не им, а тому, как установить на компьютер Linux. Особо упертый пользователь может, конечно, установить emacs (или другой текстовый редактор), добавить к нему компилятор и компоновщик, которые так же хороши и доведены до совершенства, как и emacs, взять исходные файлы в кодировке ASCII (директория /src), преобразовать их в файлы двоичного объектного кода (директория /bin) и запустить Linux. Но прежде, чем всё заработает (прежде, чем вы хотя бы запустите emacs), необходимо, чтобы на машине уже стоял Linux. Даже такая сдержанная и невзыскательная операционная система как Linux требует взаимодействия тысяч двоичных файлов, сплоченно и дружно исполняющих возложенную на них работу.

Несколько товариществ взяли на себя труд и создали «дистрибутивы» Linux. Чтобы понять, зачем, мысленно возвратимся к Египту. Вы прилетаете в Египет, и в аэропорту вас поджидают представители различных турагентств; они говорят на родном вам языке и помогают преодолеть барьер между вашей и чужеземной культурами. Однако с точки зрения египтян всё выглядит несколько иначе, местные жители уверены, что туроператоры помогают не вам, а им, спасают их от столпотворения варваров, которые путаются под ногами, задают одни и те же вопросы и постоянно рвутся в мечети.

Некоторые туроператоры — коммерческие фирмы, такой является, например, Red Hat Software. Она очень успешно выпускает популярный дистрибутив Linux под названием Red Hat. Всё, что от вас требуется — запустить CD с Red Hat и подождать, пока система самостоятельно загрузится. Сначала, правда, необходимо приобрести дистрибутив, но ведь и услуги египетского турагента не бесплатны. Цена у дистрибутива смехотворная, и деньги вы потратите не в пустую — ваши затраты окупятся с лихвой.

Я пользуюсь некоммерческим, бесплатным Debian–ом (Deborah + Ian)[16]. Он получен (точнее — получился) таким же способом, как и Linux. Собралось в Сети несколько энтузиастов, распределили между собой ответственность за написание определенных частей системы, разбили Linux на пакеты и запаковали их в архивы, чтобы в дальнейшем эти пакеты можно было загрузить на машину с уже установленным и рабочим Linux–ом семейства Debian, распаковать и запустить с помощью бесплатной установочной программы. А раз Debian за прибылью не гонится, то никакой розничной продажи дистрибутивов не предусмотрено — качайте архивы из интернета и устанавливайте сами. Но так как большинство всё‑таки предпочитает CD–дистрибутивы, возникли компании, которые собрали все существующие на данный момент архивы Debian на CD–диски и стали их продавать. Свой CD я приобрел у компании Linux System Labs, заплатив за три диска с Debian во всем его объеме и красе меньше трех долларов. Хочу, однако, подчеркнуть — разработчики Linux и создатели Debian не получают с этих трех долларов ни цента. Все деньги идут Linux System Labs, и, соответсвенно, вы платите не за программное обеспечение и даже не за архивы ОС, а за их запись на CD–болванку.

Процесс загрузки Linux сбивает с толку. Вы включаете компьютер, и система начинает вести себя, словно большой допотопный «Мэйнфрейм» с загруженным на него Unix. Если до сих пор ваше знакомство с компьютерами ограничивалось исключительно ОС Windows, вы чувствуете себя довольно неуютно, происходящее на экране вас немного пугает. Не бойтесь. Загружаясь, система вначале тестирует саму себя, проверяет доступность дисков, количество памяти (в общем, проводит обычную рутинную работу), а затем ищет загрузочный диск. Обычно на компьютерах с Windows им является жесткий диск. Но можно настроить систему так, что вначале она будет искать дискету или CD–диск и пытаться загрузиться с них.

Это — Ахилесова пята ОС. Именно её использует Linux. Система находит загрузочный диск на дискете или CD, загружает с него объектный код и послушно его исполняет. Но это не код, написанный программистами Microsoft или Apple, это код Linux, поэтому происходящее на экране вызывает у вас изумление, граничащее с ужасом, это совсем не то, к чему вы привыкли. Никаких приветливых заставок типа «Welcome to MacOS» или умилительных облачков в чистом голубом небе с логотипом Windows. Вместо них Linux подсовывает вам какую‑то угрожающую шифровку — нескончаемую, невразумительная телеграмма с белыми буквами, бегущими по черному экрану. И никаких тебе — «добро пожаловать!». Боже мой, что это?!

Dec 14 15:04:15 theRev syslogd 1.3–3#17: restart.

Dec 14 15:04:15 theRev kernename = "note" klogd 1.3–3, log source

= /proc/kmsg started.

Dec 14 15:04:15 theRev kernename = "note" Loaded 3535 symbols

from /System.map.

Dec 14 15:04:15 theRev kernename = "note" Symbols match kernel version 2.0.30.

Dec 14 15:04:15 theRev kernename = "note" No module symbols loaded.

Dec 14 15:04:15 theRev kernename = "note" Intel MultiProcessor

Specification v1.4

Dec 14 15:04:15 theRev kernename = "note" Virtual Wire compatibility mode.

Dec 14 15:04:15 theRev kernename = "note" OEM ID: INTEL Product ID: 440FX

APIC at: 0xFEE00000

Dec 14 15:04:15 theRev kernename = "note" Processor #0 Pentium(tm) Pro

APIC version 17

Dec 14 15:04:15 theRev kernename = "note" Processor #1 Pentium(tm) Pro

APIC version 17

Dec 14 15:04:15 theRev kernename = "note" I/O APIC #2 Version 17 at

0xFEC00000.

Dec 14 15:04:15 theRev kernename = "note" Processors: 2

Dec 14 15:04:15 theRev kernename = "note" Console: 16 point font, 400 scans

Dec 14 15:04:15 theRev kernename = "note" Console: colour VGA+ 80x25, 1

virtual console (max 63)

Dec 14 15:04:15 theRev kernename = "note" pcibios_init : BIOS32 Service

Directory structure at 0x000fdb70

Dec 14 15:04:15 theRev kernename = "note" pcibios_init : BIOS32 Service

Directory entry at 0xfdb80

Dec 14 15:04:15 theRev kernename = "note" pcibios_init : PCI BIOS revision

2.10 entry at 0xfdba1

Dec 14 15:04:15 theRev kernename = "note" Probing PCI hardware.

Dec 14 15:04:15 theRev kernename = "note" Warning : Unknown PCI device

(10b7:9001). Please read include/linux/pci.h

Dec 14 15:04:15 theRev kernename = "note" Calibrating delay loop.. ok -

179.40 BogoMIPS

Dec 14 15:04:15 theRev kernename = "note" Memory: 64268k/66556k available

(700k kernel code, 384k reserved, 1204k data)

Dec 14 15:04:15 theRev kernename = "note" Swansea University Computer

Society NET3.035 for Linux 2.0

Dec 14 15:04:15 theRev kernename = "note" NET3: Unix domain sockets 0.13

for Linux NET3.035.

Dec 14 15:04:15 theRev kernename = "note" Swansea University Computer

Society TCP/IP for NET3.034

Dec 14 15:04:15 theRev kernename = "note" IP Protocols: ICMP, UDP, TCP



Поделиться книгой:

На главную
Назад