Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Установка и первоначальная настройка Fedora Core 3 на персональном компьютере

Виктор Костромин, ноябрь - декабрь 2004

8 ноября 2004 г. вышла финальная версия дистрибутива Fedora Core 3 (Heidelberg). Я попытался ее поставить, что в общем даже почти получилось. Но обустроить свою систему до конца у меня так и не вышло, так что после выхода ASP Linux v10 я отказался от Fedor-ы. В настоящих заметках я немного расскажу о том, как я ставил Fedora Core 3. Прошу не рассматривать приведенный ниже текст как руководство по настройке, это просто мои личные заметки, тем более, что они остались незаконченными.

Оглавление

Предварительные замечания

Хочу сразу отметить, что речь идет об установке именно на персональный (домашний) компьютер, который используется в основном для написания заметок, подобных этой, выхода в Интернет и локального тестирования изменений, вносимых в контент моего сайта http://rus-linux.net. Эпизодически я использую компьютер для просмотра фильмов с DVD-дисков или прослушивания музыки, но это бывает редко. Ну и еще этот же компьютер служит экспериментальным полигоном для освоения системы GNU/Linux, а поэтому мне нужны средства компиляции программного обеспечения.

Для полноты картины приведу краткую характеристику компьютера, на который проводилась установка:

    Процессор - Intel Celeron 1200 MHz
    ОП - 456 MB
    Жесткий диск - Seagate ST340810A, 40 GB
    Монитор - ViewSonic G771
    Видеокарта - nVidia RIVA TNT2
    Привод DVD-RW - NEC ND-3500AG
    Сетевая плата - Hewlett-Packard J2585B HP 10/100VG LAN Adapter

К моменту начала инсталляции получилось так, что ранее установленная на компьютере система на основе дистрибутива ASPLinux 9.2 у меня была полностью выведена из строя в результате экспериментов с утилитами разбиения диска, так что сохранение предыдущей версии меня не заботило. Разбиение диска на разделы осталось от предыдущей версии и имело следующий вид:

Раздел      Объем    Файловая система   Назначение в "предыдущей жизни"
/dev/hda1    517 МБ                     swap-раздел
/dev/hda2   1950 МБ     FAT32           была установлена Windows 2000
/dev/hda3    102 МБ     ext2            /boot
/dev/hda4  34710 МБ                     расширенный раздел
/dev/hda5   1460 МБ     ext3            /
/dev/hda6   1950 МБ     ext3            /usr
/dev/hda7  11720 МБ     ext3            /home
/dev/hda8  19570 МБ     FAT32           архивы файлов для Windows 2000

Windows-разделы мне хотелось сохранить, особенно раздел /dev/hda8, где лежали архивы, а в остальном я ставил систему как бы на "чистый" диск.

Инсталляция

Сам дистрибутив Fedora Core 3 вы можете скачать с сайта fedora.redhat.com или одного из многочисленных зеркал. Скачать необходимо 5 iso-образов CD-дисков (FC3-i386-disc1.iso, FC3-i386-disc2.iso, FC3-i386-disc3.iso, FC3-i386-disc4.iso и FC3-i386-rescuecd.iso). Если вы не имеете доступа к широкополосному каналу в Интернет, то проще заказать дистрибутив Fedora Core 3 в Интернет-магазине Линукс-Центра.

Я скачал еще последний Relise Candidat (RC3) этого дистрибутива и ставил систему с него, но полагаю, что принципиальных различий в этих двух вариантах не имеется, поскольку RC3 отделяет от финальной версии менее месяца.

Начал я с того, что заново установил Windows 2000 в раздел /dev/hda2, причем в процессе инсталляции преобразовал файловую систему на этом разделе в NTFS. Дело в том, что как утверждается во множестве источников, Windows при инсталляции перезаписывает главную загрузочную запись, а поэтому, если на компьютере предполагается наличие двух ОС, установку надо начинать с Windows. Однако, к моему удивлению, после установки Windows и перезагрузки компьютера появилось стартовое меню загрузчика GRUB с двумя пунктами: ASP Linux и Windows 2000, как это и было в старой системе. То есть похоже, что Windows 2000 при инсталляции MBR не изменял. Поскольку при выборе второго пункта этого меню Windows 2000 успешно загрузилась, я перешел к инсталляции Fedora Core.

Первая попытка инсталляции оказалась неудачной из-за того, что не хватило места в разделе /usr. Для того набора пакетов, который я выбрал, требовалось более 2,5 гигабайт в этом разделе, а он имел размер около 2 ГБ. Между прочим, обратите внимание - в сумме корневой раздел и раздел /usr имели объем около 3,5 ГБ, однако программа инсталляции все равно заявила о недостатке места.

Поэтому я решил переразбить диск, причем без потери данных в разделах /dev/hda2 и /dev/hda8 (чтобы сохранить имеющуюся установку Windows 2000 и архив Windows-файлов), для чего я решил воспользоваться утилитой QTParted, имевшейся на самозагружаемом CD-диске с дистрибутивом Knoppix. Я удалил с помощью QTParted разделы /dev/hda6 и /dev/hda7 и создал разделы с теми же именами, но объемом, соответственно, 3,7 ГБ и 10 ГБ. В результате получилась следующая структура разделов.

Раздел      Объем    Файловая система   Назначение в "предыдущей жизни"
/dev/hda1    517 МБ                     swap-раздел
/dev/hda2   1950 МБ     NTFS            Windows 2000
/dev/hda3    102 МБ     ext2            /boot
/dev/hda4  34710 МБ                     расширенный раздел
/dev/hda5   1460 МБ     ext3            /
/dev/hda6   3690 МБ     ext3            /usr
/dev/hda7   9980 МБ     ext3            /home
/dev/hda8  19570 МБ     FAT32           архивы файлов для Windows 2000

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

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

В качестве языка установки я выбрал, естественно, русский, и раскладку клавиатуры "Russian". Когда дело дошло до выбора типа установки, выбрал вариант "Выборочная".

От автоматического разбиения диска отказался, выбрав ручное разбиение программой Disk Druid. Переразбивать диск я, конечно, не стал, ограничившись форматированием Linux-разделов и указанием точек монтирования. Правда, NTFS-раздел утилита монтировать отказалась, выдав сообщение "Не применимо".

В качестве загрузчика выбрал GRUB.

Далее появилось окно настройки сетевых устройств. Здесь я отказался от использования DHCP, для чего щелкнул по кнопке "Изменить". Открылось диалоговое окно "Правка интерфейса eth0", где я задал статический IP-адрес (192.168.36.1) и маску подсети (255.255.255.0). После закрытия диалога указал имя компьютера (у меня это будет "trend.kos.home", вы можете выбрать свое имя), а также IP-адрес шлюза и сервера DNS (я оба адреса задал равными 192.168.36.1).

На следующем экране я установил флажок "Включить брандмауэр", а от использования SELinux отказался, потому что насколько мне известно, SELinux служит для повышения безопасности и необходим на серверах, а для домашнего компьютера его применение не является необходимым. Впрочем, тут я могу и ошибаться, но тем не менее я эту опцию отключил.

На следующем экране я выбрал в качестве основного языка системы английский (USA), а русский сделал вторым языком. Это для того, чтобы не было проблем с вводом команд при первом запуске системы, на которые я когда-то наталкивался при установке Red Hat 9.

Выбор пакетов - самая длительная (у меня) часть инсталляционного процесса. Я не диктую вам своих привычек и предпочтений, но отмечу, что в соответствии с тем, как я использую свой компьютер, я обычно в дополненение к стандартно предлагаемому программой набору ставлю Midnight Commander, сервер Samba, http-сервер, PHP и MySQL. Кроме того, я привык работать в среде KDE. Поэтому для начала я отказался от использования графической среды GNOME и задал установку KDE. Причем в группе "Графическая среда KDE" задал установку всех входящих в эту группу пакетов. Затем перешел к выбору отдельных пакетов в других группах. Замечу, что некоторые авторы рекомендуют вообще не ставить тех пакетов, назначение которых вам не известно. Я подхожу к этому вопросу по другому - удаляю все пакеты, про которые точно знаю или могу предполагать, что мне они не потребуются. И добавляю, естественно, пакеты, которые мне заведомо нужны. Приведу небольшой перечень тех пакетов, которые я удалил или добавил в набор, предлагаемый по умолчанию.

  • Группа "Система X Window"
    • Отказался от установки пакетов:

      • rhgb
      • rhn-applet
      • switchdesk
      • synaptics
      • up2date-gnome
  • Группа "Редакторы"
    • Отключил установку всех пакетов, кроме nedit
  • Группа "Графические средства Интернет"
    • Отказался от установки пакетов:
      • gnomemeeting

    Группа "Текстовые средства Интернет"

      Отказался от установки всех пакетов, кроме elinks и lynx.

  • Группа "Звук и видео"
    • Отказался от установки пакетов:

      • cdda2wav
      • cdlabelgen
      • rhythmbox

      Дополнительно выбрал пакеты:

      • xcdroast
      • xmms
  • Группа "Графика"

      Убрал все, что связано с sane (нет у меня сканера)

  • Группа "Средства настройки сервера"
    • Включил все пакеты.

  • Группа "Веб-сервер"
    • Отказался от установки пакетов:

      • squid

      Дополнительно выбрал пакеты:

      • php-mysql
  • Группа "Файловый сервер для Windows"
    • Включил все пакеты.

  • Группа "База данных MySQL"
    • Включил все пакеты.

  • Группа "Средства администрирования"
    • Включил все пакеты.

  • Группа "Системные средства"

      Отказался от установки пакетов:

      • zsh,
      • xdelta,
      • screen,
      • nmap,
      • ethereal,
      • ckermit,
      • bluez-pin

      Дополнительно выбрал пакеты:

      • mc,
      • amanda-client,

В остальных группах состав устанавливаемых пакетов я не менял. В итоге программа инсталляции посчитала, что выбранные пакеты займут на диске 2,535 МБ. Проверка зависимостей показала, что ничего добавлять не требуется (если бы было предложено, я бы согласился) и, после щелчка по кнопке "Далее", началось форматирование разделов. Этот процесс вместе с установкой пакетов занял на моей системе 23 минуты (22:38-23:01). После чего появилось предложение перезагрузиться.

Первый запуск

Перезагружаюсь. На мгновение появляется какая-то надпись и начинает загружаться Linux. Стартовое меню GRUB с выбором операционной системы не выводится (как позже выяснилось, оно все-таки выводится, но очень ненадолго и при первом запуске я просто прозевал этот момент). Сразу запускается графический режим и появляется приветствие программы первой загрузки Fedora (на английском). Насколько мне известно (смотри [1]), это запустилась специальная программа firstboot, отрабатывающая один раз при первом запуске системы. Ее можно запустить и повторно, приложив некоторые усилия (подробнее смотри в [1]), однако, как будет показано ниже, в Fedora Core 3 все настройки, выполняемые с помощью этой программы, можно сделать и без нее, используя стандартные средства конфигурирования системы (да и здесь, я полагаю, просто вызываются те же средства).

После щелчка по клавише "Next" выводится лицензионое соглашение (соглашаюсь не читая), затем диалог для корректировки даты и времени (корректировки у меня не потребовалось). На второй вкладке того же диалога можно задействовать сетевой протокол установки времени (Network Time Protocol), однако сервера времени у меня не предвидится, так что от включения этого протокола я отказался.

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

Следующий диалог служит для того, чтобы завести простого пользователя, не имеющего прав суперпользователя. Ввожу данные пользователя. Здесь же есть экранная кнопка "Use Network Login...", щелкнув по которой можно настроить аутентификацию пользователя в одной из сетевых служб (Kerberos, SMB, NIS, Hesiod, LDAP или Winbind). Поскольку у меня компьютер не подключен ни к одной из соответствующих служб, я задействовать эти сервисы не стал.

Следующий диалог - для проверки звуковой платы. После подключения колонок мне удалось услышать тестовый звук.

Последний диалог предлагает вставить диск с дополнительным ПО от сторонних производителей. Поскольку у меня такого диска нет, просто завершаю работу программы щелчком по клавише "Next".

Появляется сообщение:

Fedora Core release 2.92. (FC3 Test 3)
Kernel 2.6.9-1.643 on an i686
"INIT: Id "x" respawning too fast: disabled for 5 minites"

Я надеюсь вас не удивляет то, что у меня запустилась тестовая версия - как я уже говорил выше, я устанавливал последний релиз-кандидат Fedora Core 3. А вот третья строка этого сообщения мне не понятна. К тому же процесс загрузки на этом как будто замер. Я выждал указанные 5 минут, но по их завершении последняя строка просто повторилась и далее снова ничего. Но после нажатия клавиши <Enter> появляется приглашение login:

Ввожу имя и пароль простого пользователя и выхожу в командную строку. Запускаю команду startx и наблюдаю знакомый процесс загрузки графической оболочки KDE. Только вид ее, конечно, изменился по сравнению с предыдущими версиями (если есть желание, можете посмотреть как выглядел у меня экран при первом запуске системы после инсталляции - см. Рис.1).

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

Настройка рабочего стола (пользовательского интерфейса)

Для начала я выполнил команду "System Settings" > "Language" главного меню и (после ввода пароля суперпользователя) выбрал в качестве языка по умолчанию русский. Появилось сообщение о том, что эта установка вступит в силу после следующего входа в систему (next log in). Поэтому я просто вышел из графической оболочки (командой "Log Out" главного меню) и снова загрузил KDE командой startx. После этого все надписи и меню стали выводится уже по-русски.

Просмотрев меню "Системные параметры", нахожу команды для заведения нового пользователя, обнаружения звуковой платы, настройки даты и времени, раскладки клавиатуры и разрешения экрана, а также процедур сетевой аутентификации пользователей. Значит в любой момент можно поправить настройки, сделанные в процессе первоначального запуска, если по невнимательности или в спешке что-то было установлено не так. И повторно запускать программу firstboot для этого не требуется. Перепроверил на всякий случай параметры разрешения и частоты обновления экрана, убедился, что все нормально (установлены приемлемые значения 1024х768 пикселей и 85 Гц).

Дальше можно заняться фоновым рисунком. Щелкаю правой кнопкой мыши по свободному полю на рабочем столе и в выпадающем меню выбираю команду "Настроить Рабочий стол...". Появляется диалоговое окно с несколькими вкладками.

Рис.2. Диалоговое окно настройки рабочего стола

На вкладке "Фон" (рис. 2) выбираю для фона вариант "Изображение", щелкаю по кнопке с изображением папки и получаю возможность выбрать рисунок фона. Я выбрал один из рисунков, установленных из дистрибутива. Очевидно, что при желании можно установить любой фоновый рисунок, досточно поместить файл с рисунком в каталог /usr/share/backgrounds/images и выбрать этот файл с помощью упоминавшейся вкладки "Фон". На других вкладках диалогового окна настройки рабочего стола я ничего не менял. При желании вы можете поменять шрифт на вкладке "Внешний вид" или изменить настройки хранителя экрана, а меня устраивают те настройки, которые заданы по умолчанию.

Теперь займемся кнопками и иконками на панели и на поверхности рабочего стола. Вначале я перетащил значок корзины в правый нижний угол рабочего стола, где ей надлежит быть по моему разумению. Перетаскиваем иконки обычным порядком - ухватывам правой кнопкой мыши и тянем. На рабочем столе я обычно помещаю также иконки монтирования для всех съемных носителей (CD-ROM, USB, floppy и т.п.) и Windows-разделов. Расскажу о процедуре создания такой иконки на примере значка для USB Flash drive.

Сначала щелкаем правой кнопкой мыши где-нибудь на свободной поверхности рабочего стола и в появившемся меню выбираем в меню команду "Создать" - "Устройство >" - "Дисковод...". В открывающемся после этого окне имеется 4 вкладки. На вкладке "Общие" задаем название устройства ("USB drive") и меняем рисунок значка примонтированного устройства. На вкладке "Права" можно задать права доступа к нему. На вкладке "Устройство" (рис.3) надо указать файл устройства (/dev/sda1) и выбрать пиктограмму для того случая, когда устройство размонтировано.

Рис.3. Диалоговое окно настройки рабочего стола

Естественно, пиктограммы "примонтировано" и "размонтировано" следует сделать разными, тогда с первого взгляда будет видно состояние устройства (точнее, его доступность в данный момент времени). Обратите внимание на то, что точка монтирования здесь не задается - она должна быть заранее указана в файле /etc/fstab и просто отображается на вкладке "Устройство". О том, как откорректировать файл /etc/fstab мы поговорим чуть позже, пока же отмечу только, что нужная строка в этом файле появилась у меня автоматически после того, как я присоединил USB-диск к соответствующему разъему.

Теперь займемся пиктограммами на панели. Поскольку в каждом сеансе работы с системой я пользуюсь окном терминала, надо разместить его кнопку на панель для того, чтобы иметь возможность быстро вызвать это окно. Поэтому щелкаю правой кнопкой мыши по свободному полю панели и в открывшемся меню выбираю команду "Добавить > Кнопку приложения". В появившемся списке приложений нахожу "Терминал" и щелкаю по этой строке мышью. В панели появляется кнопка вызова терминала, только размещена она в правой части панели. Чтобы переместить ее в общую группу кнопок быстрого запуска приложений, щелкаю правой кнопкой мыши по иконке, выбираю в меню пункт "Переместить кнопку Терминал" и перетаскиваю кнопку туда, где она должна размещаться.

С помощью только что установленной кнопки открываю окно терминала и настраиваю его поведение. В меню "Настройки" выбираю стиль "Черный на белом" и меняю шрифт на Fixed. Потом запускаю Midnight Commander, и настраиваю его:

  • устанавливаю формат отображения списка файлов "Укороченный" для обеих панелей,
  • в меню "Настройки - Биты символов" задаю "Полный 8-битный вывод" и "Полный 8-битный ввод",
  • в диалоговом окне "Настройки - Распознавание клавиш..." задаю для функциональной клавиши <F15> замену в виде комбинации <Ctrl>+<V> (я пользуюсь комбинациями <Ctrl>+<F> и <Ctrl>+<V> во встроенном редакторе для копирования-вставки фрагментов),

после чего сохраняю настройки.

После этого открываю сеанс "Новое окно root MC" и те же самые настройки проделываю для MC, запускаемого от имени root-а. И все бы хорошо, но вот никак не сумел добиться того, чтобы сохранялся шрифт, используемый в терминале. Нигде в меню окна терминала не нашел пункта "Сохранить настройки". В результате каждый раз после перезапуска терминала приходится менять шрифт (на Fixed или console8x16), потому что все время восстанавливается шрифт Monospace. Пока не знаю, как с этим бороться.

Снова вернемся к значкам-иконкам на панели. По умолчанию в панели установились сразу несколько значков, вызывающих отдельные программы пакета OpenOffice.org. Я предпочитаю иметь всего один значок, который вызывает не конкретную программу, а просто открытие пустого окна OpenOffice.org, из меню которого я уже могу загрузить нужный файл или открыть одно из приложений. Поэтому я удаляю все значки OpenOffice.org кроме одного, открываю диалог настройки свойств пиктограммы и на вкладке "Приложение" в строке "Команда" указываю путь '/usr/bin/ooffice'. После этого меняю рисунок пиктограммы и говорю "Ok".

Забегая немного вперед (потому что некоторые из упоминаемых в этом абзаце программ еще просто не установлены) скажу, что в результате у меня на панели рядом со значком вызова главного меню (красная шапка) будут размещаться значки для вызова следующих приложений: Konqueror, Firefox, OpenOffice.org, Kmail, Gimp, Терминал. Подробно рассказывать о том, каким образом создается каждый значок, я не буду. Все остальные значки я отсюда убираю.

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

Настройка процедур загрузки

Первым делом запускаю в окне терминала "Новый сеанс MC с правами root" и открываю на редактирование файл /boot/grub/grub.conf. Он у меня имел такой вид:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,2)
#          kernel /vmlinuz-version ro root=/dev/hda5
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,2)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.9-1.643)
        root (hd0,2)
        kernel /vmlinuz-2.6.9-1.643 ro root=LABEL=/1
        initrd /initrd-2.6.9-1.643.img
title Other
        rootnoverify (hd0,1)
        chainloader +1

