www.linux.org.ru

Linux мини-HOWTO, часть 2.

Данный текст предназначен для тех, кто решил перейти в своей повседневной работе на Линукс или делает первые шаги в нем. Для тех, кто уже что нибудь читал о 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 можно найти на http://www.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 в ядре.


    Все комментарии и пожелания направляйте на ivanp@dsbw.ru