Debian FAQ.

Часто задаваемые вопросы при работе с Linux и дистрибутивом Debian.

Patch level 14, 11 октября 1998, 14:30.


Авторские права

Автором является Виктор Вислобоков
Fidonet: 2:5054/69.34@Fidonet.org

Замечания

  • Автор не несет никакой ответственности за какой-либо ущерб, который может быть причинен при использовании данной информации.
  • Все замечания, исправления, дополнения, пожелания описать что-либо поподробней и другие, просьба направлять по данному выше адресу компьютерной сети Fidonet или E-mail.
  • Разрешается копирование, модификация и распостранения данного FAQ в любых целях, кроме коммерческих при сохранении в документе секций "Авторские права", "Замечания" и "Благодарности".
  • Коммерческое использование только с письменного разрешения автора.

    Благодарности

    Косте Кудрину (2:5054/69@Fidonet.org) за патч к вопросу 6.2 за большую помощь в вопросе 2.7 и за моральную поддержку.
    Алексею Выскубову (2:5030/5.914@Fidonet.org) за справедливую критику и вопрос 4.4.
    Leon B. Kanter (2:465/148.1@Fidonet.org) за вопрос 6.1
    Максиму Лобашову max@t37.nevod.perm.su за замечание к вопросу 2.1.

    Перечень вопросов, на которые даны ответы в данном FAQ

    - Ответ на вопрос изменен или дополнен
    - Новый вопрос
      1. Общие вопросы по дистрибутиву
    1. Что такое Debian?
    2. Чем отличается Debian от других дистрибутивов Linux?
    3. Какими способами можно установить Debian?
    4. Какая версия Debian на сегодня самая свежая?
    5. Как мне сделать собственный .deb пакет?
      2. Русификация
    1. Что нужно сделать, чтобы в текстовом режиме можно было читать и писать по русски?
    2. Как сделать так, чтобы в моем mc (Midnight Commander) были видны русские буквы и чтобы я мог их там набирать, а то лезет всякая ерунда?
    3. Как получить возможность вводить и читать русские буквы в X Window?
    4. Как заставить писать по русски мой любимый редактор joe?
    5. Захотел прочитать текстовый файл на русском языке, который я сделал в DOS'е, а там русских букв нет, вместо них почему-то псевдографика. Каким образом можно прочитать текстовые файлы из DOS'а?
    6. Почему у меня программа для работы с электронной почтой elm говорит Unknown charset, когда я пишу письма на русском языке? Как с этим бороться?
    7. Как заставить Netscape Navigator показывать русские буквы в кодировках KOI-8 и CP1251?
      3. Конфигурирование и настройка приложений
    1. А почему, когда я работаю под X Window в эмуляторе терминала rxvt мой mc (Midnight Commander) при нажатии клавиш Home и End вместо выполнения перемещения по каталогу выдает мусор вида 1~ и 4~? Как сделать, чтобы все было нормально?
    2. У меня на первом винте стоит Linux но есть и второй винт, на котором стоит DOS, как мне добится чтобы LILO грузил мне DOS?
    3. Говорят, что якобы можно грузить Linux напрямую из DOS'а не пользуясь LILO. Это действительно так? Если да, то как это сделать?
    4. У меня стоят три менеждера окон к X Window. Куда мне прописать чтобы грузился fvwm95?
    5. Как соединятся с провайдером для выхода в Internet через модем, по протоколу PPP?
      4. Система и приложения
    1. Как создавать и удалять новых пользователей?
    2. Как монтировать и демонтировать файловые системы?
    3. При архивировании командой tar получается архив, который не влазит на одну дискету. Как мне разбить такой архив по дискетам?
    4. Как обновлять софт, если у меня есть подключение к Интернету? Hеужели выкачивать новые пакеты, а потом руками ставить?
    5. У меня старая версия ядра, но я достал исходники новой версии, а также патчи. Что мне делать с патчами и как мне теперь собрать ядро и сделать его загружаемым?
      5. Поддержка различного железа
    1. У меня есть второй винт, который зацеплен на один шлейф с первым. Какому устройству он соответствует?
    2. Как можно заставить работать под Linux звуковую карточку на чипсете OPTi 930xx?
      6. Баги, фиксы и рекомендации по обходу некоторых "узких" мест.
    1. Почему, когда я переключаюсь из текстовой консоли в X Window и двигаю своей PS/2 мышкой X Window Server падает с сообщением: psaux: device resource is busy?
    2. При добавлении нового пользователя в систему командой adduser возникла проблема - почему-то скопировалась только одна первая строка из файлов, которые лежат в /etc/skel, а вообще-то файлы должны были скопироваться полностью! В чем дело?
    3. Почему, когда groff форматирует текст с ключем -Tlatin1 вместо символов переноса ("-") видны какие-то прямоугольники? Как сделать, чтобы все было нормально?
    4. А почему у меня системное время какое-то левое? Разница с тем, что должно быть составляет 5 часов. Время на часах в CMOS'е нормальное.В чем дело?

    Что такое Debian?

    Debian это один из дистрибутивов Linux (UNIX подобной сетевой операционной системы).

    Чем отличается Debian от других дистрибутивов Linux?

    Форматом пакетов и программой которая обслуживает данные пакеты, процедурой инсталляции. Кроме того есть отличия и в структуре каталогов, и в месте расположения конфигурационных файлов. Кроме того в Debian'е сделана попытка подогнать все под UNIX'овый стандарт System V.

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

    В Debian 2.0 появилась новая команда для работы с пакетами. Теперь вы можете снять уже поставленный пакет. Это значит, что вы можете из установленных файлов пакета снова сделать .deb пакет.


    Какими способами можно установить Debian?

    Несколькими способами
  • с загрузочного CD ROM
  • с CD ROM с помощью дискет
  • с одного из разделов жесткого диска
  • по FTP
  • по сети

    В Debian 2.0 появилась новая утилита dpkg-http которая позволяет ставить пакеты через HTTP.


    Какая версия Debian'а на сегодня самая свежая?

    24 июля был официально выпущен Debian 2.0, который имеет название Hamm. Хотя версия считается стабильной, дальнейшая работа по выявлению и устранению ошибок продолжается.

    По моим впечатлениям дистрибуция Debian 2.0 продумана хуже, чем у Debian 1.3.1: недоложены многие нужные пакеты, уже есть сообщения о багах в процедуре инсталляции дистрибутива.


    Как мне сделать собственный .deb пакет?

    Я рассмотрю здесь простой способ, основанный на ручной сборке пакета, без использования специфических утилит типа deb-make и других.

    Для начала, вы должны иметь, то что вам нужно установить с помощью собираемого вами пакета. Путь это будет какая-либо утилита, расширяющие возможности системы. (С тем же успехом - это могут быть дополнительные файлы шрифтов или еще что-нибудь). Пусть эта утилита назвается probe. Положим, что к этой утилите вы написали страничку руководства man с названием probe.1 и кроме того положим, что есть какой-либо файл, где разобран пример работы с данной утилитой с именем example. Путь файл с примером и страничка руководства называются сопровождающими файлами.

    Важно, чтобы вы представляли, где должна быть размещена эта утилита и сопровождающие ее файлы. Обычно исполняемые файлы размещают в /usr/bin. Странички руководства man размещают в /usr/man/man.1, а всякие примеры в /usr/lib/<имя утилиты>. Пусть так будет и в нашем случае.

    Итак, выполняем следующие шаги:

    1. Создаем временный каталог с именем DEB
    2. Создаем в этом каталоге подкаталоги, в которые нужно поместить утилиту и сопровождающие файлы. При этом каталоги создаются так, как будто DEB является корневым каталогом. Таким образом, в нашем случае, файлы должны быть размещены следующим образом:
          DEB/usr/bin/probe
          DEB/usr/man/man1/probe.1
          DEB/usr/lib/probe/example
      
    3. Создаем в каталоге DEB служебный каталог с именем DEBIAN
    4. В этом каталоге создаем обязательный файл control и по вашему желанию также могут быть добавлены файлы preinst, postinst, prerm, postrm и conffiles. Вот для чего они нужны:

      controlСлужебная информация о пакете
      conffilesСписок конфигурационных файлов
      preinstСкрипт, выполнеяемый перед началом устновки пакета
      postinstСкрипт, выполняемый после установки пакета
      prermСкрипт, выполняемый перед удалением пакета
      postrmСкрипт, выполняемый после удаления пакета

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

    5. Теперь заполняем файл control служебной информацией. Эту информацию впоследствии будет использовать менеджер пакетов dpkg и программа dselect. Инофрмацию можно занести в любом текстовом редакторе. Для нашего случая я привожу уже готовый файл:
          Package: probe
          Version: 1.0
          Architecture: i386
          Maintainer: Ivan Ivanov <ivan@perm.ru>
          Description: My probe utility
           This is my utility
      
      Теперь поясним, что к чему. Слова с двоеточиями являются служебными и выполняют закрепленные за ними функции. Здесь даны далеко не все возможные слова - остальные найдете на страничке руководства man с названием deb-control(5). За словом Package: должно идти имя пакета. В этом имени не должно быть заглавных букв или небуквенных символов типа "!", "?" и т.д. За словом Version: должен идти номер версии. За словом Architecture: архитектура машины для которой собирается пакет. Для платформы Intel это i386. За словом Maintainer: должно следовать имя автора пакета, с необязательным адресом электронной почты (в нашем случае ivan@perm.ru). За словом Description: должно следовать краткое, или полное описание пакета (можно использовать русские буквы, но тогда в dselect'е вы будете иметь проблемы). Краткое описание следует непосредственно за словом. Полное описание начинается со следующей строки. Обратите внимание: перед фразой This is my utility стоит пробел. Он указывает, что данная фраза является продолжением описания. Если его не поставить, то при сборке пакета вы получите сообщение об ошибке.
    6. Создайте и заполните остальные файлы, указанные в таблице, если ВАШЕМУ пакету это нужно (в данном случае они не нужны).
    7. Выйдите из каталога DEB
    8. Для генерации .deb пакета наберите команду dpkg -b <имя каталога> <имя пакета .deb>. В нашем случае эта команда будет выглядеть так:
          dpkg -b DEB probe-1.0.deb
      
      Если вы правильно выполнили все описанные выше инструкции, то вы получите файл probe-1.0.deb, который вы можете теперь установить через команду dpkg -i probe-1.0.deb.

    Не правда ли все это довольно просто. Вы можете пойти дальше, создав свое собственное дополнение к стандартному дистрибутиву в стиле Debian и подключать его через каталог local в программе dselect. Однако создание такого дополнения, с генерацией файла Packages будет посложнее. По этому я настоятельно рекомендую вам почитать страницы руководства man с названиями: dpkg(8), dpkg-deb(1), deb-control(5) и dpkg-scanpackages(8).


    Что нужно сделать, чтобы в текстовом режиме можно было читать и писать по-русски?

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

    Вашему вниманию предлагается маленький сценарий, который должен быть помещен в /etc/init.d под именем russian и который является необходимой частью русификации текстового режима:

    #--------------------------------------------------------------------------
    #                                 russian
    #--------------------------------------------------------------------------
    
    # Set leds and META for terminals
    for t in 1 2 3 4
    do
       setleds -num /dev/null
    done
    
    # Load russian fonts
    echo -e "			\033[1;34;47m      Loading Russian Font      \033[36;40m"
    setfont Cyr_a8x16 >/dev/null 2>/dev/null
    
    # Load russian keys
    echo -e "			\033[1;37;44m      Loading Russian Keys      \033[36;40m"
    loadkeys ru1.map >/dev/null 2>/dev/null
    
    # Map screen 
    echo -e "			\033[1;33;41m      Loading  Map  Screen      \033[36;40m"
    mapscrn koi2alt > /dev/null 2>/dev/null
    
    # Enable mapping on tty
    for t in 1 2 3 4
    do
       echo -e "\033(K" >/dev/tty$t
       echo -e "			\033[0;30;42m  Enable mapping on \033[0;31;42m /dev/tty$t  \033[0;36;40m"
    done
    #-------------------------------end of file---------------------------------
    
    Не могу не упомянуть ценное замечание Максима Лобашова. Оно заключается в том, что данный выше сценарий расчитан на русификацию только первых четрых консолей. Однако обычно при установке дистрибутива устанавливается шесть консолей. И таким образом две оставшиеся русифицированны не будут. Однако это можно легко поправить - добавте цифры в строке с for например так:
            for t in 1 2 3 4 5 6
    
    и проблемы решаться.

    После установки сценария вы должны сделать ссылки на этот файл из каталогов, содержащих сценарии, выполняемые при установке уровня запуска (run level) системы командой init. Это каталоги /etc/rc*.d. Многопользовательскому режиму работы системы соответствует каталог /etc/rc2.d. Когда вы переместитесь туда, то увидите, что в нем уже есть множество ссылок, каждая из которых имеет имя, начинающееся с буквы ``S'', за которой следует цифра. Ссылки указывают на исполняемые файлы в каталоге /etc/init.d. Вам нужно создать ссылку на /etc/init.d/russian, при этом для нашего случая нужно выбрать номер после ``S'', который бы был постарше. У меня например это 88 (файлы выполняются по старшинству - более малые номера выполняются раньше). Итак делаем ссылку, находясь в каталоге /etc/rc2.d:

             ln -sf /etc/init.d/russian S88russian
    
    Чтобы этот сценарий выполнился вам нужно перегрузить машину, или перезапустить систему в многопользовательском режиме. Однако не торопитесь. Сперва создайте у себя в домашнем каталоге файл .inputrc (я рассматриваю случай, когда в качестве shell'а используется bash - обычно он и устанавливается по умолчанию при инсталляции системы) который я привожу ниже:
    		set meta-flag On
    		set convert-meta Off
    		set output-meta On
    		"\e[1~": beginning-of-line
    		"\e[3~": delete-char
    		"\e[4~": end-of-line
    		"\e[C": forward-char
    		"\e[D": backward-char
    		"\e[A": previous-history
    		"\e[B": next-history
    
    благодаря этому файлу вы сможете набирать в shell'е русские буквы, в противном случае вместо них будет писк в динамике. Если в системе уже существует несколько пользоватлей, то не забудьте поместить этот файл в их домашние каталоги и сделать его доступным для чтения этим пользователям. Кроме того я очень рекомендую поместить данный файл в каталог /etc/skel, тогда при создании новых пользователей он будет помещен к ним в домашние директории автоматически.

    Далее переместитесь в директорию /etc и найдите там файл profile. Это файл, который выполняется при регистрации любого пользователя в системе. Загрузите любой редактор (мне, например, очень нравится joe) и добавте в этот файл следующие строки:

          export LANG=ru_RU
          export PAGER=less
          export LESSCHARSET=koi8-r
    
    Переменная LANG говорит системе о региональных установках (это работает пока криво, но лучше так, чем никак). Переменная PAGER определяет программу, которая будет показывать вам текст при вызове man (по умолчанию устновлено more).less более мощная программа, озволяющая использовать для перемещения по тексту стрелки, клавиши PgUp, PgDn, а также поиск образца в тексте и т.д. Переменная LESSCHARSET нужна программе less для корректного вывода русских букв в кодировке KOI-8.

    Теперь вы можете перегрузить машину или перезапустить систему в многопользовательском режиме.

      Перегрузить машину можно тремя способами:
    1. нажать клавиши Ctrl-Alt-Del (на некоторых машинах не работает)
    2. ввести команду reboot
    3. ввести команду shutdown -g0 и после сообщения "System halted" нажать reset (самый правильный способ).
    Перезапустить систему в многопользовательском режиме можно введя команду
           init S
    
    которая перегрузит систему в однопользовательский режим, и после выдачи сообщения
           Give root password for maintenance
           (or type Control-D for normal startup):
    
    нужно нажать Ctrl-D, что приведет к загрузке системы в многопользовательском режиме.

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


    Как сделать так, чтобы в моем mc (Midnight Commander) были видны русские буквы и чтобы я мог их там набирать, а то лезет всякая ерунда?

    Сначала нужно включить работу с восьмью битами.Для этого нажмите F9 затем выберите Option, далее Display bits и наконец Full 8 bit. Не забудте потом сохранить эту конфигурацию. Далее нужно выйти из mc и запустить его снова с параметром -m. Если не работает, то значит у вас криво собранный mc. Далее, чтобы вам каждый раз не маятся с указанием параметра введите:
             alias mc="mc -m"
    
    Данную строчку можно потом поместить в файл .profile в домашнем каталоге или в /etc/profile.

    Замечу однако, что для просмотра файлов с русским текстом, имеющих в качестве расширения цифры или ``.man'' этого мало. Вместо русского текста в таких случаях вы можете увидеть мусор. Это связано с тем, что такие файлы трактуются mc как файлы, содержащие гипертекст, на языке groff. Для просмотра таких файлов mc вызывает форматер текста с этого языка: nroff, с параметром -Tascii. Наша с вами беда состоит в том, что в этом ascii русских букв нет. Нужно сделать следующее. Переместиться в каталог /etc/mc и в файле mc.ext с помощью редактора заменить все строки -Tascii на -Tlatin1.

    В заключении скажу, что Midnight Commander версии старше 4.0 не поддерживает опцию -m, а поддержка русского языка включается Options->Display bits->Full 8 bit + 8 bit input. Кроме того недавно вышла версия 4.1.35, которая имеет русифицированные меню и диалоги.


    Как получить возможность вводить и читать русские буквы в X Window?

    Перво наперво, когда будете пользоваться программой XF86Setup, где вам предложат установить русскую клавиатуру,не обольщайтесь, это рассчитано на оптимистов. Конечно, есть специалисты, которые довели до ума и этот вариант, но они использовали самодельные прилады и таблицы, которых в стандартном дистрибутиве просто нет. То что там есть, увы не работает. По этому я предлагаю вам старый добрый вариант проверенный на X Window версий 3.1, 3.2 и 3.3. Естественно русификацией нужно заниматься после того как вы настроите запуск X Window и нужные видеорежимы, а также после установки русских шрифтов (пакет fntcyr) и устанвки и настройки какого-нибудь менеджера окон (например fvwm). Итак правим файл /etc/X11/XF86Config (вы будете смеятся, но я обнаружил, что в Debian'е 1.2.7 от Mo'Linux этот файл ни что иное как .bak файл нужного нам XF86Config, который находился в /usr/X11R6/lib/X11). Убедитесь, что один из FontPath указывает на каталог с русскими шрифтами (обычно это /usr/X11R6/lib/X11/fonts/cyrillic). Далее в секции Keyboard закоментарьте все строки, где параметры начинанаются с ``Xkb''. После всех этих строк напишите:
            XkbDisable
    
    Затем в каталоге /etc/X11 поправте файл Xmodmap. Он пустой, но вы должны наполнить его следующими строками:
    keycode 0x71 = Mode_switch
    keysym  0x71 = Alt_R
    keycode 78 = Scroll_Lock
    add mod3 = Mode_switch
    add mod3 = Scroll_Lock
    keycode 22 = BackSpace
    keycode 107 = Delete
    
      keysym  4             = 4               dollar          4       quotedbl
      keysym  5             = 5               percent         5       colon
      keysym  6             = 6               asciicircum     6       comma
      keysym  7             = 7               ampersand       7       period
      keysym  q             = q               Q               0xCA    0xEA
      keysym  w             = w               W               0xC3    0xE3
      keysym  e             = e               E               0xD5    0xF5
      keysym  r             = r               R               0xCB    0xEB
      keysym  t             = t               T               0xC5    0xE5
      keysym  y             = y               Y               0xCE    0xEE
      keysym  u             = u               U               0xC7    0xE7
      keysym  i             = i               I               0xDB    0xFB
      keysym  o             = o               O               0xDD    0xFD
      keysym  p             = p               P               0xDA    0xFA
      keysym  bracketleft   = bracketleft     braceleft       0xC8    0xE8
      keysym  bracketright  = bracketright    braceright      0xDF    0xFF
      keysym  a             = a               A               0xC6    0xE6
      keysym  s             = s               S               0xD9    0xF9
      keysym  d             = d               D               0xD7    0xF7
      keysym  f             = f               F               0xC1    0xE1
      keysym  g             = g               G               0xD0    0xF0
      keysym  h             = h               H               0xD2    0xF2
      keysym  j             = j               J               0xCF    0xEF
      keysym  k             = k               K               0xCC    0xEC
      keysym  l             = l               L               0xC4    0xE4
      keysym  semicolon     = semicolon       colon           0xD6    0xF6
      keysym  apostrophe    = apostrophe      quotedbl        0xDC    0xFC
      keysym  grave         = grave           asciitilde      0xA3    0xB3
      keysym  z             = z               Z               0xD1    0xF1
      keysym  x             = x               X               0xDE    0xFE
      keysym  c             = c               C               0xD3    0xF3
      keysym  v             = v               V               0xCD    0xED
      keysym  b             = b               B               0xC9    0xE9
      keysym  n             = n               N               0xD4    0xF4
      keysym  m             = m               M               0xD8    0xF8
      keysym  comma         = comma           less            0xC2    0xE2
      keysym  period        = period          greater         0xC0    0xE0
    
    Теперь для правильного понимания в X Window клавиши Del поправте файл Xresources в этом же каталоге. Закоментарьте там все. Ну а теперь можно запускать X Window вашим любимым способом. Чтобы проверить, что получилось запустите Xterm или Rxvt с параметром -fn <полное_имя_русского_шрифта> (В полном имени не должно быть никаких ``*'', все должно быть задано. См. файл font.dir в каталоге /usr/X11R6/lib/X11/fonts/cyrillic). После того как окно появится введите для пробы несколько английских букв, а затем нажмите Scroll Lock (должна загорется лампочка) и вводите русские буквы. Если ничего не вводится значит вы плохо выполнили инструкции по XkbDisable. Если вместо русских букв выводятся греческие значит вы задали неправильный шрифт для терминала в параметре -fn.

    Хочу отдельно повесилится над Debian 2.0. В нем вы можете заставить работать Xkb без особого труда: в XF86Setup нужно поставить русскую клавиатуру и выбрать переключатель. Затем нужно совместить значения переменной окружения LANG с значением ru_RU.KOI8-R в файле /usr/X11/lib/X11/locale/locale.alias и вы получите возможность работать с русскими буквами. Однако самое смешное, что эти русские буквы будут вводится у вас только в xterm или rxvt, а в остальных программах вы не сможете их ввести (проверенно в Netscape, gzilla и некоторых других). Я даже представить себе не могу какими соображениями руководствовались разработчики Debian'а, когда делали нам такой "подарок". Вывод из сказанного один - пользуйтесь Xmodmap, как описано выще, а Xkb давайте только одну команду: Xkbdisable.


    Как заставить писать по русски мой любимый редактор joe?

    В директорию /etc/joe положить файлы из архива joe28rus.tar.gz (имейте ввиду, что все это делалось для joe версии 2.8).

    В этом архиве дан русифицированный файл ресурсов и база termcap, которую joe использует при работе с терминалом. База была настроена на два типа терминалов: linux - для корректной работы в текстовом режиме и xterm - для корректной работы через rxvt (эмулятор терминала в X Window).

    В файл ресурсов добавлены такие устновки фукциональных клавиш как:

            F1 - Помощь
    	F2 - Записать
    	F3 - Открыть
    	F7 - Искать
    	F6 - Искать следующий
    	F10 - Выход с записью
    
    Формат директив там простой,по этому если чего еще сами захотите сделать - разберетесь.

    Захотел прочитать текстовый файл на русском языке, который я сделал в DOS'е, а там русских букв нет, вместо них почему-то псевдографика. Каким образом можно прочитать текстовые файлы из DOS'а?

    В операционной системе DOS используется альтернативная кодировка русских букв. В UNIX'ах и в Linux используется кодировка KOI-8. Для того чтобы работать с тектовыми файлами на русском языке в Linux можно либо настроить Linux так, чтобы он работал в альтернативной кодировке как DOS, а можно перекодировать файл из альтернативной кодировки в KOI-8.

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

    Что касается второго способа, то предлагаю вашему вниманию два перекодировщика, написанные на shell'е с использованием стандартных команд системы. Автор этих перекодировщиков мне не известен

    файл altkoi8

    #!/bin/sh
    # -----------------------------------------------------------------
    #  altkoi8 - перекодировщик из альтернативной кодировки в KOI-8
    # -----------------------------------------------------------------
    tr \
    '\240''\241''\242''\243''\244''\245''\246''\247''\250'\
    '\251''\252''\253''\254''\255''\256''\257''\340''\341'\
    '\342''\343''\344''\345''\346''\347''\350''\351''\352'\
    '\353''\354''\355''\356''\357''\200''\201''\202''\203'\
    '\204''\205''\206''\207''\210''\211''\212''\213''\214'\
    '\215''\216''\217''\220''\221''\222''\223''\224''\225'\
    '\226''\227''\230''\231''\232''\233''\234''\235''\236''\237''\304' \
    '\301''\302''\327''\307''\304''\305''\326''\332''\311'\
    '\312''\313''\314''\315''\316''\317''\320''\322''\323'\
    '\324''\325''\306''\310''\303''\336''\333''\335''\337'\
    '\331''\330''\334''\300''\321''\341''\342''\367''\347'\
    '\344''\345''\366''\372''\351''\352''\353''\354''\355'\
    '\356''\357''\360''\362''\363''\364''\365''\346''\350'\
    '\343''\376''\373''\375''\377''\371''\370''\374''\340''\361''_'  |
    tr -d '\r' #вот эта фигня предназначена исключительно для того,
    	   #чтобы полностью подогнать формат доса к unix - это
    	   #аналог флага -t в команде mcopy,mwrite,mread.
    

    файл koi8alt

    #!/bin/sh
    # -----------------------------------------------------------------
    #  koi8alt - перекодировщик из KOI-8 в альтенативную кодировку
    # -----------------------------------------------------------------
    tr \
    '\301''\302''\327''\307''\304''\305''\326''\332''\311''\312''\313'\
    '\314''\315''\316''\317''\320''\322''\323''\324''\325''\306''\310'\
    '\303''\336''\333''\335''\337''\331''\330''\334''\300''\321''\341'\
    '\342''\367''\347''\344''\345''\366''\372''\351''\352''\353''\354'\
    '\355''\356''\357''\360''\362''\363''\364''\365''\346''\350''\343'\
    '\376''\373''\375''\377''\371''\370''\374''\340''\361'  \
    '\240''\241''\242''\243''\244''\245''\246''\247''\250''\251''\252'\
    '\253''\254''\255''\256''\257''\340''\341''\342''\343''\344''\345'\
    '\346''\347''\350''\351''\352''\353''\354''\355''\356''\357''\200'\
    '\201''\202''\203''\204''\205''\206''\207''\210''\211''\212''\213'\
    '\214''\215''\216''\217''\220''\221''\222''\223''\224''\225''\226'\
    '\227''\230''\231''\232''\233''\234''\235''\236''\237'  |
    sed -e s/$/
    / #подстановка cr в конец строки для глупого позорного
    	       #msdos - сильно замедляет работу программы, но ничего
    	       #другого с ходу не придумал. осторожнее с символом
    	       # 
     - нет у меня толкового описания sed - приходится так.
    	       #еще раз - у меня red показывает курсор со звездой внутри и
    	       #букву M
    
    Сразу оговорюсь. В настоящее время имеются 2 или 3 "стандарта" KOI-8. Расположение русских букв в них совпадает, но отличается расположение символов псевдографики. Так что если у вас при перекодировке возникнут проблемы с псевдографикой, то...

    Видя живой интерес начинающих к перекодировщикам я помещаю здесь еще два: из Win1251 в Koi8-r и обратно, написанных на Perl

    файл win2koi8

    #!/usr/bin/perl -p
    
    tr/\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63\64\65\66\67\70\71\72\73\74\75\76\77\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63\64\65\66\67\70\71\72\73\74\75\76\77\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\341\342\367\347\344\345\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\377\371\370\374\340\361\301\302\327\307\304\305\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\337\331\330\334\300\321/;
    
    

    файл koi8win

    #!/usr/bin/perl -p
    
    tr/\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63\64\65\66\67\70\71\72\73\74\75\76\77\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\341\342\367\347\344\345\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\377\371\370\374\340\361\301\302\327\307\304\305\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\337\331\330\334\300\321/\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63\64\65\66\67\70\71\72\73\74\75\76\77\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/;
    

    Почему у меня программа для работы с электронной почтой elm говорит Unknown charset, когда я пишу письма на русском языке? Как с этим бороться?

    Дело опять таки в русификации.
      Известный мне способ это победить таков:
    1. в домашнем каталоге создается каталог .elm
    2. в этом каталоге создается файл elmrc
    3. в этот файл прописывается строчка
               CHARSET=koi8-r
      

    Как заставить Netscape Navigator показывать русские буквы в кодировках KOI-8 и CP1251?

    Этот вопрос неизменно занимает сегодня умы многих начинающих. Несмотря на некоторое количество достаточно древних решений этот вопрос поднимается снова и снова. Ответ на него таков: на данный момент русифицировать Netscape Navigator корректно невозможно. Однако есть несколько хитрых приемов, которые хотя и не являются 100% корректными, но тем не менее позволяют вам добится тех целей, которые ставит перед нами данный выше вопрос. Что же касается корректной русификации, то будем надеятся, что в скором времени она появится благодаря тому, что Netscape начинает распостранять свои исходники бесплатно. Однако владельцам старых версий все равно придется жить по старому.

    Начнем с кодировки KOI-8. Здесь особых проблем быть не должно. В дистрибутив входят кирилистрические (русские) шрифты для X Windows, которые вам нужно установить перед тем как мы продолжим. Пакет с этими шрифтами называется в Debian 1.3 xfntcyr_3.3-3.deb и находится в секции x11. Естественно, что версия пакета может отличаться от приведенной мной.

    Итак, установите данный пакет командой

    	dpkg -i xfntcyr_3.3-3.deb
    
    После чего поправте файл /etc/X11/XF86Config. В этом файле вам нужно найти слова Section "Files" и в этой секции добавить строчку вида
    	FontPath  "/usr/X11R6/lib/X11/fonts/cyrillic"
    
    Это нужно, чтобы X Windows "увидела" ваши свежеустановленные шрифты. Затем, вам нужно перезапустить X Windows если вы уже находитесь там и запустить X Windows, в противном случае. Это нужно для того, чтобы X Windows при запуске перечитала файл конфигурации /etc/X11/XF86Config куда вы внесли изменения.

    Теперь, когда запуск X Windows произошел, вы можете запустить Netscape Navigator. Зайдите в меню Options, затем General Preferences и наконец в Fonts. Выберите среди доступных кодировок Cyrillic(koi8-r), а затем установите для ее отображения какие-нибудь cronyx шрифты: рекомендую Helvetica и Courier.

    Далее выйдите из меню настроек и зайдите в Options в подменю Document Encoding. В этом подменю выберите Cyrillic(KOI8-R). Теперь Netscape Navigator должен показывать вам русские буквы на страничках в кодировке KOI-8. Но здесь есть некоторые замечания, о которых читайте ниже.

    С кодировкой CP1251 будет посложнее. Во-первых, в дистрибутивах шрифты для X Windows в этой кодировке просто отсутствуют и вам их потребуется где-то достать. Правда для вас я подготовил Debian'овский пакет с этими шрифтам и вы можете его взять прямо отсюда, если нажмете на xfnt1251_1.1-1.deb.

    Если по какой-то причине вам не понравятся эти шрифты или этот пакет, то ищите их в Internet'е.

    Далее вы проделываете те же манипуляции с установкой пакета, правкой файла /etc/X11/XF86Config и перезапуском (или запуском) X Windows как и для случая с кодировкой KOI-8. Так же как и в случае с KOI-8 вы должны затем запустить Netscape Navigator, зайдити в меню Options, затем General Preferences и наконец в Fonts. Но вот здесь начинаются различия. Среди доступных кодировок вам нужно выбрать User defined, так как создатели Netscape Navigator не предусмотрели в меню наличия кодировки CP1251. Для кодировки User defined (при условии установки пакета xfnt1251_1.1-1.deb) выберите какие-либо iccm шрифты.

    Далее выйдите из меню настроек и зайдите в Options в подменю Document Encoding. В этом подменю выберите User defined. Теперь Netscape Navigator должен показывать вам русские буквы на страничках в кодировке CP1251. Но здесь есть некоторые замечания, о которых читайте ниже.

    Финальной частью установки шрифтов как для KOI-8 так и для CP1251 является сохранение опций: зайдите в меню Options и выберите Save Options. Если вы этого не сделаете, то при следующем запуске Netscape Navigator вам придется задавать шрифты для кодировок и Document Encoding заново.

    ЗАМЕЧАНИЯ.

    1. Для переключения между кодировками нужно зайти в Options и подменю Document Encoding и выбрать Cyrillic (KOI8-R) для кодировки KOI-8 и User defined для кодировки CP1251.
    2. Не удивляйтесь, если на страничке в тэгах FORM языка HTML (таких как Button, TextArea и т.д.) вы не увидите русских букв). Виноват Netscape, но поделать тут вряд ли что-то можно (хотя и здесь есть свои лазейки).
    3. В Netscape Navigator версий 3.x были проблемы с Java при включении кодировки KOI-8 (и вообще любой отличной от кодировки по умолчанию).
    4. Есть чудаки, которые жестко прописывают charset в тегах html. В том случае, если charset был установлен в cp1251, вы не сможете посмотреть эту страничку, несмотря на установленные шрифты в кодировке 1251, поскольку Netscape автоматически будет переключаться на cp1251, а не на User Defined.
    5. Данные способы русификации были опробованы на версиях 3.00-4.04, за остальные я не ручаюсь.

    А почему, когда я работаю под X Window в эмуляторе терминала rxvt мой mc (Midnight Commander) при нажатии клавиш Home и End вместо перемещения по каталогу выдает мусор вида 1~ и 4~? Как сделать, чтобы все было нормально?

    Дело в криво скомпиленой базе по настройками терминала terminfo. Из-за нее mc неправильно воспринимает в rxvt нажатые клавиши.
      Известный мне способ правки один:
    1. создается временная директория, например /tmp1
    2. в shell'е (выйти из mc) устанавливается переменная окружения:
              export TERMINFO=/tmp1
      
    3. затем в эту созданную директорию кладется файл, полученный из данного ниже архива xterm.tic.gz(после обработки вы должны получить файл xterm.tic).
    4. после этого вы должны запустить компилятор terminfo:
                 tic xterm.tic
      
    5. если вам выдаст сообщение о многократном использовании псевдонима vs100, то вы должны переместится в каталог /usr/lib/terminfo/v и стереть там файл vs100
    6. если компиляция завершилась успешно, то в директории появились каталоги v и x. В них лежат файлы vs100 и xterm.
    7. скопируйте полученные файлы: xterm в /etc/terminfo/x, а vs100 в /usr/terminfo/v.
    8. удалите нашу директорию - она нам больше не нужна.
    Если все выполнено правильно, то теперь в rxvt все должно быть в порядке.

    У меня на первом винте стоит Linux но есть и второй винт, на котором стоит DOS, как мне добится чтобы LILO грузил мне DOS?

    Если вы хотите грузить операционную систему с винта отличного от Master на первом IDE порту, то вам необходимо определить так называемый chain загрузчик для этого винта. Вот пример файла /etc/lilo.conf, в котором прописана загрузка Linux с Master винта, а DOS со Slave.
    # устройство откуда берется LILO   
    boot=/dev/hda
    # раздел, где находится главная(корневая) файловай система
    root=/dev/hda1
    # спецификация compact работает не везде   
    compact
    # определяет нормальный текстовый режим 80x25
    # можно задать слово ask, чтобы при загрузке спрашивало
    # номер видеорежима. Можно просто подставить цифру
    # видеорежима
    vga=normal
    # при prompt выдается приглашение boot: и ожидается
    # ввод метки для выбора операционной системы на
    # загрузку или Enter для загрузки первой по порядку.
    # Можно определить delay , где n десятые
    # секунды, которые LILO будет ждать, после чего произведет
    # загрузку первой по порядку операционной системы.
    # Во время ожидания можно нажать Ctrl и перейти в режим
    # prompt
    prompt
    # ------------- секция загрузки Linux -------------
    # образ ядра Linux
    image=/vmlinuz
    # метка, вводимая на приглашение boot:
    label=Linux
    read-only
    # -------------- секция загрузки DOS --------------
    # DOS раздел
    other=/dev/hdb1
    # chain загрузчик
    loader=/boot/any_d.b
    # метка, вводимая на приглашение boot:
    label=dos
    # таблица разделов, которая будет отдана DOS
    table=/dev/hda
    

    Говорят, что якобы можно грузить Linux напрямую из DOS'а не пользуясь LILO. Это действительно так? Если да, то как это сделать?

    Действительно вполне можно загружать Linux из DOS'а, хотя такой метод и не пользуется популярностью, так как из-за ненадежности файловой системы FAT у DOS'а и подверженности ее влиянию вирусов вы можете испортить файлы, необходимые для загрузки.
      Для загрузки из DOS'а вам понадобятся только два файла:
    1. программа loadlin.exe из дистрибутива.
    2. ядро собранное для вашей машины (подойдет и из дистрибутива, если в ядре есть поддержка аппаратуры, которая представлена на вашей машине).
    Заметим, что ядро должно быть обработано командой rdev.Например, если мы имеем образ ядра в файле vmlinuz в текущем каталоге, а ваша корневая файловая система размещена на устройстве /dev/hda1 необходимо выполнить:
             rdev vmlinuz /dev/hda1 
    
    чтобы ядро после загрузки знало, где ваша корневая (главная) файловая система (/), затем
             rdev -R vmlinuz 1
    
    что установит флаг первоначального монтирования файловой системы как read-only, что необходимо программе fsck для проверки файловой системы, затем можно (но не обязательно)
            rdev -v vmlinuz 
    
    для установки текстового видеорежима, отличного от стандартного 80x25, где n - это номер режима.

    После выполнения данных действий положите файл vmlinuz вместе с loadlin.exe куда-нибудь на диск DOS. Для загрузки, в DOS'е достаточно переместится в тот каталог, где находятся эти два файла и ввести команду:

            loadlin vmlinuz
    

    У меня стоят три менеждера окон к X Window. Куда мне прописать чтобы грузился fvwm95?

    В Debian'е запуск менеджера окон осуществляется на основании файла /etc/X11/window-managers. Запустится тот менеджер окон, чей вызов указан первым. У меня например это выглядит так:
    	/usr/local/bin/fvwm95
    	/usr/bin/X11/twm
    
    при старте X Window запускается fvwm95.

    Как соединятся с провайдером для выхода в Internet через модем, по протоколу PPP?

    Для начала, если ядро у вас собрано без поддержки протоколов PPP и SLIP вам нужно собрать его заново с поддержкой этих протоколов. Как собирать ядро описано в этом же FAQ. См. список вопросов.

    Еще недавно я бы сказал, что готовой программы нет, но как раз недавно я нашел таковую. В ней был маленький и досадный глюк, но я его пофиксил. Более того, специально для дистрибутива Debian я сделал пакет, который вы можете забрать прямо отсюда и который называется pppsetup-1.43-1.deb. Итак, забирайте пакет и устанавите его командой

        dpkg -i pppsetup-1.43-1.deb
    

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

    Соединение осуществляется командой ppp-go. В процессе работы эта программа показывает процесс набора номера и соединения. Если появится сообщение

        YES! you are connected
    
    то соединение успешно установлено и вы можете запускать ваше любимое программное обеспечение для работы с Internet, например Netscape.

    Если же вы такого сообщения не получили или получили сообщение

        NO! you are not connected
    
    то соединение у вас не получилось. Почему? Вопрос нетривиальный и ответов на него может быть довольно много. Поэтому здесь я вам помоч не могу. Если же вы поборете это сами и поймете в чем дело - не поленитесь отписать мне, дабы я включил ваше решение сюда в назидание потомкам. Однако в большинстве случаев проблем не будет.

    Завершение соединения с провайдером осуществляется вызовом команды ppp-off, которая убивает демон, отвечающий за связь и заставляет его положить "трубку" модема.

    Как вы уже поняли - это решение далеко не самое красивое. Например, можно воспользоваться diald - о чем ниже. Однако это очень простое решение,

    Установление соединения при помощи демона diald

    Прежде всего хочу заметить, что данные здесь конфигурационные файлы могут для вас не подойти, хотя у меня они работают. Все описанное ниже дает скорее понятие о том как все это настраивать, чем конкретное готовое решение. В любом случае очень рекомендую тщательно изучить страницы руководства man по pppd и diald, а также PPP-HOWTO.

    Пакет diald входит в состав дистрибутива Debian, да и по моему в другие дистрибутивы тоже. Ну а если у вас все-таки его не оказалось, вы всегда можете выкачать его из Internet.

    После того как вы установите пакет, например, командой

    	dpkg -i diald-0.16.4-1.deb
    
    В каталоге /etc/diald у вас появятся его конфигурационные файлы. Вам понадбится править только два из них. В файле с именем diald.options хранится конфигурация diald, а в файле с именем connect находится сценарий, который устанавливает модемное соединение, набирая номер и выполняя функции идентификации пользователя.

    Начнем с файла diald.options. Ниже дан в качестве примера мой:

    mode ppp
    connect "chat -f /etc/ppp/pppscript"
    device /dev/ttyS1
    speed 19200
    modem
    lock
    crtscts
    local 192.168.0.1
    remote 192.168.0.2
    netmask 255.255.255.0
    impulse 120,60
    dynamic
    defaultroute
    pppd-options noipdefault name "victor_v" asyncmap 0
    include /etc/diald/standard.filter
    
    Данная конфигурация расчитана на использование diald с протоколом PPP с аутентификацией пользователя по протоколу PAP. Адреса local и remote даны "от балды". Так как далее используется ключ dynamic, а в параметре ppp-options задано значение noipdefault, то при установлении связи адреса удаленной машины-сервера и адреса вашей машины будут изменены на те, которые сообщит удаленная машина.

    Параметр device установлен в значение /dev/ttyS1, что соотвествует второму последовательному порту COM2. Вы же можете изменить это значение, если ваш модем использует другой порт. (Для COM1 будеь /dev/ttyS0 и т.п.). Параметр speed установлен в значение 19200 и означает портовую скорость. Скорость вы также должны задать ориентируясь на модем, которым вы пользуетесь. Возможные значения: 2400, 9600, 19200, 34800, 57600 и т.д.

    Параметр impulse установлен в значение 120,60. Это говорит о том, что diald будет проверять простаивает ли линия через каждые 2 минуты (120 сек) и будет разрывать соединение (класть "трубку" модема), если в течении 1 минуты (60 сек) линия будет продолжать простаивать. Простой линии выражается в отсутствии приема или передачи пакетов через модем. Таким образом вы экономите деньги на повременной оплате за телефон и за Internet. Излишне говорить, что вы можете настроить эти параметры под себя.

    Особо нужно отметить параметр connect. В данном примере он установлен в значение chat -f /etc/ppp/pppscript. Ниже приводится содержимое файл pppscript

    ABORT ERROR
    ABORT BUSY
    ABORT "NO CARRIER"
    ABORT "NO DIALTONE"
    REPORT "CARRIER"
    REPORT "CONNECT"
    TIMEOUT 90
    "" AT&F1 "OK" ATDT900020 "CONNECT"
    
    Мне было удобнее пользоваться таким файлом, чем поставляемым с пакетом diald файлом connect. Это потому, что мой провайдер использует аутентификацию пользователей по протоколу PAP. Если же сервер у вашего провайдера настроен на ввод имени и пароля по приглашениям Login: и Password:, то вам лучше воспользоваться файлом connect. Тогда строчка с параметром connect в файле diald.options будет выглядеть так:
        connect "/etc/diald/connect"
    
    Файл connect хорошо задокументирован внутри и проблем с его использованием быть не должно. Вам нужно будет только поменять параметры MODEM_INIT на строку инициализации вашего модема, PHONE_NUMBER на номер телефона вашего провайдера, USER_CHAT_SEQ на строку-приглашение, которую вы получаете для ввода имени, USER_NAME на ваше регистрационное имя у провайдера, PASSWD_CHAT_SEQ на строку-приглашение, которую вы получаете для ввода пароля, PASSWORD на ваш пароль у провайдера и наконец PROMPT на строку, которую вы получаете в случае успешного ввода имени и пароля.

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

    Следующий этап - это файл /etc/ppp/options. Ниже дан в качестве примера мой:

    lock
    defaultroute
    crtscts
    noipdefault
    modem
    asyncmap 0
    debug
    19200
    /dev/ttyS1
    name "victor_v"
    
    Здесь вроде все должно быть понятно, тем более, что часть параметров перекрывается конфигурационным файлом для diald. Замечу только, что строка name "victor_v" нужна только в случае использования протокола PAP.

    Для тех, у кого провайдер использует как и у меня аутентификацию пользователей по протоколу PAP будет нужен еще файл /etc/ppp/pap-secrets. Вот пример моего:

    # Secrets for authentication using PAP...
    # client	server	     secret        IP addresses
    "victor_v"          *          "password"
    
    Вместо password должен стоять ваш пароль, а вместо victor_v ваше регистрационное имя у провайдера. Кроме того, оно же прописывается как вы можете заметить и в файл /etc/ppp/options и в файл /etc/diald/diald.options. Естественно, что для тех у кого провайдер не поддерживает PAP, эти параметры в данных файлах не нужны.

    Далее вам необходимо настроить свою систему для использования DNS провайдера. У вас должен быть адрес DNS-сервера провайдера. Его нужно поместить в файл /etc/resolv.conf. Вот пример моего файла:

    nameserver 194.84.131.242
    search permonline.ru
    
    где параметр nameserver задает адрес DNS-сервера провайдера, а параметр search имя домена провайдера.

    Ну вот теперь кажется все. После окончания всех настроек перезапустите diald командами

        /etc/init.d/diald stop
        /etc/init.d/diald start
    
    Теперь, когда вы в Netscape или в Lynx или в mc обратитесь на адрес, который неизвестен вашей системе, diald попытается установить соединение с вашим провайдером и если это получится, то вы попадете туда куда обратились.

    Если у вас не получилось. Что же мне жаль. Причин может быть множество. Здесь я могу только посоветовать вам подробно изучить документацию.


    Как создавать и удалять новых пользователей?

    Добавлять командой adduser. Читайте man adduser для подробной информации. Удаляются пользователи командой deluser или при удалении информации из /etc/passwd руками в редакторе. Заметим, что также имеется команда addgroup для создания групп. Вся служебная информация по пользователям и группам хранится в файлах /etc/passwd и /etc/group (не рассматривается случай наличия shadow).

    Как монтировать и демонтировать файловые системы?

    Командами mount и umount. Читайте man mount и man umount для подробной информации. Служебная информация по автоматическому монтрованию находится в файле /etc/fstab читайте man fstab. Формат каждой записи, занимающей одну строку в файле следующий:
    1. устройство (Device)
    2. каталог для монтирования (Mount point)
    3. тип файловой системы (Type FS)
    4. опции монтирования
    5. количество попыток монтирования
    6. дамп
    Кроме того при установке пакета fdutils можно пользоваться командами fdmount и fdumount для floppy дисков, что полезно для обычных пользователей, чтобы не давать им прав на пользование командами mount и umount.

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

    tar поддерживает возможность разбить архив на несколько дискет. Для этого к обычной комбинации букв, которую вы используете для создания или разворачивания архива добавляется буква 'M' (большая). Пример:
           tar cMvf /dev/fd0 /usr/local
    
    создаст архив на дискете. Если места на дискете не хватит, то появится надпись:
           prepare volume #2 for /dev/fd0 and hit return:
    
    после чего вы можете продолжить создание архива, вставив следующую дискету и нажав Enter.

    Разворачивание многотомного архива производится как же как и обычного, только нужно добавить букву 'M'. Пример:

           tar xMvf /dev/fd0
    
    Недостаток заключается в том, что многотомные архивы со сжатием не поддерживаются. Если же необходитость в сжатии есть, то сперва нужно подготовить сплошной сжатый архив, а потом уже его разбивать по дискетам.

    Как обновлять софт, если у меня есть подключение к Интернету? Hеужели выкачивать новые пакеты, а потом руками ставить?

    Конечно, нет. В принципе, существуют два способа.

    Первый: Можно поставить пакет dpkg-ftp, после чего в программе dselect при выборе access method появляется ftp. Плюсы: все обычные плюсы dselect'а. Минусы: слишком большая, на мой взгляд, интерактивность :) И необходимость хорошо понимать, с какого сервера мы берем софт и где он лежит.

    Второй:Можно поставить пакет dftp. Работа с ним выглядит так:

            # dftp getnew
    
    После этого происходит подключение к ftp.debian.org, и оттуда выкачивается список пакетов. Через некоторое время Вы обнаружите на экране Ваш любимый редактор (кажется, тот, который /bin/vi), в котором будет открыт файл cо списком пакетов; после каждого пакета идет его описание. Строчки, начинающиеся с #, как обычно, комментарии. Соответственно, строчки, не начинающиеся с # - имена файлов, которые мы хотим выкачать. По умолчанию не будут закомментарены только новые версии уже установленных пакетов. После выхода из редактора dftp выкачает нужные пакеты и поставит их. Hадо отметить, что ставит пакеты он разумно, например, при наличии новой версии libc она ставится первой.

    P.S.1. Все то же самое можно сделать по шагам:

                    dftp getlist
                    dftp select
                    dftp getselect
                    dftp unpack
    
    и, при желании, dftp clean, которое удалит список пакетов и установленные пакеты (не деинсталлирует их, а удалит выкачанные).

    P.S.2. Многие пакеты обновляются _без смены_ номера Debian'а. Hапример, в 1.3.1. сменились такие вещи, как XFree, документация к нему, adduser, libc итп.


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

    Сперва по патчи. Вынужден огорчить - в Debian'е что-то делают с исходниками ядра (по крайней мере в Debian'е 1.3.1) так, что патчи к этим исходникам применятся не хотят. Однако если дистрибутив у вас под рукой, то это не беда - исходники ядра можно взять оттуда, естественно не в виде .deb, а в .tgz. Если у вас в системе установлены исходники ядра из .deb (установлены они или нет можно справится у программы dselect по названию пакета kernel-source), то удалите их с помощью менеджера пакетов dpkg, например:
            dpkg --purge kernel-source-2.0.30
    
    После этого скопируйте файл .tgz с исходниками ядра в каталог /usr/src и перейдите в этот же каталог.

    Далее нужно развернуть этот .tgz, как например показано ниже:

            tar xzvf linux-2.0.30.tgz
    
    естественно, что название вашего .tgz файла может отличаться от приведенного.

    В результате должен появится каталог с названием linux-2.0.30. Теперь нужно сразу же сделать ссылку с именем linux на этот каталог:

            ln -sf linux-2.0.30 linux
    
    А вот теперь собственно займемся патчем. Патчи обычно поставляются в виде файла с расширением .gz или .dgz, словом patch (или его сокращением) и номером версии в имени файла. Например:
            patch-2.0.31.gz
    	ptch2031.dgz
    
    Важно помнить, что номер версии пачта должен быть старше номера версии исходных текстов ядра, которые вы собрались патчить не больше, чем на 1 patchlevel. Например, для данного случая мы имеем исходные тексты ядра версии 2.0.30 (то что мы разворачивали tar), значит патч должен быть версии 2.0.31. Ни версия 2.0.30 ни версия 2.0.32 не подойдут!

    Предположим, что у вас правильная версия патча - 2.0.31. Развернем его в каталоге /usr/src:

            gzip -d patch-2.0.31.gz
    
    или для другого имени файла
            gzip -d ptch2031.dgz -S .dgz
    
    В результате получится текстовый файл с таким же именем, но без расширения, который собственно готов к употреблению. Патчение ядра осуществляется командой:
            patch -p0 < patch-2.0.31
    
    для второго случая
            patch -p0 < ptch2031
    
    Должна запустится утилита patch, а на экране пробежать строки сообщения, генерируемые этой утилитой. Если вдруг вдруг утилита стала задавать вам вопросы, то либо вы что-то сделали неправильно, либо у вас кривой патч или исходные тексты ядра. Если все в порядке, то утилита завершает свою работу без каких-либо сообщений об ошибках и не задает никаких вопросов в процессе работы.

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

    Далее переходим в каталог /usr/src/linux и запускаем команду:

            make menuconfig
    
    После компиляции промежуточных файлов на экране появится интерактивное меню, с помощью которого вам нужно установить требуемую конфигурацию ядра. Описывать что означают пункты меню я не буду - если вы сами не знаете, то до самостоятельной сборки ядра вы еще не доросли. Читайте документацию или просите помочь более компетентных людей.

    После того как выбор конфигурации ядра вами закончен нужно выйти с сохранением и набрать команду:

            make depend
    
    В процессе работы происходит связывание выбранной вами конфигурации ядра с теми файлами исходных текстов, которые будут компилироваться при сборке ядра.Затем наберите команду
           make zlilo
    
    если вы используете системный загрузчик lilo. В процессе работы будет собрано ядро с именем vmlinuz и файл System.map, после чего, и ядро и этот файл будет помещены в корневой каталог ("/") и в завершении будет вызван lilo, что приведет к его автоматической переинтсаляции с параметрами, заданными в /etc/liloconfig.

    Замечу, что если у вас в корневом каталоге были такие же файлы, то они будут переименованы с расширением .bak.

    Второе замечание состоит в том, что обычно в Debian'е в корневом каталоге находятся только ссылки на файлы ядра и System.map, которые находятся в каталоге /boot. Что вам делать в этом случае (самому перенести файлы в этот каталог и переименовать/поправить ссылки или удалить эти сслыки, как и ядро и System.map из каталога /boot - рещайте сами).

    В конечном итоге у вас в корневом каталоге должны остаться либо сами файлы vmlinuz и System.map, либо ссылки на эти файлы. Теперь, если вы все-таки перенесли файлы в каталог /boot, а в корневом каталоге оставили ссылки, вы должны снова запустить lilo, командой:

             lilo
    
    На этом этап сборки нового ядра и его установки можно было бы считать законченным, НО! Осталась немаловажная часть - модули к ядру! Увы множество бед и вопросов происходит именно от них. Для того, чтобы проблем не было вы должны снова перейти в каталог /usr/src и продолжить компиляцию командами:
             make modules; make modules_install
    
    В процессе работы будут сделаны модули, для тех компонентов ядра, которые вы указали как модульные при конфигурации по команде make menuconfig, и эти модули будут проинсталлированы в каталог /lib/modules/<номер версии ядра>. При следующей загрузке будет произведено сканирование имеющихся модулей после чего их имена будут записаны в файл modules.dep в этом же каталоге.

    Внимание! Если вы решили собрать ядро этой же версии, но с другими параметрами, не забудьте удалить modules.dep иначе новые модули, которые возможно появятся после сборки ядра не будут видится системой.


    У меня есть второй винт,который зацеплен на один шлейф с первым. Какому устройству он соответствует?

    В Linux очень простая нумерация HDD. Вот буквенные обозначения:
    Master на первом IDE порту hda
    Slave на пером IDE порту hdb
    Master на втором IDE порту hdc
    Slave на втором IDE порту hdd
    Когда говорят о разделах (партициях) на каком-либо жестком диске, то к этим буквенным обозначеним добавляется цифра, соответствующая номеру раздела. Заметим, что данные номера определяют с помощью fdisk для Linux, иначе можно допустить ошибку.

    Как можно заставить работать под Linux звуковую карточку на чипсете OPTi 930xx?

    Данная карточка работает в DOS в режиме Sound Blaster Pro. Использовать ее в этом же режиме в Linux невозможно - ядро либо просто не обнаружит ее, либо будет неправильно с ней работать.

    Чтобы все-таки заставить работать эту карточку под Linux, необходимо собрать ядро с поддержкой звуковой карты Mad16 Mozard. При этом не забудьте включить /dev/dsp and /dev/audio support, а также Midi interface и FM synthesizer (YM3812-OPL3) support.

    Я настоятельно рекомендую оформить это все в виде модуля, а не жестко вставлять в ядро. Такой подход дает некоторые преимущества: можно задавать параметры к получившемуся модулю sound.o при его загрузке, а также, когда звук не нужен, просто не загружать данный модуль.

    Теперь допустим, что у вас все получилось, но при загрузке модуля очень громкий звук (или наоборот тихий), а в колонках слышны посторонние звуки при работе винчестера, передвижении мыши и нажатии кпопок на клавиатуре. Все эти симптомы указывают на то, что уровни громкости каналов выставлены неправильно. К сожалению ядро не позволяет задавать эти уровни при загрузке и вам понадобится программа-миксер. В настоящее время таких программ довольно много. Совершенно элементарную программу-миксер вы можете взять нажав сюда

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


    Почему, когда я переключаюсь из текстовой консоли в X Window и двигаю своей PS/2 мышкой X Window Server падает с сообщением: psaux: device resource is busy?

    Наверняка при этом запущен General Purpose Mouse сервер (gpm) - несмотря на правки предыдущих версий он продолжает конфликтовать с сервером X Window, если работаем с мышкой PS/2, с serial мышкой вроде бы все нормально (версия gpm 1.10).

    Еще совсем недавно я предложил бы вам просто убивать gpm перед запуском X Windows, однако буквально на днях я увидел довольно простое решение этой проблемы, которое предлагает Leon B.Kanter (2:465/148.1@Fidonet.org) и которым я спешу с вами поделится.

    Итак вам нужно добавить при запуске gpm ключ -R. Этот ключ говорит gpm перенаправлять данные поступающие от мышки в FIFO /dev/gpmdata. Это можно сделать, если запустить программу gpmconfig, зарегистрировавшись как супепользователь (root). После того как вы введете параметры, соответствующие вашей мышке, вам предложат ввести дополнительные параметры

        Do you want do add any additional arguments []?
    
    Вот на это приглашение вы и должны ввести -R. После того как gpmconfig закончит работу, вы должны перезапустить gpm. Это делается двумя командами:
        /etc/init.d/gpm stop
        /etc/init.d/gpm start
    
    Теперь вам нужно внести исправления в файл /etc/X11/XF86Config. Найдите слова Section "Pointer" и удалите все строки между этими словами и словом EndSection, а затем поместите на место удаленных строк следующие:
        Device	"/dev/gpmdata"
        Protocol	"MouseSystems"
        Emulate3Buttons
    
    Все, теперь при переключении из текстовой консоли в X Windows никаких падений X сервера быть не должно.

    При добавлении нового пользователя в систему командой adduser возникла проблема - почему-то скопировалась только одна первая строка из файлов, которые лежат в /etc/skel, а вообще-то файлы должны были скопироваться полностью! В чем дело?

    Не знаю как в остальных версиях, а в версии Debian 1.3.1 adduser содержит ошибку, которая и приводит к неправильной работе. Чтобы все стало нормально сделайте следующее:
    1. положите данную ниже заплату, которую мне любезно дал Константин Кудрин (2:5054/69@Fidonet.org) в файл adduser.diff в каталог /usr/sbin
      	 
      --- adduser.orig	Fri May 23 20:38:49 1997
      +++ adduser	Wed Sep  3 10:34:55 1997
      @@ -456,9 +456,11 @@
           elsif (-f "$fromdir/$file") {
       	open (FILE, "$fromdir/$file") || die "open: $!";
       	open (NEWFILE, ">$todir/$file") || die "open: $!";
      -
      -	print NEWFILE  || (! -s "$fromdir/$file") 
      +        while(  )
      +        {    
      +	print NEWFILE $_ || (! -s "$fromdir/$file") 
       	    || die "print $todir/$file: $!";
      +        }
       	close FILE;
       	close(NEWFILE)  || die "close $todir/$file ";
      
    2. перейдите в этот каталог и введите команду
                 patch < adduser.diff
      

    Почему, когда groff форматирует текст с ключем -Tlatin1 вместо символов переноса ("-") видны какие-то прямоугольники? Как сделать, чтобы все было нормально?

    На мой взгляд дело в кривых таблицах для groff, где авторы просто допустили ошибку. Впрочем все довольно легко поправить.
    1. Идем в каталог /usr/share/groff/font/devlatin1
    2. Заходим поочередно редактором в каждый из находящихся там файлов, которые соответствуют различным шрифтам, кроме файла DESC, где задано описание (это файлы B, BI, I, R).
    3. Находим в этих файлах строку
                           char173
      
      и удаляем ее.

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

                  /var/catman/cat*
    
    и других каталогах, находящихся в /var/catman.

    А почему у меня системное время какое-то левое? Разница с тем, что должно быть составляет часы. Время на часах в CMOS'е нормальное.В чем дело?

    Тут вы должны вспомнить как вы устанавливали дистрибутив. В один прекрасный момент вам был задан вопрос:
        Is you clock set to GMT (y/n)?
    
    Вы, наверное, особо не задумываясь ответили "y", хотя в переводе на русский вопрос звучал бы так:
        Ваши часы установлены по времени GMT?
    
    Время GMT - это время Гринвичского меридиана. Местное время может вычислятся с помощью него прибавлением или вычитанием количества часов, соответствующих вашему часовому поясу. Например в городе Перми, разница между местным временем и GMT составляет плюс 5 часов, т.е. местное время - это GMT+5. Вам, наверное, будет удобнее ориентироваться на московское время, это GMT+3.

    Вернемся к сути вопроса. Чтобы время показываемое системой командой date было нормальным, вы можете или поставить часы в CMOS'е на время GMT или сказать системе, чтобы она не производила коррекцию времени на местное по временной зоне, добавляя ее к времени в CMOS'е.

    Первый способ самый простой. Для него всего-то нужно при перезагрузке машины зайти до загрузки в Setup и поправить там время на GMT. Однако не всех устраивает такой способ, хотя он наиболее правильный. Это обусловлено тем, что если у вас на машине стоят другие операционные системы, то они не будут правильно показывать время. К счастью есть и второй способ.

    Чтобы сказать системе, что не нужно производить коррекцию времени в CMOS'е согласно временной зоне, придется поработать руками. Дело в том, что существующий сценарий установки временной зоны tzconfig после инсталляции системы не позволяет задавать или убирать коррекцию времени. Для того чтобы ее убрать нужно:

    В этом файле вы должны найти строчку вида

        GMT="-u"
    
    и заменить ее на строчку
        GMT=""
    
    Тогда после перезагрузки машины время будет нормальным.
    Жду ваших вопросов для включения в FAQ