С помощью статей о GRUB я постарался разобраться с тем, что означает каждая строка в этом файле (не считая строк комментария).

  • default=0 - выбор пункта для загрузки по умолчанию, в даном случае по умолчанию будет загружаться ОС, указанная в первом пунтке меню, то есть Fedora Core. Обратите внимание на то, что GRUB всюду ведет счет от 0, а не от 1.
  • timeout=5 - время (в секундах) после которого будет загружен пункт по умолчанию (в данном случае через 5 секунд). Я решил увеличить этот интервал до 10 секунд.
  • splashimage=(hd0,2)/grub/splash.xpm.gz - указывает GRUB на местоположение фонового рисунка для загрузочного меню.
  • hiddenmenu - скрыть меню загрузчика и загрузить по истечению заданного интервала времени пункт по-умолчанию. Непонятно, зачем его скрывать, если уж оно создано. Эту строку я решил закомментировать.
  • title Fedora Core (2.6.9-1.643) Задает название пункта меню, при выборе которого будет загружаться Линукс.
  • root (hd0,2) эта строка указывает раздел, где находится информация, необходимая для загрузки данной ОС. GRUB использует для нумерации разделов свою систему обозначений, в данном случае это третий раздел (2) на первом жестком диске (hd0). Все пути к файлая для данной ОС будут далее указываться относительно этого загрузочного раздела.
  • kernel /vmlinuz-2.6.9-1.643 ro root=LABEL=/1 - указывает какое ядро нужно загрузить. Далее передаются параметры загрузки и указывается корневой раздел, чтобы ядро знало, куда смонтировать корневую файловую систему.
  • initrd /initrd-2.6.9-1.643.img - команда создать в оперативной памяти виртуальный диск для загрузки.
  • title Other Заголовок второго пункта меню. Заменяю для определенности Other на Windows 2000.
  • rootnoverify (hd0,1) Эта строка указываетна корневой раздел (C:/) для Windows.
  • chainloader +1 - указывает GRUB где взять загрузчик для Windows, в данном случае первый сектор раздела (+1).

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

  • Если в опциях загрузки ядра всречается параметр 'rhgb', удалите его. Тем самым вы отключите запуск Graphical Boot Loader.
  • Добавьте в опции вызова ядра параметр 'vga=788', чтобы увеличить разрешение консоли во время загрузки.
  • Если у вас нет диска hdc, то добавьте опцию 'hdc=noprobe', поскольку ядра версий 2.4.20 и больше могут иметь проблемы, если диска нет.
  • Если вы не отключили Security Enhanced Linux (selinux) в процессе инсталляции, добавьте опцию 'selinux=0' для того, чтобы отключить selinux.
  • Если вы не хотите видеть сообщения ядра во время загрузки, добавьте опцию 'quiet'.
  • Если вы добавите в конец строки 'kernel' цифру 3, система загрузится на третий уровень.

С загрузчиком разобрались, теперь займемся настройкой процедур загрузки самой ОС, и начнем с файла /etc/inittab. Я не буду приводить его исходное состояние, покажу только каким образом я его менял. Во-первых, я всегда отказываюсь от автоматического выхода в графическую оболочку при загрузке системы. Вроде при инсталляции я так сделал, а в inittab с удивлением увидел строчку

id:5:initdefault:

Но ведь я уже несколько раз перезапускал систему и не выходил в графику?! Тем не менее я решил изменить эту строку на

id:3:initdefault:

Затем переопределил действия по нажатию клавиш CTRL-ALT-DELETE. У меня стояло

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

то есть выполнялась команда немедленного (now) останова системы с последующей перезагрузкой (-r), причем перед посылкой процессам сигнала останова (kill) установлена задержка в 3 секунды (-t3). Я изменил эту строку следующим образом:

ca::ctrlaltdel:/sbin/shutdown -t3 -h now

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

Строки

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

я закомментировал, потому что источника бесперебойного питания у меня (к сожалению) нет и не предвидится.

Вместо шести виртульных консолей

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

я решил оставить только 4 (остальные закомментировал): что-то не помню случая, чтобы одновременно пользовался более чем тремя виртуальными консолями.

На этом я и закончил корректировки в файле /etc/inittab. Чтобы посмотреть, что получилось и что изменилось, перезапустил компьютер. После перезагрузки исчезло ранее регулярно появлявшееся сообщение

INIT: Id "x" respawning too fast: disabled for 5 minites

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

Пожалуй, единственная секция в файле /etc/inittab, которая еще заслуживает упоминания (и осталась пока нерассмотренной), является секция, озаглавленая как "System initialization". Она имеет такой вид:

si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

Эта секция запускает на выполнение скрипты дальнейшей инициализации системы /etc/rc.d/rc.sysinit и /etc/rc.d/rc. Поэтому занялся я рассмотрением процедур, выполняемых этими скриптами. Вначале рассмотрим файл rc.sysinit. Поскольку файл большой, я приведу только краткое описание того, что он делает.

Итак, краткий перечень основных действий, выполняемых скриптом /etc/rc.d/rc.sysinit:

  • Вначале скрипт rc.sysinit перезапускает себя с помощью initlog.
  • Потом задаются значения переменных HOSTNAME, HOSTTYPE и unamer.
  • Вызывается на выполнение файл /etc/sysconfig/network, где всего-навсего задаются значения трех переменных:
    NETWORKING=yes
    	HOSTNAME=trend.kos.home
    	GATEWAY=192.168.36.1
    	
  • Проверяется, что переменная HOSTNAME действительно определена (задана и не пуста), а если это условие не выполнено, то ей присваивается значение localhost.
  • Монтируются файловые системы /proc и /sys (о первой я немного слышал, а вот про вторую кто бы мне рассказал?)
  • Вызывается на выполнение файл /etc/init.d/functions. Файл этот довольно большой, в нем задаются значения функций, используемых большинством скриптов оболочки, вызываемых из каталога /etc/init.d, а также определяется переменная umask.
  • Затем проверяется статус SELinux и что-то там делается с ним, что именно, я анализировать не стал.
  • Следующий этап - загрузка системного шрифта путем вызова файла /sbin/setsysfont. Эту операцию я пока не буду комментировать, отложу до того момента, когда займусь вопросами русификации.
  • После этого выводится на экран начальное сообщение системы (текстовый баннер) с информацией о версии системы (насколько я понял, эта информация берется из файла /etc/redhat-release).
  • Потом командой /bin/dmesg -n $LOGLEVEL задается уровень выдачи сообщений на консоль (на консоль будут выдаваться все сообщения, уровень которых меньше или равен заданному, а уровней всего существует 8, см. "Cистемное протоколирование в Linux"). Я только не понял, как задается значение уровня (значение переменной $LOGLEVEL).
  • Затем выполняется файл /etc/udev/udev.conf. В этом файле просто задаются значения переменных, определяющих расположение каталогов и базы данных для udev. Udev является частью подсистемы автоматического определения подключения и отключения аппаратных устройств, этот сервис поддерживает базу данных устройств, присутсвующих в системе.
  • После определения значений необходимых переменных выполняется скрипт инициализации /sbin/start_udev.
  • На следующем этапе осуществляется инициализация аппаратных устройств. Вначале выполняется команда sysctl, назначением которой является модификация параметров ядра на этапе запуска системы.
  • Затем последовательно осуществляется обнаружение и загрузка модулей для ide- и scsi-устройств, флоппи-диковода, сетевых устройств (pushd /etc/sysconfig/network-scripts), аудио- и других устройств.
  • Потом, насколько я понимаю, запускается RAID:
    echo "raidautorun /dev/md0" | nash --quiet

    и стартует графическая заставка на время загрузки. К этому моменту каталог /usr может оказаться еще не смонтирован (если он размещается в отдельном разделе), поэтому старт графического оформления процедур загрузки может быть выполнен при необходимости еще раз позже.

  • Затем еще раз запускается команда модификации параметров ядра sysctl -e -p /etc/sysctl.conf
  • Устанавливаются системные часы.
  • Загружается раскладка клавиатуры командой /bin/loadkeys.
  • Задается имя хоста командой hostname.
  • Считывается значение переменной cmdline из файла /proc/cmdline.
  • Проводится определение необходимости проверки целостности файловых систем на этапе загрузки и формируется переменная fsckoptions. Именно в этот момент на экране появляются сообщения типа "Your system appears to have shut down uncleanly", "Press N within %d seconds to not force file system integrity check...", "Forcing file system integrity check due to default setting".
  • Определяется местонахождение корневой файловой системы и запоминается в переменной rootdev.
  • Запускается проверка целостности корневой файловой системы:
    fsck -T -a $rootdev $fsckoptions
  • Анализируется код возврата команды fsck. Если этот код равен или больше 4, то выявлены серьезная проблемы с корневой ФС и выдается сообщение
    *** An error occurred during the file system check.
    *** Dropping you to a shell; the system will reboot
    *** when you leave the shell.

    и запускается ограниченный вариант оболочки, после выхода из которой система уходит на перезагрузку. Если все нормально, продолжаем выполнение скрипта.

  • Если необходимо, размонтируется initrd.
  • Обновляются квоты.
  • Корневая файловая система перемонтируется в режиме "чтение-запись".
  • Инициализируются логические тома (LVM)
  • Производится очистка (обнуление) таблицы смонтированных устройств mtab.
  • С помощью команды mount -f в таблицу mtab записываются строки, соответствующие ранее смонтированным файловым системам /, /proc, /sys, /dev/pts и, возможно, /proc/bus/usb и devfs.
  • Конфигурируются SCSI-устройства, подключаемые по оптическому каналу (этот этап имеет смысл только для мэйнфреймов).
  • Теперь, поскольку корневая файловая система смонтирована в режиме записи, можно включить протоколирование через syslog().
  • Если существует файл /etc/rc.modules, то загружаются указанные в нем модули.
  • Запускаются RAID-устройства. Проверяется код возврата и, если он ненулевой, что означает выявление проблем, выдается сообщение:
    *** An error occurred during the RAID startup
    *** Dropping you to a shell; the system will reboot
    *** when you leave the shell.
  • Производится проверка файловых систем. Снова анализируется код возврата команды fsck и, если этот код равен или больше 4, то есть выявлены серьезные проблемы с ФС, выдается сообщение
    *** An error occurred during the file system check.
    *** Dropping you to a shell; the system will reboot
    *** when you leave the shell.

    и запускается ограниченный вариант оболочки, после выхода из которой система уходит на перезагрузку.

  • Если все нормально, монтируются файловые системы.
  • Если это еще не сделано, запускается графическая заставка.
  • Проверяются оставшиеся квоты.
  • Инициализируется генератор псевдослучайных чисел.
  • Если существует файл /.unconfigured, то последовательно запускаются утилиты системного конфигурирования
    • /usr/bin/system-config-keyboard
    • /usr/bin/passwd root
    • /usr/sbin/netconfig
    • /usr/sbin/timeconfig
    • /usr/sbin/authconfig --nostart
    • /usr/sbin/ntsysv --level 35
  • Перечитываются параметры конфигурирования сети и имя хоста.
  • Производится очистка каталогов /var и /tmp от временных файлов, а также инициализация файлов utmp/wtmp.
  • Подключаются пространства свопинга.
  • Инициализируются последовательные порты.
  • Если в строке запуска ядра имеется параметр ide-scsi, запускаются модули ide-cd и ide-scsi.
  • Производится оптимизация жестких дисков. Команда оптимизация жестких дисков hdparm запускается здесь в цикле для 20 дисков от hda до hdt. При инсталляции создается только один файл параметров оптимизации /etc/sysconfig/harddisks для всех дисков. Если вы хотите указать команде hdparm различные наборы параметров для каждого диска, нужно скопировать /etc/sysconfig/harddisks в файлы с именами /etc/sysconfig/harddiskhda (hdb, hdc...) и модифицировать их соответствующим образом.
  • Затем вызывается команда /usr/sbin/system-config-network-cmd.
  • Теперь, когда все основные модули загружены и ядро работает, содержимое буфера syslog можно выгрузить в файл, где его можно будет потом найти.
    dmesg -s 131072 > /var/log/dmesg
  • Команда wait - дожидаемся завершения всех процессов.
  • Если была запущена графическая заставка, останавливаем ее.

На этом скрипт rc.sysinit заканчивает работу. После этого запускается скрипт rc с параметром, равным уровню выполнения (помните, он был задан в строке initdefault, в нашем случае - 3).

Скрипт rc, как известно, запускает службы и сервисы, список которых определяется уровнем выполнения. О сервисах мы поговорим чуть позже, а пока отмечу только, что предварительно этот скрипт выполняет команду

 . /etc/init.d/functions

Заглянув в этот файл, я увидел, что в нем вначале устанавливаются значения некоторых переменных (в частности, PATH, umask), вызываются на выполнение файлы init и i18n из каталога /etc/sysconfig, а потом определяется ряд функций. Как говорится в комментариях к этому файлу, эти определения функций используются большинством скриптов оболочки, содержащихся в каталоге /etc/init.d.

В скриптах rc и rc.sysinit я ничего менять пока не стал, а занялся ревизией набора запускаемых системных сервисов.

Ревизия системных сервисов

Во-первых, посмотрим, какие системные сервисы (или демоны) запускаются и нужны ли они все в нашей системе. Выбираем в меню команду "Системные параметры" > "Настройка сервера" > "Службы". Поскольку для выполнения этой операции требуются права суперпользователя, появится запрос на ввод пароля. После ввода пароля открывается окно, изображенное на рис.4.

Рис.4. Окно настройки системных сервисов

(обратите внимание на то, что когда выделишь в левом столбце название того или иного сервиса, в правом поле появляется его краткое описание).

Давайте уберем из системы неиспользуемые сервисы (демоны), поскольку они просто занимают системные ресурсы и могут просто-напросто тормозить работу компьютера. Если вы НЕ УВЕРЕНЫ, что какой-то из сервисов вам НЕ НУЖЕН, лучше его оставить. Кроме того, в статье [3] отмечается, что нельзя отключать следующие сервисы (если только вы не знаете точно, что делаете): acpid, haldaemon, dbus-daemon-1, klogd, network, portmap, syslogd, xinetd. Учитывая эти рекомендации, я снял флажки запуска со следующих, запускаемых по умолчанию сервисов:

  • apmd - сервис слежения за состоянием батарей; нужен на лэптопах, ноутбуках и прочих переносных компьютерах.
  • cpuspeed - изменяет частоту ЦПУ с целью экономии энергии, нужет на лэптопах (и то только в том случае, когда эта опция поддерживается железом).
  • cups, cups-config-daemon - управление принтером (принтера у меня нет);
  • hpoj - драйверы принтеров HP
  • iptables - сервис фильтрации IP-пакетов (как-то до сих пор я обходился без этого сервиса во время своих эпизодических выходов в Интернет);
  • iptables - запускает, останавливает и сохраняет конфигурацию файервола iptables Not needed if you use a hardware firewall (D-Link, Netgear, etc).
  • irqbalance - демон распределения запросов на обработку прерываний между процессорами в многопроцессорных системах с целью балансировки нагрузки на процессоры; очевидно бесполезен в однопроцессорной системе.
  • isdn - насколько я понимаю, у меня нет ISDN;
  • mDNSResponder и nifd - не совсем понял, что делают эти демоны. В кратком пояснении сообщается, что они запускаются на клиентах Howl (??) с целью выполнить поиск сервисов в сети и должны запускаться, если используется Howl. Пока от запуска этих служб откажусь.
  • mdmonitor - мониторинг и управлений программными RAID-массивами. Я пока таких массивов не использую, поэтому демон отключаю.
  • messagebus - служба рассылки широковещательных сообщений и других сообщений о событиях в системе. Мне рассылать некуда, поэтому отключаю.
  • pcmcia - эта служба поддержки pcmcia-устройств, которые обычно используются на ноутбуках для подключения модемов или сетевых адаптеров; у меня таких устройств нет и демон этот не нужен.
  • readahead, readahead-early - службы, которые ускоряют начальную загрузку системы.
  • rhnsd - демон, который периодически опрашивает Интернет-сервер Red Hat, на предмет наличия обновлений; поскольку я этим сервисом пользоваться не собираюсь, отключаю и его;
  • rpcgssd, rpcidmapd, rpcsvcgssd - по краткой справке уяснить назначение этих служб не смог, отключаю.
  • sendmail - агент пересылки почты. Поскольку обычные почтовые агенты получают почту с почтовых серверов в Интернет, эта служба на локальном компьютере не нужна.

После снятия флажков с перечисленных выше сервисов я просмотрел еще раз список на предмет того, не надо ли запускать при загрузке системы какие-то службы, не подключенные по умолчанию. Дополнительно к оставленным ранее демонам решил запустить еще сервисы httpd и smb. В результате у меня остались следующие сервисы, которые должны запускаться при каждом старте:

  • acpid - отслеживает и перенаправляет события ACPI от ядра,
  • anacron, atd, cron - демоны управления отложеннымии заданиями, в приводимых в списке источников статьях рекомендуется оставить по крайней мере один из них, а именно - cron,
  • autofs - автомонтирование файловых систем,
  • gpm - поддержка мыши для консольных программ, запускаемых в окне терминала. Рекомендуется оставить хотя бы на третьем и пятом уровнях запуска,
  • haldaemon - демон, ослеживающий изменения аппаратной конфигурации,
  • httpd - web-сервер,
  • kudzu - конфигурирование вновь установленного оборудования,
  • lm_sensors - управление датчиками, осуществляющими мониторинг состояния материнской платы,
  • netfs - монтирование и размонтирование сетевых файловых систем (NFS, SMB, NCP),
  • network - активизирует и отключает все сетевые интерфейсы, запускаемые при старте системы,
  • nfs - сервер сетевой файловой системы,
  • nfslock - демон блокировки для nfs,
  • portmap - необходим для работы сетевых служб, таких как NFS и NIS,
  • smartd - Self Monitoring and Reporting Technology (SMART) Daemon
  • smbd - сервер Samba,
  • sshd - сервер OpenSSH. Обеспечивает относительно безопасное подключение к вашему компьютеру с других компьютеров по незащищенной сети (например, Интернет). Я оставил его только с целью освоить работу по протоколу SSH.
  • syslog - демон системного протоколирования,
  • xinetd - суперсервер, запускающий другие сетевые службы по мере обращения к ним, возникновения необходимости.

Имейте только в виду, что мы оптимизировали запуск служб только на одном уровне - пятом (посмотрите внимательнее на рис.4). Если вы хотите оптимизировать службы на других уровнях запуска, воспользуйтесь командой "Изменить уровень" в главном меню программы настройки служб. Поскольку я практически всегда запускаю компьютер на третьем уровне, а потом перехожу в графический режим, я выполнил удаление лишних сервисов для 3-го и 5-го уровней.

Чтобы сделанные изменения вступили в силу, необходимо сохранить конфигурацию сервисов (команда "Сохранить" в меню "Файл" или щелкнуть по иконке "Сохранить"). После этого можно закрыть окно "Настройка служб".

На приводимых ниже рисунках вы можете видеть, как изменилось использование памяти после удаления ненужных служб:

Рис.5. Использование памяти до оптимизации сервисов

Рис.6. Использование памяти после оптимизации сервисов

Как видите, если до оптимизации (рисунок 5) было занято 426 МБ из 451, то после (рисунок 6) занято только 229 МБ, то есть удалось освободить 197 МБайт.

О русификации системы

Хотя все надписи в KDE у нас теперь вроде бы выдаются на русском языке, но проблемы с русификацией еще далеко не решены. Red Hat еще в 8-ой версии перешел на кодировку Unicode, и Fedora Core с рождения построена на ней же. Для англоязычной части пользователей этот переход не создал никаких проблем, а для остальных не все проходит так же гладко. Открыв, например, окно подсказки в Midnight Commander, мы видим следующую картину (см. рис.7):

Рис.7. Окно подсказки в Midnight Commander

Примерно такую же картину (или еще хуже) я вижу при попытке открыть в MC на редактирование любой другой файл в кодировке KOI8-R или cp1251. А вот файл в кодировке utf-8 успешно открывается как на редактирование, так и на просмотр.

Как известно, существует два способа решения этой проблемы: "один - неправильный, другой - мой". Неправильный способ заключается в возврате к кодировке KOI8-R для отображения символов кириллицы. Но это значит, что мы опять сворачиваем со столбовой дороги, по которой движется все остальное человечество, и ищем собственные пути (как известно, "в России нет дорог, есть только направления"). Делать так не хочется, надо найти другое решение.

Впрочем, если вас привлекает "неправильный" способ, можно воспользоваться решением, предлагаемым компанией Linux Ink. В какой-то из статей я нашел сообщение о том, что "эта компания подготовила все необходимые для такого подхода файлы применительно к дистрибутиву Fedora Core 1, но их можно использовать и для FC3. Пакеты, которые вы найдете на ftp-сервере этой компании (ftp://www.linux-ink.ru/pub/Russian/FC.1/Russification/RPMS/) решат проблему юникода, вернее, это сделает только один пакет, остальные добавят новые функции к GDM и redhat-config-language, что позволит переключать настройки языка в кодировку koi8-r, если это вам нужно".

Но мы пойдем другим путем! Для начала точно сформулируем проблему. С кириллицей в кодировках koi8 и cp1251 не умеют работать встроенный редактор и встроенный просмотрщик из MC. Но ведь можно в MC подключить другие средства для этих целей. Просматриваю главное меню. Почему-то не нахожу в нем таких редакторов, как Kedit, KWrite и Kate. Зато есть Nedit, который я включил в число устанавливаемых программ при инсталляции. Пробую открыть в Nedit файл в кодировке koi8-r. Вначале снова вижу абракадабру, но после замены шрифта текст становится читаемым. Вспоминаю, что при инсталляции я задавал все пакеты в группе "Графическая среда KDE". Почему же не установлены обычные для KDE редакторы? Пробую запустить KWrite из командной строки. Программа запускается. Значит она просто по каким-то причинам не попала в меню. А в ней кодировка меняется очень просто - список различных кодировок появляется по команде "Вид - Кодировка". Вот и решение проблемы с редактированием файлов непосредственно в MC - надо просто подключить KWrite в качестве встроенного редактора.

