В начале была командная строка... (In The Beginning Was The Command Line) — страница 14 из 23


На всех Unix–машинах файловая система имеет определенную структуру. На компьютерах с легковесными ОС можно создавать директории (папки), называть их, как заблагорассудится («Хоббит» там или «Моя папка») и размещать где угодно на диске. На компьютерах с Unix высший уровень файловой системы всегда обозначается одним и тем же знаком «/» и содержит один и тот же набор директорий верхнего уровня:

/usr

/etc

/var

/bin

/proc

/boot

/home

/root

/sbin

/dev

/lib

/tmp


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


Для чего предназначена та или иная директория, и что в них содержится, я здесь объяснять не буду. Поначалу данный порядок кажется темным и запутанным, причем запутанным намеренно. До знакомства с Linux я привык создавать директории, где душа пожелает, и называть их, как взбредёт в голову. Не возбраняется подобное и в среде Unix (вы вольны здесь делать всё, что захотите), однако по мере знакомства с системой вы понимаете, что все директории оформлены наиболее разумным и удобным способом, и вы невероятно облегчите себе жизнь, если будете следовать раз и навсегда заведенному здесь порядку. Кстати, в домашней директории свобода вашей фантазии ничем не ограничена.


Постепенно, шаг за шагом открывая для себя Unix, хакер приходит к мысли, что Unix — это Unix, он такой, какой есть, и если бы он был другим, он бы не был Unix–ом. Когда процесс взаимопонимания и взаимопроникновения с системой подходит к концу, хакер настолько уверен в себе и ОС, что излучаемое им умиротворение и осознанное превосходство выводят людей из себя (не забыли комикс про Дилберта?). Windows' 95 и MacOS — программные продукты, разработанные под конкретные запросы известных нам компаний. А Unix — не продукт, Unix — собрание героических песен, повествующих о хакерах. Это наш «Эпос о Гильгамеше».


Героические поэмы, подобные Гильгамешу продолжают жить и не теряют своего очарования и притягательной силы, ибо они — плоть от плоти создавшего их народа; их учили наизусть, передавали из уст в уста, каждый раз привнося что‑то новое, что‑то свое. Неудачные придумки терялись из людской памяти, их забывали быстро и навсегда, а хорошие подхватывали другие рассказчики, и затем, до блеска отточив слог и стиль, помещали в эпос. 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