1. Introduction:
Daddy, what da fuck all this shit is about?
Linux corner, huh? Похоже, это про UNiX. Так точно, про него родимого.
Данный раздел HaRm'a посвящен этой kick-ass системе и различным аспектам,
связанным с ее использованием. Возможно, здесь появятся и статьи про FreeBSD,
как еще одну мощную PC-UNiX систему. Статьи не претендуют на полноту и
абсолютную точность содержанию, они не являются единственно правильными
вариантами решения проблем. Как говорится, No warranties.
Ok, если ты решил прочитать эту рубрику, то ,вероятно, у тебя уже
установлен Linux или ты собираешься это сделать. Одну вещь я хотел бы сразу
сказать: если ты считаешь себя UNiX/LiNUX wizard'ом, то, скорее всего,ты не
найдешь здесь много интересного для себя, в таком случае почему бы тебе не
попробовать написать что-нибудь интересное для других и прислать свою статью
в редакцию HaRm'a ? Если ты недавно начал работать с этой замечательной
системой, то здесь ты найдешь несколько интересных хинтов, которые, возможно,
сделают твою жизнь легче. По крайней мере,я на это надеюсь :)
Часть материалов основана на различных FAQ'ах, HOWTO, статьях из Linux
Gazette и на собственном скромном опыте. Если эта рубрика найдет своих
почитателей, то она станет постоянной. Так что пишите письма.
2. For beginners:
- Daddy, why should I use Linux? I love Windows.
- Do it or I'll devour your empty brains...
2.1 Что такое Linux? Я не буду писасть стандартные фразы из FAQ'ов про
то, что это Unix-clone система, разработанная Linus Torvalds'ом и тасячами
людей по всему миру,и так далее в таком стиле. Linux - это просто еще одна
операционная система. Пытливый читатель спросит меня: "Так какого сакса мне
нужна еще одна система? Я думал это такое приложение для Windows'95. У меня
стоит Windows'95-она такая красивая и все умеет." Если у тебя возникли такие
мысли, то вообще странно, что ты читаешь HaRm... Если нет, то с тобой все Ok
:)
Ладно, если коротко, Linux - это Unix для Intel-PC. Несколько важных
вопросов, которые возникают при желании установить новую операционку это:
- Какое железо ей нужно
- Какие девайсы она поддерживает
- Как много для нее написано софта
- Есть ли поддержка Dos/Win
1. Железо - первая версия Unix'a, если я не ошибаюсь, занимала 11 Кб. С
тех пор требования немного повысились. Сейчас, чтобы побаловаться с Linux'ом
потребуется 386, 2 Мб RAM и флоп. Для начала неплохо. Естественно, что с
такой конфигурацией много не сделаешь. Реально можно работать на четверке с
8-ю метрами. Чтобы валяться от радости хорошо бы иметь P100/32/560/2. Обычная
конфигурация в наше время.
2. Девайсы - поддерживается большинство, так сказать, "обычных" девайсов
:) Как написано на боксе со Slackware'96 : Поддерживается большинство Intel
PC железа, все CD-ROM'ы, sound карты, ethernet и мыши. Естественно, что чем
экзотичнее девайс, тем меньше вероятнность его поддержки, однако драйвера для
этих девайсов переодически появляются и их число постоянно растет. Кроме
того, Linux поддерживает symmetric multi-processing ( до 16 процов ) Есть
ядра заточенные под 486, Pentium и Pentium Pro.
3. Софт - софта написано много. Как-никак, Unix'у уже пошел 3-й десяток.
Особенно приятно в Unix'ах то, что люди, пишушие софт,не зажимают исходники,
а если учесть тот факт, что почти все пишется на С, то проблем с софтом
практически нет. Если чего-то нет, то это переносится с других платформ.
Есть такая вещь, как Linux Software Map - список известного софта,
работающего под Linux'ом. Не очень свежая версия которого занимает у меня
1.6 Мб. Этот список постоянно обновляется.
4. Поддержка Dos/Win - если все, что тебе нужно - это набивать текста в
WinWord'e, то скорее всего, Linux тебе просто не нужен. Логичнее для этого
использовать Windows. Существует эмулятор Windows для Linux/X-window, (Wine),
но он находится в довольно зачаточном состоянии,да и сама мысль работать с
Win-приложениями под Linux'ом мне кажется кощунственной :) Насчет поддержки
ДОС. Есть неплохой эмулятор dosemu. Под ним будут работать большинство
досовский прог. Даже некоторые игрушки. Кстати, об игрушках. Под Linux'ом
есть Doom и Quake :)
2.2 Installation:
- Daddy, how do I install Linux ?
- As usual, sucker...
Инталяция Linux'a не представляет особых сложностей. Конечно, если ничего
кроме "супер-современной мощной системы" Windows'95 ты в своей жизни не
ставил, а сочетание букв 'fdisk' вызывает у тебя панический ужас, но ты все
же решил поставить Linux ( what for? ), то скорее найди человека, который это
уже сделал и пусть он сам мучается.
Процесс инсталяции не особенно отличается в существующих поставках
Linux'a. Я буду рассказывать про SlackWare'96. Данная поставка представляет
из себя бокс с 4-мя дисками. Один инсталяционный, на других содержатся копии
Linux архивов с ftp site'ов и sunsite.unc.edu и tsx11.mit.eu.
( Да, я купил себе Linux, потому как считаю, что лучше иметь родной бокс,
чем пропить эти же деньги :)
Для этой поставки есть два варианта установки. Бездисковая ( прямо с
сидюка ) и с двумя загрузочными дисками. Первый вариант у меня не пошел,
поэтому я бы рекомендовал второй.
Для инсталяции потребуется 2 диска на 1.44. Запускаем ( лучше из ДОС'a )
view.exe. Выбираем директорию bootdsks.144/ Дальше, если на машине установлен
SCSI-контроллер выбираем директорию scsi-bat/ иначе ide-bat/. Затем надо
выбрать ядро в зависимости от железа ( все ядра поддерживают IDE/CD-ROM'ы),в
основном это относится к не-IDE CD-ROM'ам. У меня стоит Sony CDU 31/33a ,
поэтому я выбрал себе ядро cdu31a.i. Дальше вставляем диск и ждем пока на
него будет перенесено ядро.
После этого необходимо сделать root-disk. Выбираем директорию rootdsks/
Здесь надо отметить, что Linux можно ( читай "нужно" ) ставить в
отдельный раздел, также необходимо отвести еще один раздел для свопа. Но его
(Linux) можно поставить и на существующий FAT раздел. В результате чего на
диске получится директория \LINUX в которой и будет находится вся система.
После чего Linux можно загружать из ДОС'a ( какой ужас :) при помощи
loadlin.exe. Такой тип инсталяции называется ( я называю :) UMSDOS. Но сразу
предупреждаю, что это только для крайнего случая. Нормально работать можно
лишь при установке на родную файловую систему.
Так вот, нам нужно выбрать root-disk. Если не заниматься ерундой с UMSDOS
и если не нужна поддержка PCMCIA ethernet карт, то нужно выбрать COLOR.GZ.
Вставить диск и ждать пока он сделается.
Теперь, когда диски готовы, надо подумать о свободном месте :) Хотя об
этом думать нужно всегда, но теперь это особенно важно. Официально
минимальное требование к диску - 40 Мб. Понятно, что это совершенно
несерьезно. Кроме того, потребуется еще место под своп. Миниимальный
рекомендуемый размер - где-то 32 Мб. Я себе сделал 50. Это для свопа. Для
более-менее полной инсталяции я бы посоветовал отвести раздел порядка 300 и
более Мб.
Ставить Linux можно на любой физический диск. Теперь, когда мы
определились с местом, надо загрузиться с первой дискеты. На экране появится
довольно много диагностической информации. После сообщения VFS: insert root
floppy ... вставляем второй диск и ждем логина. Логинимся с именем root.
Все, теперь надо сделать разделы.
Если мы ставим Linux на первый диск, то пишем:
fdisk /dev/hda ( - для IDE'шных дисков )
fdisk /dev/sda ( - для SCSI'евых )
Если мы ставим на второй диск, то :
fdisk /dev/hdb ( - для IDE'шных дисков )
fdisk /dev/sdb ( - для SCSI'евых )
Посмотрим какие разделы у нас уже есть:
Using /dev/hda as default device!
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 1023 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 1022 2060320+ 7 OS/2 HPFS
Command (m for help):
Отлично, полуосевый раздел - это хорошо. Кстати, Linux умеет жить с
полуосевым BootManager'ом, но для того, чтобы BootManager грузил Linux,
инсталяцию нужно делать несколько по-другому. Если это будет кому-нибудь
интересно, я напишу об этом следующем номере HaRm'a. Я не ставил себе
BootManager, а воспользовался загрузчиком от Linux'a (LILO). LILO, в свою
очередь, умеет грузить OS/2. Вот так любят друг-друга OS/2 и Linux :)
Ok, теперь надо сделать раздел для Linux'a.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
Выбираем p. Дальше вводим номер раздела.
Partition number (1-4): 2
( Раздел 1 уже есть /dev/hda1 )
Нас спросят с какого места начинается новый раздел ( предыдущий
заканчивается на 1022 ), так что наш новый раздел будет начинаться с 1023.
First cylinder (1023-4096): 1023 ( На самом деле у меня весь первый винт
отведен под полуось - это видно из Disk /dev/hda: 64 heads, 63 sectors, 1023
cyl и Linux у меня стоит на втором диске, но для примера это не важно )
После того, как мы ввели номер цилиндра, с которого начинается новый раздел, мы
указываем размер раздела:
Last cylinder or +size or +sizeM or +sizeK (1023-4096): +500M
Теперь таким же образом сделаем раздел для свопа.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
Выбираем p. Дальше вводим номер раздела.
Partition number (1-4): 3
( Разделы 1 и 2 уже есть )
Указываем размер: +50M
После этого нужно объяснить Linux'y какой раздел именно будет для свопа.
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Все готово. Можно посмотреть, что получилось при помощи команды 'p'.
Теперь сохраним все, что сделали командой 'w'.
Если есть желание грузить ДОС с помощью LILO, то надо помнить, что
ДОС'овский раздел не должен начинаться за 1024-м цилиндром. Linux'y это
ограничение по-фигу.
После того как разделы созданы, начинается сам процесс инсталяции.
Запустим setup.
# setup
Появится менюшка, где мы первым делом выбирем ADDSWAP, чтобы сделать своп
активным. Сетап найдет созданный своп раздел и предложит сделать его
активным. Останется только согласится с этим, выбрав YES. После этого раздел
будет предложено отформатировать раздел. Опять отвечаем YES.
Теперь перейдем к опции TARGET. Здесь мы указываем в какой раздел
ставить. Этот раздел также необходимо отформатировать. На вопрос об "inodes"
лучше согласиться с параметрами по-умолчанию.
Переходим к SOURCE. Мы ставим с CD-ROM'a. Если сетап не смог прочитать
диск, то ,скорее всего, параметры сидюка не совпадают со значениями
по-умолчанию. Для того, чтобы исправить это дело, загрузимся с дискеты и
когда появится приглашение boot: , напишем -c После чего наберем команду
visual. В появившейся оболочке найдем свой сидюк и установим нужные
параметры. Хелп по клавишам есть на экране. Сохраним изменения и продолжим
загрузку. Если после этого сетап опять не найдет сидюк, то мы просто достаем
диск с Win'95 и матеря все эти Unix'ы ставим себе "единственную и истинную"
OC. :))
Дальше инсталяция довольно прозрачна. Мы просто переходим от одного
пункта к другому, выбирая, что нам нужно.
После того как мы установили все, что нужно, осталось доставить LILO -
Linux Loader. LILO - это bootmanager. Он умеет загружать Linux, Dos, OS/2.
Наверное, его можно заставить грузить и другие системы, но я этого не
проверял. Выбирем пункт установки LILO. Нам надо будет указать куда его
ставить. Возможные варианты - это как MBR ( в /dev/hda - т.е LILO будет
основным bootmanager'ом ) или в начало раздела с Linux'ом ( в нашем примере
/dev/hda2 ) - это нужно, если мы юзаем другой bootmanager, например от OS/2.
Ok, поставим его как MBR. После этого нас спросят какие мы хотим загружать
системы. Первую, что мы выбирем будет дефолтовой. Необходимо указать раздел
откуда загружать ( /dev/hda2 ) и задать метку, например 'linux'. Аналогично
мы добавляем разделы Dos, OS/2.
Отлично. Выбираем пункт Install. Теперь, когда все готово, выйдем из
сетапа и перезагрузимся. На экране должна появиться надпись
LILO
Нажмем SHIFT. Теперь необходимо выбрать какую систему загружать.
Нажав TAB мы увидим список доступных для загрузки систем.
LILO boot:
Напишем linux. Ждем-с. И - вуаля!
Welcome to Linux 2.0.0
darkstar login: root
last login: Mon Jan 1 10:11:12 on ttg1
Linux 2.0.0.
You have mail.
darkstar: ~#
Вот теперь начинается самое веселье. Но, на этом я, пожалуй, остановлюсь.
Нам потребуется сделать несколько последних штрихов в настройках, но об
этом терпеливый читатель узнает в следующем номере HaRm'a :))
* * *
3. For advanced:
- Daddy, why do we have to hide from the police ?
- Because we use vi, son. They use emacs.
Ok, в этом разделе будут описаны небольшие полезные хинты для тех, кто
уже более-менее освоился с Linux'ом. Ничего сверхнавороченого, просто
небольшие советы. Если у тебя есть что-то интересное, чем ты хотел бы
поделиться - you welcome. Если эти хинты для тебя покажутся очевидными, то не
спеши флеймить, я знаю одного человека, который юзая Linux несколько недель
не знал фичи, про которую я собираюсь написать ниже В любом случаи,
flame > /dev/null. :)
* Какой шел ты юзаешь? Настоящие мужчины юзают /bin/bash :)) Да,
некоторые люди явно страдают максимализмом. Например, я бы оторвал руки
тому, кто дал файлу такое имя:
alt.spam_FAQ_or__Figuring_out_fake_E-Mail__26_Posts_._Rev_961119
Ну как, нравится? :) Мне тоже. Для того, чтобы бороться с такими именами
bash имеет очень приятную фичу. Набираем несколько первых буков имени и
нажимаем TAB. О-ла-ла! Если в директории нету файлов с похожими именами,
то имя будет вставлено полностью, иначе до первого совпадения. Если
совпадение есть, наберем еще пару символов и опять нажмем TAB. Эту фичу
можно использовать для быстрого перехода по дереву директорий. cd /u+[TAB]
- получаем cd /usr. В Midnight Commander'е вместо TAB'a используется
ALT+TAB.
Если нажать два раза TAB можно увидеть список возможных вариантов имен.
* Иногда требуется запускать Х-ы в 8-ми битных режимах, потом в 16-ти, а
если захочется 32 ? Набивать каждый раз startx -- -bpp 16 утомительно.
Сделаем проще: добавим в ~/.bash_profile следующее
alias x8='startx -- -bpp 8'
alias x16='startx -- -bpp 16'
alias x24='startx -- -bpp 24'
alias x32='startx -- -bpp 32'
Теперь осталось написать x16. Просто и со вкусом :) С помощью alias'a
можно практически все заточить под свой вкус.
* Загляни в /etc/issue. Хммм. Что-то невзрачно. Почему бы тебе не
скопировать в него что-нибудь поинтереснее. Например, лого этой статьи.
* Как насчет руссификации консоли? Уже? Тогда можешь поскипать этот хинт.
Для остальных - Создадим скрипт следующего содержания:
#!/bin/bash
loadkeys /usr/lib/kbd/keytables/ru1.map
setfont /usr/lib/kbd/consolefonts/Cyr_a8x16
mapscrn /usr/lib/kbd/consoletrans/koi2alt
echo -ne 'ESC(K' # Здесь вместо ESC нужно вставить реальный ESC code.
# CTRL+'V' затем 'Esc'
echo "Use the right Alt key to switch the mode..."
Назовем скрипт cyr. Не забудем сделать его выполнимым:
chmod +x cyr
Осталось создать файл ~/.inputrc следующего содержания:
set meta-flag on
set convert-meta off
set output-meta on
Готово. Пущаем cyr и переключаемся по правому Alt'y.
* Есть желание хакнуть Linux ? Попробуй так: telnet 127.0.0.1 Только не
надо сразу сносить все подряд. Все-таки это твоя же собственная машина :)
Если серьезно, то эту приятную фичу можно использовать для отладки,
например, своей Web-страницы.
Запустим в одной консоли или в x-terminal'e: httpd &
( Естественно, веб-сервер должен быть настроен )
На другой Netscape. В поле Location напишем 127.0.0.1
Вот мы и на нашей странице.
* Допустим, мы находимся в /usr. Перейдем в /var: #cd /var, а теперь
напишем: #cd -
Ура! Мы опять в /usr. Пустячок, а приятно.
* Практически все провайдеры используют динамические IP адреса.
Дано: дозвониться к провайдеру и установить PPP соединение.
Решение: Напишем скрипт для dip'a. (ты ведь юзаешь dip?)
--------------------------------------------------------------------[CUt]---
main:
port modem
netmask 255.255.255.0
send ATZ\r
wait OK 3
if $errlvl != 0 goto modemerr
print .............. AutoDial procedure started .............
print ................ Press Ctrl-C to abort ................
dialsvr:
send +++\r
wait OK 3
send ATH0\r
wait OK 3
print ................... Dialing 123-4567 .................
send ATDP123-4567\r
if $errlvl != 0 goto error
wait BUSY 15
if $errlvl == 0 goto dialsvr
wait CONNECT 45
if $errlvl != 0 goto dialsvr
goto login
login:
print Waiting for login ...
# Здесь надо вставить запрос от твоего провайдера
wait Username: 15
print Sending login name ...
# Это мой логин
send my_name\r
if $errlvl != 0 goto error
print Ok.
print Waiting for password ...
# Здесь тоже поправить
wait Password: 15
if $errlvl != 0 goto error
print Sending password...
# А это мой пароль
send my_password\r
if $errlvl != 0 goto error
print Ok.
print Waiting for dynamic addres...
# Обычно после запроса имени и пароля провайдер выдает динамический
# адрес в виде строки ...dynamic IP adress assigned is 123.456.789.000
# Ключевое слово - 'is'. Если у тебя по-другому, то надо здесь подправить
wait is 10
if $errlvl != 0 goto error
get $local remote 3
if $errlvl != 0 goto error
print Got the addres: $local
# Это адрес провайдера
get $remote 194.87.63.1
get $mtu 1500
default
done:
print Entering PPP mode.
print Dynamic IP assigned by host is $local
print Remote host connected is $remote
mode PPP
goto exit
error:
print PPP connection failed.
goto exit
modemerr:
print Modem initializing failed.
goto exit
exit:
--------------------------------------------------------------------[CUt]---
Вот и все.
4. Closing words:
- Daddy, is that all?
- Who knows... Time will tell.
Ну что ж, хватит на сегодня. Надеюсь, ты нашел здесь что-нибудь для
себя полезное.
Death Lord