Чтение онлайн

ЖАНРЫ

В начале была командная строка
Шрифт:

Некоторые из этих «тургидов» относятся к коммерческим организациям, как например, софтины Красной Шапки (в оригинале — Red Hat Software, название фирмы-распространителя, остальное — интернациональная игра слов, — прим. перев.), которая выпускает дистрибутивы Linux названные «Красной Шапкой», что придает этому столоверчению сравнительно коммерческий блеск. В большинстве случаев вы устанавливаете CD-ROM «Красной Шапочки» (другое фамильярное название, — прим. перев.) в ваш ПиСюк, перезагружаете его, и он выполняет остальное. Так же как гид по Египту будет ожидать некой компенсации за свои услуги, коммерческие поставки должны были оплачены. В большинстве случаев они не стоят почти ничего и в этом их немалое достоинство.

Я пользуюсь поставкой, которая называется Debian (слово является сокращением от «Deborah» и «Ian») и является некоммерческой. Она была организована (или, возможно, я должен сказать «она организовала себя») примерно той же сапой, как Linux в общем смысле, то есть, она опирается на добровольцев, которые сотрудничают по Сети, каждый ответствен за поддержку своего компонента системы. Эти люди разбили Linux на множество пакетов, которые являются сжатыми файлами и могут загружаться уже функционирующей линуховой системой на основе поставки Debian, затем, открываются и распаковываются, используя свободное приложение установки. Конечно, как

таковая, Debian не имеет коммерческой мощи — ни распространительного механизма. Вы можете загрузить все дебиановские пакеты по Сети, но большинство людей захочет получить их на CD-ROM. Различные другие компании возложили на себя всю возню по закачиванию дебиановских пакетов на CD-ROMы и последующей их продаже. Я купил свое в «Лаборатории Линуховых Систем». Стоимость для трехдисковой установки, содержащей Debian во всей полноте — менее чем три доллара. Но (и это — важное различие) ни единого пенни из этих трех долларов не достается никому из кодировщиков, которые создавали Linux, ни упаковщикам из Debian. Они все остаются в Лаборатории Линоховых Систем и платятся не за программное обеспечение, или пакеты, но составляют стоимость «выпекания» дисков CD-ROM.

Каждая из линуховых поставок включает некоторый более или менее умный «хак» для обхода нормального процесса загрузки и чтоб заставить ваш компьютер, когда он включится, организовать себя не как ущербный ПиСюк, выполняющий «Окна», но как реальный «хост» под управлением Unix. Это немного тревожит поначалу, когда вы видите это впервые, но полностью безопасно. Когда PC загружается, он проходит небольшую программу самотестирования, проверяя доступное дисковое пространство и запас памяти, а затем осматривается в поисках диска, с которого можно загрузится. В любом нормальном виндовом компьютере, этим диском будет жесткий диск. Но если у вас ваша система настроена правильно, она сначала проверит дисководы для флоппиков или 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.

Единственные

фрагменты этого, которые удобочитаемы, для нормальных людей, — сообщения об ошибках и предупреждения. И все что здесь заслуживает внимания, это то, что Linux не останавливает, и не падает, когда он встречает ошибку; он выдает вразумительную претензию, прекращает попытки запустить какой-то упрямый или поврежденный процесс, и катится дальше. Это было решительно не верно для ранних версий «яблочных» и «мелкомягких» ОСей, по той простой причине, что ОСь, которая неспособна ходить и жевать жвачку одновременно, возможно, не сможет восстановиться от ошибок. Поиск и обработка ошибок требует отдельного процесса, работающего параллельно с тем, который «ошибся». Типа супер-эго, если угодно, что присматривает за всеми остальными процессами, и выскакивает, когда какой-то из них теряется. Теперь, когда MacOS и «Винда» могут делать более чем одну вещь одновременно, они стали значительно лучше обрабатывать ошибки, чем обычно, но они даже не приблизились к Linux или другим Юнихам в этом отношении; и их большая сложность сделала их уязвимыми для новых типов ошибок.

Падучесть, искупление, погашение, доверие и другие заумные технические понятия

Линух не заточен под какие-то централизованные политики, диктующие, как писать сообщения об ошибке и документацию, так что каждый программист пишет свои собственные. Обычно они на английском, даже если учесть, что до фига и больше линуховых программистов-европейцев. Часто они забавны (сообщения, а не программисты — прим. перев.). Но всегда честны. Если какая-то бяка случилась, если программуля просто еще недоделана, или если пользователь что-то воткнул не туда, об этом будет заявлено в лоб. Интерфейс командной строки облегчает программулям надоедание нам небольшими комментариями, предупреждениями, и сообщениями там и тут. Даже если приложение плющит как подбитую субмарину, оно обычно может все еще перебиваться небольшими сообщениями типа «S. O.S.». Иногда, когда вы кончаете работать с программой и закрываете его на фиг, вы обнаруживаете, что оно оставило серию некритичных замечаний и низкоуровневых сообщений об ошибах через окно терминала из которого вы его запустили. Как если бы программное обеспечение болтало с вами о том, как оно было, пока вы с ним работали.

Документация для Linux поступает в форме «человеческих страниц» (man pages — сокращение от manual («Поручик молчать!» — прим. перев. — не от «рукосуйство», а от «руководство»). Вы можете иметь доступ к ним или через ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ (команда xman) или из командной строки (команда man). Вот образец со страницы руководства для программы вызывающей rsh: «Стоповые сигналы стопят только локальный процесс rsh; это возможно неправильно, но к настоящему времени слишком сложно, чтобы пофиксить, по причинам слишком заумным, чтобы объяснять здесь.»

«Человечьи страницы» содержат много таких материалов, которые читаются подобно кратким мантрам пилотов, борющихся с управлением поврежденными самолетами. Общее чувство, — типа тысяч монументальных, но «темных» усилий, увиденных во вспышке стробоскопа. Каждый программист имеет дело с его собственными костылями и тараканами; он — слишком занят фиксированием их, и улучшением своих программулей, чтобы объяснять вещи подробно или удовлетворить сложные претензии.

На практике вы почти никогда не встретите серьезного «таракана» при прогоне Linux (в смысле, фиксить Линуха кувалдой о «трех пальцах», в отличие от Виндов, приходится очень редко — прим. перев). А если встретили — почти всегда это происходит с коммерческим софтом (различные поставщики продают программное обеспечение, которое работает под Linux). ОпСистема и ее основные программные утилиты слишком важны, чтобы в них водились серьезные жуки. Я работал под Линухом каждый день с позднего 1995-го и видал, как многие «аппликационные» программы рушились напрочь в пламени, но я никогда не видeл аварию самой ОпСистемы. Никогда. Ни разу. Довольно много линуховых систем, которые работают непрерывно и в жестких условиях в течение месяцев или лет, без необходимости в перезагрузке.

Коммерческие ОСи должны принять ту же официальную позицию по отношению к ошибкам, как коммунистические страны — к бедности. Исходя из доктрин, не возможно допустить, что бедность была серьезной проблемой в коммунистических странах, поскольку целью коммунизма являлась ликвидация бедности. Аналогично, коммерческие «осевые» компании, типа «Яблока» и «Мелкософта», не могут пройти мимо допущения, что их программное обеспечение «утараканено» и что оно разрушаеся все время, сколько-нибудь изящнее, чем Disney, который может выпустить пресс-релиз о том, что Микки Маус — просто актер в костюме.

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

Поделиться с друзьями: