Debian FAQ.

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

Patch level 9, 01 февраля 1997, 22:00.


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

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

Замечания

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

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

    Косте Кудрину (2:5054/69@Fidonet.org) за патч к вопросу 2 в разделе 6 и за моральную поддержку.
    Алексею Выскубову (2:5030/5.914@Fidonet.org) за справедливую критику и вопрос 4 в разделе 4.

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

      1. Общие вопросы по дистрибутиву
    1. Что такое Debian?
    2. Чем отличается Debian от других дистрибутивов Linux?
    3. Какими способами можно установить Debian?
    4. Какая версия Debian на сегодня самая свежая?
      2. Русификация
    1. Что нужно сделать, чтобы в текстовом режиме можно было читать и писать по русски?
    2. Как сделать так, чтобы в моем mc (Midnight Commander) были видны русские буквы и чтобы я мог их там набирать, а то лезет всякая ерунда?
    3. Как получить возможность вводить и читать русские буквы в X Window?
    4. Как заставить писать по русски мой любимый редактор joe?
    5. Захотел прочитать текстовый файл на русском языке, который я сделал в DOS'е, а там русских букв нет, вместо них почему-то псевдографика. Каким образом можно прочитать текстовые файлы из DOS'а?
    6. Почему у меня программа для работы с электронной почтой elm говорит Unknown charset, когда я пишу письма на русском языке? Как с этим бороться?
      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. У меня есть второй винт, который зацеплен на один шлейф с первым. Какому устройству он соответствует?
      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?

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

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

    Вышла официальная версия Debian 1.3.1

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

    Для этого вы должны получить права суперпользователя (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---------------------------------
    
    Теперь вы должны сделать ссылки на этот файл из каталогов, содержащих сценарии, выполняемые при установке уровня запуска (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.


    Как получить возможность вводить и читать русские буквы в 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.

    Как заставить писать по русски мой любимый редактор 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. Расположение русских букв в них совпадает, но отличается расположение символов псевдографики. Так что если у вас при перекодировке возникнут проблемы с псевдографикой, то...

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

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

    А почему, когда я работаю под 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. Можно, если вы меня научите как, ведь после pppsetup, соединение с помощью diald установить не удается (как впрочем и без pppsetup).


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

    Добавлять командой 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, иначе можно допустить ошибку.

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

    Наверняка при этом запущен General Purpose Mouse сервер (gpm) - несмотря на правки предыдущих версий он продолжает конфликтовать с сервером X Window, если работаем с мышкой PS/2, с serial мышкой вроде бы все нормально (версия gpm 1.10). Чтобы избежать падения сервера X Window вы должны перед запуском X Window выгрузить gpm. Чтобы вам не пришлось делать этого каждый раз руками предлагаю добавить соответствующие строки в файл startx, который находится в каталоге /usr/X11R6/bin. Добавьте в начале файла строчку
    	/etc/init.d/gpm stop
    
    и в конце файла строчку
       
    	/etc/init.d/gpm start
    
    Не спорю, что это не самый лучший способ, так как в момент работы X Window в текстовой консоли мышка не будет доступна. Я обнаружил, что при переключении X Window сервер не падает, если выдержать паузу в 2-3 секунды. Однако я сомневаюсь, что вам это пригодится.

    При добавлении нового пользователя в систему командой 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 после инсталляции системы не позволяет задавать или убирать коррекцию времени. Для того чтобы ее убрать нужно переместится в каталог /etc/init.d и отредактировать в любом редакторе файл boot.

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

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