Сделать это достаточно просто. Во-первых, отключаем использование встроенных средств редактирования и просмотра в MC (меню "Настройки" - "Конфигурация"). После этого MC по клавише <F4> вызывает редактор, задаваемый в переменной окружения EDITOR, а для просмотра по <F3> - средство, задаваемое переменной PAGER. Если эти переменные не заданы (как в нашем случае), используются, соответственно, vim и viewview фактически есть только ссылка на тот же vim, запускаемый в режиме "только чтение"). Так что остается только задать переменные EDITOR и PAGER. А чтобы не делать это вручную каждый раз, надо прописать это где-то в инициализационных скриптах. Я попробовал включить строки

export EDITOR=kwrite
export PAGER=kwrite

в файл /etc/rc.d/rc.local, но это желаемого эффекта не дало. А вот включение их в файл ~/.bashrc в моем домашнем каталоге привело к тому, что при нажатии в MC <F3> и <F4> стало открываться окно KWrite с выбранным файлом. Остается только переключить кодировку (меню "Вид" в KWrite). Эти строки я редактирую уже с помощью KWrite. Правда, вначале у меня запуск KWrite по клавише <F4> получался только в тех сеансах, в которых я вызывал просто консоль, а потом уже в консоли запускал MC. Если же в сеансе был вызван непосредственно Командор, то по клавише <F4> вызывался по-прежнему vim. Но эта проблема решилась после перезагрузки системы. Почему так получилось, вообще-то понятно. Когда я запускаю консоль, запускается новый экземпляр оболочки, который перечитывает файл настроек ~/.bashrc. А когда запускаю сразу MC, сохраняется старое окружение, в котором новое значение переменной EDITOR не установлено. Между прочим, вполне возможно, что задание значений переменой через /etc/rc.d/rc.local не сработало по той же причине. Надо будет проверить. Но это позже, а пока пойдем дальше.

В ходе настройки подключенного редактора я заметил, что текстовые файлы с расширением .html успешно просматриваются встроенным просмотрщиком от MC. А после смены расширения у того же файла на .txt просмотр сразу же "испортился". Просмотрев файл расширений MC я обнаружил, что для просмотра html-файлов используется браузер lynx. Это подсказало мне другой способ подключения KWrite в качестве редактора, вызываемого из MC.

Файл расширений MC (это файл ~/.mc/bindings в моем домашнем каталоге) используется для задания ассоциаций файлов, то есть "связывания" файлов с определенными расширениями с ассоциированными программами. Последняя группа строк в этом файле имеет следующий вид:

