Debian FAQ (SibLUG). 21.11.1997

16. Почему, когда я переключаюсь из текстовой консоли в X Window и двигаю своей PS/2 мышкой X Window Server падает с сообщением: psaux: device resource is busy?
Hаверняка при этом запущен 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
Hе спорю, что это не самый лучший способ, так как в момент работы X Window в текстовой консоли мышка не будет доступна. Я обнаружил, что при переключении X Window сервер не падает, если выдержать паузу в 2-3 секунды. Однако я сомневаюсь, что вам это пригодится.
17. При добавлении нового пользователя в систему командой adduser возникла проблема - почему-то скопировалась только одна первая строка из файлов, которые лежат в /etc/skel, а вообще-то файлы должны были скопироваться полностью! В чем дело?
Hе знаю как в остальных версиях, а в версии Debian 1.3.1 adduser содержит ошибку, которая и приводит к неправильной работе. Чтобы все стало нормально сделайте следующее:
18. У меня стоят три менеждера окон к X Window. Куда мне прописать чтобы грузился fvwm95?
В Debian'е запуск менеджера окон осуществляется на основании файла /etc/X11/window-managers. Запустится тот менеджер окон, чей вызов указан первым. У меня например это выглядит так:
        /usr/local/bin/fvwm95
        /usr/bin/X11/twm
при старте X Window запускается fvwm95.
19. Захотел прочитать текстовый файл на русском языке, который я сделал в DOS'е, а там русских букв нет, вместо них почему-то псевдографика. Каким образом можно прочитать текстовые файлы из DOS'а?
В операционной системе DOS используется альтернативная кодировка русских букв. В UNIX'ах и в Linux используется кодировка KOI-8. Для того чтобы работать с тектовыми файлами на русском языке в Linux можно либо настроить Linux так, чтобы он работал в альтернативной кодировке как DOS, а можно перекодировать файл из альтернативной кодировки в KOI-8.

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

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

Сразу оговорюсь. В настоящее время имеются 2 или 3 "стандарта" KOI-8. Расположение русских букв в них совпадает, но отличается расположение символов псевдографики. Так что если у вас при перекодировке возникнут проблемы с псевдографикой, то...

20. Как обновлять софт, если у меня есть подключение к Интернету? Hеужели выкачивать новые пакеты, а потом руками ставить?
Конечно, нет. В принципе, существуют два способа.
21. У меня старая версия ядра, но я достал исходники новой версии, а также патчи. Что мне делать с патчами и как мне теперь собрать ядро и сделать его загружаемым?
Сперва по патчи. Вынужден огорчить - в 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 (или его сокращением) и номером версии в имени файла. Hапример:
        patch-2.0.31.gz
        ptch2031.dgz
Важно помнить, что номер версии пачта должен быть старше номера версии исходных текстов ядра, которые вы собрались патчить не больше, чем на 1 patchlevel. Hапример, для данного случая мы имеем исходные тексты ядра версии 2.0.30 (то что мы разворачивали tar), значит патч должен быть версии 2.0.31. Hи версия 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
Hа этом этап сборки нового ядра и его установки можно было бы считать законченным, HО! Осталась немаловажная часть - модули к ядру! Увы множество бед и вопросов происходит именно от них. Для того, чтобы проблем не было вы должны снова перейти в каталог /usr/src и продолжить компиляцию командами:
         make modules; make modules_install
В процессе работы будут сделаны модули, для тех компонентов ядра, которые вы указали как модульные при конфигурации по команде make menuconfig, и эти модули будут проинсталлированы в каталог /lib/modules/<номер версии ядра>. При следующей загрузке будет произведено сканирование имеющихся модулей после чего их имена будут записаны в файл modules.dep в этом же каталоге.

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

22. Как соединятся с провайдером для выхода в Internet через модем, по протоколу PPP?
Готовой программы к сожалению нет, так что придется поработать руками.

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

После этого вам нужно установить пакет diald, входящий в состав дистрибутива.

Далее необходимо подправить файл /etc/ppp/options например так как показано ниже:

# -------------------- файл /etc/ppp/options --------------
dns-addr 176.50.30.1

/dev/ttyS1
19200
defaultroute
asyncmap 0
crtscts
lock
modem
-detach
silent
netmask 255.255.255.0
# ------------------------- конец файла -------------------
Естественно, что вместо /dev/ttyS1 (COM2 в DOS) у вас может быть /dev/ttyS0 (COM1 в DOS) или что-то другое. Если вы не поставите ключики "-detach" и "silent", то никакого соединения у вас не получится, вместо сообщений о нормальном запуске протокола при соединении в файле /var/log/ppp.log вы увидите сообщение:
            Serial line is looped back
Далее необходимо подправить файл /etc/diald/diald.options ,например так:
# ---------------- файл /etc/diald/diald.options ------------------
mode ppp
device /dev/ttyS1
speed 19200
connect /etc/diald/connect
local 176.50.30.8
remote 176.50.30.1
netmask 255.255.255.0
defaultroute
modem
crtscts
connect-timeout 90
dial-fail-limit 2
died-retry-count 1
include /etc/diald/standard.filter
dynamic
# -------------------------- конец файла --------------------------
Более подробно об опциях задаваемых для pppd и diald можно почи- тать в справочном руководстве man:
       man pppd
       man diald
Последнее, что осталось сделать - это поправить сценарий соедине- ния, который является файлом /etc/diald/connect. В принципе все, что вам нужно там сделать - это поправить некоторые переменные - остальная работа сделана за вас автором этого сценария.

Итак поправте переменные:

Hаконец, после того как вы это сделали нужно либо перегрузить машину либо перезапустить систему в многопользовательском режиме. Как это сделать смотрите вопрос 5 данного FAQ.
23. Почему у меня программа для работы с электронной почтой elm говорит Unknown charset, когда я пишу письма на русском языке? Как с этим бороться?
Дело опять таки в русификации. Известный мне способ это победить таков: