В начале была командная строка
Шрифт:
Следовательно, почти любая софтина может использоваться, чтобы создать, отредактировать, и прочитать файлы исходной программы. Объектные кодовые файлы, затем, создаются из этих исходных файлов специальной программулей, которая называется «компилятор», и обрабатываются до состояния рабочего приложения другим напильником, который называется «компоновщик». (Это священная троица программ, с которой начинается жизнь почти любого компьютера: редактор текстов, компилятор объектных кодов, и «редактор связей» или компоновщик — те блестящие молотки, которыми куча мертвого железа превращается в полезный универсальный инструмент. — Прим. перев.)
Триада редактора, компилятора, и компоновщика, взятых вместе, формирует сердцевину системы разработки программного обеспечения. Теперь есть возможность вбухать много денег в чистенькие системки разработки с красивенькими графическими интерфейсами пользователя и различными эргономическими расширениями (О! Как RAD каждый программист, которому дан в ощущениях процесс Быстрой Разработки Приложений. В некоторых случаях это могло даже быть хорошим и разумным способом тратить деньги. Но на этой стороне дороги, самым лучшим программным обеспечением являются обычно свободные вещи. Редактор, компилятор и компоновщик для хакеров то же самое, чем были пони, стремена, и «комплекты стрельбы из лука» для Монголов (ну,
В «ГНУсном мире Линуха» (это разумеется, юмор: попробуйте без вопросов перевести на великий и могучий GNU/Linux world. — Прим. перев.) есть две основных проги для редактирования: минималистский vi (известный в некоторых реализациях как elvis) и максималистский emacs (плюс два лагеря непримиримых сторонников того и другого, между которыми — настоящие религиозные войны. — Прим. перев.). Я использую emacs, который можно представить как термоядерный текстовый процессор. То, что он создавался Ричардом Столлманом (Richard Stallman); говорит достаточно. Он написан на языке Лисп, который является единственным машинным языком, который красив (весьма спорное утверждение, целиком на совести автора. Мое мнение может с ним не совпадать: я не люблю Лисп, если кто-то спросит. Мне гораздо больше по вкусу CLIPS, как объектно-ориентированное развитие идей функционального программирования — Прим перев.). Он колоссален, и всего лишь навсего редактирует обычные текстовые файлы ASCII, то есть, никаких шрифтов, никаких «жирных» гарнитур, никакого подчеркивания. Другими словами, часы инженеров, которые, в случае Microsoft Word, посвящались примочкам подобно автоматическому составлению писем и способности вставлять изображения изменяемого размера в корпоративные меморандумы, были, в случае emacs, сфокусированы на маниакальной по интенсивности работе над кажущимися обманчиво простыми проблемами редактирования текста. Если Вы — профессиональный писатель — т. е., если кто-то еще получает деньги, за беспокойство о том, как ваши слова будут отформатированы и напечатаны — emacs затмевает все другие софтины для редактирования приблизительно так же, как полуденное солнце делает звезды. Он не просто большой и более яркий; он просто заставляет всех остальных побледнеть (ну, тоже в своем роде двусмысленное замечание — бледнеть можно по разным причинам, — прим. перев.). Для страничного форматирования и печати Вы можете использовать TeX: обширный объем правил печати, написанных на Си и также свободно доступных в Сети.
Я мог бы долго трепаться о emacs и TeX, но прямо сейчас я пытаюсь поведать историю о том, как в натуре установить Linux в вашей машине. Методом хардкорной проверки на выживание было бы скачать редактор подобно emacs, и инструментальные средства ГНУ — компилятор и компоновщик — которые отшлифованы и великолепны примерно в той же степени как emacs. Обеспеченный ими, некто мог бы начать скачивать файлы исходников в кодировке ASCII (/src) и компилировать их в объектные файлы двоичного кода (/bin), которые должны работать на машине. Но типа, чтобы вообще прибыть в эту точку, — чтобы заставить emacs работать, к примеру — вы должны уже иметь Linux, установленный и работающий на вашей машине. И даже минимальная линуховая ОпСистемка требует тысячи двоичных файлов, действующих в полном согласии, размещенный и связанный вместе совершенно правильно.
Различные личности, таким образом, возложили на себя самих всю грязную работу, по созданию «поставок» Linux. Если я могу немного расширить египетскую аналогию, эти парни примерно как гиды в путешествиях, которые встречает вас в аэропорту, которые говорят на вашем языке, и помогают вам пройти через начальный культурный шок. Если вы — египтянин, конечно, вы видите это с другой стороны; туристические гиды существуют, чтобы удержать британских иноземцев от разгуливания по вашим мечетям и задавания вам одних и тех же вопросов снова и снова.
Некоторые из этих «тургидов» относятся к коммерческим организациям, как например, софтины Красной Шапки (в оригинале — Red Hat Software, название фирмы-распространителя, остальное — интернациональная игра слов, — прим. перев.), которая выпускает дистрибутивы Linux названные «Красной Шапкой», что придает этому столоверчению сравнительно коммерческий блеск. В большинстве случаев вы устанавливаете CD-ROM «Красной Шапочки» (другое фамильярное название, — прим. перев.) в ваш ПиСюк, перезагружаете его, и он выполняет остальное. Так же как гид по Египту будет ожидать некой компенсации за свои услуги, коммерческие поставки должны были оплачены. В большинстве случаев они не стоят почти ничего и в этом их немалое достоинство.
Я пользуюсь поставкой, которая называется Debian (слово является сокращением от «Deborah» и «Ian») и является некоммерческой. Она была организована (или, возможно, я должен сказать «она организовала себя») примерно той же сапой, как Linux в общем смысле, то есть, она опирается на добровольцев, которые сотрудничают по Сети, каждый ответствен за поддержку своего компонента системы. Эти люди разбили Linux на множество пакетов, которые являются сжатыми файлами и могут загружаться уже функционирующей линуховой системой на основе поставки Debian, затем, открываются и распаковываются, используя свободное приложение установки. Конечно, как таковая, Debian не имеет коммерческой мощи — ни распространительного механизма. Вы можете загрузить все дебиановские пакеты по Сети, но большинство людей захочет получить их на CD-ROM. Различные другие компании возложили на себя всю возню по закачиванию дебиановских пакетов на CD-ROMы и последующей их продаже. Я купил свое в «Лаборатории Линуховых Систем». Стоимость для трехдисковой установки, содержащей Debian во всей полноте — менее чем три доллара. Но (и это — важное различие) ни единого пенни из этих трех долларов не достается никому из кодировщиков, которые создавали Linux, ни упаковщикам из Debian. Они все остаются в Лаборатории Линоховых Систем и платятся не за программное обеспечение, или пакеты, но составляют стоимость «выпекания» дисков CD-ROM.
Каждая из линуховых поставок включает некоторый более или менее умный «хак» для обхода нормального процесса загрузки и чтоб заставить ваш компьютер, когда он включится, организовать себя
Linux пользуется этой фишкой в своих целях. Ваш компьютер замечает загрузочный диск в приводе для флоппиков или СиДюков, загружает некоторый объектный код с этого диска, и слепо начинает исполнять его. Но это не «мелкомягкий» или «яблочный» код, это — линуховый код, и отсюда ваш компьютер начинает вести себя намного иначе, по сравнению с тем, к чему вы привыкли. Загадочные сообщения начинают перемещаться по экрану. Если вы загрузили коммерческую OS, вы отсюда видите мультяху «Добро пожаловать в MacOS» или экран, заполненный облаками в синем небе, и логотип «Windows». Но под Linux вы получаете длинную телеграмму, напечатанную абсолютно белыми буквами на черном экране. Здесь нет сообщения «добро пожаловать!». Большинство этих телеграмм полу-непостижимы, как угрожающие граффити на стене. (Не курить! Пристегните ремни… — Прим. линухоида. Три… Два… Один…)
Dec 14 15:04:15 theRev syslogd 1.3–3#17: restart. Dec 14 15:04:15 theRev kernel: klogd 1.3–3, log source = /proc/kmsg started. Dec 14 15:04:15 theRev kernel: Loaded 3535 symbols from /System.map. Dec 14 15:04:15 theRev kernel: Symbols match kernel version 2.0.30. Dec 14 15:04:15 theRev kernel: No module symbols loaded. Dec 14 15:04:15 theRev kernel: Intel MultiProcessor Specification v1.4 Dec 14 15:04:15 theRev kernel: Virtual Wire compatibility mode. Dec 14 15:04:15 theRev kernel: OEM ID: INTEL Product ID: 440FX APIC at: 0xFEE00000 Dec 14 15:04:15 theRev kernel: Processor #0 Pentium(tm) Pro APIC version 17 Dec 14 15:04:15 theRev kernel: Processor #1 Pentium(tm) Pro APIC version 17 Dec 14 15:04:15 theRev kernel: I/O APIC #2 Version 17 at 0xFEC00000. Dec 14 15:04:15 theRev kernel: Processors: 2 Dec 14 15:04:15 theRev kernel: Console: 16 point font, 400 scans Dec 14 15:04:15 theRev kernel: Console: colour VGA+ 80x25, 1 virtual console (max 63) Dec 14 15:04:15 theRev kernel: pcibios_init: BIOS32 Service Directory structure at 0x000fdb70 Dec 14 15:04:15 theRev kernel: pcibios_init: BIOS32 Service Directory entry at 0xfdb80 Dec 14 15:04:15 theRev kernel: pcibios_init: PCI BIOS revision 2.10 entry at 0xfdba1 Dec 14 15:04:15 theRev kernel: Probing PCI hardware. Dec 14 15:04:15 theRev kernel: Warning: Unknown PCI device (10b7:9001). Please read include/linux/pci.h Dec 14 15:04:15 theRev kernel: Calibrating delay loop.. ok — 179.40 BogoMIPS Dec 14 15:04:15 theRev kernel: Memory: 64268k/66556k available (700k kernel code, 384k reserved, 1204k data) Dec 14 15:04:15 theRev kernel: Swansea University Computer Society NET3.035 for Linux 2.0 Dec 14 15:04:15 theRev kernel: NET3: Unix domain sockets 0.13 for Linux NET3.035. Dec 14 15:04:15 theRev kernel: Swansea University Computer Society TCP/IP for NET3.034 Dec 14 15:04:15 theRev kernel: IP Protocols: ICMP, UDP, TCP Dec 14 15:04:15 theRev kernel: Checking 386/387 coupling… Ok, fpu using exception 16 error reporting. Dec 14 15:04:15 theRev kernel: Checking 'hlt' instruction… Ok. Dec 14 15:04:15 theRev kernel: Linux version 2.0.30 (root@theRev) (gcc version 2.7.2.1) #15 Fri Mar 27 16:37:24 PST 1998 Dec 14 15:04:15 theRev kernel: Booting processor 1 stack 00002000: Calibrating delay loop.. ok — 179.40 BogoMIPS Dec 14 15:04:15 theRev kernel: Total of 2 processors activated (358.81 BogoMIPS). Dec 14 15:04:15 theRev kernel: Serial driver version 4.13 with no serial options enabled Dec 14 15:04:15 theRev kernel: tty00 at 0x03f8 (irq = 4) is a 16550A Dec 14 15:04:15 theRev kernel: tty01 at 0x02f8 (irq = 3) is a 16550A Dec 14 15:04:15 theRev kernel: lp1 at 0x0378, (polling) Dec 14 15:04:15 theRev kernel: PS/2 auxiliary pointing device detected — driver installed. Dec 14 15:04:15 theRev kernel: Real Time Clock Driver v1.07 Dec 14 15:04:15 theRev kernel: loop: registered device at major 7 Dec 14 15:04:15 theRev kernel: ide: i82371 PIIX (Triton) on PCI bus 0 function 57 Dec 14 15:04:15 theRev kernel: ide0: BM-DMA at 0xffa0-0xffa7 Dec 14 15:04:15 theRev kernel: ide1: BM-DMA at 0xffa8-0xffaf Dec 14 15:04:15 theRev kernel: hda: Conner Peripherals 1275MB — CFS1275A, 1219MB w/64kB Cache, LBA, CHS=619/64/63 Dec 14 15:04:15 theRev kernel: hdb: Maxtor 84320A5, 4119MB w/256kB Cache, LBA, CHS=8928/15/63, DMA Dec 14 15:04:15 theRev kernel: hdc:, ATAPI CDROM drive Dec 15 11:58:06 theRev kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 Dec 15 11:58:06 theRev kernel: ide1 at 0x170-0x177,0x376 on irq 15 Dec 15 11:58:06 theRev kernel: Floppy drive(s): fd0 is 1.44M Dec 15 11:58:06 theRev kernel: Started kswapd v 1.4.2.2 Dec 15 11:58:06 theRev kernel: FDC 0 is a National Semiconductor PC87306 Dec 15 11:58:06 theRev kernel: md driver 0.35 MAX_MD_DEV=4, MAX_REAL=8 Dec 15 11:58:06 theRev kernel: PPP: version 2.2.0 (dynamic channel allocation) Dec 15 11:58:06 theRev kernel: TCP compression code copyright 1989 Regents of the University of California Dec 15 11:58:06 theRev kernel: PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. Dec 15 11:58:06 theRev kernel: PPP line discipline registered. Dec 15 11:58:06 theRev kernel: SLIP: version 0.8.4-NET3.019-NEWTTY (dynamic channels, max=256). Dec 15 11:58:06 theRev kernel: eth0: 3Com 3c900 Boomerang 10Mbps/Combo at 0xef00, 00:60:08:a4:3c: db, IRQ 10 Dec 15 11:58:06 theRev kernel: 8K word-wide RAM 3:5 Rx: Tx split, 10base2 interface. Dec 15 11:58:06 theRev kernel: Enabling bus-master transmits and whole-frame receives. Dec 15 11:58:06 theRev kernel: 3c59x.c:v0.49 1/2/98 Donald BeckerDec 15 11:58:06 theRev kernel: Partition check: Dec 15 11:58:06 theRev kernel: hda: hda1 hda2 hda3 Dec 15 11:58:06 theRev kernel: hdb: hdb1 hdb2 Dec 15 11:58:06 theRev kernel: VFS: Mounted root (ext2 filesystem) readonly. Dec 15 11:58:06 theRev kernel: Adding Swap: 16124k swap-space (priority -1) Dec 15 11:58:06 theRev kernel: EXT2-fs warning: maximal mount count reached, running e2fsck is recommended Dec 15 11:58:06 theRev kernel: hdc: media changed Dec 15 11:58:06 theRev kernel: ISO9660 Extensions: RRIP_1991A Dec 15 11:58:07 theRev syslogd 1.3–3#17: restart. Dec 15 11:58:09 theRev diald[87]: Unable to open options file /etc/diald/diald.options: No such file or directory Dec 15 11:58:09 theRev diald[87]: No device specified. You must have at least one device! Dec 15 11:58:09 theRev diald[87]: You must define a connector script (option 'connect'). Dec 15 11:58:09 theRev diald[87]: You must define the remote ip address. Dec 15 11:58:09 theRev diald[87]: You must define the local ip address. Dec 15 11:58:09 theRev diald[87]: Terminating due to damaged reconfigure.