# Default target for anything not described above
default/*
        Open=
        View=
        Edit=

и задает действия по отношению к тем файлам, для которых операции не определены в предыдущих группах. Насколько я понял, установки в этих строках задают действия по клавишам <Enter>, <F3> и <F4>. Изменив две последних строки следующим образом

        View=kwrite %f &
        Edit=kwrite %f &

я получил то, что хотел: и по нажатию клавиши <F3>, и по нажатию клавиши <F4> стал открываться редактор KWrite, причем в нем сразу загружается тот файл, на который указывает подсветка в MC, причем и блокирования сеанса в терминале не происходит (это благодаря добавлению & в конце строки). При этом и отключать встроенные программы просмотра и редактирования в меню "Настройка" MC не требуется - независимо от этой настройки вызывается KWrite.

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

Замена встроенного редактора на KWrite не решила, однако, проблемы с просмотром встроенной подсказки. Тут нужен уже другой подход. Для начала я решил попробовать перекодировать файл подсказки. Из перекодировщиков обнаружил утилиту iconv. Поскольку я ею раньше не пользовался, потребовалось просмотреть man-страничку по этой утилите. Как сказано в справке, формат ее запуска имеет вид:
iconv -f encoding -t encoding inputfile
где опция -f задает кодировку исходного файла, опция -t задает результирующую кодировку, inputfile - имя входного файла, а результат выдается на стандартный вывод. Перекодировал я файл /usr/share/mc/mc.hlp.ru командами
[user]$ cd /usr/share/mc
[user]$ mv mc.hlp.ru mc.hlp.ru.old
[user]$ iconv -f koi8-r -t utf-8 mc.hlp.ru.old > mc.hlp.ru
Размер файла подсказки при этом увеличился примерно в полтора раза. Как ни странно, отображение подсказки в MC при этом никак не изменилось. Непонятно, откуда берется неперекодированный текст. Но этот вопрос оставим пока нерешенным. Подсказка не так уж мне необходима.

Теперь попытаемся поправить еще раскладку клавиатуры (мне она не нравится) и переключатель с русского на латиницу. Как помните, при инсталляции я выбрал раскладку "Русская". Как показала работа, в этой раскладке точка на <Shift+7>, а запятая - <Shift+6>, что мне не нравится. Между тем существует на выбор еще несколько раскладок.

Давайте вспомним, что во время выполнения инициализационного скрипта /etc/rc.d/rc.sysinit среди прочих действий выполнялась команда загрузки системного шрифта /sbin/setsysfont и команда загрузки клавиатурной раскладки. Рассмотрим эти скрипты. Начнем, естественно, с того, который выполняется первым - /sbin/setsysfont. Я последовательно разберу включенные в него команды, сопровождая каждую небольшим комментарием.

	#!/bin/sh
	PATH=/bin:/usr/bin
#Задается значение переменной PATH. Это пока какое-то временное значение, поскольку, как было показано выше, позже это значение будет переопределено.
	if [ -f /etc/sysconfig/i18n ]; then
  	   . /etc/sysconfig/i18n
	fi
#Проверяется наличие файла /etc/sysconfig/i18n и, если он существует, он выполняется как скрипт. Заглядываю в файл /etc/sysconfig/i18n и вижу, что там устанавливаются значения для трех переменных:
	LANG="ru_RU.UTF-8"
	SUPPORTED="en_US.UTF-8:en_US:en:ru_RU.UTF-8:ru_RU.ru"
	SYSFONT="latarcyrheb-sun16"
#Первая строка задает локаль, вторая – поддерживаемые языки, третья определяет системный фонт. Заглядываю в каталог /lib/kbd/consolefonts и убеждаюсь, что таковой в наличии, причем имеет расширение .psfu, то есть содержит и изображения символов, и таблицу SFM.
	case "$LANG" in
		*.utf8|*.UTF-8)
	if [ -x /bin/unicode_start ] && /sbin/consoletype fg ; then
	            exec unicode_start $SYSFONT $SYSFONTACM
	         fi
	         ;;
	esac
#Если локаль задана равной utf8, существует файл /bin/unicode_start и консоль, подключенная к стандартному выводу, есть текущий виртуальный терминал, выполняется скрипт unicode_start $SYSFONT $SYSFONTACM. Этот скрипт делает следующее:
  • командой kbd_mode -u переключает драйвер клавиатуры в режим Unicode (по умолчанию драйвер клавиатуры запускается в режиме ASCII),
  • командой dumpkeys | loadkeys –unicode перезагружает таблицу раскладки клавиатуры таким образом, чтобы не-ASCII клавиши генерировали много-байтные последовательности кодов UTF-8,
  • переводит драйвер экрана в режим UTF-8,
  • командой setfont $SYSFONT -u $SYSFONTACM загружает экранный фонт и таблицу перекодировки символов.
Далее снова идут какие-то манипуляции с экранным шрифтом и таблицей перекодировки символов:
    if [ -x /bin/consolechars -o -x /usr/bin/consolechars ]; then
      if [ -n "$SYSFONT" ]; then
        ARGS=$SYSFONT
        if [ -n "$UNIMAP" ]; then
           ARGS="$ARGS --sfm $UNIMAP"
        fi
        if [ -n "$SYSFONTACM" ]; then
           ARGS="$ARGS --acm $SYSFONTACM"
        fi
        consolechars -f $ARGS
      fi
    elif [ -x /bin/setfont ]; then
      if [ -n "$UNIMAP" ]; then
        ARGS="-u $UNIMAP"
      fi
      if [ -n "$SYSFONTACM" ]; then
        if [ ! -f /lib/kbd/consoletrans/$SYSFONTACM_to_uni.trans ]; then
            SYSFONTACM=`echo $SYSFONTACM | sed "s|iso0|8859-|g;s|iso|8859-|g"`
        fi
        ARGS="$ARGS -m $SYSFONTACM"
      fi
      if [ -n "$SYSFONT" ]; then
        /bin/setfont $SYSFONT $ARGS
    #  else
    #    /bin/setfont
        echo -ne "\033(K" 2>/dev/null > /proc/$$/fd/0
      fi
    fi
    
    exit 0
    
Что-то неохота мне стало вникать в подробности и гадать, зачем все это нужно. Давайте на этом кончим разборку с /sbin/setsysfont и перейдем ко второй команде, вызываемой из скрипта /etc/rc.d/rc.sysinit, а именно, /bin/loadkeys. Служит эта команда для загрузки клавиатурной раскладки. Да ведь эту команду мы уже вызывали выше в скрипте unicode_startx. В инициализационом скрипте /etc/rc.d/rc.sysinit повторный вызов этой команды организован в виде следующего блока:
if [ "$CONSOLETYPE" = "vt" -a -x /bin/loadkeys ]; then
 KEYTABLE=
 KEYMAP=
 if [ -f /etc/sysconfig/console/default.kmap ]; then
  KEYMAP=/etc/sysconfig/console/default.kmap
 else
  if [ -f /etc/sysconfig/keyboard ]; then
    . /etc/sysconfig/keyboard
  fi
  if [ -n "$KEYTABLE" -a -d "/lib/kbd/keymaps" ]; then
     KEYMAP="$KEYTABLE.map"
  fi
 fi
 if [ -n "$KEYMAP" ]; then 
  # Since this takes in/output from stdin/out, we can't use initlog
  if [ -n "$KEYTABLE" ]; then
    echo -n $"Loading default keymap ($KEYTABLE): "
  else
    echo -n $"Loading default keymap: "
  fi
  loadkeys $KEYMAP < /dev/tty0 > /dev/tty0 2>/dev/null && \
     success $"Loading default keymap" || failure $"Loading default keymap"
  echo
 fi
fi
То есть, если существет файл /etc/sysconfig/keyboard, загружается раскладка клавиатуры, указанная в этом файле. Поменять раскладку можно командой "Системные параметры" - "Клавиатура". Выполнив эту команду я увидел выбор из 6 русских раскладок. К сожалению, среди них нет utf8. В файле /etc/sysconfig/keyboard оказываются прописаны две строки:
KEYBOARDTYPE="pc"
KEYTABLE="ru-utf"

В общем, добиться желаемого результата с раскладкой клавиатуры мне не удалось.

Добавляем шрифты TrueType от Microsoft

Этот раздел я просто позаимствовал из какого-то источника.

Не секрет, что в Линукс во многих случаях не достает высококачественных шрифтов. При открытии в текстовых редакторах под Линукс (например, в OpenOffice.org) документов, созданных в MS Office (а такие документы вы всегда можете получить от своих коллег) во многих случаях не хватает файлов шрифтов, с помощью которых были созданы эти документы. В результате документы отображаются на экране некорректно. Чтобы решить эту проблему, необходимо добавить шрифты от Microsoft. Делается это следуюющим образом.

Вначале берем и переносим шрифты с любого компьютера, где установлена ОС от Microsoft, на наш компьютер и размещаем эти шрифты в каталоге /usr/X11R6/lib/X11/fonts в отдельный подкаталог (пусть это будет каталог ttf). Затем переходим в этот каталог и удаляем все файлы, имена которых содержат заглавные буквы. Потом выполняем следующие команды:

# rpm -ivh msttcorefonts-1.3-3.noarch.rpm
ttmkfdir
umask 133
/usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/ttf
/usr/sbin/chkfontpath -q -a /usr/X11R6/lib/X11/fonts/ttf
# /etc/init.d/xfs restart

или просто выходим из системы (log out) и входим повторно: перезагрузка не требуется.

Настройка сети

Моя домашняя сеть состоит из двух Linux-компьютеров и ноутбука, работающего под Windows 2000 Professional. Каждый из этих компьютеров оснащен сетевой платой, а кабель у меня только один, так что я могу создавать только сеть из двух компьютеров (для сети из трех надо бы иметь хаб или еще одну сетевую карту). Для начала я соединил компьютер с Fedora Core с ноутбуком.

Первоначальная настройка сети была сделана в процессе установки. Проверим. Для этого даю команду ifconfig (как root) и вижу следующее:

[root]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:09:CA:73:BC  
          inet addr:192.168.36.1  Bcast:192.168.36.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:9ff:feca:73bc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:9924 (9.6 KiB)
          Interrupt:11 Base address:0xc000 DMA chan:4 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:78 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5380 (5.2 KiB)  TX bytes:5380 (5.2 KiB)

То есть сетевой интерфейс "поднят" успешно. Пингую свой второй компьютер по IP-адресу и получаю в ответ сообщение

From 192.168.36.1 icmp_seq=1 Destination Host Unreachable

На втором компьютере (он у меня в этот момент работал под Mandrake 9.2) ситуация точно такая же, только там адрес равен 192.168.36.2.

Как раз на этом я и прекратил попытки настроить Fedora Core. После этого на мой компьютер был установлен дистрибутив ASP Linux v10. О том, как это произошло и какие сложности мне встретились, я тоже постараюсь вам рассказать, но уже в следующей заметке.

Источники и ссылки

  1. В.А.Костромин, Red Hat Linux 9 Cyrillic Edition с точки зрения пользователя. Часть 2. Первый запуск
  2. В.А.Костромин, Red Hat Linux 9 Cyrillic Edition с точки зрения пользователя. Часть 3. Русификация
  3. Stanton Finley, Fedora Core 3 Linux Installation Notes (я пользовался версией этого файла от 28 ноября 2004 г.)
  4. Mauriat Miranda, Personal Fedora Core 3 Installation Guide
  5. The Fedora Project
  6. FedoraNEWS.ORG
  7. Fedora Forum
  8. "Документация по Red Hat Enterprise Linux и Fedora Core 2" на русском языке.
  9. В.Вислобоков, "Специальный FAQ по дистрибутиву Linux Fedora Core", Версия 1.0 от 14.11.2004.
  10. tux2furiousr, перевод - Дмитрий Шурупов, "Неофициальный гид по Fedora Core 2 для начинающих"
  11. Ken Barber, перевод - Д.Шурупов, "Fedora Core 1 против бесплатной SuSE Linux 9"
  12. Автор: decvar, "Советы по Red Hat Fedora Core"
    "Советы по Red Hat Fedora Core"
  13. Мокрушин И.В., "Переход от RedHat на Fedora Core"