Знакомство с Linux. Часть 12. Терминальный выход в Интернет

Итак, вообразим, что случилось страшное. Свеженький дистрибутив Red Hat Linux 9 установлен (точнее, система модернизирована с версии 7.3), аварийная дискета создана, перезагрузка прошла успешно, но всё-таки…

Вот на чём мы остановились в прошлый раз: на том, что графическая оболочка после модернизации отказалась запускаться. Однако инсталляция-то шла в графическом режиме, как мы помним, к тому же не в самом элементарном! В чём же дело?

А дело снова в том, что была избрана опция апгрейда существующей системы, а не честной установки (в идеале, с форматированием служебных и корневого разделов). При апгрейде умная программа инсталляции старается оставить в неприкосновенности максимум конфигурационных файлов, имеющиеся в системе. А значит, модернизации не был подвергнут и тот файл, в котором хранятся параметры видеокарты. Кстати, совершенно не факт, что на вашей машине, дорогой читатель, с графическим режимом возникнут те же затруднения. Для своей noname-GeForce 440 MX я скачал (пока ещё сидел под версией 7.3) с сайта nvidia разработанный самой компанией драйвер для Linux, предназначавшийся - разумеется - для предыдущей версии ядра ОС. В процессе же инсталляции система применяла универсальный драйвер, параметры активации которого определялись динамически. В конфигурационном файле на жёстком диске, оставшимся нетронутым, сохранилась ссылка на прежний nvidia-драйвер - который, разумеется, отказался работать с обновлённым ядром. Вот такие пироги.

Методически наиболее продуктивным действием в этой ситуации я счёл не разбираться с параметрами настройки вручную, а заглянуть опять-таки на сайт nvidia и взять оттуда свежую версию драйвера. Наверняка она мне подойдёт лучше, чем стандартная из комплекта поставки дистрибутива. "То есть как это - заглянуть на сайт? - спросит кто-то, - из командной строки, в текстовом режиме?.." Ну да. А кто нам, собственно, помешает?

Итак, первая задача - настроить модем. То есть допустим, что соединение у вас именно модемное - как у меня. Настройка сетевой карты под Linux - работа крайне увлекательная (если забыть об автоматическом получении адреса с сервера при старте системы и говорить о ручной настройке). Но в случае домашнего компьютера сталкиваться с ней приходится нечасто. Разве что тем, кто сидит на выделенной линии… Поговорим о них как-нибудь позже.

Так вот: есть несколько утилит, осуществляющих взаимодействие с модемом в Linux из командной строки. Да и графические "звонилки" в системе, строго говоря, представляют собой по большей части просто удобные интерфейсы к этим "корневым" утилитам. И больше всех мне по душе wvdial (подробнее с которой можно познакомиться при помощи команды man wvdial, как водится).

Одна из приятных особенностей wvdial - наличие интеллектуальной системы первичной инициализации модема. Достаточно исполнить в командной строке команду wvdialconf, и базовый файл /etc/wvdial.conf будет создан. Давайте теперь его подредактируем в vi.


Файл /etc/wvdial.conf разбит на секции, в качестве разделителей которых выступают сами названия секций, предварённые словом Dialer, в квадратных скобках. Если исполнять команду без параметров, то в дело пойдут установки, перечисленные в секции Defaults. В противном случае дополнительно будут исполнены указанные в добавочных секциях команды.

Мне повезло с коммутатором и провайдером: на линии прекрасно работает тональный набор. Именно он по умолчанию реализован в USR Sportster 56K, установленном на моём домашнем ПК. Если бы мне потребовалось запустить wvdial с набором номера в импульсном режиме, я сделал бы это командой

wvdial pulse

(Разумеется, если бы предварительно я не подредактировал /etc/wvdial.conf именно так, как указано в примере выше, простое употребление слова pulse после имени команды ни к чему бы не привело.)

Пока нет необходимости менять настройки модема, записанные в файл утилитой по результатам тестирования. Добавим лишь необходимые параметры - номер телефона, имя пользователя и пароль. (Да, телефон у меня в примере указан трёхзначный: мой телефонный оператор - не МГТС - предоставляет и провайдерские услуги; для своего внутреннего пула он завёл именно такой номер). Теперь можно звонить. Просто набираем wvdial в командной строке, жмём на Enter и наслаждаемся результатом.


Давайте пока прервём сессию связи с провайдером, убедившись сперва, что PPP-обмен начался (дождавшись, пока на экране появится соответствующая строчка). Для того, чтобы "положить трубку", достаточно нажать комбинацию клавиш Ctrl и С. И пока поговорим о другом.

А именно - о пароле. Он в файле /etc/wvdial.conf хранится в открытом текстовом виде. Что означает: доступом к настройкам wvdial должен обладать один только root. Иными словами, не следует допускать, чтобы права пользования файлом оказывались бы мягче, чем 400:


