Linux General HOW-TO, Part 2
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:DOSHIMEM.SYS
DOS=HIGH
FILES=40
[emu]
DEVICE=C:DOSEMUEMS.SYS 'Драйвер XMS+EMS
DEVICEHIGH=C:DOSEMUCDROM.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: LINUXFS 'Теперь диск 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:DEVLP1 (У меня на 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
|