Linux General HOW-TO

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

Данная же часть большей частью предназначена для тех, у кого есть уже как минимум двухнедельный обыт работы под линуксом. На данном этапе вы уже должны знать что такое symbolic link, как пользоваться chown, chmod, как монтировать/размонтировать файловые системы и т.д. Если вы этого не знаете почитайте _ЛЮБУЮ_ книжечку про UNIX или ищете UNIX-FAQ, который я также сейчас пишу… Что будет закончено первым: этот текст или FAQ – неизвестно.

В данной части рассматриваются вопросы:

  • 1. DOSEMU, WABI, etc… То есть эмуляция других сред под Линуксом.
  • 2. Компиляция программ под Линуксом: FAQ для начинающих.
  • 3. Организация входного модемного траффика, Входной EMSI, организация BBS. Lost in time…. :((
  • 4. Компиляторы, отличные от gcc, другие языки под Линуксом, Java Development Kit.


    Следующие части, видимо, большей частью будут посвящены работе с
    Линуксом в Интернет или локальной сети. Если будет предложена тема,
    достойная рассмотрения в данном документе, она также туда войдет.

    Ожидаемые пополнения в следующей части:

  • 1. IP-Masquerade, IP-Alias и т.д. Соответствующие выжимки из
    официальных HOWTO в удобно перевариваемом виде на русском. Мои комментарии
    на основе реального опыта работы с этими фичами.
  • 2. Настройка Apache HTTP. Virtual WWW. Настройка DNS и некоторых
    других сетевых сервисов.
  • 3. Ядра. Стабильные и development… Глюки и преимущества… и так
    далее. Что нужно знать при активной работе с разными ядрами.
  • 4. Администрирование Линукса(основы), приоритеты, уровни доступа,
    мультипользовательская работа в сети. Введение в UNIX-security.
  • 5. IPX и Линукс, Работа Линукса как файл-сервера в окружении Novell.
  • 6. Работа Линукса в Сети в окружении Windows’95,NT,3.11, NETBIOS.

    Если у кого есть предложения по расширению сего документа, то они
    принимаються на 2:5020/630.60@fidonet, 909:5020/8@mswnet, ivanp@dsbw.ru

    Это только мини-HOWTO. Ко мне приходит огромное количество вопросов,
    связанных с Линуксом. Многие из них будут попадать в мой личный FAQ, который
    будет опубликован сразу, как наберет весу чуть поболее. _ЛЮБЫЕ_ вопросы по
    Линуксу приветствуются. Без битвы не отдам ни единого человека в царство
    Билли. В день, когда я начал написание второй части данного документа я
    узнал, что в Билли запустили тортом. Вот до чего доводит плохо написанный
    софт… :)

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

    Глава 1.

    DOSEMU, WABI и т.д. Эмуляция других сред под Линуксом.

    Надо сразу сказать, что все эмуляторы, да и весь софт вообще делится
    на два класса – свободный и коммерческий. Сначала я опишу DOSEMU, потом
    WABI версии 2.2. Далее я расскажу о тех эмуляторах, о существовании которых
    мне известно.

    DOSEMU – свободный продукт. Делиться на два основных потока -
    стабильные версии и development версии. Все то новое, что признано народом
    _НЕ_ глючным, перекочевывает в стабильную версию. Самая последняя версия
    всегда доступна в недрах ftp://ftp.sunsite.unc.edu.
    Новая версия появляеться как правило раз в 2-3 недели. Лично у меня стоит
    достаточно древняя октярьская версия под номером 0.67.13. На ее основе и
    будет развиваться наше наступление :). Для начала вам надо все это дело
    куда нибудь сложить.
    Рекомендую положить или в /usr/src или в /usr/local/src. При сборке любого
    продукта сначала почитайте README, HISTORY, Changes и остальные подобные
    файлы. Они помогут избежать 70% возникающих вопросов. Как и в случае с xrus
    вы найдете в каталоге с ДОСЭМУ скрипт configure. Но это более умный скрипт.
    Запустите его с ключом –help и почитайте. После этого запустите его с
    нужными вам параметрами. Это сконфигурит ДОСЭМУ под требования вашей
    системы. Затем просто набираете ‘make’. По идее, все должно скомпилиться на
    ура. Если нет, у вас просто могут отсутствовать необходимые библиотеки.
    Например, могут стоять .h файлы от Иксов, но сами Иксы с их библиотеками
    отсутствовать. Если все собралось ‘на ура’, говорим ‘make install’. Сам
    досэму у нас уже собран и стоит. Главная проблема не в этом. Главная задача
    - _ГРАМОТНО_ его настроить. Пример конфига лежит в etc/config.dist, но я
    рекомендую воспользоваться утилиткой setup-dosemu из дистрибутива. После
    генерации конфига его необходимо поправить. Я думаю, что вам надо будет
    сказать ‘dos’ и посмотреть, на что он ругнеться. Соответствующее место и
    подправить в /etc/dosemu.conf. Если вы не один работаете на линуксе, но
    рекомендую компилить без параметра –enable-runasroot в целях безопасности
    системы в целом, а также создать файлик /etc/dosemu.users, где перечислить
    пользователей, которым разрешаеться работать с досэмой. Если вам пофигу на
    security, было бы неплохо добавить опцию ‘secure off’ в /etc/dosemu.conf,
    дабы разрешить запуск DOS4GW приложений и им подобных. Для нормальной работы
    с ДОСЭМУ вам понядобится несколько специфических утилит (EMS драйвер,
    MOUSE-драйвер, утилитка для подключения Linux раздела как буквы ДОС и т.д.),
    дежащие по умолчанию в src/commands/precompiled. Вам необходимо создать на
    ДОС разделе некую директорию, в которую эти фалы и поместить. У меня они
    лежат на C:\DOSEMU\. После этого вам необходимо создать соответствующие
    config.sys и autoexec.bat. Если вы планируете испльзовать CDROM под
    эмулятором, то /dev/cdrom должен указывать на соответствующее устройство.
    Даю свои config/autoexec для того, чтобы вы поправили их под свои нужды.

    — Start Cut: dosemu-config.sys —

    [MENU]
    menuitem=dos,Standart DOS
    menuitem=emu,DOSEMU Template
    [dos]
    DEVICE=C:\DOS\HIMEM.SYS
    DOS=HIGH
    FILES=40
    [emu]
    DEVICE=C:\DOSEMU\EMS.SYS ‘Драйвер XMS+EMS
    DEVICEHIGH=C:\DOSEMU\CDROM.SYS ‘Драйвер CDROM
    DOS=HIGH
    FILES=40
    LASTDRIVE=Z ‘Обязательно нужно !
    — End Cut: dosemu-config.sys —

    — Start Cut: dosemu-autoexec.bat —

    @ECHO OFF

    PATH D:\WINDOWS;C:\;C:\DOS;C:\UTILS;C:\DN;C:\DOSEMU
    goto %config%
    :dos
    lh rk
    goto end
    :emu
    LH rk
    LH mscdex /d:mscd0001 ‘Обратите внимание… Под этим именем известен
    ваш CDROM
    LH EMUMOUSE R ‘Драйвер мыши перезапускаем. В /etc/dosemu.conf не
    забудьте сказать ‘internaldriver’
    LH LREDIR G: LINUX\FS\ ‘Теперь диск G: будет отражать содержимое
    корневой файловой системы Линукса.
    LH DN ‘Я думаю, понятно.
    :end
    — End Cut: dosemu-autoexec.bat —

    Данный вариант достаточно унифицирован под любые задачи. Не советую
    пускать из под Эмулятора _НИКАКОЙ_ вариант форточек. Для этих целей есть
    WABI. О ней позже. По поводу опции sb_emu в /etc/dosemu.conf… В той
    версии, что у меня есть, она не работает. Вернее, при работающей
    sound-драйвере в Линуксе Эму загружаеться, игры и проги карточку видят, но
    не более. Издавания звука я еще не добился. Я это считаю одним из глюков
    той development версии Эмулятора, которой я пользуюсь. Скорее всего в новых
    версиях это пофиксено.

    Если вы собираетесь использовать в ДОСЭМУ дос-разделы с тех жестких
    дисков, где нет разделов с Линуксом, то для большей скорости работы советую
    поключать их в ДОСЭМУ опцией ‘wholedisk’, а не опцией ‘partition’. Это
    позволит вам даже переразбивать диски fdisk’ом и форматировать их, и даже
    запускать NDD и подобные низкоуровневые утилиты. Я не рекомендую ставить эту
    опцию при работе с теми жесткими дисками, где есть Линукс по одной причине:
    ДОСЭМУ – это всегда development продукт. И заранее неизвестно про возможные
    глюки в этой области. Лично мне менее болезненно увидеть кореженый ДОС
    раздел, а не Линуксовый… :) Количество памяти в конфигах ДОСЭМУ можно
    выставлять какое угодно… Желательно, конечно, не вылезать за размеры
    реальной оперативки… :)

    WABI. Для начала: WABI – коммерческий продукт, написанный Sun
    Microsystems… Поэтому по всем обнаруженным глюкам – туда, не забудьте
    номер вашей лицензии… :) Итак, у нас есть архив WABI – в виде .cpio (Во
    всяком случае у меня). Вам также понадобиться дистрибутив Windows 3.x (Я
    рекомендую Windows 3.1 Rus), все .fon шрифты от уже установленной версии.
    Все это заранее положите в доступное место. Итак, man cpio, разархивируем
    архив, запускаем Иксы, из xterm’а пускаем Инсталлятор WABI, слушаем ее матюки
    по поводу отсутствия файла-лицензии. Берем этот файл и кладем его туда, где
    она его ищет. Опять хапускаем INSTALL-wabi. Указываем, где лежит дистрибутив
    MS Win. Она долго думает, все сетупит. Сама WABI поставлена. Главная проблема
    здесь, как и в ДОСЭМУ, -сконфигурить. На мой взгляд – единственная вещь,
    которую необходимо конфигурить – русские шрифты. Итак. В первую очередь
    берем и замещаем все шрифты в ~/wabi/windows/system/ на те, .fon шрифтинусы,
    которые мы заранее приготовили. Потом лезем в ~/wabi/windows/system.ini и
    win.ini. Смотрим там на все большими, широко открытыми глазами, и
    переправляем все ссылки на .TTF шрифты. Она любит вместо .ttf в имени фала
    поставить что-нибудь еще. :)) В результате у вас там должен быть списочек
    типа:

    —Begin Cut: win.ini.fonts.sample —

    Courier New (TrueType)=cour.ttf
    —End Cut: win.ini.fonts.sample —

    Если после этих манипуляций и телодвижений русского текста вам так
    тольком и не видно – копайте дальше, но уже на предмет fixed-fonts (*.fon).
    WABI любит по дефолту ставить некий свой фонт, но делает это с вероятностью
    50/50. Ваша задача поставить на место этого Latin-Only фонта что-нибудь типа
    vgafix.fon. Ладно. Одна задача решена. Теперь раскладка клавиатуры…
    Вариантов три:

  • 1. xrus c раскладкой под Win-1251.
  • 2. man xmodmap.
  • 3. Некий Русификатор Win 3.x со своим переключателем. Я работаю в
    третьем варианте…:) Проблема три – принтер. Ввиду того, что встроенные
    драйвера принтеров мне запустить не удалось я делаю так: ставлю _РОДНОЙ_
    дравер из пакета MS Win 3.x, и говорю ему печатать в файл. Как файл
    указываю R:\DEV\LP1 (У меня на R: лежит содержимое корня… ) :)). Изврат,
    но работает. Изначальный вариант WABI будет работать _ТОЛЬКО_ при условии,
    что у вас X11 работают в 8-битном режиме цветности. Если вам требуюется
    более 256 цветов, то ищите Upgrade в недрах ftp://ftp.caldera.com.

    Что касаеться эмуляторов других сред – мне известно о наличии
    более-менее нормальных эмуляторов ZX Spectrum, Amiga, Atari, Mac под
    Линуксом. Ввиду того, что я их не использую, я не буду рассказывать о них,
    дабы не пудрить мозги без достаточных оснований для этого. Ищите,
    компилируйте, ставьте, экспериментируйте… Учитывайте, что 100%-ной
    эмуляции не бывает _НИКОГДА_.

    Глава 2.

    Компиляция программ под Линуксом, FAQ для начинающих.

    Итак. Несколько вводных слов… У вас появилась некая прога под Линукс в исходниках… Первым делом, понятное дело, разархивируем ее в отдельный каталог в районе /usr/src, /usr/local/src… _ОБЯЗАТЕЛЬНО_ читаем все фалики типа README, Changes, etc. Это позволит избежать кучи вопросов по компиляции, установке, настройке данного пакета. Я здесь рассматриваю только тот софт, который написан под Линукс. Портирование сырцов под Линукс – тема отдельного мануала, который будет еще ну Очень не скоро… :) Ввиду того, что как правило файликов с сырцами N, а из всего этого будет скомпилировано 2-3 бинарника, существует такой файл, как Makefile. В нем описаны необходимые манипуляции для компилятора, также зачастую там же определяються некоторые параметры готовых бинарников. Этот файл есть в 90% случаев. В остальных – есть скрипт configure, который сам определяет, что нужно в данном конкретном контексте, и создает соответствующий Makefile… Перед тем, как что-либо компилировать, загляните в Makefile, там может оказаться много полезной информации. Также не вредно подправить при наличии такие фалй как setup.h, config.h и так далее. Сборкой всего барахла на основании Makefile занимаеться прога под названием make. По умолчанию она пытаеться брать инфу из Makefile, потом MAKEFILE и makefile. Если у вас несколько разных Makefile’ов, то укажите конкретно нужный вам опцией -f. То есть ‘make -f MyMakefile.Test’. После прочтения всех док, редактирования конфигов компилятора смело набираете make и смотрите…:) Итак, сам FAQ.

    Q: ААаааа… У меня при компиляции все вывалилось с криками о синтаксисе где-то в нутрях исходников….. ЧТО ДЕЛАТЬ ?!?!?!

  • A: Вешаться. Если вы знакомы с Ц, то попробуйте указать опцию -Wall (Warnings – все) в Makefile компилятору, и пересобрать… Криков будет поболее, но и легче дебугить. Потом лезете в место, где это все было обнаружено, и пытаетесь чуток подправить… :) Как правило источниками такого глюка являеться или переменная, которую пытались использовать, заранее не определив и т.д. Если вы _НЕ_ знакомы с Ц, то знакомьтесь, а пока вешайтесь. Если прога была написана для *NIX в общем, а не для Linux, то также возможны подобные глюки. Например, последовательность параметров нескольких функций изменена в Линуксе. Попробуйте сказать ‘man имя_процедуры’.Q: А такой крик: gcc: Internal compiler error: programm cc1 got fatal signal 11

    A: Это _НЕ_ баг. Скорее всего у вас траблы с железом. FAQ по SIGSEGV можно найти на bitwizard.nl/sig11/
    Q: У меня в Makefile несколько разделов. Что это за разделы ?
    A: Сборка проги может состоять из нескольких этапов. Например, подготовка к сборке должна быть сделана с помощью ‘make depend’. Если прога состоит из нескольких кусков, то возможно собирание отдельного куска с помощью ‘make имя_куска’. Также достаточно часто можно встретить такую вещь, как ‘make clean’ – возвращение к исходному состоянию – потирание готовых бинарников и об’ектных файлов. Почти всегда есть ‘make install’ – установка готовых бинарников в заранее определенное место, установка на них необходимых uid и gid.

    Q: Прога собралась, поставилась… Но где взять хотя-бы примеры конфигов для нее ?

    A: Копайте недра каталога с исходниками, обычно пример включен в пакет. Если с программой идут man-pages, то попробуйте сказать ‘man имя_Проги’. Например, с SAMBA идет отдельный man-page на ее конфиг, и он по размерам превышет размер бинарников… :)
    Q: У меня все собралось на ура, но при попытке запустить все сваливаеться с SIGSEGV (Segmentation fault, core dumped)
    A: Скорее всего это баг в проге. Если вы уверены, что прога написана правильно, то:
  • 1. Проверьте, что за бинарник вы пускаете: ‘file /path/to/your/binary/file/program’. В output обязательно должно присутствовать слово executable.
  • 2. Проверьте, не указали ли вы случайно параметр -с при окончательной сборке.
  • 3. Если все это не помогает, то попробуйте выяснить, что ей не нравиться. Может программа не может найти необходимый ей библиотек. RTFM ‘man strace’. Если проблема с Либами – ‘man ld.so’, ‘man ldconfig’
  • Глава 4.

    Компиляторы, отличные от gcc, другие языки под Линуксом, Java Development Kit.

    Существует уйма различных компиляторов для Linux. Начнем с компиляторов C. Их использование дает вам преимущество по стравнению с gcc по различным областям: от обего повышения скорости работы биарника, до поддрежки специфичных комманд того-же Pentium-II. Распространяються обычно в виде исходника. Обязательно перед установкой прочтите файлики Changes, etc… Это основное правило компилирования или установки _ЛЮБОГО_ пакета. После установки рекомендую скомпилировать несколько простейших прог-тестов, дабы определить, насколько установленный вами компилятор отвечает вашим требованиям.

    Вся поддержка других языков делится на 2 класса: это компиляторы, выдающие бинарники, и интерпретаторы, которые используються для создания скриптов на том или ином языке. Ярчайшим представителем второго класса являеться PERL. Как правило, они все идут в виде исходников, и вы при желании можете добавить/изменить комманды и/или их синаксис. В чем их различия ? Большей частью в количестве понимаемых инструкций и в некотором изменении синтаксиса.

    JDK. Java Development Kit распространяеться в виде уже готовых бинарников. Лезьте за ним на ftp://ftp.sun.com. Я рекомендую разархивировать все енто дело куда-нибудь в /usr/jdk-x.x.x, и сделать связку этого каталога на /usr/jdk. проставьте после этого /usr/jdk/bin в PATH в /etc/profile. Также не забудьте проставить каталог /usr/jdk/lib/i586/green_threads в /etc/ld.so.conf.

    Если вы планируете пускать Java-бинарники, не забудьте врубить поддрежку Java в ядре.