Но это же автоматически должно означать, что никто, кроме суперпользователя, не сумеет дозвониться до провайдера и открыть доступ к Интернету. Что же получается - все рекомендации по безопасности побоку, и давайте входить в систему как root?

Во-первых, делать это в любом случае не обязательно. Запустить wvdial и инициировать выход в Сеть можно из отдельного окна терминала, в котором управление локально передано суперпользователю командой su. А во-вторых, можно обойтись и без команды su вообще. Обратившись к команде sudo.

Su, как нам известно, переводит терминальную сессию в режим "от имени другого пользователя". А sudo позволяет выполнять отдельные команды - также одному авторизованному пользователю системы от имени другого. Для манипулирования настройками sudo предусмотрена утилита visudo, которая позволяет редактировать конфигурационный файл программы. Запускать visudo имеет право только root, - так давайте же сделаем это.

На данный момент нас будет интересовать самая последняя строка в файле. Запишем в неё информацию, необходимую для того, чтобы обычному рядовому пользователю (dummy, в нашем примере) позволено было запускать команду wvdial. Синтаксис файла sudo можно подробно изучить по странице руководства man 5 wvdial.conf, а я ограничусь тем, что приведу подходящую для нашего случая строчку.


В принципе, всё достаточно прозрачно. Пользователю dummy с локального компьютера разрешён запуск программы /usr/bin/wvdial от имени суперпользователя без ввода пароля. Пароль имеется в виду тут, конечно, не root’овский, иначе вся затея потеряла бы смысл. Просто не факт ведь, что пользователь dummy сидит у монитора целый день. Может, на его рабочее место прокрадётся однажды другой пользователь, и из dummy-сессии коварным образом запустит программу выхода в Интернет? Вот для предотвращения подобной ситуации пользователю dummy пришлось бы, не укажи мы опции NOPASSWD, по умолчанию вводить свой собственный пароль при каждой попытке запуска wvdial.

Обратите внимание ещё и на то, что в файле указывается не просто имя программы, исполнение которой передоверяется другому, но полный путь к ней. Это - гарантия на тот случай, если вероломный злоумышленник, которому оказано высокое доверие, разместит у себя в домашней директории некий вредоносный код, назовёт его wvdial и попытается исполнить при помощи команды sudo - c правами root. Последствия могут быть самыми печальными, как нетрудно догадаться.

Итак, дело в шляпе: завершаем сессию root, снова заходим в систему - уже как dummy, - исполняем команду sudo wvdial… На экране после этого, разумеется, не появляется снова приглашение командной строки. Там повисает информация о том, что РРР-соединение инициировано, скорость обмена - такая-то. Всё.

Работе это, впрочем, не помешает. Можно запустить wvdial в фоновом режиме:

wvdial &

Знак амперсанда после имени команды как раз и указывает на то, что она переводится в режим фона. Такие "закулисные" команды именуются "заданиями" (jobs), и в каждый момент времени можно увидеть, что за задания сейчас исполняются - просто набрав jobs в командной строке. Чтобы перевести задание из фонового режима в активный, используется директива fg <номер_задания>, где номер задания - тот самый, что указывается в перечне jobs. Название fg происходит от foreground - "передний план".


Другой способ заполучить в свои руки пригодную к работе командную строку после старта wvdial - просто открыть дополнительное текстовое терминальное окно (скажем, одновременно нажав клавиши Alt и F2) и опять-таки произвести вход в систему пользователем dummy.

И вот уже там, в командной строке dummy, давайте наберём наконец волшебное слово elinks - название и одновременно команду на запуск одного их текстовых браузеров, входящих в комплект поставки Red Hat Linux 9. Что, не представляете себе, как может выглядеть текстовый браузер? Сейчас представите...


Однако, подождите: прежде чем нажимать на "Ввод", давайте сразу укажем, куда именно заглянуть при помощи запускаемого браузера. Просто дополним строку его вызова веб-адресом nvidia в самом что ни на есть упрощенном варианте. Вот увидите - сработает:

elinks nvidia.com

Вот оно, чудо текстовой мысли. В нижней строчке псевдографического окна отображается скорость закачки. Нажатием на клавишу Escape в любой момент можно вызвать меню - очень, кстати, внятно и привычным образом организованное. Там, где на оригинальном сайте предусмотрена загрузка изображений (в тексте веб-страницы стоит тег IMG), elinks показывает условное обозначение:[IMG]. Переход по имеющимся на странице ссылкам (и её пролистывание) осуществляется при помощи клавиатурных стрелочек вверх и вниз. Будьте внимательны, пожалуйста: стрелки вправо и влево отвечают за переходы по истории текущего сеанса сёрфинга, то есть между уже загруженными страницами.

Веб-сайт nvidia, к счастью, не содержит сверхновомодных элементов, и потому доступен для текстовой навигации. Практически сразу, на самой первой странице можно отыскать ссылку Drivers, и, пройдя по ней, выбрать раздел Linux and FreeBSD drivers.


Кстати, выбираемая нами ссылка отображается в нижней, информационной строке окна браузера. Отыщем в коллекции драйверов для свободно распространяемого ПО ссылочку на Linux-драйвера для архитектуры IA32.


На следующей странице нам будет предложено ознакомиться с лицензионным соглашением, а также загрузить драйвера для различных версий ядра операционной системы. Red Hat Linux 9 распространяется с ядром 2.4.20, так что выбрать надо будет именно такой вариант. Но прежде изучим инструкцию по установке этого драйвера - благо представлена она в виде текстового файла, и потому загрузится быстро.


Кстати, никто не помешает сохранить инструкцию для позднейшего вдумчивого изучения. Нажав на Escape, вызовем меню браузера и выберем там соответствующую опцию.


Затем вернёмся на ту страницу, с которой возможна загрузка драйверов, наведёмся при помощи стрелки вниз на строку Download - NVIDIA-Linux-x86-1.0-4363.run. Нажмём на заветный "Ввод".


Разумеется, файл следует сохранить, поэтому выберем опцию Save. Дело пошло: шесть с лишним Мбайт информации будут закачиваться на ваш компьютер... скажем так... достаточно долго, чтобы успеть за это время сделать какие-нибудь важные домашние дела. Или, скажем, открыть ещё одну текстовую консоль и в ней почитать инструкцию от nvidia по инсталляции её замечательного файла.


Инструкция эта элементарна: нужно дождаться, пока закачается файл, и запустить его на исполнение в новой командной оболочке - просто набрав sh NVIDIA-Linux-x86-1.0-4363.run и нажав на "Ввод". У меня лично, кстати, при первой закачке случился странный сбой. Данный файл представляет собой не двоичный, а именно командный (текстовый) набор инструкций, который по принятым в системе правилам должен начинаться со строки

#! /bin/bash

Строка эта служит указателем на тип командного интерпретатора, который данный скрипт должен претворять в жизнь. Так вот, в процессе закачки драйвера я как раз-таки открыл новую терминальную сессию и исполнил команду

head NVIDIA-Linux-x86-1.0-4363.run

(с ней мы уже знакомы - это демонстрация первых нескольких строчек файла). Оказалось, что начинается файл совсем не с начала.


Стало быть, произошла какая-то ошибка. Я прервал загрузку, запустил её снова, опять проконтролировал заголовок файла - на сей раз он оказался нормальным. И по прошествии некоторого времени процесс загрузки был завершён, закачанный скрипт исполнен, и на экране появилось сообщение о том, что всё в порядке; следует только подправить конфигурационный файл /etc/X11/XF86Config.


Приятно, что система установки драйвера от nvidia следует в общем русле Linux-идеологии в отношении файлов конфигурации, и даёт пользователю возможность править их лично - хотя и предоставляет при этом самые подробные инструкции по тому, как именно это делать. Многие администраторы системы чувствуют себя увереннее, если точно знают, что никакая лихая утилита не изменит в одночасье с любовью отлаженный ими файл конфигурации той или иной программы - тем более, такой важной, как система X Window. Но разумеется, прежде чем браться за правку важного системного файла, скопируйте его в исходном состоянии в специально отведённую папочку - так всё же надёжней будет.

После того, как все процедуры с апгрейдом драйвера закончены, можно приступить к настройке собственно видеорежима. В Red Hat 7.3 и более ранних версиях мы обратились бы к утилите Xconfigurator. Но в Red Hat 9 к нашим услугам программа помощней. Перейдите в режим root и запустите в командной строке redhat-config-xfree86.


Вот оно, счастье, глядит из монитора. Настройка разрешения и глубины цвета потребует отныне не больше труда, чем аналогичная операция в Windows: утилита redhat-config-xfree86 доступна теперь в любой момент.


А на второй закладке этого окошка можно пронаблюдать и настроить дополнительные параметры видеосистемы. К сожалению, полноценная поддержка 3D-ускорения для Linux фирмой nvidia пока не реализована, но как утверждается, это - дело ближайшего будущего. А вот счастливые обладатели ATI Radeon могут наслаждаться и полноценным 3D - запуская из-под Linux, скажем, Return to Castle Wolfenstein... Впрочем, о работе с подобными приложениями мы поговорим как-нибудь уже совсем отдельно.

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

startx

от имени любого пользователя. Попробуйте! И насладитесь пока просто общим видом открывшегося перед вами великолепия. А как всем этим богатством распорядиться - мы с вами посмотрим в следующий раз.