Операционная система Linux

Данный раздел посвящен GNU/Linux (произносится «гну слэш ли?нукс») — свободная UNIX-подобная операционная система. Она основана на системных программах, разработанных в рамках проекта GNU, и на ядре Linux. Зачастую, по историческим причинам и для краткости, эту систему называют просто «Linux». GNU/Linux работает на PC-совместимых системах семейства Intel x86, а также на IA-64, AMD64, PowerPC, ARM и многих других. К операционной системе GNU/Linux также часто относят программы, дополняющие эту операционную систему, и прикладные программы, делающие её полноценной многофункциональной операционной средой. В отличие от большинства других операционных систем, GNU/Linux не имеет единой «официальной» комплектации. Вместо этого GNU/Linux поставляется в большом количестве так называемых дистрибутивов, в которых программы GNU соединяются с ядром Linux и другими программами. Наиболее известными дистрибутивами GNU/Linux являются Slackware, Red Hat, Fedora, Mandriva, SuSE, Debian, Gentoo, Ubuntu. Из дистрибутивов российских разработчиков наиболее известны ALT Linux и ASPLinux.

По материалам www.wikipedia.org

GeeXBoX - медиацентр "в кармане"

Домашняя страница: http://geexbox.org/ Прямая ссылка на файл: Версия i386, версия PowerPC Документация (на английском языке): http://geexbox.org/en/doc.html

GeeXboX - это бесплатный LiveCD-дистрибутив Linux, который возволяет превратить ваш компьютер в несколько упрощенную версию домашнего медиа-центра. Он запускается напрямую с компакт диска на любом PC с процессором Pentium и выше или на Apple Macintosh с процессором PowerPC. При запуске данный дитрибутив производит автоматическое определение "железа" вашего компьютера, после чего копирует в оперативную память небходимые драйвера и компонеты, тем самым освобождая от необходимости держать компакт диск с GeeXBoX в CD-ROM'е. Он позволяет воспроизводить практически все известные аудио/видеоформаты и показывать большинство распространенных форматов картинок. Файлы могут воспроизводиться с CD, DVD, жестких дисков с различными файловыми системами (EXT2/3, ReseirFS, VFAT, NTFS (только чтение), xBSD UFS (только чтение), NFS, Samba SMB, CIFS, Apple HFS, JFS), из локальной сети или даже из Интернета. В заголовке статьи указанны прямые ссылки на файл ISO Generator для PC-совместимых компьютеров и для Макинтош. Эта програма позволяет вам построить свою собственную версию GeeXBoX, позволяя выбрать язык и внешний вид интерфейса, опции аудио и видео, базовые настройки сетевых параметров. Если ваше аппаратное обеспечение позволяет, то вы так же сможете выбрать тип вашего пульта дистанционного управления и тип LCD-экрана для работы без полнофункционального монитора. После завершения работы мастера ISO Generator вы получаете готовый ISO-файл, которы можете записать на отдельный диск, а можете прикладывать ко всем вашим дискам с медиа-контентом, тем самым обеспечивая их "самопроигрывание" практически на любом компьютере.

Linux - коротко обо всём

Linux Faq
Данная статья представляет собой краткий справочник по операционной системе Linux - файлы, команды, операторы, конфигурация программной среды, типы и конфигурация устройств.


1 Конфигурационные и информационные файлы/каталоги


1.1 Общесистемные


/dev/ — содержит специальные файлы устройств:

pts/ — файлы устройств открытых псевдотерминалов.


/etc/ — основная директория конфигурационных файлов:

anacrontab — конфигурация задач выполняемых anacron;
aspldr.conf — конфигурация boot-загрузчика ASPLoader (дистрибутив ASPLinux);
auto.misc, auto.master — конфигурации автомонтировщика;
crontab — конфигурация задач выполняемых cron;
csh.login — профиль системы для для TCSH (выполняется после регистрации);
fstab — конфигурация файловых систем(ФС) автоматически монтирующихся при загрузке;
group — системные группы пользователей;
gtk/ — файлы указателей шрифтов для графического тулкита GTK;
HOSTNAME — текущее имя машины;
inittab — конфигурация последовательности загрузки (для init);
issue — сообщение выдаваемое перед локальной регистрацией;
issue.net — сообщение выдаваемое перед сетевой регистрацией;
login.defs — описывает поведение login и su;
logrotate.conf — конфигурация демона автоматической обработки логов (ротация, упаковка, удаление);
logrotate.d — директория конфигурационных файлов демона автоматической обработки логов;
ld.so.conf — конфигурация динамического линковщика;
lilo.conf — конфигурация boot-загрузчика LILO;
man.conf — конфигурация сиcтемы страниц помощи, команда man;
motd — сообщение выдаваемое после удачной регистрации;
mtab — список смонтированных ФС;
nologin — наличие этого файла запрещает пользователям входить в систему с выдачей сообщения в файле;
nsswitch.conf — конфигурация последовательности поиска имен по различным источникам;
pam.d/ — содержит файлы конфигурации PAM:
su — описывает поведение команды su;
sudo — описывает поведение sudo.


password — системные пользователи;
profile — профиль системы для BASH (выполняется после регистрации);
rc.d/ — директория системы инициализации init (в стиле UNIX):

init.d/ — содержит скрипты, для управления системными демонами (сервисами);
rcX.d/ — директории уровней запуска X, содержат ссылки на скрипты в init.d;


sysconfig/ — содержит системные Файлы конфигураций:

keyboard — описание текущей раскладки клавиатуры;
desktop — установка графической среды (KDE,GNOME..);
i18n — конфигурация общесистеммной локали (локаль отдельных пользователей может содержаться в {home}/i18n);
harddisks — общие параметры дисков системы:
harddiskhd[x] — параметры конкретно взятого диска <x>.


security/ — содержит Файлы описывающие безопасность системы:

console.apps/ — содержит файлы указывающие на функции доступные непривилегированному пользователю из консоли;
console.perms — правила изменения прав доступа к устройствам, при аутентификации;
limits.conf — конфигурация лимитов пользователей.

sysctl.conf — содержит команды для автоматической инициализации sysctl-параметров ядра;
syslog.conf — конфигурация демона системного логера (syslogd);
shadow — содержит закодированные пароли пользователей (для системы хранения паролей TCB пароли хранятся в /etc/tcb/*);
skel/ — шаблон директории пользователя (в момент создания пользователя содержимое директории пользователя копируется отсюда);
sudoers — указание на то какие пользователи и какие программы могут быть запущены с привилегиями root используя sudo.


/proc/ — виртуальная ФС отражающая параметры ядра:

sys/ — содержит файлы с параметрами системы (большая часть допускает модификацию):
kernel/ — содержит файлы с параметрами ядра:
cap-bound — управление дополнительными правами (root) (0 – root права аннулируются);
hostname — имя хоста (системы);
osrelease — версия ядра системы;
ostype — тип ОС (Linux, *BSD, ...);
panic — признак паники ядра;
version — дата сборки ядра.


fs/ — содержит файлы с параметрами ФС:

file-max — максимальное количество открываемых файлов.

devices — список типов устройств в системе;
modules — список модулей подключенных к ядру;
self — ссылка на информацию о текущем процессе;
cpuinfo — информация о процессорах системы.


/usr/lib/locale/ — содержит локали различных стран и языков;
/usr/share/locale/ — локализации отдельных программ под конкретный язык;
/usr/share/man/ — страницы помощи man (в том числе и локализованные);
/var/spool/cron/ — задачи пользователей для cron (формируются с помощью “crontab -e” от пользователя);
/var/spool/at/ — задачи пользователей для at;
/home/{user}/ — домашняя директория пользователя:

.bashrc — профиль конкретного пользователя для BASH (запускается единожды);
.cshrc — профиль конкретного пользователя для TCSH;
.bash_profile — профиль конкретного пользователя для BASH (запускается при каждом запуске bash).


1.2 Сеть


/etc/ — основная директория конфигурационных файлов:

ethers — Файл соответствия аппаратных MAC адресов сетевым IP адресам в сети, в случае несоответствия доступ для хоста будет закрыт;
export — конфигурация NFS-ресурсов доступных извне;
hosts — перечень хостов и соответствующих им IP-адресов;
host.allow — список хостов которым вход разрешен;
host.deny — список хостов которым вход запрещен (для libc ver 5);
host.conf — указывает где и в каком порядке искать имена хостов (для libc ver 6);
nsswitch.conf — конфигурация последовательности поиска имен по различным источникам;
resolv.conf — конфигурация резолвера имён, содержит список DNS-серверов;
samba/ — содержит файлы конфигурации samba:
smb.conf — главный конфигурационный файл SAMBA;
smbusers — описывает соответствие SAMBA пользователей к системным пользователям;
smbpasswd — содержит хеши пользователей SAMBA, пароли устанавливаются утилитой smbpasswd.


services — содержит сопоставления номеров портов/сокетов их именам;
sysconfig/ — содержит системные Файлы конфигураций:

network — конфигурация сети;
network-scripts/ — скрипты и файлы конфигурации сетевых интерфейсов.


xinetd.conf — конфигурация суперсервера Internet (централизованное управление сокетами/портами);
xinetd.d/ — директория содержит файлы конфигураций отдельных сервисов для суперсервера xinetd;
ppp/ — директория содержит конфигурации PPP-соединений:

options — содержит общую для всех PPP-соединений конфигурацию;
options.* — конфигурация конкретно взятого соединения (например модемное options.ttyS1);
ip-up — скрипт выполняемый при/для соединения (демоном pppd);
ip-down — скрипт выполняемый при/для разъединении (демоном pppd).


1.3 Железо


/etc/ — основная директория конфигурационных файлов:

printcap — Файл конфигурации принтеров;
inputrc — конфигурация ресурсов ввода с клавиатуры;


/usr/lib/kbd/ — содержит файлы необходимые для корректной работы клавиатуры:

keymaps/i386/qwerty/*.kmap.gz — файлы консольных роскладок клавиатуры.


/home/{user}/ — домашняя директория пользователя:

.inputrc — конфигурация ресурсы ввода с клавиатуры конкретного пользователя.


1.4 X (графическая система)


/etc/X11/fs/config — содержит перечень каталогов со шрифтами для X;
/etc/X11/XF86Config — Файл конфигурации X (XFree86);
/etc/X11/xorg.conf — Файл конфигурации X (XOrg);
/usr/X11R6/bin/X — ссылка на текущий X сервер;
/home/{user}/.Xauthority — файл авторизации для запуска X-приложений удаленно, файлы на удаленных машинах должны соответствовать;
/home/{user}/.xinitrc — сценарий загрузки X сервера конкретного пользователя;


2 Утилиты


2.1 Основные пользовательские


awk — утилита манипуляции файлами данных, выборка и обработка текста;
bg — работа с множеством задач в терминале: перевод остановленной (Ctrl+Z) задачи на задний план;
cal — календарь (за любой год);
cat, zcat — выдает указанные файлы на STDOUT;
cd — смена директории;
clear — очистка экрана терминала;
cp — копирование файлов и директорий;
cpio — копирование файлов в архив и из архива (может использоваться для архивов);
cut — вырезает из входного файла столбцы, строки;
date — отображает текущую дату и время;
dd — преобразование, создание и другие манипуляции с файлами в двоичном виде:

dd if=/dev/zero of=/swap bs=1024 count=8208 – создание пустого файла swap размером 8Мб
dd if=/dev/fd0 of=boot.img bs=18k – создание образа из дискеты


echo — выполняет эхо-повтор строки на терминале;
exit — завершить процесс с указанным кодом возврата;
fg — работа с множеством задач в терминале: перевод остановленной (Ctrl+Z) задачи на передний план;
file — определение типа любого файла;
find — поиск:

-type — тип выводимых файлов;
-name — имя искомого файла;
-size — размер искомого файла.


grep — поиск указаной строки в указанных файлах или потоках;

grep 'str' mifile.txt


gzexe — архивирование в исполняемый модуль, с распаковкой при запуске;
gzip — компрессия и декомпрессия файлов:

-<n> — выполнить компрессию с уровнем <n>=(1..9);
-d — декомпрессия.


head — показывает заголовок/начало указанного файла;
hexdump — печать входного потока в указанном формате (DEC,HEX,OCT,ASCII);
history — показывает нумерованный список истории команд;
ipcs — показывает ресурсы IPC(inter process communication);
ipcrm — удаляет ресурсы IPC(inter process communication);
kill, skill — посылка сигнала процессу;
let,bc,expr — выполняет арифметические, логические и другие действия над числовыми значениями в переменных окружения;
ln — создание и обслуживание ссылок;
locate — поиск файла в уже созданной базе;
ls — листинг директории или информация про файл/директорию;
md5sum — подсчёт md5 суммы;
mkfifo — утилита создания именованных каналов;
mknod — утилита для создание специальных файлов;
more, less, zless — просмотр файла постранично;
mpage — печать нескольких страниц на одной;
nice,snice — запуск команды с указанным приоритетом (-20 — +20);
nohup — запуск команды с отвязкой от текущего терминала;
pidof — показать PID работающей программы;
pr — форматирование, текстового файла для печати;
printenv, env — показывает переменные окружения;
ps — показывает запущенные в системе процессы;
pstree — показывает дерево запущенных процессов;
renice — изменение приоритета активного процесса;
rm — удаление файлов и директорий;
rpm — утилита для работа с RPM-пакетами:

-i packet — установить пакет;
-e packet — удалить пакет;
-U packet — обновить пакет;
-V packet — проверка корректности установки/текущего состояния указанного пакета;
-a — выполнение указанной операции для всех пакетов;
-q — запрос данных о пакете:
f — поиск пакета которому принадлежит указанный файл;
i — вывод информации о пакете;
l — список файлов, принадлежащих пакету;
s — состояние файлов пакета;
d — список файлов документации пакета;
c — список конфигурационных файлов пакета;
p — выполнить операцию над ещё неустановленным пакетом;


-b файл.spec — частичная или полная обработка *.spec файла для сборки пакета:

a — создание бинарного и исходного rpm пакета;
b — создание бинарного rpm пакета;
c — выполнение этапов: %pre и %build с распаковкой и компиляцией;
i — выполнение этапов: %pre, %build и %install;
l — проверка списка файлов в %files;
p — выполняется этап %pre (распаковка архива);

– -rebuild my.src.rpm — скомпилировать и создать бинарный rpm из исходного rpm;
– -recompile my.src.rpm — скомпилировать из исходного rpm;
– -test — проверка файла спецификаций;
– -clean — удаление дерева каталогов BUILD;


screen — открыть команду в новом окне того же терминала с возможностью переключения – Ctrl+A;
sed — потоковый редактор;
sleep — усыпляет данный процесс на указанное количество секунд;
sort — сортировка данных в файле/потоке;
split/csplit — разбиение/сбор больших файлов на куски;
stat — информация о файле/директории;
strings — выделение символьных сообщений из не текстового файла;
symlinks — утилита обслуживания символьных ссылок в системе;
tar — создание архивов и пакетов;

-v — отображать список обработанных файлов;
-с — создавать новый архив;
-x — распаковать архив;
-f <file> — упаковывать в указанный файл <file>;
-z — выполнять компрессию полученого пакета с помощью gzip;
-j — выполнять компрессию полученого пакета с помощью bzip2;
-t — просмотр содержимого архива;



<;;p class="auto" id="p31034-25">
tail — показывает хвост указанного файла;
test — проверка типов файлов и сравнение значений;
tee — читает из стандартного входа, а затем записывает в стандартный выход и в файл;
touch — обновление отметки времени файла или создание пустого файла при его отсутствии;
time — определение времени и ресурсов выполнения команды;
tr — трансляция символов (преобразование/замена одних на другие);
tree — дерево части файловой системы;
updatedb — создание и обновление базы данных для команды locate;
vi, vim — очень мощный текстовый редактор с оригинальным управлением;
vimdiff — просмотр сравниваемых файлов в vim;
wc — подсчет количества строк, символов слов в файле;
which,whereis — показывает полный путь к искомой программе;


2.2 Базовые для администрирования


adduser, useradd – добавление пользователей в систему;
anacron – периодический запуск программ без чёткой привязки ко времени, но обязательно;
apropos – поиск man-страницы по ключевому слову;
arch – архитектура текущей системы;
at, batch – автоматизация разовых запусков программ в указанное время;
basename – выделение имени файла/директории из полного пути;
badblock – поиск плохих блоков на носителе (HDD, FDD);
chfn – изменение имени пользователя и информация о нем;
сhgrp – смена группы файла, каталога ...;
chkconfig – конфигурация уровней загрузки различных сервисов;
chmod – смена режима доступа к файлу;
chown – смена владельца и группу владельцев файла, каталога ...;
chroot – смена корня текущей сесии;
chvt – переключение на указанный терминал;
chsh – смена типа командного интерпретатора;
cron – периодический запуск програм;
crontab – формирование пользовательской конфигурации cron;
df – информация о файловых системах на данной машине;
dirname – выделение имени директории из полного пути;
dmesg – показать лог о загрузке ядра;
du – получение информации о размере содержимого файла или директории;
dumpkeys – dump карты клавиатуры;
export – встроенная команда BASH, для определения переменной окружения и экспортирования её для общей доступности;

EDITOR=xemacs – определение переменной <EDITOR> значением <xemacs>;


fgconsole – номер текущего терминала;
finger,who – информация о всех пользователях системы;
free – информация о состоянии памяти;
fuser – выдает список процессов использующих указанный файл или сокет, а также позволяет закрывать процессы занимающие ресурс;
groupadd – добавление группы пользователей;
groupdel – удаление группы пользователей;
iconv – преобразование содержимого файла из одной в другую кодировку;
id – информация о пользователе;
info – показать документацию из страниц связанной помощи (GNU-doc);
init – утилита начальной загрузки;

q – перезапуск init для активизации изменений в /etc/inittab;


locale – получение информацию о настройках локали (/etc/sysconfig/i18n);
localedef – создание новой локали из базовой;
login – вход в систему;
logrotate – утилита для автоматической упаковки, чистки и другой обработки логов;
lsof – печатает список открытых в системе файлов, сокетов, каналов, разделяемых библиотек;

-p <n> – список системных ресурсов используемых <n> процессом;
<name> – список процессов использующих ресурс <name>.


man,xman – показать страницу руководства;

-k <word> – поиск страницы по ключевому слову;


mesg – управление доступом на запись к текущему терминалу (для посылаемых сообщений);
mpage – размещение нескольких страниц текста в одной и печать их на Post Script
? принтере;
ntpdate – утилита синхронизации времени через Internet(www.ntp.org);
passwd – смена пароля пользователя;
pwd – получение полного имени текущей директории;
rlogin – вход на удаленную систему;
service – утилита для операций над сервисами в /etc/rc.d/init.d;

smb start – запуск сервиса Samba;


set – встроенная команда BASH, выполняет операции над переменными окружения;
setsid – запуск програмы в новой сессии;
sg – смена основной группы пользователя, или выполнение команды от имени указанной группы;
slogin – вход в систему по ssh (тоже что и ssh);
ssh – вход в систему по шифрованому протоколу ssh;
stty – получение и установка параметров терминала, переопределение специальных клавиш.
su – смена пользователя текущей сессии или выполнени команды от имени указанного пользователя, по умолчанию root;

-l – с перечитыванием конфигов;


sudo – запуск отдельных программ от имени другого пользователя (нужно прописать в /etc/sudoers);
shutdown – выключение системы;
talk – двухсторонний разговор с другим пользователем;
tload – информация о загрузке системы;
top, htop – вывод информации о процессах с сортировкой по занимаемому времени;
tput – управление терминалом;
tset, reset – инициализация терминала на curses;
tty – имя текущего певдотерминала;
ulimit – управление ограничениями пользователей.
umask – определяет маску прав по которой будут создаваться новые файлы;
uname – печатает информацию о текущей OS;
unset – встроенная команда BASH, очистка/удаление переменных окружения;
uptime – время непрерывной работы системы;
users – список пользователей в системе;
userdel – удаление пользователей из системы;
usermod – изменение учетной записи пользователя;
vmstat – информация об использовании виртуальной памяти;
w – информация о том что делает текущий пользователь;
wall – передача широковещательного сообщения (всем пользователям системы);
watch – периодический запуск указанной программы;
whoami – сообщает имя текущего пользователя;
write – написать сообщение указанному пользователю;
ytalk – расширенная версия talk, с возможностью работы в X;


setfont – установка консольного шрифта;
loadkeys – установка раскладки клавиатуры.
consolechars – загрузка консольных экранных шрифтов.


2.3 Файловая система


cdrecord – запись CD дисков;

cdrecord -v speed=2 dev=0,6,0 -data my.img


cfdisk – конфигурация разделов диска;
edquota – редактирование квот файловой системы;
fdformat – Форматирование дискеты;
fdisk – работа с разделами диска;
fsck – проверка файловой системы указанного типа;
fsck.<fs> – проверка файловой системы типа <fs>;

fsck.vfat /dev/fd0 – проверка файловой системы FAT12 на флоппи диске.


hdparm – установка параметров дисковой подсистемы;
loadlin.exe – загрузка ядра linux из DOS;
losetup – создание петлевого устройства(loop) с криптованием;

losetup -k 192 -e aes /dev/loop4 /tmp/file.iso
– создание loop4 в file.iso с криптованием.


mkfs – создает FS указаного типа как на физический раздел так и в файл;
mkfs.<fs> – cоздание FS типа <fs>;

mkfs.vfat /dev/fd0 – cоздает файловую систему FAT12 на флоппи диске.


mkisofs – создание ISO образа из каталога;

mkisofs -r -o my.iso /usr/games


mount – монтирование файловых систем:

  • Важные опции:
    quiet – Позволяет копировать/переносить файлы без вопросов о невозможности смены user/group;
    iocharset – Кодировка в которой производится ввод/вывод;
    codepage – Кодовая страница в которой хранится монтируемая файловая система;
    showexec – Работает для DOS/WIN FS, и отображает корректно запускаемые файлы;
    rw – Монтировать для чтения-записи;
    ro – Монтировать только для чтения;
  • Примеры:
    mount -t smbfs – o username=tridge, password=foobat //c /data/test
    – Монтирование сетевого диска //c на каталог /data/test;


    mount -t ext2 /dev/fd0 /mnt

    – Монтирование флоппи диска с FS ext2 на каталог /mnt;


    mount [-t auto] /dev/fd0 /mnt

    – Монтирование флоппи диска на каталог /mnt с автоматическим определением системы;


    mount host:/mnt/export /mnt/local

    – Монтирование директории /mnt/export удаленной машины host на локальную директорию /mnt/local;


    mount -t iso9660 -o ro,loop=/dev/loop0 /my.iso /mnt/cdrom2

    – Создание loop из образа CDROM;


    mount -t cdfs /dev/cdrom /mnt/cdrom

    – Позволяет увидеть/отредактировать CD диск как есть( с сессиями);


    mount -bind /home /var/local

    – Подключить каталог /home к каталогу /var/local


parted – очень мощный манипулятор дисковыми разделами;
quota – квоты для текущего пользователя;
quotaon – включение квот;
quotaoff – выключение квот;
quotacheck – проверка квот файловой системы;
quotastats – состояние квот файловой системы;
tune2fs – изменение параметров смонтированной ext2/ext3;
resize2fs – изменение размера файловой системы ext2/ext3 на разделе (в связке с LVM);
resize_reiserfs – изменение размера файловой reiserfs системы на разделе (в связке с LVM);
swapoff – отключить свопинг;
swapon – включить свопинг;
sync – экстренный сброс буферов на диск;
umount – отмонтировать файловую систему;
xcdroast – X-оболочка над cdrecord и mkisofs.


2.4 X (графическая система)


appres – информация о ресурсах X приложений;
glxingo – информация о расширении GLX (Open GL
?);
gnome-session – запуск дисплей-менеджера GNOME(GDM);
import – создаёт снимок X экрана или конкретного окна;
listres – вывод X – ресурсов;
mkfontdir – создает раскодировщик шрифтов в текущем каталоге из указаного каталога;

mkfontdir -e /usr/X11R6/lib/X11/fonts/encodings


showrgb – наименования и значения стандартных цветов;
startkde – запуск оконного менеджера KDE;
startx – скрипт запуска X-сервера;

startx – :2 – запуск еще одного экземпляра X, под номером 2;
startx – -depth 24 – запуск X-сервера с глубиной цвета 24 бита;


ttmkfdir – создание директории TTF шрифтов.

ttmkfdir > fonts.scale – после можно скопировать в fonts.dir


xdpyinfo – информация о дисплее;
xev – просмотр информации о событиях в окне;
xf86config – конфигурация X-сервера;
xfontsel – выбор шрифтов для X-сервера;
xfs – сервер шрифтов;
xhost – утилита управления доступом удалённых хостов к X-серверу;
xinit – утилита запуска X, а затем указанного приложения (по умолчанию – xterm);

xinit /usr/bin/icewm – :1


xkill – завершение оконного приложения;
xlsfonts – вывод списка шрифтов X-сервера;
xmag – увеличение части экрана;
xmodmap – изменение раскладки клавиатуры в X;
xosview – выводит основную информацию о ОС;
xprop – вывод реквизитов окна;
xrefresh – перерисовка экрана;
xset – утилита установкы параметров X-сервера;
xsetroot – установка вида корневого каталога;
xvidtune – настройка параметров монитора (частоты кадров и строк);
xvinfo – информация о расширении Xv;
xwininfo – показать информацию об указанном окне;
xwd – захват изображения на экране;


2.5 Железо


alsaconf – установка звуковой карты на подсистеме звука ALSA;
hwclock – установка, считывания аппаратных часов (CMOS);
kbd_mode – установка режима работы клавиатуры(RAW, MEDIUMRAW, XLATE, UNICODE);
lpr – печать с файла или с потока на указанный принтер;

lpr -P lp1 my.txt – печать файл my.txt на принтер lp1


lpq, lpstat – состояние очереди печати;
lprm – удаление задания печати из очереди;
lspci – выводит листинг устройств на PCI – шине;
pbm* – преобразование, из графического формата *.pdm в формат принтера [*];
pciscan – сканирование PCI-шины и отображение модулей необходимый для работы с устройствами на PCI-шине;
setleds – установить светодиоды на клавиатуре;
setserial – установка/конфигурация COM портов;
setterm – установка параметров терминала;
showkey – утилита для отображения сканкодов клавиш и кодов мапированных системой;
statserial – утилита для контроля за состоянием serial-порта;
tunelp – установка параметров параллельного порта;
usbview – утилита для просмотра и конфигурации USB-устройств;


2.6 Мультимедия


alsamixer – ALSA-миксер;
aumix – консольный AUDIO-миксер;
cdparanoia – позволяет грабить CD;
lame – преобразование *.wav в *.mp3;
mencoder – перекодировка видеофайлов с одного видеоформата в другой;

mencoder dvd://1 -oac mp3lame -ovc xvid -xvidencopts bitrate=800 -o 1.avi
– перекодировка первой дорожки DVD-диска с битрейтом 800 аудиокодеком mp3lame и видеокодеком xvid.


oggenc – преобразование *.wav в *.ogg;
play – проигрывание звуковых файлов;
rec – запись в звуковой файл.


2.7 Сеть


arp – манипуляция системным ARP кешем (манипуляция аппаратными адресами);
ethereal – мощный анализатор трафика сети;
ettercap – cнифер сети;
iptraf – мощный и удобный сканер сети;
ifconfig – утилита конфигурации сетевых интерфейсов (eth0, ppp0, lp0 ...);

down – выключить интерфейс;
up – включить интерфейс;
inet <ip> – интерфейс с <ip> адресом;
hw ether <mac> – установить MAC адрес интерфейса;
eth0:0 – псевдоним eth0:0 на интерфейс eth0;


iftop – контроль общего трафика по интерфейсам;
ipchains – утилита конфигурации firewall на основе интерфейса цепочек (ядра 2.2.*);
iptables – утилита конфигурации firewall на основе IP-таблиц (ядра 2.4.*);
minicom, xminicom – установка соединения с другой системой через модем(COM);
netstat – состояние сети (отображает используемые сокеты и их состояния).

-a – вывод всех сокетов;
-e – показать какой пользователь работает с сокетом в настоящий момент.


nmap,nmapfe – сканер сети и его GUI, можно получить перечень открытых портов и т.д;
nmblookup – утилита работы с Net BIOS
? (для SMB);

nmblookup -B Host '*' – возвращает IP адрес <Host>;
nmblookup -d 2 '*' – посылка широковещательных сообщений на все адреса.


ping – проверка связи с удаленным хостом путём посылки служебных тестовых сообщений;
route – управление таблицей маршрутизации;

delete – удаление указанного роутинга;
add – добавление указанного роутинга;


rsync – утилита для работы с протоколом rsinc, который, в свою очередь, используется для синхронизации по сети;

rsync -va – -partial – -stats – -delete-after -e ssh ./ devel:/incoming/backports/2.4/
– отправка пакетов в репозиторий ALTLinux Sisyphus путём синхронизации локальной директории с удалённым сервером.


smbclient – утилита для организации клиентских запросов к SMB-серверу;
smbprint – печать на SMB-принтер;
traceroute – проверка прохождения сетевых пакетов через сервера в сети;
tcpdump – дамп TCP протокола, позволяет отслеживать различные запросы;
testparm – проверка конфигурации файла smb.conf для SMB-сервера;
wget – мощная утилита для выкачивания файлов из сети по протоколам: HTTP, HTTPS, и FTP.


2.8 Почта


mail – создать сообщение;
mailq – показать очередь отправляемых сообщений;
mutt,pine – консольный почтовый клиент;
newaliases – добавляет новые почтовые алиасы сервера исходящих сообщений;
procmail – утилита автоматизации обработки почтовых сообщений;
sendmail – управление сервером исходящей почты.

-q[time] – обработать сообщения в очереди;
-v – режим печати сопровождающих сообщений;


2.9 Ядро


depmod – проверка зависимостей модулей (выполняется при добавлении новых модулей);

-a – проверка модулей по всей структуре /lib/modules и внесение соответствующих корректив;


installkernel – скрипт инсталляции ядра (используется после компиляции ядра – make install);
lsmod – получение списка загруженых и работающих модулей;
insmod – подключение модуля к ядру;
modinfo – получение информации о модуле и его параметрах;
modprobe – утилита управления модулями ядра, без параметров подключает модуль к ядру;

-с – перечисляет все сконфигурированные сокращения, опции и команды для модулей;
-l – перечисляет все возможные модули;
-r – выгружает модуль;


mkinitrd – скрипт автоматического создания загрузочного образа RAM-диска, для подключения к ядру;
powertweak – утилита для тонкого управления настройками ядра (через sysctl);
procinfo – получить информацию о процессах и системе из /proc;
ramsize – конфигурация размера диска в памяти используемого образом ядра по умолчанию;
rdev – конфигурация корневого каталога используемого образом ядра по умолчанию;
rmmod – отключение модуля от ядра;
sysctl – конфигурация параметров (/proc/sys/) ядра во время его работы;
vidmode – конфигурация видеорежа используемого образом ядра по умолчанию;


2.10 Программирование


aclocal – утилита из инструментария Automake, генерирует макрос aclocal.m4 в соответствии с файлом configure.in;
ar – создание/редактирование архивов(статических библиотек) из объектных модулей.
autoconf – утилита из инструментария Autoconf, генерирует скрипт configure, из файла configure.in;
automake – утилита из инструментария Automake, генераирует Makefile.in
?, из файла Makefile.am
?;

r – добавление новых и замена старых файлов;
c – создание библиотеки при её отсутствии.


cpp – препроцессор языка C, обычно вызывается из gcc;
ctags – генерирует тег-файл для облегчения навигации по коду (используется VIM);

-e – эмуляция etags для генерации тег-файлов для emacs.


ctrace – для прослеживания выполнение C-программы по операторам;
cxref – анализирует группу .c-файлов и строит для каждого файла таблицу перекрестных ссылок на автоматические, статические и глобальные имена.
dialog – позволяет создавать диалоги из скрипта в консоли;
diff – поиск изменений в сравниваемых текстовых файлах;

diff -uNr каталог.orig каталог > my.patch // Создание патча


f2c – транслирует исходный код программы на языке “Fortran” в исходный код на языке “C”;
gcc – GNU компилятор языка С,С++,ASM (с вызовом линкера);

-x lang – определяет язык исходных модулей;
-c – компилирует и собирает ранее или позже перечисленные исходные файлы;
-S – компилирует перечисленные исходные файлы в *.s файлы;
-E – производит первичную обработку исходных файлов;
-o rez – собрать перечисленные obj-файлы в один файл <rez>;
-L – определение путей поиска библиотек;
-l – определяет перечень статических библиотек (без lib* и *.a);
-w – запрет отображения предупреждений компилятора;
-Wall – генерировать все возможные предупреждающие сообщения;
-pedantic – проверка исходного текста на соответствие стандарту ANSI;
-Wl – различные опции линковщика:
, rpath – определяет дополнительные пути поиска динамических библиотек (-Wl,rpath,/usr/newpath);
,
soname – название разделяемой библиотеки (-Wl,-soname,libfuncs.so.1).

-fPIC – создание объектных файлов для динамических библиотек (PIC – Position Independent Code.)
-shared – создание динамической библиотеки (совместно с -o);
-nostdlib – не использовать стандартные системные запускающие файлы или линкующиеся библиотеки.
-static – принуждает использовать статические библиотеки вместо динамических;
-rdynamic – включает возможность использования символьной информации для разрешения ссылок в динамически загружаемых библиотеках;
-M – для каждого файла с исходным текстом препроцессор будет выдавать на стандартный вывод список зависимостей в виде правила для программы make;
-MM – аналогичен ключу -M, но в список зависимостей попадает только сам исходный файл, и файлы, включаемые с помощью директивы #include «имя_файла»;
-MD – аналогичен ключу -M, но список зависимостей выдается не на стандартный вывод, а записывается в отдельный файл зависимостей;
-MMD – аналогичен ключу -MD, но в список зависимостей попадает только сам исходный файл, и файлы, включаемые с помощью директивы #include «имя_файла»;
-pipe – компилятор будет работать через каналы.
-O[n] – установить уровень оптимизации (n=0..3).
-g – добавить отладочную информацию.
-p,-pg – добавить в модуль код для отслеживания узких мест, после выполнения генерируется mon.out файл, который можно обработать утилитой gprof.
-masm – использовать стандарт ассемблера (att|intel).


gdb – мощный консольный GNU дебагер;
indent – утилита форматирования исходного текста под указанные требования;
lclint – утилита проверки синтаксиса исходных модулей;
ldconfig – активизировать изменения в файле /etc/ld.so.conf;
ldd – показывает динамические библиотеки используемые программой;
lint – обнаруживает в C-программах конструкции, которые могут привести к ошибкам во время выполнения, расточительно используют ресурсы или могут снизить мобильность программ;
ltrace – трассировка динамических библиотек, программы указанной в параметре;
make – используется для организации сложных проектов из десятков файлов;

-directory – указывает рабочую директорию;
-makefile – указывает на используемый makefile;
-p – вызывает вывод списка всех установок по умолчанию;
-j3 – установить количество параллельно компилирующих процессов;


memprof – программа для определения утечек памяти в программах и др;
mtrace – обработка лога созданного С-функцией mtrace;
nm – используется для получения различной информации из таблицы имен объектных файлов обычного формата;
objdump – позволяет получить много информации об объектном файле, а также дизасемблировать его;
od – печать дампа файла;
p2c – транслирует исходный код программы на языке “Pascal” в исходный код на языке “C”;
patch – внесение изменений в файл исходя из файла изменений;

patch -p1 < ../my.patch – внесение изменений в текущий каталог из my.patch
patch -p1 < my.diff


prof, gprof – получения статистики по времени выполнения каждой функции программы, для использования этой функции, необходимо скомпилировать с ключем -p;
ranlib – добавление таблицы индексов библиотеки созданной ar в эту же библиотеку;
SCCS (Source Code Control System) – это набор утилит, предназначенных для управления версиями исходных текстов программ, в состав SCCS входят утилиты admin(1), cdc(1), comb(1), delta(1), get(1), prs(1), rmdel(1), sccsdiff(1), val(1), what(1);
sdb – символьный отладчик (Symbolic Debugger);
shar – создание самораспаковывающихся кодированных архивов для отправки по почте;
size – выдает количество байт, занимаемое тремя секциями (.text, .data и .bss) объектного файла обычного формата при загрузке его в память для выполнения;
strace – трассировка системных вызовов, осуществляемых программой указанной в параметре;
strip – удаляет из объектного файла обычного формата таблицу имен и информацию о номерах строк;
sum – расчет контрольной суммы;
Xdialog – позволяет создавать диалоги в X из скрипта.


3 Процедуры


3.1 Компиляция ядра




$ cd KernelTree/  #Переход к распакованому корню дерева исходников ядра
$ make config(menuconfig, xconfig)  #Конфигурация
$ make dep  #Создание файлов зависимостей
$ make clean  #Очистка от ранее скомпилированных модулей
$ make bzImage  #Компиляция ядра
$ make install  #Установка ядра
$ make modules  #Компиляция модулей
$ make modules_install  #Установка модулей


3.2 Создание swap в файле




$ dd if=/dev/zero of=/swap bs=1024 count=8208  #Создание файла необходимого размера для swap
$ mkswap /swap  #Инициализация структуры swap в файле
$ /bin/sync  #Сброс изменений на диск
$ swapon /swap  #Включение swap (отключение - swapoff)


3.3 Смена имени системы

  • отредактировать /etc/sysconfig/network
  • отредактировать /etc/hosts


3.4 Удалённое подключение с использованием X-сервера, для запуска GUI приложений


Вариант 1 (обычный):



client$ xinit - :1  #Запустить X-сервер на клиенте (должен запуститься xterm)
client$ xhost +server  #Зарегистрировать машину сервера у клиента
client$ telnet server -l UserName  #Подключиться к удаленной машине (серверу)
server$ export DISPLAY=client:0.0  #Установить переменную DISPLAY
server$ startkde  #Запустить оконный менеджер

Вариант 2 (используя ssh):



client$ xinit - :1  #Запустить X-сервер на клиенте (должен запуститься xterm)
client$ ssh -X UserName@server  #Подключиться к удаленной машине (серверу)
server$ startkde  #Запустить оконный менеджер


3.5 Установка русской консоли




$ consolechars -f UniCyr_8x16 -m koi8-r;
$ echo -ne "\033(K";
$ loadkeys ru1;


3.6 Подготовка и компиляция проектов на основе autoconf/automake




$ gettextize -f -c  #Генерация локализационных файлов
$ autoheader  #Генерация файла
$ autoscan  #Автоматическая генерация cofigure.scan и проверка configure.in
$ ifnames  #Создание списка идентификаторов которые используются в препроцессоре
$ aclocal -I -m4  #Генерация макроса aclocal.m4
$ autoconf  #Генерация скрипта configure. Для реконфигурации использовать autoreconf
$ automake -a -c  #Генерация файла Makefile.in
$ configure  #Генерация Makefile
$ make  #Компиляция проекта
$ make install  #Установка программы


3.7 Форматирование дискет, создание FS, проверка FS




$ fdformat  /dev/fd0
$ mkfs.vfat /dev/fd0
$ ckfs.vfat -ta /dev/fd0


3.8 Создание зашифрованых ФС




$ dd if=/dev/zero of=./sequre_disk bs=1024 count=50000  #Создание файла для будущей FS
$ losetup -e aes /dev/loop0 ./sequre_disk  #Создание шифрованого loop устройства
$ mkfs.ext3 /dev/loop0  #Cоздание файловой системы на loop устройстве
$ losetup -d /dev/loop0  #Отключение loop устройства
$ mount -o loop,encryption=aes ./sequre_disk /mnt/tmp/  #Обычное монтирование шифрованой ФС


3.9 Подготовка к проверке выделения памяти с помощью Electric Fence

  • подключить динамическую библиотеку -lefence


3.10 Подготовка к проверке выделения памяти с помощью mtrace

  • Добавить в программу: #include <mcheck.h> и mtrace()
  • Добавить переменную окружения: $ export MALLOC_TRACE=mem.log
  • Запустить программу, в результате чего буден создан файл mem.log
  • Обработать сгенерированный файл: $ mtrace my_prog $MALLOC_TRACE


3.11 Подключение дисковых квот

  • Добавить опции usrquota, grpquota для выбранных разделов в файле /etc/fstab;
  • Создать файлы quota.user и quota.group в корне выбранных разделов;
  • Выполнить проверку квот <$ quotacheck -avugm>;
  • Включить квоты <$ quotaon -avug>;
  • Редактирование квот для конкретного пользователя <$ edquota -u user>;
  • Проверка состояния квот <$ repquota -a>.


3.12 Печать страниц документации

  • man man | col -b | lpr 
  • info man | col -b | lpr


3.13 Настройка ssh




client$ ssh-keygen  #Генерация ключей на локальной машине в директорию " /.ssh/"
client$ scp ./identity.pub rserver: ~/.ssh/  #Передача публичного ключа на удалённый сервер (любым способом)
rserver$ cat ~/.ssh/identity.pub >> ~/.ssh/authorized_keys  #Авторизация своего открытого ключа на сервере
client$ ssh rserver  #Подключение к удалённому серверу


3.14 Создание ramdisk (диска в памяти)




$ mkfs /dev/ram0
$ mount /dev/ram0 /mnt/disk


3.15 Создание, использование и обслуживание LVM




$ vgscan  #Поиск по системе виртуальных групп VG
$ vgchange -ay  #Активизировать виртуальную группу (-an - деактивизировать)
$ pvscan  #Поиск доступных физических томов и отображение сравнительной информации о них
$ pvdisplay /dev/hda1  #Просмотр информации о физическом томе
$ pvcreate /dev/hda1  #Подготовка физического тома PV (тип раздела 8Eh)
$ pvmove /dev/hda1  #Освобождение физического тома (перенос данных на другие физические тома)
$ vgdisplay vg00  #Просмотреть информацию о виртуальной группе
$ vgcreate vg00 /dev/hda1 /dev/hdb1  #Cоздание виртуальной группы на основе двух физических томов
$ vgremove vg00  #Удаление виртуальной группы
$ vgextend vg00 /dev/hdc1  #Добавление физического тома к виртуальной группе
$ vgreduce vg00 /dev/hda1  #Удаление физического тома из виртуальной группы
$ vgexport vg00  #Подготовка виртуальной группы для переноса на иную машину
$ vgimport vg00 /dev/hda1 /dev/hda2  #Импорт виртуальной группы (с другой машины)
$ lvcreate -L1500 -nlv00 vg00  #Cоздание логического тома (LV) с именем nlv00 и размером 1500 Мб
$ lvremove /dev/vg00/home  #Удаление логического тома
$ lvextend -L120M /dev/vg00/home  #Увеличение размера логического тома до указаной величины
$ lvextend -L+100M /dev/vg00/home #Увеличение размера логического тома на указаную величину
$ lvreduce -L120M /dev/vg00/home  #Уменьшение размера логического тома до указаной величины
$ lvreduce -L-100M /dev/vg00/home  #Уменьшение размера логического тома на указаную величину
$ e2fsadm  -L+100M /dev/vg00/home  #Изменение размер логического тома с файловой системой ext2/ext3


3.16 Добавление в программу поддержки i18n

  • Добавить к проекту:
    #include <libintl.h>;
    #define _(String) gettext(String);
    setlocale (LC_CTYPE, );
    setlocale (LC_MESSAGES, );
    bindtextdomain (DOMAIN,"/usr/share/locale");
    textdomain («DOMAIN»);
  • Все строки подлежащие переводу определить как _(«my str»);
  • Создать исходя из проекта POT файл командой:
    xgettext -o po/prog.pot -d prog -C -a *.cc *.h
  • Скопировать po/prog.pot файл в файл с именем типа uk.po. Отредактировать шапочку и переводы сообщений;
  • Для обновления PO файла после модификации исходников, выполнить:
    msgmerge -U old.po new.pot
  • Сформировать бинарный файл:
    msgfmt -vo prog.mo uk.po #обратно msgunfmt
  • Скопировать полученый prog.mo в каталог соответствующего языка:
    cp ./prog.mo /usr/share/locale/uk/LC_MESSAGES


4 Устройства


4.1 Типы


b – блочные;
c – символьные;
- – обычный файл;
d – каталог;
l – символьная ссылка;
p – именованный канал;
s – сокет;


4.2 Файлы устройств (в каталоге /dev)


null – Нулевое устройство, данные в котором исчезают;
full – Имитация полного устройства, при записи и генерация нулей, при чтении (для отладки программ);
port – Порты IO;
zero – Неисчерпаемый источник нулей;
random – Источник случайных чисел (медленный; более случайный);
urandom – Источник случайных чисел (быстрый; менее случайный);
psaux – Порт мыши PS/2;
scd[x] – SCSI устройства (x=0..n);
sg[x] – Обобщенные устройства SCSI аппаратуры (x=0..n);
hd[x][y] – Стандартное IDE устройство, где x отдельное устройство, y – раздел устройства (x=a..z; y=1..n);
fd[*] – Флоппи устройство;
loop[x] – Петлевые устройства (x=0..n);
mem – Физическая память;
kmem – Виртуальная память ядра;
tty – Управляющий терминал выполняемого процесса;
tty[y][x] – Терминальные устройства (y=S – COM порты);
vcs[x] – Получение снимка экрана виртуальной консоли <x> (x=0..n);
vcsa[x] – Получение снимка экрана виртуальной консоли <x> с заголовком и байтами атрибутов (x=0..n);
eth[x] – Интерфейс сети Ethernet (различные сетевые карты) (x=0..n);
sl[x] – Интерфейсы для связи по протоколу SLIP (x=0..n);
lp[x] – Параллельные порты (x=0..n);
ram[x] – Виртуальный диск, в памяти (x=0..n);
ramdisk – -//-
sndstat – Состояние звукового драйвера;
audio[x] – Устройство звукового вывода, совместимое с форматом Sun (x=0..n);
dsp[x] – Устройство квантования звука (x=0..n);
mixer[x] – Для управления микшерными аппаратными средствами на звуковой плате (x=0..n);
music – Интерфейс высокого уровня для последовательного воспроизведения звука;
midi[x] – Устройство непосредственного доступа к Миди-порту (x=0..n).


5 Горячие клавиши


5.1 BASH

  • Основные:
Ctrl+H(?) – Erase “<-»
Ctrl+C – Прервать текущий процесс (сигнал SIGINT)
Ctrl+\ – Прервать текущий процесс с дампом памяти(core damp)
Ctrl+D – Eof (выход из консольного пользовательского процесса)
Ctrl+S – Остановить процесс
Ctrl+Q – Запустить процесс
Ctrl+Z;; – Перевести процесс в фоновый режим
Ctrl+J – Сброс параметров терминала
Crtl+W – Удалить последнее слово
Ctrl+M – Аналог клавиши “Enter”
Ctrl+R – Переводит в режим поиска команды по истории. Повторное нажатие перебирает сходные по маске строки
Ctrl+L – Очистка экрана
TAB – Автозавершение команд
ScrLock – Приостановка выполнения(печати) текущей команды
Ctrl+Alt+Del – Закрыть систему и перегрузится
  • Навигация:
Up; Down – Просмотр и редактирование истории команд
Alt+Left – Переключение по терминалам влево(консоль)
Alt+Right – Переключение по терминалам вправо(консоль)
Sh+PgUp – Прокрутка текста вверх
Sh+PgDown – Прокрутка текста вниз
Ctrl+B – На символ назад
Ctrl+F – На символ вперёд
Alt+B – На слово вперёд
Alt+F – На слово назад
Ctrl+A – Переводит курсор в начало строки
Ctrl+E – Переводит курсор в конец строки
  • Редактирование:
Ctrl+D – Удаление символа в позиции курсора
Ctrl+H – Удаление символа перед позицией курсора
Alt+D – Удаление символов до ближайшего справа пробела
Ctrl+W – Удаление символов до ближайшего слева пробела
Ctrl+U – Очистить строку ввода слева от курсора
Ctrl+K – Очистить строку ввода справа от курсора
Ctrl+T – Смена положения соседних символов
Ctrl+_ – Откат редактирования
Ctrl+X,Ctrl+U – -//-
MidlMouse – Вставляет текст, выделенный в данный момент в другом месте


5.2 X


Ctrl+Alt+F[n] – Переключение между псевдотерминалами
Ctrl+Alt+<+> – Сменить разрешение на следующее (прописаных в XF86Config)
Ctrl+Alt+<-> – Сменить разрешение на предыдущее (прописаных в XF86Config)
Ctrl+Alt+ESC – Режим удаления указанного окна
Ctrl+Alt+BkSpc – Закрыть текущий X сервер
MidlMouse – Вставляет текст, выделенный в данный момент в другом месте


5.3 KDE


Alt+Tab – Переход между окнами в прямом направлении
Alt+Sh+Tab – Переход между окнами в обратном направлении
Ctrl+Tab – Переход между рабочими столами в прямом направлении
Ctrl+Sh+Tab – Переход между рабочими столами в обратном направлении
Ctrl+Esc – Показать таблицу активных процессов (ksysguard)
Alt+F1 – Вызвать K-меню
Alt+F12 – Эмулировать мышь стрелками клавиатуры
Alt+LeftMouse – Перенести окно схватив его за любую видимую его часть
Alt+PrScreen – Сделать снимок текущего окна в буфер обмена
Ctrl+Alt+l – Запереть рабочий стол
Ctrl+Alt+d – Спрятать/показать рабочий стол


5.4 SysRQ ядра (Alt+SysRq+Key)


r – Отключает режим непосредственной передачи символов с клавиатуры и устанавливает её в режим XLATE
k – Уничтожает все процессы на текущей виртуальной консоли
b – Немедленно перезапускает систему
o – Отключить питание системы через АРМ
s – Синхронизировать все файловые системы
u – Демонтирует и перемонтирует все смонтированные файловые системы в режиме только для чтения
p – Вывести текущее значение регистров и флагов на консоль
t – Вывести список текущих задач и информацию о них на консоль
m – Вывести текущее состояние памяти на консоль

0–9
– Устанавливает уровень выдачи сообщений на консоль для фильтрации сообщений ядра
e/i – Посылает сигналы term или kill всем процессам, кроме init
l – Посылает SIGKILL всем процессам, включая init


6 Форматы основных конфигурационных файлов


6.1 xorg.conf

  • Секция «InputDevice" – описание устройств ввода (клавиатур, манипуляторов мышь)
Identifier – идентификатор устройства ввода
Driver – драйвер устройства ввода:
kbd – клавиатура;
mouse – манипулятор мышь.

Option – опция:

XkbLayout – список раскладок клавиатуры («us,ru,ua»)
XkbOptions – опции клавиатуры, обычно указывается комбинация клавиш для переключения раскладки клавиатуры ("grp:ctrl_shift_toggle", “grp_led:scroll”)
XkbVariant – вариант раскладки клавиатуры (default, winkeys)
XkbModel – модель клавиатуры (105,104 ...)
Device – файл устройства мыши (/dev/input/mice)
Protocol – Протокол интерфейса мыши (PS/2, IMPS/2, ...)
ZAxisMapping – Расключение дополнительных клавиш мыши (колесо – «4 5")
  • Секция “Monitor” – описание монитора
  • Identifier – идентификатор монитора
    DisplaySize – размер дисплея (пропорции – 320 240)
    Option – опция:
    dpms – включение режима энергосбережения
  • Секция “Device” – описание устроства видеовывода
  • Identifier – идентификатор видеокарты
    Driver – драйвер видеокарты (nv, nvidia, radeon, fglrx, ...)
    • Секция “Screen” – описание экрана
    Identifier – идентификатор экрана
    Device – идентификатор устройства видеовывода, видеокарта (описана в секции “Device”)
    Monitor – идентификатор монитора (описан в секции “Monitor”)
    DefaultDepth – глубина цвета устанавливаемая по умолчанию
    SubSection “Display” – подсекция экрана (описывает допустимые разрешения с глубинами цвета):
    Depth – глубина цвета (8,15,16,24,32)
    Modes – допустимые разрешения экрана («1152x864» “1024x768” “1024x736” “1024x600” “960x720” “848x480” “832x624” “800x600”)
  • Секция «ServerLayout" – обобщающая конфигурационная секция (корень)
  • Identifier – идентификатор сервера
    Screen – идентификатор экрана используемого сервером (описан в секции “Screen”)
    InputDevice – идентификатор устройства ввода (описано в секциях «InputDevice")
    • Секция “Module” – секция описания дополнительных модулей расширения
    Load – загрузка указанного модуля:
    dbe – ???
    glx – Модуль языка GLX (для OpenGL)
    dri – Direct rendering infrastructure (для OpenGL)


    6.2 Управляющие последовательности консоли

    • Управление звуком:
    \007 – издать звук;
    \033[10;#] – установить частоту звукового сигнала в герцах;
    \033[11;#] – установить продолжительность звукового сигнала в миллисекундах.
    • Управление цветом:
    \033[0m – все атрибуты по умолчанию;
    \033[1m – жирный шрифт (интенсивный цвет);
    \033[2m – полу яркий цвет (тёмно-серый, независимо от цвета);
    \033[4m – выделение (ярко-белый, независимо от цвета);
    \033[5m – мигающий;
    \033[7m – реверсия (знаки приобретают цвет фона, а фон – цвет знаков);
    \033[22m – установить нормальную интенсивность;
    \033[24m – отменить подчеркивание;
    \033[25m – отменить мигание;
    \033[27m – отменить реверсию;
    \033[30 – чёрный цвет знаков;
    \033[31 – красный цвет знаков;
    \033[32 – зелёный цвет знаков;
    \033[33 – коричневый цвет знаков;
    \033[34 – синий цвет знаков;
    \033[35 – фиолетовый цвет знаков;
    \033[36 – цвет морской волны знаков;
    \033[37 – серый цвет знаков;
    \033[40 – чёрный цвет фона;
    \033[41 – красный цвет фона;
    \033[42 – зелёный цвет фона;
    \033[43 – коричневый цвет фона;
    \033[44 – синий цвет фона;
    \033[45 – фиолетовый цвет фона;
    \033[46 – цвет морской волны фона;
    \033[47 – серый цвет фона.
    • Управление положением курсора
    \033[#A – передвинуть курсор вверх на # строк;
    \033[#B – передвинуть курсор вниз на # строк;
    \033[#С – передвинуть курсор вправо на # столбцов;
    \033[#D – передвинуть курсор влево на # столбцов;
    \033[#E – передвинуть курсор вниз на # строк и поставить в начало строки;
    \033[#F – передвинуть курсор вверх на # строк и поставить в начало строки;
    \033[#G – переместить курсор в указанный столбец текущей строки;
    \033[#;#H – задает абсолютные координаты курсора (строка, столбец).
    • Управление палитрой
    \033]Pnrrggbb – изменяет палитру. n – номер цвета; rr, gg и bb – значения RGB-компонент в шестнадцатеричной форме;
    \033]R – восстанавливает палитру, принятую по умолчанию.
    • Управление виртуальными консолями
    \033[12;#] – сделать текущей консоль с указанным номером.
    • Управление xterm
    \033]0;text\007 – присваивает имя окну и иконке;
    \033]1;text\007 – присваивает имя иконке;
    \033]2;text\007 – присваивает имя окну.
    • Общее
    \033c – сброс терминала;
    \033(K – переключение на загружаемый шрифт.


    6.3 BASH


    6.3.1 Общее


    ![numb] – запуск строки <numb> из истории (history);
    !str – запуск ближайшей строки соответствующей маске str из истории (history);
    \ – продолжение текущей строки на другой строке или экранирование специального символа после данного символа (\$);
    ; – разделитель команд;
    () – выполнения сценария в скобках в другой подоболочке;
    (()) – включение выражений с «С» синтаксисом;
    [] – включение условных операций с синтаксисом команды test;
    “pwd” – определение строки с разрешением подстановки значений переменных;
    'pwd' – определение строки с запрещением подстановки значений переменных;
    `pwd` – результат выполнения команды pwd;
    x=pwd – определение переменной окружения x и присвоение ей строки pwd;
    x='34' – определение переменной окружения x и присвоение ей строки '34';
    x[2]=pwd – определение массива x и присвоение его элементу 2 строки pwd;
    x=(zero one two three) – определение массива x и заполнение четырех его элементов;
    x=([0]=zero [3]=three [2]=two [1]=one) – определение массива x и заполнение четырех его элементов по выбору;
    $(( 100/3 )), $[100/3] – выполнение простых целочисленных операций.

    • Примеры:
    a=4; echo $[a=$a+4] $[a+=4] $[a=a+4]
    a=4; echo $[a=$a+4, a+=4, a=a+4]
    $[2!=2] $[2!=3]
    $[a=2<3] $a
    • Операции:
    id++, id-- – постфиксное увеличение/уменьшение значения переменной на 1
    ++id, --id – префиксное увеличение/уменьшение значения переменной на 1
    -, + – унарные минус и плюс
    !, ~ – логическое и побитовое отрицание
    ** – возведение в степень
    *, /, % – умножение, деление, получение остатка от деления
    +, - – сложение, вычитание
    < <, > > – побитовый сдвиг влево и вправо
    <=, >=, <, > – сравнение
    ==, != – равенство и неравенство
    & – побитовое И
    ^ – побитовое исключающее ИЛИ
    | – побитовое ИЛИ
    && – логическое И
    || – логическое ИЛИ
    выр1?выр2:выр3 – условное вычисление
    =, *=, /=, %=, +=, ?=+ – присваивание
    выр1,выр2 – запятая
    () – выделение более приоритетного участка выражения


    $x, ${x} – подстановка значения переменной/параметра x
    ${!x} – косвенная подстановка значения переменной/параметра указанного в x;
    ${#x} – косвенная подстановка значения переменной/параметра указанного в x,

    если параметр – * или @, подставляется количество позиционных параметров,
    если параметр – массив с индексом * или @, подставляется количество элементов массива;


    ${x:?»Error, no bar»} – генерировать ошибку если x не определена или равна нулю;
    ${x?»Error, no bar»} – -//-;
    ${x:="foose"} – присвоить значение по умолчанию если x не определена или равна нулю;
    ${x="foose"} – -//-;
    ${x:offset:lenght}, ${x:offset} – возвращает часть от x начиная с offset длиной lenght;

    В качестве длины и смещения могут выступать:
    • арифметические выражения;
    • смещение отрицательное число – отсчитывается с конца значения параметра;
    • параметр – @, результат – <n> позиционных параметров, начиная с параметра <m>;
    • параметр – массив с индексом @ или *, результат – <n> элементов массива, начиная с ${параметр[m]};


    ${x:+"foose"} – если переменная определена то вместо неё используется “foose”;
    ${x+"foose"} – -//-;
    ${x:-"foose"} – если переменная определена то она используется иначе используется “foose”;
    ${x-"foose"} – -//-;
    ${пар#шабл} – ??
    ${пар##шабл} – ??
    ${пар%шабл} – ??
    ${пар% %шабл} – ??
    ${пар/шабл/стр} – заменяется первая, самая длинная подстрока значения параметра, на указанную строку;
    ${пар/ /шабл/стр} – заменяются все самые длинные подстроки значения параметра, на указанную строку;
    ${array[@]} – обращение сразу ко всему массиву;
    $(x) – выполнение команды x и возврат результата (подобно `x`);
    $0 – имя команды в командной строке;
    $n, ${n} – аргумент n командной строки (n = 1...);
    $* – раскрывает единственное слово, содержащее список всех позиционных парам;
    $# – количество аргументов;
    $@ – ссылка на все аргументы команды отделенные пробелами;
    $$, $PPID – PID текущего процесса (скрипта);
    $? – код возврата последней команды;
    $! – PID последнего фонового процесса;
    $'\n' – вставка управляющего символа в строку;
    Comm && – выполняет действие после выражения если команда <Comm> неудачна;
    Comm || – выполняет действие после вырожения если команда <Comm> удачна;
    MYVAR#*fo – отсекает от начала переменной MYVAR самую короткую часть удовлетворяющую маске *fo;
    MYVAR##*fo – отсекает от начала переменной MYVAR самую длинную часть удовлетворяющую маске *fo;
    MYVAR%fo* – отсекает от конца переменной MYVAR самую короткую часть удовлетворяющую маске fo*;
    MYVAR% %fo* – отсекает от конца переменной MYVAR самую длинную часть удовлетворяющую маске fo*;
    MYVAR:2:5 – возвращает часть строки MYVAR которая начинается с 2 символа и заканчивается 5;


    6.3.2 Основные переменные окружения оболочки


    PWD – текущий рабочий каталог;
    UID – цифровой идентификатор текущего пользователя;
    umask – содержит маску прав доступа по которой создаются новые файлы;
    BASH – полный путь вызова BASH;
    BASH_VERSION – версия данного экземпляра BASH;
    EDITOR – содержит имя редактора используемого для редактирования некоторых конфигов;
    PAGER – содержит имя программы для отображения информационных страниц (типа more);
    SHLVL – количество запущенных BASH;
    REPLY – содержит последнюю строку ввода;
    RANDOM – содержит случайное число в диапазоне 0..32767;
    SECONDS – время в секундах от запуска BASH;
    HISTCMD – номер текущей команды в истории;
    IFS – внутренний разделитель полей;
    PATH – пути поиска команд;
    HOME – домашний каталог текущего пользователя;
    MAIL – имя файла в который поступает электронная почта;
    LOGNAME – имя пользователя использованное для входа в систему;
    SHELL – имя интерпретатора команд;
    LD_LIBRARY_PATH – описания пользовательских путей к динамическим библиотекам;
    DISPLAY – описывает адрес дисплея для X-приложений;
    LANG – переменная локали;
    TERM – содержит имя терминала;
    INPUTRC – содержит имя файла параметров для библиотеки readline, определяющей параметры ввода с клавиатуры;
    PS1,PS2 – описывает вид приглашения в командной строке;
    MALLOC_CHECK_ – указывает что делать с ошибками в функциях malloc, free:

    = 0 – молча игнорировать все ошибки;
    = 1 – сообщить об ошибке и продолжить работу;
    = 2 – прервать (без сообщения);
    = 3 – прервать и сообщить об ошибке.


    MALLOC_TRACE – определяет путь для комманды mtrace и функции в программе mtrace;


    6.3.3 Основные операторы


    . – выполнить все команды в файле после точки;
    & – выполнить команду до него в фоновом режиме;
    if [ Condition ] – условный оператор ( if ( Condition ) – tch);
    then – выполнение условия;
    else – невыполнение условия;
    elif [ Condition ] – совмещенная команда else if;
    fi – окончание условного оператора;
    for x in 1 2 3 4 – оператор цикла, в x перебираются значения за in ( foreach x (1 2 3 4) – tch );
    while [ Condition ] – выполняет цикл пока верно условие Condition ( while ( Condition ) -tch );
    until [ Condition ] – выполняет цикл до равенства условия Condition;
    (repeat x expression – tch ) – выполняет повторение выражения <expression> x раз;
    select x in list; – запрашивает выбор из списка <list> и присваивает выбранное значение переменной <x>;
    do – начало цикла определенного for, while, until;
    done – конец цикла определенного for, while, until;
    break – завершение цикла;
    continue – продолжение цикла сначала;
    case x in – rоманда выбора. Имеет структуру:

    case "${x##*.}" in 
    gz) gzunpack ${SROOT}/${x} ;;
    bz2) bz2unpack ${SROOT}/${x} ;;
    • ) echo «Неизвестный формат архива» exit ;;

    esac


    <;em>function func() { } – определяет функцию с именем func;
    export x – создает переменную окружения x и экспортирование её в систему;
    local x – создает локальную переменную окружения которая не перекрывает глобальной (часто используется для функций);
    declare – встроенная команда bash для декларирования переменных и изменения их атрибутов;
    set x = str – инициализация переменной;

    • A Name_A 1 2 3 4 5 – инициализация массива;
    • V,-X – включение отладочного режима;
    +V,+X – выключение отладочного режима;


    unset x – отмена инициализации переменной;
    read x y – ввод строки из двух слов;
    exit – выход из сценария;
    eval – означивание строки (т.е. замена записей типа "$5" на их значения);
    shift – сдвиг параметров командной строки на единицу (для доступа к параметрам с номером > 9 );
    trap – установка обработчиков сигналов в скрипте;
    alias – создание псевдонимов или альтернативных имен команд;
    unalias – удаление псевдонима;


    6.3.4 Операторы сравнения файлов


    -e – существует;
    -d – каталог;
    -f – обычный файл;
    -c – специальный файл;
    -L – символическая ссылка;
    -r – для чтения;
    -w – для записи;
    -x – исполняемый;
    -z – файл пуст;
    -s,(-z) – имя файла не нулевой длины;
    (-o) – пользователь является владельцем файла;
    fname1 -nt fname2 – fname1 новее fname2;
    fname1 -ot fname2 – fname1 старше fname2;


    6.3.5 Операторы сравнения строк


    -z – строка пуста;
    -n – строка непуста;
    =, (==) – строки равны;
    != – строки неравна;


    6.3.6 Арифметические операторы сравнения


    -eq – равно;
    -ne – неравно;
    -lt,(< ) – меньше;
    -le,(<=) – меньше или равно;
    -gt,(>) – больше;
    -ge,(>=) – больше или равно;


    6.3.7 Логические операторы


    ! – отрицание логического вырожения;
    -a,(&&) – логическое «И»;
    -o,(||) – логическое «ИЛИ»


    6.3.8 Перенаправления вывода


    | – перенаправление вывода в канал
    < file – file записать в STDIN
    > file – STDOUT записать в file
    ??<div class="center"> file – STDOUT добавить в file<br />
    </div>?? str – определяет слово <str> как признак окончания ввода
    2> file – STDERR записать в file
    1>&2 – STDOUT записать в STDERR
    2>&1 – STDERR записать в STDOUT
    &> file – STDOUT и STDERR записать в file


    6.3.9 Специальные символы


    \n – новая строка
    \b – возврат на один символ
    \c – печать строки без символа новой строки
    \f – переход к новой странице/экрану
    \r – возврат каретки
    \t – табуляция
    \v – табуляция по вертикали
    \\ – обратная косая черта
    0nnn – восьмеричное число
    xNN – шестнадцатеричное число


    6.3.10 Маски (подстановка, может быть отключена опцией -f или set)


    * – любая строка
    ? – любой одиночный символ
    [...] – соответствует любому символу в скобках [A-Z]; "! и ^" – исключение символа.


    6.3.11 Представление численных значений


    045 – восьмеричное число (начинается с 0)
    0x45, 0X32 – шестнадцатеричное число
    [основание#]n – число с основанием <n> (по умолчанию основание 10)

    Примеры:
    $[2#101] $[10#101] $[16#101]
    $[16#FF] $[16#ff] $[0xFF]
    $[64**2] $[64#@@]
    $[64#z] $[64#Z]


    6.3.12 Полезные обороты




    wc -l  # получить количество строк
    wc -w  # получить количество слов
    sed -n 4p  # получить указанную строку
    ls -1 /etc  # получить содержимое каталога по строкам
    head -c8 /dev/random | uuencode -m - | sed -n '2s/=*$//;2p'  # cгенерировать случайный пароль


    6.4 GDB


    run – запуск отлаживаемой программы
    break func – установка точку прерывания на функцию func
    list func – просмотр содержимого функции или исходного файла
    next – следующая команда;
    quit – выход;


    6.5 MAKE


    Формат правила:

    <цель_1> <цель_2> ... <цель_n>: <зависим_1> <зависим_2> ... <зависим_n>
    <команда_1>
    <команда_2>
    ...
    <команда_n>


    Цель это некий желаемый результат может представлять собой:

    • имя файла (my_file: file.c file1.c);
    • команда (clean: );


    Зависимость, также может быть файлом или командой которая должна выполнится ранее.


    6.5.1 Шаблонные правила


    .cpp.o: – файлы с расширением *.o зависят от соответствующий файлов с расширением *.cpp
    %.o: %.cpp – проверяет все файлы с расширением .cpp и заменяет цель на расширение .o
    .PHONY: x – объявление специальной цели (не файл)
    all: – выполняет эту цель при отсутствие параметров команды make


    6.5.2 Ключевые слова и команды


    =,:= – оператор объявления переменных (x = test)
    += – добавление текста к существующей переменной
    #define – определение переменных. (#define x «test 1")
    include – включение внешнего файлы и его обработка, с прерыванием при отсутствие файла
    -include – включение внешнего файлы и его обработка, без прерывания при отсутствие файла
    $(function par1, par2 ...) – вызов функции и получение значения переменной
    addprefix – добавляет префикс в первом параметре к каждому элементу в списке второго параметра
    addsuffix – добавляет суффикс в первом параметре к каждому элементу в списке второго параметра
    wildcard – расширяет переданные шаблоны до списка файлов соответствующих этим шаблонам
    notdir – выделение имени файла из полного пути
    patsubst – изменяет указанным образом слова подходящие под шаблон

    object_files = $(patsubst %.cpp, %.o, man.cpp) -> man.o


    override – позволяет изменять переменные заданные через пораметры make
    for x in 1 2 3 4; – оператор цикла, в x перебираются значения за in
    do – начало цикла определенного for
    done – конец цикла определенного for


    6.5.3 Специальные переменные


    VPATH – описывает список каталогов для поиска зависимостей
    CC – указывает компилятор языка С
    СXX – указывает компилятор языка С++
    СFLAGS – указывает флаги компилятора С
    CXXFLAGS – указывает флаги компилятора С++
    LDLIBS – описывает опции линкера


    6.5.4 Автоматические переменные


    `command` – вставить в сценарий выхлоп команды <command>
    $@ – имя цели обрабатываемого правила
    $< – имя первой зависимости обрабатываемого файла
    $^ – список зависимостей обрабатываемого правила


    6.6 Makefile.am


    bin_PROGRAMS – определяет имя программы
    <prog>_SOURCES – определение исходников от которых зависит программа
    CXX – имя C++ компилятора
    CXXFLAGS – определение опций С++ компилятора
    AUTOMAKE_OPTIONS – определение опций automake:

    • foreign – не требовать создания файлов документации


    6.7 configure.in


    AC_INIT(file) – инициализация скрипта и проверка на наличие исходников
    AC_CONFIG_AUX_DIR(dir) – использовать скрипты типа install-sh из каталога <dir>
    AM_INIT_AUTOMAKE(prog, 1.0) – определение имени и версии проекта
    AC_PROG_CC – проверка наличия С компилятора
    AC_PROG_CXX – проверка наличия С++ компилятора
    AC_OUTPUT([file ... [, extra-cmds [, init-cmds] ] ]) – создаёт выходные файлы <file> типа Makefile (копирует входной file.in и подставляет значения переменных).

    extra-cmds – дополнительные команды с их инициализацией в init-cmds


    AC_OUTPUT_COMMANDS(extra-cmds [, init-cmds] ]) – дополнительные команды с их инициализацией в init-cmds. Выполняются в конце config.status


    6.8 Сonfigure


    --bindir – директория для исполняемых файлов
    --build – платформа сборки
    --cache-file – файл для помещения результатов проверок
    --datadir – директория для хранения файлов данных
    --enable-...(-disable-...) – включить(выключить) возможность/функцию
    --exec-prefix – похож на опцию – -prefix
    --help – список всех опций командной строки
    --host – имя платформы домашнего(host) компьютера
    --includedir – директория заголовочного файла
    --infodir – директория информации типа <info>
    --libdir – директория библиотек
    --mandir – директория c руководствами
    --no-create – не создавать конечные файлы
    --norecursion – не вызывать вложенные configure
    --prefix – директория корневого каталога
    --sbindir – директория для системных исполняемых файлов
    --silent – подавляет вывод результатов исполнения на экран
    --srcdir – каталог исходных текстов
    --sysconfdir – каталог данных только для чтения(/etc)
    --target – имя целевой платформы
    --tmpdir – каталог для хранения временных файлов Configure


    6.8 RPM *.spec

    • Макрокоманды:
    %description – Полное описание пакета.
    %prep – Подготовка архива. Задаются команды для извлечения исходного текста программы и его распаковки.
    %setup – Макрокоманда извлечения файлов из архива (-n – каталог приёмник).
    %build – Макрокоманда компиляции (обычно задаётся make).
    %files – Задаёт список файлов, входящие в состав пакета.
    %config – Задаёт список файлов, которые будут помещены в каталог /etc.
    %doc – Задаёт список файлов, которые будут помещены в каталог документации.
    %install – Этап установки программного обеспечения. Задаются команды установки фыйлов.
    %pre – Действия которые будут выполнены до инсталяции пакета.
    %post – Действия которые будут выполнены после инсталяции пакета.
    %preun – Действия которые будут выполнены перед удалением пакета.
    %postun – Действия которые будут выполнены после удалением пакета.
    %clean – Удаления дерева BUILD.
    %changelog – Содержит log изменения spec файла.
    • Переменные окружения:
    $RPM_BUILD_ROOT – корень исходников данного пакета.
    $RPM_OPT_FLAGS – дополнительные опции переданые команде rpmbuild.


    6.9 /etc/syslog.conf


    [!NameProg] <facility>.[op]<level>[;<facility>.<level>] <Name file>

    где:

    <NameProg> – имя программы посылающей сообщения;
    <facility> – категория журналированния:
    • auth – все что связано с авторизацией;
    • authpriv – тоже что и auth, но приватные данные;
    • console – сообщения печатаемые на системной консоли;
    • cron – сообщения от системного планировщика;
    • daemon – ловушка для сообщений от всех остальных системных демонов;
    • ftp – действия ftp – сервера;
    • kern – сообщения от ядра;
    • lpr – сообщение от системы печати;
    • mail – сообщения от почтовой системы;
    • mark – для помещения сообщений каждые 20 минут;
    • news – сообщения от сервера новостей;
    • ntp – сообщения от сервера точного времени;
    • security – сообщения от различных служб безопасности;
    • syslog – от самой системы журналированния;
    • user – сообщения от пользовательских программ без указания категории;
    • uucp – сообщение от UUCP;
    • local[n] – зарезервированные категории для администратора системы (n=0..7)


    <level> – Уровень детализации:

    • emerg – паника;
    • alert – опасность;
    • crit – критично;
    • err – ошибки;
    • warning – предупреждения;
    • notice – замечания;
    • info – общая информация;
    • debug – отладка;
    • none – ничего не записывать.


    <op> – Метод журналированнияе. При отсутствие выводит сообщения указанного и более высокого уровня:

    • = – указанного уровня;
    • < – меньше указанного уровня;
    • > – больше указанного уровня;

    <Name file> – Имя файла для лога. Может также быть указателем на другую машину (@server.org) для журналирования на ней. А также передавать сообщения через канал другому приложению (|/usr/bin/messcheck.pl).


    6.10 /etc/modules.conf


    alias [class] [module] – определяет модуль/драйвер, как определенный класс устройств
    alias [class] off – обозначает, что этому классу не соответствует ни одно устройство
    options [класс или модуль] [знач1] [знач2] – определяет дополнительные параметры модуля
    pre-install [класс или модуль] command – выполняет программу <command> перед инсталляцией модуля
    post-install [класс или модуль] command – выполняет программу <command> после инсталляции модуля
    pre-remove [класс или модуль] command – выполняет программу <command> перед удалением модуля
    post-remove [класс или модуль] command – выполняет программу <command> после удаления модуля


    6.11 Поточный редактор “sed” и команды в редакторе VI 


    Пример выделение частоты процессора:

    cat -n «/proc/cpuinfo | sed -n «/cpu MHz[^ ]*[ ]*\([^ ]*\).*/s\1/p»//


    Запросы:

    a – вставить текст после текущей строки
    c – заменить указанные строки
    d – исключить текущую строку
    e – открыть для редактирования указанный файл с проверкой старого
    E – начать редактирование файла без проверки
    f – напечатать имя редактируемого файла
    g – применить указанный запрос ко всем строкам
    i – вставить текст перед текущей строкой
    j – объединить строки
    k – поменять строки
    l – напечатать строку
    m – переставить группу строк в другое место
    n – напечатать строки вместе с их номерами
    p – напечатать строки
    q – выйти из редактора с проверкой сохранения текущего файла
    Q – выйти без проверки
    r – считать файл в буфер
    s – заменить текст в пределах строки
    t – скопировать группу строк
    u – аннулировать результат последней замены s
    v – применить указанный запрос ко всем строкам не содержащим заданный образец
    w – записать группу строк в файл
    W – дозаписать группу строк в конец файла
    = – напечатать номер строки
    ! – выполнить системную команду
    + – шаг вперёд на одну строку
    - – шаг назад на одну строку


    Выражения:

    . – любая литера, кроме новой строки
    [s] – любая литера из цепочки s
    [^s] – любая литера не входящая в цепочку s
    e* – все соседние вхождения;
    \(e\) – выделить подвыражение, на подвыражение можно ссылаться используя \n
    \n – n-е выделенное подвыражение
    ^ – начало строки
    $ – конец строки
    – заэкранировать специальный символ


    Адреса:

    . – текущая строка
    n – n-я строка
    $ – последняя строка редактируемого текста
    'x – строка, помеченная меткой x
    /e/ – ближайшая следующая строка, содержащая e
    ?e? – ближайшая предыдущая строка, содержащая e


    6.12 Поточный редактор AWK


    Формат записи: awk '{print $2,$1}'


    print $1,$3 – печатает указанные поля, разделённые пробелом, для всех строк
    printf "%s/*\n", $2 – печать форматированных данных


    6.13 Параметры ядра


    root=/dev/hda – расположение корневого раздела
    ro, rw – режим монтирования – только для чтения или полный
    hdd=ide-scsi – на каком ide диске эмулировать scsi
    init=/bin/bash – программа инициализации, выполняется сразу после загрузки ядра
    syngle – загрузится в одиночном режиме
    1,3,5 – режим загрузки INIT:

    1 – однопользовательский;
    3 – многопользовательский без GUI;
    5 – многопользовательский c GUI.


    6.13 CVS


    Репозиторий CVS хранит полные копии всех файлов и каталогов, находящихся под контролем версий.



    $ export CVSROOT=/home/Roman/progects/CVS_R   # Указание на каталог, где находится репозиторий CVS.
    $ export CVSROOT=:pserver:user@serv.comp.org:/CVS_R  # Указание на удалённый репозиторий.
    $ cvs -d /usr/local/cvsroot init  # Создание пустого репозитория.
    $ cvs -d:pserver:user@serv.comp.org:/usr/local/cvsroot init  # Создание пустого репозитория на удалённом сервере.
    $ cvs import MyProg MyName start  # Импортирует проект MyProg от имени создателя MyName в CVS.
    $ cvs -z 3 co tc  # Експорт проекта tc для работы над ним. В результате чего будет создан каталог `tc', в который будут помещены все файлы.
    $ cvs co -r revise Prog  # Загрузить дерева проекта с ревизией(тегом) <revise>.
    $ cvs up  # Синхронизация исходных текстов со всеми изменениями (выполнять перед фиксацией своих изменений).
    $ cvs up -r revise  # Привести содержимое дерева в соответствии с ревизией <revise>.
    $ cvs ci backend.c -r revise  # Зафиксировать изменения в backend.c и запускает редактор (ENV: CVSEDITOR), чтобы ввести журнальную запись об изменениях.
    $ cvs ci -r revise  # Зафиксировать изменения в дереве под ревизией <revise> для всего дерева.
    $ cvs tag revise  # Привести вершину дерева к <revise>.
    $ cvs release -d tc  # Выполняет удаления вашей копии проекта и при этом проверяет, что все ваши изменения были зафиксированы.
    $ cvs log file.cc  # Вывести лог изменений в файле file.cc.
    $ cvs diff driver.c  # Вывести описание изменений внесенных в файл `driver.c'.
    $ cvs add readmi.cc  # Внесение файла readmi.cc под контроль CVS.
    $ cvs rm readmi.cc  # Сообщение CVS о том что файл readmi.cc должен быть удалён из репозитория при следуйщей команде <ci>.


    7 Права доступа


    Read ( r ) – [Владелец | группа | другие ] могут:

    файл – читать файл
    каталог – читать содержимое каталога


    Write ( w ) – [Владелец | группа | другие ] могут:

    файл – модифицировать файл
    каталог – создавать/удалять файлы и каталоги в данном каталоге


    Execute( x ) – [Владелец | группа | другие ] могут:

    файл – запускать файл
    каталог – делать каталог текущим и запускать в нем запускаемые файлы


    Setuid ( s ):

    файл – файл запускается от имени владельца файла
    каталог – не имеет смысла


    Setgid ( s ):

    файл – файл запускается от имени группы файла
    каталог – файлы и каталоги создаваемые в этом каталоге будут иметь туже группу-владельца что и сам этот каталог. Кроме того, у создаваемых директорий тоже будет установлен этот бит.


    Sticky ( t ):

    файл – указывает системе на необходимость сохранять образ этого файла на swap-устройстве, что позволяет быстро его запускать
    каталог – файлы в этом каталоге могут стирать только их владельцы


    Автор: Роман Савченко
    Оригинал статьи LinuxShortAll

    Администрирование ОС Linux

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

    - Изменение параметров работающего ядра
    - Команды для настройки системы

    Файловая система /proc - это одна из величайших особенностей Linux и эта статья проведет вас по наиболее полезным ее аспектам. С ней вы сможете администрировать многие детали вашей системы без необходимости перезагрузки машины. Linux позволяет вносить изменения в систему и устанавливать различные параметры во время работы многими способами. Есть две основные формы, общие для всех систем Linux, которые заложены в ядро. В этой статье рассматриваются оба способа.

    Внимание: Эта статья написана для ядер серии 2.4-х. Некоторые опции и возможности могут отличаться в ядрах других серий.

    Изменение параметров работающего ядра

    Linux имеет отличный способ изменять параметры ядра во время работы системы и без необходимости перезагрузки. Это делается при помощи виртуальной файловой системы /proc. Linux Gazette дает один из простейших и легчайших объяснений /proc, которые я когда-либо видел.

    Вкратце, файловая система /proc дает вам возможность заглянуть в работающее ядро, что может быть полезно для мониторинга производительности, проверки системной информации, конфигурирования системы и изменения конфигурации. Эта файловая система называется виртуальной, потому что это в действительности не файловая система. Это карта, создаваемая ядром и присоединяемая к вашей обычной файловой системе, чтобы обеспечить доступ. Тот факт, что мы можем разными способами внести изменения в ядро во время работы системы дает системному администратору огромную мощь и гибкость при изменении параметров.

    Но может быть слишком много власти это плохо? Иногда. Если вы собираетесь внести изменения в файловую систему /proc, вы должны быть уверены, что вы знаете, что вы делаете и какой эффект произведут на систему ваши действия. Это очень полезная техника, но одно неверное движение может вызвать неожиданные последствия. Если вы не уверены и новичок в таких делах, попрактикуйтесь на машине с меньшей важностью для ваших дел.

    Как вносить изменения

    Сначала, подумайте о том, как не вносить изменения в ядро. Есть две отличных причины, почему вам не стоит просто перейти в /proc, открыть файл в текстовом редакторе, сделать несколько изменений и сохранить файл. Вот они:

    Целостность данных: Все эти файлы представляют работающую систему, а поскольку ядро может внести изменения в эти файлы в любое время, то если вы откроете файл и попытаетесь внести изменения в то время, когда туда вносит изменения система, то вы можете сохранить не то, что ожидает увидеть ядро. Виртуальные файлы: Все эти файлы в действительности не существуют. Как же тогда синхронизировать сохраненные данные?

    Ответом на это является не использование текстового редактора для внесения изменений. Поэтому для внесения изменения в что-либо в файловой системе /proc, вам следует использовать команду echo и перенаправлять вывод команды в выбранный файл в /proc.

    Например: echo "Your-New-Kernel-Value" > /proc/your/file

    Аналогично, если вы хотите увидеть информацию из /proc, вам следует использовать либо команду, которая предназначена для этого, либо команду cat.

    Что изменять

    Вам не нужно быть разработчиком ядра, чтобы пользоваться /proc, а базовое понимание этой структуры отлично вам поможет. Вы можете найти, что вам не нужно знать обо всем в /proc, до тех пор пока пользователь не попросит вас увеличить производительность и вы должны будете изучить куда вносить изменения. Файловая система /proc помогает администратору в этом через свою структуру и атрибуты файлов.

    Каждый файл в /proc имеет особый набор атрибутов и может принадлежать конкретному пользователю по его ID. Сделано это очень аккуратно, так что правильная работа обеспечена и администратору и пользователям. Следующий список обобщает какие атрибуты могут быть у файлов:

    Read-only: Файл не может быть изменен ни каким пользователем; используется для представления системной информации Root-write: Если файл может быть изменен, то изменения может вносить только пользователь root Root-read: Некоторые файлы могут быть не читаемы для обычных пользователей системы, только для root Other: Вы можете найти другие комбинации, чем перечисленные выше, по различным причинам

    В основном в /proc вы найдете файлы read-only за исключением /proc/sys, которая содержит большинство параметров ядра и предназначена для изменения во время работы системы. Как результат в этой статье рассматривается в основном эта директория.

    Последнее, что вам нужно знать о изменении файлов в /proc - это то, что нужно записывать в эти файлы. Вы заметите, что некоторые из файлов могут быть легко прочитаны человеком, а некоторые являются файлами данных и могут быть прочитаны только при специальных утилит таких как top, lspci,и free. Вы также заметите, что эти легко читаемые файлы имеют два различных формата: некоторые являются бинарными ключами, а другие содержат больше информации. Файлы с бинарными ключами содержат только 0 (выключено) или 1 (включено) для некоторых функций ядра.

    Внесение изменений

    Детальная информация об использовании каждого файла в /proc выходит за рамки этой статьи. За дополнительной информацией о любом файле /proc стоит непосредственно обратиться в исходники ядра, которые содержат очень хорошую документацию.

    Следующие файлы в /proc наиболее полезны для системного администратора. Они не являются исчерпывающими, но полезны для повседневного использования.

    /proc/scsi

    /proc/scsi/scsi

    Одна из наиболее полезных вещей, которые нужно знать администратору - как добавить дисковое пространство, если у вас есть диски горячей замены без перезагрузки системы. Без использования /proc, вы должны вставить ваш диск, но затем вам придется перезагружать систему для того, чтобы дать ей возможность распознать новый диск.

    Вы можете позволить системе распознать новый диск с помощью следующей команды:

    echo "scsi add-single-device w x y z" > /proc/scsi/scsi

    Чтобы эта команда работала правильно, вы должны указать параметры значений w, x, y, и z следующим образом:

    w - это ID хост адаптера, где первый адаптер имеет ID ноль (0) x - это канал SCSI на хост адаптере, где первый канал ноль (0) y - это SCSI ID устройства z - это номер LUN, где первый LUN ноль (0)

    Поскольку ваш диск добавлен в систему, вы можете монтировать любую предварительно форматированную файловую систему или вы можете начать форматирование ее, и так далее. Если вы не уверены в том, каким устройством является установленный диск или вы хотите проверить существующие партиции, вы можете использовать команду fdisk -l, которая выведет необходимую информацию для вас. Команда для удаления устройства из системы без перезагрузки:

    echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

    Перед тем как ввести эту команду и удалить SCSI диск, убедитесь, что вы отмонтировали файловые системы на этом диске.

    /proc/sys/fs/

    /proc/sys/fs/file-max

    Здесь указывается максимальное количество заголовков файлов, которое может быть одновременно открыто. Вам может понадобиться увеличить это число если пользователи получают сообщение об ошибке потому что достигнуто максимальное количество открытых файлов. Можно указать любое числовое значение в этом файле. Default setting: 4096

    /proc/sys/fs/file-nr

    Этот файл связан с file-max и содержит три значения:

    Количество назначенных заголовков файлов Количество используемых заголовков Максимальное число заголовков

    Этот файл только для чтения и только для предоставления информации.

    /proc/sys/fs/inode-*

    Любые файлы, начинающиеся с "inode" будут выполнять те же функции, что и файлы с именем "file" выше, но выполняют эти операции относительно inodes вместо заголовков файлов.

    /proc/sys/fs/overflowuid и /proc/sys/fs/overflowgid

    Эти файлы содержат User ID (UID) и Group ID (GID) для любой файловой системы, которая поддерживает 16-bit user и group ID. Эти значения могут быть изменены, но если вы действительно считаете это нужным, то более простым будет изменить файл группы и пароля группы вместо этого. Default Setting: 65534

    /proc/sys/fs/super-max

    Здесь указывается максимальное количество заголовков суперблоков. Любая файловая система, которую вы монтируете должна использовать суперблоки, так что вам, возможно, придется использовать его если вы монтируете много файловых систем. Default setting: 256

    /proc/sys/fs/super-nr

    Здесь указано текущее значение количества суперблоков. Этот файл только для чтения и используется для информации.

    /proc/sys/kernel

    /proc/sys/kernel/acct

    Здесь содержатся три конфигурируемых значения, которые управляют подсчетом процессов, основанном на свободном пространстве (в процентах) файловой системы и ведет лог:

      Если свободное пространство ниже значения в процентах, то процесс подсчета останавливается Если свободное пространство выше, то процес запускается Частота в секундах, с которой проверяются предыдущие два значения

    Чтобы изменить значения в этом файле вам следует использовать разделенный список параметров. Default setting: 2 4 30

    Эти значения остановят подсчет, если в файловой системе менее 2 процентов свободного пространства и начнет опять если появится 4 или более процентов. Проверка производится каждые 30 секунд.

    /proc/sys/kernel/ctrl-alt-del

    Этот файл содержит двоичное значение, которое управляет тем, как система реагирует на комбинацию ctrl+alt+delete. Возможны два значения:

      Ноль (0) значит, что ctrl+alt+delete принимается и отправляется программе init. Это позволит выполнить системе мягкую остановку и перезагрузку как если бы вы ввели команду shutdown. Один (1) значит, что ctrl+alt+delete не принимается и никакого чистого отключения не происходит как если бы вы просто выключили питание.

    Default setting: 0

    /proc/sys/kernel/domainname

    Здесь вы можете сконфигурировать ваше сетевое доменное имя. Значения по умолчанию нет и оно может быть, а может и не быть установлено.

    /proc/sys/kernel/hostname

    Здесь вы можете сконфигурировать ваше сетевое имя хоста. Значения по умолчанию нет и оно может быть, а может и не быть установлено.

    /proc/sys/kernel/msgmax

    Здесь определяется максимальный размер сообщения, которое может быть отправлено от одного процесса другому. Сообщения между процессами в памяти ядра не копируются на диск, так что если вы увеличите это значение, то вы увеличите количество памяти используемой операционной системой. Default setting: 8192

    /proc/sys/kernel/msgmnb

    Здесь указывается максимальное количество байт в одном сообщении. Default setting: 16384

    /proc/sys/kernel/msgmni

    Здесь указывается максимальное количество идентификаторов сообщений в очереди. Default setting: 16

    /proc/sys/kernel/panic

    Здесь установлено время в секундах, которое ядро будет ждать перед перезагрузкой если произойдет "kernel panic." Установка в ноль (0) секунд отключит возможность перезагрузки при kernel panic. Default setting: 0

    /proc/sys/kernel/printk

    Здесь четыре числовых значения, которые определяют куда будут отправлены сообщения логов, в зависимости от их важности. За более подробной информацией о различных уровнях логов отправляейтесь в man syslog(2). Четыре значения это:

      Console Log Level: сообщения с высшим приоритетом, чем это будут выведены на консоль Default Message Log Level: сообщения без приоритета будут напечатаны с этим приоритетом Minimum Console Log Level: минимальное (высочайший приоритет) значение, в которое может быть установлен Console Log Level Default Console Log Level: значение по умолчанию для Console Log Level

    Default setting: 6 4 1 7

    /proc/sys/kernel/shmall

    Это общее количество разделяемой памяти (в байтах), которое может быть использовано в системе. Default setting: 2097152

    /proc/sys/kernel/shmax

    Здесь указывается наибольший размер сегмента памяти (в байтах) позволяемый ядром. Default setting: 33554432

    /proc/sys/kernel/shmmni

    Этот файл связан с максимальным числом сегментов раздляемой памяти всей системы. Default setting: 4096

    /proc/sys/kernel/sysrq

    Активирует System Request Key, если не равно нулю. Default setting: 0

    /proc/sys/kernel/threads-max

    Максимальное число потоков, которое может быть использовано ядром. Default setting: 2048

    /proc/sys/net

    /proc/sys/net/core/message_burst

    Это время (в десятых долях секунды) необходимое для записи нового предупреждения; другие предупреждения, полученные в это время будут пропущены. Это используется для предотвращения атаки Denial of Service, которая может быть выполнена при заваливании вашей системы сообщениями. Default setting: 50 (5 seconds)

    /proc/sys/net/core/message_cost

    Здесь указывается значимость каждого предупреждения. Чем выше значение, тем больше предупреждений будет проигнорировано. Default setting: 5

    /proc/sys/net/core/netdev_max_backlog

    Здесь указывается максимальное количество пакетов в очередь на обработку если интерфейс получает пакеты быстрее, чем ядро может их обработать. Default setting: 300

    /proc/sys/net/core/optmem_max

    Здесь указан максимальный размер буфера для одного сокета.

    /proc/sys/net/core/rmem_default

    Здесь размер буфера для получаемого сокета по умолчанию (в байтах).

    /proc/sys/net/core/rmem_max

    Это максимальный размер буфера для получаемого сокета (в байтах).

    /proc/sys/net/core/wmem_default

    Это размер буфера отправляемого сокета по умолчанию (в байтах).

    /proc/sys/net/core/wmem_max

    Это максимальный размер буфера посылаемого сокета (в байтах).

    /proc/sys/net/ipv4

    Все параметры IPv4 и IPv6 полностью документированы в документации к ядру. Смотри файл /usr/src/linux/Documentation/networking/ip-sysctl.txt.

    /proc/sys/net/ipv6

    То же что и IPv4.

    /proc/sys/vm

    /proc/sys/vm/buffermem

    Здесь происходит управление количеством общей системной памяти (в процентах), которая будет использована как буферная память. Файл содержит три значения, которые могут быть указаны в виде списка через пробел:

      Минимальный процент памяти, которая будет использована для буфера Система будет пытаться установить это количество памяти для буфера если количество доступной памяти будет уменьшено Максимальный процент памяти, которая будет использована для буферов

    Default setting: 2 10 60

    /proc/sys/vm/freepages

    Этот файл управляет как система реагирует на различные уровни свободной памяти. Содержит три значения, которые могут быть установлены в виде списка, разделенного пробелами:

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

    Default setting: 512 768 1024

    /proc/sys/vm/kswapd

    Этот файл управляет как ядро будет свопировать память. Он содержит три значения в виде списка, разделенные пробелами:

      Максимальное количество страниц, которое ядро пытается освободить за один раз. Если вы хотите увеличить величину свопирования, вам нужно увеличить это значение. Минимальное количество раз, которое ядро пытается освободить страницу в время своппинга. Количество страниц, которое ядро может записать в один своп. Оказывает сильное влияние на производительность системы. Чем больше это значение, тем больше данных будет свопировано и тем меньше времени будет потрачено на поиск на диске. Однако, слишком большое значение окажет обратных эффект на производительность системы из-за увеличения очереди запросов.

    Default setting: 512 32 8

    /proc/sys/vm/pagecache

    Этот файл выполняет ту же работу, что и /proc/sys/vm/buffermem, но он делает ее для карты памяти и общего кэширования файлов.

    Выполнение постоянных установок ядра

    Полезная утилита для внесения изменений в любые параметры ядра находится в директории /proc/sys. Она позволяет вам вносить изменения в работающее ядро (подобно echo и метод перенаправления, описанный выше), и имеет файл конфигурации, который выполняется при загрузке. Это позволяет чтобы внесенные изменения оставались в ядре после перезагрузки системы. Утилита называется sysctl и она полностью документирована в man sysctl(8).

    Файл конфигурации для sysctl - /etc/sysctl.conf, который может быть редактирован, синтаксис файла описан в man sysctl.conf(8). Sysctl использует файлы в /proc/sys как индивидуальные переменные, которые могут быть изменены. Например, файл в /proc/sys, который представляет максимальное количество заголовков файлов в системе, /proc/sys/fs/file-max, представлен как fs.file-max. Этот пример требует некоторых дополнительных пояснений в записи sysctl. Так как sysctl может только изменять переменные в директории /proc/sys, то часть имени переменной обозначающая директорию отбрасывается. Другое изменение касается слэшей, которые заменяются на точки. Вот два простых правила для преобразования файлов в /proc/sys и переменных в sysctl:

    Отбросьте /proc/sys от начала. Замените слэши на точки в имени файла.

    Эти два правила позволят вам преобразовать любой файл в /proc/sys в любое имя переменной в sysctl. Обычное преобразование имени файла в переменную:

    /proc/sys/dir/file --> dir.file
    dir1.dir2.file --> /proc/sys/dir1/dir2/file

    Вы можете увидеть все переменные, доступные для изменения, используя команду sysctl -a. Переменные могут также быть изменены с помощью sysctl, которая выполняет ту же работу что и echo. Эта запись объясняет это:

    sysctl -w dir.file="value"

    Используя пример с file-max, мы можем изменить это значение на 16384, используя один из двух методов:

    sysctl -w fs.file-max="16384"

    или

    echo "16384" > /proc/sys/fs/file-max

    Не забывайте, что sysctl не добавляет изменения в конфигурационный файл; вы должны сделать это вручную. Если вы хотите, чтобы ваши изменения остались в системе и после перезагрузки, вы должны настроить этот файл.

    Внимание: Не все дистрибутивы обеспечивают поддержку sysctl. Если это относится к вашей системе, то вы можете использовать echo и метод перенаправления, как описано выше и добавить эти команды в загрузочный скрипт, чтобы они выполнялись каждый раз при загрузке системы.

    Команды для настройки системы

    Есть возможность изменять другие параметры (не ядра) во время работы системы и сделать, чтобы эти изменения оказали эффект без перезагрузки системы. В основном это сервисы, демоны и серверы, которые прописаны в директории /etc/init.d. Поскольку в этой директории находится широкий спектр скриптов, то нет возможности рассмотреть их все здесь. Однако, ниже будут приведены несколько примеров того, как можно манипулировать этими скриптами в различных дистрибутивах Linux. Примеры изменения демона и перезагрузки конфигурации без перезагрузки системы могут быть полезны при:

    Изменении конфигурации Web сервера и перезагрузки Apache Удаления загружаемого в inetd сервиса, которым вы не пользуетесь Манипулирования настройками вашей сети Экспортирования новой файловой системы через NFS Запуска/остановки вашего файервола Сначала, основной способ манипулирования системными сервисами через скрипты в /etc/init.d. Эти скрипты используют параметры для управления своими сервисами. Вы можете ввести в командной строке имя сервиса без параметров чтобы увидеть допустимые параметры. Общие параметры таковы: start: Запускает остановленный сервис stop: Останавливает запущенный сервис restart: Останавливает и затем запускает сервис; запускает остановленный сервис reload: Перезагружает конфигурацию сервиса без прерывания его соединения status: Выводит информацию запущен сервис или нет

    В качестве примера следующая команда перезагрузит конфигурацию вашего xinetd без прерывания любых присоединенных сессий пользователей (полезно, если вы вносите изменения в ваш /etc/xinetd.conf):

    /etc/init.d/xinetd reload

    Red Hat предоставляет комнанду service, которая будет управлять сервисом для вас. Команда service выполняет те же действия, что и ввод имени скрипта. Синтаксис команды:

    service script-name [parameter]

    Пример: service xinetd reload

    SuSE также предоставляет команду rc. Она похожа на service, но не имеет пробела между командой и именем скрипта. Синтаксис команды:

    rc{script-name} parameter

    Пример: rcapache start

    Так же как и при изменении параметров ядра, при перезагрузке системы, все внесенные изменения будут потеряны. Многие дистрибутивы позволяют использовать команду chkconfig, которая управляет сервисами, запускаемыми на различных уровнях (включая загрузку). Во время написания статьи синтаксис команды chkconfig несколько отличался в различных версиях Linux, но если вы введете команду chkconfig без параметров, вы получите список возможных параметров и их использование. Больше информации о chkconfig может быть получено в man chkconfig.

    Раздача интернета средствами Linux + Squid


    Предположим, что у вас есть компьютер с ОС Linux, подключенный к интернету и требуется раздать его на другие компьютеры локальной сети.

    Роль шлюза
    На компьютере-шлюзе должно быть установлено 2 сетевые карты:

    eth0 - к ней подключен интернетeт
    eth1 - к ней подключена локальная сеть Настройте любым доступным способом сетевую карту eth1 так: IP: 192.168.0.1 Netmask: 255.255.255.0 Например, введите в консоли:

    ifconfig eth1 192.168.0.1 netmask 255.255.255.0
    ifconfig eth1 up

    Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf. Вставьте строчку:

    net.ipv4.ip_forward=1

    Выполните команду:

    sysctl -w net.ipv4.ip_forward="1"

    Установите iptables, введите следующее правило (для передачи интернета второму компьютеру) и сохраните его:

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    Установите и запустите dnsmasq - это позволит форвардить шлюзом DNS-ы провайдера иначе на локальных станциях придется указывать в качестве DNS серверы провайдера.

    sudo apt-get install dnsmasq

    Установите на компьютерах локальной сети:

    IP: 192.168.0.X (где X от 2 до 254)
    Netmask/Маска: 255.255.255.0
    Gateway/Шлюз: 192.168.0.1
    DNS: 192.168.0.1 (или DNS провайдера)

    Теперь компьютеры сети должны быть подключёны к интернету. Если после перезагрузки компьютера-шлюза правила iptables не восстанавливаются, добавьте в любой стартовый скрипт (rc.local например):

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    Роль DHCP-сервера

    Для автоматической раздачи IP-адресов компьтерам локальной сети можно использовать уже использовавшийся ранее dnsmasq. Редактируем файл /etc/dnsmasq.conf

    sudo nano /etc/dnsmasq.conf

    Добавляем следующие строки:

    interface=eth1
    dhcp-range=192.168.0.2,192.168.0.100,12h

    Данная конфигурация DHCP-сервера позволит раздавать всем компьютерам локальной сети ip-адреса c 192.168.0.2 по 192.168.0.100 со сроком аренды 12 часов.
    Перезапускаем сервис dnsmasq:

    sudo /etc/init.d/dnsmasq restart

    Роль прокси-сервера

    Для экономии трафика и увеличеня скорости доступа к часто используемым ресурсам можно установить на компьютер-шлюз службу Squid, сделав его прокси-сервером. Squid позволяет кэшировать картинки, флэш-ролики, видео и прочий веб контент. Установите squid при помощи менеджера пакетов Вашего дистрибутива.

    sudo apt-get install squid

    Редактируем файл настроек squid:

    sudo nano /etc/squid/squid.conf

    Ищем параметр http_port , и выставляем ему следующее значение:

    http_port 3128 transparent

    Ищем параметр visible_hostname и выставляем ему следующее значение:

    visible_hostname proxyname (где proxyname - название прокси)

    Создадим правило доступа для нашей сети:

    acl our_networks src 192.168.0.0/255.255.0.0
    http_access allow our_networks

    Таким образом мы разрешили доступ к нашему "прозрачному" прокси для компьютеров из нашей сети 192.168.0.0.

    Перезапускаем сервис squid:

    sudo /etc/init.d/squid restart

    Добавим правило перенаправления портов в наш файервол.

    sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/255.255.255.0 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

    Создается текстовый файл pico /etc/init.d/gateway со следующими командами:

    #!/bin/sh
    iptables —t nat —A POSTROUTING —o eth1 —j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -d ! 192.168.0.0/255.255.255.0 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

    Изменим атрибуты файла:

    chmod +x /etc/init.d/gateway

     и добавим его в автозагрузку: 

    update-rc.d gateway start 51 S

    Расшариваем папки в Linux - краткая инструкция


     
    Итак, у нас установлен Linux, у него есть настроенное подключение к локальной сети (см. статью"Азы настройки сетевых подключений для альтернативных операционных систем") и установлен пакет Samba (входит в установку по-умолчанию большинства современных дистрибутивов). Имеется необходимость сделать на базе этой машины простой файл-сервер с открытым для DOS- и Windows-сетевых станций доступом к некоторым ресурсам. Как показывает практика, входящие в комплект Linux по-умолчанию графические интерфейсы (GUI) управления службой Samba не всегда работают корректно и зачастую внести простые изменения в конфигурационный файл Samba оказывается гораздо проще и быстрее, чем воевать с GUI.
     
    В приводимом примере у нас есть необходимость дать доступ к папке distrib (только на чтение - папка содержит необходимые сетевым станциям дистрибутивы программ) и к папке public (полный доступ - содержит пользовательские данные). Так же на Linux-компьютере имеется принтер (в данном конкретном примере PDF-принтер системы Linux Mint), к которому тоже было бы интересно дать доступ.
     
    Любым способом создаем необходимые нам папки в пользовательской директории, например для пользователя archibyte создаем /home/archibyte/public/ и /home/archibyte/distrib/.
     
    C правами администратора системы открываем для редактирования любым текстовым редактором файл /etc/smb.conf. В приводимом примере он должен иметь следующий вид (после точки с запятой приводятся необязательные комментарии):
     
    [global] ; раздел с общими настрйками. Настройки из данного раздела применяются ко всем расшариваемым ресурсам
    workgroup = MSHOME ; имя рабочей группы netbios name = SERVER ; NETBIOS-имя компьютера, которое увидят DOS- и WINDOWS-машины
    server string = File-server ; комментарии к имени компьютера, которое увидят DOS- и WINDOWS-машины
    printcap name = /etc/printcap
    printing = cups
    cups options = raw
    log file = /var/log/samba/log.smbd
    max log size = 50
    debug level = 5
    security = share ; тип безопасности службы Samba. Более подробно смотрите в инструкции к Samba
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
    socket options = TCP_NODELAY
    SO_SNDBUF=8192
    SO_RCVBUF=8192
    local master = yes
    preferred master = yes
    domain master = no
    wins support = no
    dns proxy = no
    guest ok = yes ; разрешает гостевой вход для DOS и Windows-систем
    guest account = nobody ; указывает на то, что все неизвестные пользователи приравниваются правами к гостям
    unix charset = utf8 ; основная кодовая таблица Linux-системы
    dos charset = cp1251 ; основная кодовая для DOS- и Window-файлов
    display charset = cp1251 ; отображаемая кодовая для DOS- и Window-файлов
    [printers] ; раздел управления доступом к принтерам
    path = /usr/spool/public ; абсолютный путь к дирректории спуллера печати
    guest ok = yes ; разрешает гостевой вход для DOS и Windows-систем
    printable = yes ; разрешает печать для DOS и Windows-систем
    [print$] ; раздел организации доступа к необходимым библиотекам и драйверам системы печати
    comment = Printer
    Drivers path = /var/lib/samba/printers [Public] ; название раздела расшариваемого ресурса
    path =/home/sasha/pub/ ; абсолютный путь к расшариваемой папке
    writable = yes ; разрешение записи guest ok = yes ; разрешает гостевой вход для DOS и Windows-систем
    create mask = 0666 ; устанавливает права пользователя на создание, редактирование и удаление файлов
    directory mask = 0777 ; устанавливает права пользователя на создание, редактирование и удаление поддиректорий
    read only = no ; отключение режима "только чтение"
    [distrib]
    path = /home/archibyte/distrib writable = no ; запрет записи для сетевых пользователей
    guest ok = yes
    create mask = 0666
    directory mask = 0777
    read only = yes ; включение режима "только чтение"
     
    Готовый к использованию файл smb.conf с этим примером прикреплен к данной статье.
    Сохраняем smb.conf и перезапускаем службу Samba (или всю систему целиком): 
     
    sudo /etc/rc.d/init.d/smb stop sudo /etc/rc.d/init.d/smb start
    Доступ открыт - можно работать.

    Свободная система для свободных людей (история операционной системы Linux)


    Линус Бенедикт Торвальдс (Linus Benedict Torvalds) родился 28 декабря 1969 года. Его дед по материнской линии, Лео Вальдемар Тёрнквист был профессором статистики в Университете Хельсинки. В 1981 он купил компьютер Commodore VIC-20. Это был первый компьютер, к которому Линус получил доступ - он помогал деду набивать программы, которые профессор старательно писал на бумаге, потому что не привык делать это непосредственно за компьютером. На этом же компьютере Линус написал свою первую программу - это была традиционная "Hello, World!". Когда дед умер, компьютер достался Линусу. Следующие 4 года он провел за компьютером. Когда он выжал из VIC-20 все, что смог, он стал копить деньги на модель следующего поколения. Основным источником средств на покупку компьютера были школьные стипендии, которые Линукс ежегодно получал как лучший математик. В 1987 году он купил Sinclair QL. В этом компьютере был установлен 32-разрядный процессорный чип 68008 компании Motorola с частотой 8 мегагерц. Sinclair имел 128 килобайт (не мегабайт!) памяти, что по тем временам было очень много для домашнего компьютера. У VIC-20, на смену которому он пришел, было всего три с половиной килобайта. В качестве операционной системы использовалась Q-DOS. Именно в это время Торвальдс заинтерсовался работой операционной системы. Как он пишет сам в книге "Just for fun": "Операционками я заинтересовался так: купил флоппи-контроллер, ... но к нему прилагался такой поганый драйвер, что пришлось написать новый. Пока писал - обнаружил проколы в самой операционной системе или по крайней мере несоответствие между тем, что обещала документация, и тем, что реально происходило. Я с этим столкнулся, когда моя программа отказалась работать."

    На Sinclair QL Торвальдс работал 3 года. За это время он написал собственный редактор и ассемблер, создал несколько игр. По окончании школы он поступил на отделение компьютерных наук университета г.Хельсинки, столицы Финляндии. После окончания первого курса Торвальдс был вынужден был пойти в армию, где прослужил 11 месяцев. По возвращении из армии он снова вернулся в университет, выбрал себе курсы на осень и с нетерпением ждал лекций по языку Си и системе Unix. В предвкушении этих лекций еще летом он купил книгу "Проектирование и реализация операционных систем" Эндрю С. Таненбаума, в которой описывалась операционная система Minix. В своих воспоминаниях Линус пишет: "Как только я прочел предисловие, познакомился с концепцией Unix и узнал, на что способна эта мощная, строгая и красивая операционная система, я захотел купить такой компьютер, на котором сможет работать Unix. Я решил, что поставлю себе Minix - единственную по-настоящему полезную из известных мне версий." 2 января 1991 года Линус приобрел в рассрочку новый компьютер, на основе процессора Intel 80386 с 4 мегабайтими ОЗУ и тактовой частотой 33 мегагерца. Он установил на него Minix, которую пришлось заказывать отдельно. Она поставлялась на 16-ти дискетах. Примерно за месяц Торвальдс обжился в системе полностью и у него возникло множество претензий к этой ОС, несмотря на то, что установил в систему усовершенствования, сделанные австралийским хакером Брюсом Эвансом (это был царь и бог Minix 386). Хуже всего была эмуляция терминала, очень важная для Торвальдса программа, потому что именно ее он использовал для подключения к университетскому компьютеру MicroVAX, на котором стояла Ultrix - вариант Unix, созданный корпорацией Digital Equipment. Пришлось писать собственную программу эмуляции. Когда программа эмуляции терминала заработала, возникла новая проблема. Как пишет Торвальдс "Беда была в том, что я хотел скачивать и закачивать файлы. То есть мне нужно было уметь писать на диск. Для этого моей программе эмуляции нужен был драйвер дисковода. А еще ей был нужен драйвер файловой системы, чтобы она могла вникать в организацию диска и записывать скачиваемые файлы. ... разработка драйверов для дисковода и файловой системы казалась интересным делом. И я решил им заняться. Написал драйвер дисковода. А поскольку я хотел записывать файлы в файловую систему Minix, да к тому же эта система была хорошо документирована, я сделал свою файловую систему совместимой с системой Minix. Таким образом я мог читать файлы, созданные в Minix, и писать файлы на тот же диск, так что Minix могла читать файлы, созданные моей программой эмуляции терминала."

    В Minix не только была плохая эмуляция терминала, но и не было возможности перевести в фоновый режим программу, которой временно не пользуешься. И тут Торвальдс уже практически взялся за создание собственной операционной системы. Вначале он пытался просто программировать один за другим системные вызовы. Но их около двухсот и эта работа скоро наскучила. Тогда он изменил подход. Он взял оболочку bash, котоорая свободно распространялась в Интернет, и начал пытаться заставить ядро своей ОС запустить ее. Когда на этапе загрузки или запуска оболочка обращалась к какому-то системному вызову, происходил сбой. Тогда Линукс реализовывал необходимый системный вызов и повторял попытку. Наконец, в конце августа или начале сентября 1991 года, оболочка заработала. Это был очень важный момент. Как только оболочка заработала, удалось откомпилировать еще несколько программ. Оболочка была сложнее, чем, к примеру, программа копирования ср или команда выдачи листинга каталогов ls. В какой-то момент готовых компонент оказалось столько, что настал момент, когда можно было сказать, что заложены основы новой операционной системы.

    25 августа 1991 года Линус Торвальдс направил первое сообщение о своей разработке в группу новостей comp.os.minix:

    From: torvaldsSklaava.Helsinki.Fi (Linus Benedict Torvalds)
    To: Newsgroups: comp.os.inix
    Subject: Чего вам больше всего не хватает в minix?
    Summary: небольшой опрос для моей операционной системы Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.Fi>
    Date: 25 августа 1991 г., 20:57:08 GMT
    Organization: University of Helsinki

    Привет всем пользователям minix!
    Я пишу (бесплатную) операционную
    систему (это просто хобби, ничего большого и профессионального вроде gnu)
    для AT 386(486). Я вожусь с этим с апреля, и она, похоже, скоро
    будет готова. Напишите мне, кому что нравится/не нравится в minix, поскольку
    моя ОС на нее похожа (кроме всего прочего, у нее - по практическим соображениям
    - то же физическое размещение файловой системы).
    Пока что я перенес в нее bash (1.08) и gсс (1.40) , и все вроде работает.
    Значит, в ближайшие месяцы у меня получится уже что-то работающее, и мне бы
    хотелось знать, какие функции нужны большинству. Все заявки принимаются, но
    выполнение не гарантируется :-)

    Линус (torvalds@kruuna.helsinki.fi)

    PS. Она свободна от кода minix и включает мультизадачную файловую систему.
    Она НЕ переносима (используется переключение задач 386 и пр.) и, возможно,
    никогда не будет поддерживать ничего, кроме АТ-винчестеров, потому что
    у меня больше ничего нет :-(.


    В другом послании (от 26 августа 1991 г.) Линус впервые сообщает о том, что он собирается придерживаться лицензии GNU: "Даже тогда она, вероятно, не будет способна делать много больше того, что может minix, а во многих отношениях просто много меньше. Но она будет открыта (возможно, в соответствии с лицензией GNU или подобной)". Впрочем, это только небольшое попутное замечание, решение о том, на каких условиях будет распространяться Linux, будет сделано не сразу, и не сразу это будет GPL.

    В своей книге "Just for fun" Л.Торвальдс пишет, что версия 0.01 была выпущена 17 сентября 1991 года. Снова приведу цитату из книги Торвальдса:

    "И вот я решился ее выложить. Я не делал публичных объявлений, а просто написал пятерым-десятерым хакерам на личные адреса, что она лежит на FTP-сайте. В числе прочих я написал знаменитому среди фанатов Minix Брюсу Эвансу и Ари Лемке. Я выложил исходники самой Linux и еще несколько бинарников, чтобы можно было хоть что-то делать. Я сказал, что нужно, чтобы запустить все это хозяйство. На машине должна была стоять Minix (версия 386) и нужен был компилятор GCC. Причем на самом деле нужна была моя версия GCC, поэтому ее я тоже выложил.
    Не думаю, чтобы ту версию проверяло больше одного-двух человек. Для этого нужно было возиться с установкой специального компилятора, выделить пустой раздел, чтобы использовать его для загрузки, откомпилировать мое ядро и запустить оболочку. А кроме запуска оболочки, делать было особенно нечего. Можно было распечатать исходники - всего 10 000 строк.
    Я стал распространять свою операционку прежде всего, чтобы доказать, что все это не пустая болтовня - я действительно что-то сделал. В Интернете много болтают. О чем бы ни шла речь - об операционке или о сексе - многие в киберпространстве просто вешают лапшу на уши. Поэтому важно после того как ты растрезвонил, что пишешь операционку, иметь возможность сказать: "Вот - я ее и правда сделал. Я не трепло - можете сами посмотреть".

    Название "Linux" новая система получила следующим образом. Самого Торвальдса несколько смущало созвучие этого названия с его именем, поэтому он пытался назвать свою разработку FREAX. Это название можно обнаружить в файле kernl/Makefile версии 0.11, и в исходных кодах других программ. Но Ари Лемке, который предоставил место для выкладывания системы на FTP сайте, назвал каталог pub/OS/Linux. И это название закрепилось за новой ОС.
    Стадия становления

    Версия 0.02 Linux появилась 5 октября 1991 г. Она сопровождалась следующим известным заявлением Торвальдса:

    From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
    Newsgroups: comp.os.minix
    Subject: Исходники свободного minix-подобного ядра для 386-AT
    Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI>
    Date: 5 октября 1991 г., 05:41:06 GMT
    Organization: University of Helsinki
    Вы скорбите о тех временах, когда мужчины были настоящими мужчинами и
    сами писали драйверы устройств? У вас нет хорошего проекта и вы мечтаете
    вонзить свои зубы в какую-нибудь ОС, чтобы модифицировать ее для своих нужд?
    Вас раздражает то, что все работает под minix? И не требуется просиживать ночи,
    чтобы заставить программу работать? Тогда это послание адресовано вам :-)
    Как я сообщал месяц (?) назад, я работаю над свободной версией
    чего-то похожего на minix для AT-386 компьютеров. Работа наконец достигла
    той стадии, когда результат уже можно использовать (хотя может быть и не для
    того, для чего хотелось бы вам), и я хочу выложить исходные коды для
    широкого распространения. Это всего-навсего версия 0.02 (+1 очень небольшое
    дополнение), но я успешно запускаю под ней bash/gcc/gnu-make/gnu-sed/compress
    и так далее.
    Исходные коды этого моего любимого проекта можно найти на сайте
    nic.funet.fi (128.214.6.100) в каталоге /pub/OS/Linux. Этот каталог содержит
    также несколько README-файлов и пару бинарников, которые работают под linux
    (bash, update и gcc, что вам еще надо :-).
    Исходные коды ядра предоставлены в полном объеме, поскольку коды
    minix не используются. Исходные коды библиотек свободны только частично,
    поэтому не могут распространяться свободно. Система может быть скомпилирована
    "as-is" и она работает.

    Тот факт, что Линус выложил код своей ОС в Интернет, был решающим в дальнейшей судьбе Linux. Хотя в 1991 году Интернет еще не был так широко распространен, как в наши дни, зато пользовались им в основном люди, имеющие достаточную техническую подготовку. И уже с самого начала Торвальдс получил несколько заинтересованных откликов. Примерно в феврале 1992 года Линус высказал просьбу ко всем, кто уже пользовался или тестировал Linux, прислать ему открытку. Таких открыток было получено несколько сотен со всех концов света - из Новой Зеландии, Японии, Нидерландов, США. Это говорило о том, что Linux начала приобретать некоторую известность. Получил Торвальдс отзыв и от Андрю Таненбаума, автора MINIX. К сожалению, отзыв этот был довольно недоброжелательный. В своем письме Таненбаум писал: "Я все же придерживаюсь той точки зрения, что использование монолитного ядра в 1991 году является фундаментальной ошибкой. Радуйтесь тому, что вы не мой студент. У меня вы не получили бы высокой оценки за такую работу :-)"

    Линус позже признавался, что это был самый тяжелый момент в истории его занятий Linux. Все же Таненбаум был знаменитым профессором и все, что он говорил, заслуживало внимания. Но в отношении Linux профессор был не прав, а Линус был упрямым парнем и не мог просто так признать себя неправым. К тому же Таненбаум озаглавил свое письмо "Linux устарела" и опубликовал его в телеконференции, что сильно задело Линуса, так как ему показалось, что оно подрывает его социальный статус, которым он очень дорожил. И Торвальдс ответил Таненбауму достаточно резко:

    ">для меня MINIX - хобби, которым я занимаюсь по вечерам
    >Моя основная работа - преподавание и
    >исследования в области операционных систем.

    Вы хотите этим оправдать ограниченность minix? Извините, но вы не правы.
    У меня оправданий гораздо больше, и все-таки linux побеждает minix почти
    по всем параметрам. Не говоря уж о том, что большая часть хороших кодов
    для minix, похоже, написана Брюсом Эвансом.

    Re 1: Для вас minix хобби - но ведь minix приносит доход, a linux
    раздается бесплатно. Теперь по поводу хобби. Поместите minix в свободный
    доступ, и одна из моих главных претензий к ней отпадет. Linux для меня
    в большой степени хобби (серьезное хобби, самого высшего сорта).
    Я не беру за нее денег, и она даже не является частью моей учебной работы.
    Я сделал ее в свободное время на собственной машине.

    Re 2: Вы работаете преподавателем и исследователем. Прекрасное объяснение
    для умственной неполноценности minix. Остается надеяться, что Amoeba не
    такая фигня, как minix.

    >1. МИКРОЯДРО ИЛИ МОНОЛИТ

    Да, linux - монолитная система, и я согласен, что микроядро лучше.
    Если бы у вашего сообщения не был такой спорный заголовок, я бы, вероятно,
    согласился с большинством ваших высказываний. С теоретической (и эстетической)
    точки зрения linux проигрывает. Если бы ядро GNU было готово прошлой весной,
    я бы и не взялся за свою разработку: беда в том, что оно не было готово тогда
    и не готово до сих пор. Linux выигрывает прежде всего потому, что она уже
    готова.

    >MINIX - система с микроядром [пропущено, но без
    >потери смысла] . LINUX - монолитная система.

    Если бы это было единственным критерием качества ядра, вы были бы правы.
    Однако вы не пишете о том, что микроядро в minix сделано плохо и возникают
    проблемы с многозадачностью (в ядре). Если бы я сделал ОС, у файловой
    системы которой были бы проблемы с многозадачностью, я бы не стал так
    поспешно осуждать других: наоборот, я бы из кожи вон лез, чтобы все забыли
    о моем провале. Да, я знаю, что для minix есть масса заплаток,
    обеспечивающих многопоточную работу, но это лишь заплатки, и Брюс Эванс
    говорит, что все равно остается множество проблем синхронизации."

    Линус говорит, что спор с создателем Minix вскоре перешел в обмен личными посланиями - перепалка была слишком резкой, чтобы вести ее публично. Несколько месяцев было тихо. Потом Таненбаум прислал Линусу ссылку на пятистрочное объявление в журнале "Byte" о выпуске коммерческой версии Linux. "В своем последнем сообщении Эндрю спрашивал, этого ли я хотел - чтобы кто-то продавал мой труд. Я ему ответил коротко: "Да", и больше он мне не писал", - рассказывает Линус. Более подробно с перепиской Линуса Торвальдса, Андрю Таненбаума, Теда Тсо (Ted T'so), Дэвида Миллера и других участников этого спора вы познакомиться на "Linux is Obsolete". С полным текстом можно также ознакомиться по адресу: http://groups.google.com/groups?threadm=12595%40star.cs.vu.nl.

    Тем временем работа над Linux продолжалась. Первоначально Линус Торвальдс не хотел продавать свою разработку. И не хотел, чтобы ее продавал кто-то другой. Это было четко прописано в уведомлении об авторских правах, помещенном в файл COPYING самой первой версии - 0.01. Причем требование Линуса налагало значительно более жесткие ограничения на распространение Linux, чем те, которые провозглашались в лицензии GNU: не разрешалось взимать никаких денег за передачу или использование Linux. Но уже в феврале 1992 г. к нему стали обращаться за разрешением брать плату за распространение дискет с Linux, чтобы покрыть временные затраты и стоимость дискет. Кроме того, необходимо было считаться и с тем, что при создании Linux использовалось множество свободно распространяемых по Интернету инструментов, самым важным из которых был компилятор GCC. Авторские права на него оговорены в Универсальной общественной лицензии (GPL), которую изобрел Ричард Столман. Торвальдсу пришлось пересмотреть свое заявление об авторских правах, и, начиная с версии 0.12 он тоже перешел на использование лицензии GPL. Весной 1992 года Орест Збровски сумел перенести под Linux систему X Window. Обмен информацией между сервером и клиентам в этой системе осуществляется с помощью сокетов, или, точнее, Unix Domain Sockets. Этот же способ используется для передачи информации в Интернет. Поэтому, как пишет Торвальдс, "мы с большим воодушевлением принялись разрабатывать сети для Linux поверх этих самых Domain Sockets, хотя они вовсе не были для этого предназначены. Я был настолько уверен, что все получится, что даже сделал скачок в нумерации версий. В марте 1992 года я планировал выпустить версию 0.13. А вместо этого, получив графический интерфейс пользователя, уверился, что мы на 95% достигли цели - выпуска полноценной, надежной операционной системы, пригодной к тому же для работы в сети. И поэтому выпустил версию 0.95." Но разработка сетевой подсистемы оказалась делом значительно более сложным, чем это казалось вначале. Поэтому пришлось использовать трехуровневую систему нумерации. Для появившихся к этому времени коммерческих компаний, продававших Linux, было очень важно, чтобы была наконец выпущена версия Linux с номером 1.0. Это имело значение скорее по психологическим, чем по технологическим причинам: кому хочется торговать операционной системой версии 0.96? Поэтому в конце концов и Линус Торвальдс согласился выпустить версию 1.0, когда почувствовал, что система стала наконец работоспособной. Университет Хельсинки предоставил для проведения презентации Linux 1.0 главную аудиторию факультета информатики. Презентация была проведена 16 апреля 1994 года с большой помпой. Репортаж об этом событии даже показали по финскому телевидению.

    С самых ранних этапов существования Linux в развитие системы вносили свой вклад очень многие добровольные помощники, которые посвящали свое время, умения и усилия развитию и совершенствованию Linux. Конечно, эти люди проделали гораздо больше работы, чем сказано в этой табличке. И, кроме перечисленных, было огромное число людей, которые в этой табличке не указаны, но которые внесли свой вклад в развитие Linux. Вначале к разработке присоединились сотни, потом тысячи, потом сотни тысяч добровольных помощников. Система уже не была просто игрушкой для хакеров. Дополненная массой программ, разработанных в рамках проекта GNU, Linux был уже пригоден для практического использования. А то, что ядро системы распространялось под лицензией GNU General Public License, гарантировало, что исходные коды системы были и останутся свободными, то есть могут копироваться, изучаться и модифицироваться без опасения нарваться на какое-либо преследование со стороны разработчика или какой-то коммерческой фирмы. И это привлекало в ряды пользователей и сторонников Linux все новых последователей, в первую очередь из числа студентов и программистов. К этому времени сфорировалась отдельная телеконференция в Интернете, посвященная Linux, - comp.os.linux. Энтузиасты образовали множество групп пользователей и в начале 1994 г. вышел первый номер журнала "Linux Journal". Linux привлекла внимание промышленных фирм и несколько небольших компаний начали разрабатывать и продавать собственные версии Linux.

    Самые первые версии Linux, появившиеся в 1991 году, размещались на двух дискетах. Первая дискета была загрузочной и содержала ядро, а вторая - корневую файловую систему и основные утилиты. Копии этих дискет можно было загрузить с сервера университета в Хельсинки. Конфигурирование и настройка системы производились вручную и были очень сложными. Поэтому до появления первых дистрибутивов установить Линукс на свой компьютер мог только достаточно подготовленный специалист, можно сказать эксперт в UNIX. Положение изменилось после появления так называемых дистрибутивов. Дистрибутив Linux отличается от простого набора пакетов программного обеспечения в первую очередь наличием программы инсталляции, которая позволяет рядовому пользователю установить систему на свой компьютер, причем сделать это не привлекая высококвалифицированного эксперта. Если попытаться дать формальное определение дистрибутива, то получится что-то вроде:

    Дистрибутив Linux – это набор пакетов программного обеспечения, включающий базовые компоненты операционной систем (в том числе, ядро Linux), некоторую совокупность программных приложений и программу инсталляции, которая позволяет установить на компьютер пользователя операционную систему GNU/Linux и набор прикладных программ, необходимых для конкретного применения системы.

    Первые дистрибутивы Linux появились вскоре после того, как Линус Торвальдс выпустил разработанное им ядро Linux под лицензией GPL. Поскольку значительная часть другого необходимого программного обеспечения уже была разработана в рамках проекта GNU, отдельные программисты (и группы программистов) начали разрабатывать как программы инсталляции, так и другие прикладные программы, пользовательский интерфейс, программы управления пакетами и выпускать свои дистрибутивы Linux. Первый дистрибутив Linux был создан Оуэном Ле Бланк (Owen Le Blanc) в Манчестерском компьютерном центре (Manchester Computing Centre, MCC) в Англии. Первый релиз этого дистрибутива, получившего имя MCC Interim Linux, стал доступен для всех желающих с ftp-сервера Манчестерского университета в феврале 1992 г. Примерно в то же время сотрудниками университета Техаса был создан дистрибутив TAMU. В октябре 1992 появился разработанный Питером Мак-Дональдом (Peter McDonald) дистрибутив Softlanding Linux System (SLS), который был первым дистрибутивом, включающим в себя такие элементы, как X Window System и поддержка TCP/IP. Ни один из этих дистрибутивов не имел хорошей поддержки. В конце 1992 года Патрик Фолькердинк (Patrick Volkerding) выпустил дистрибутив, в значительной части основанный на SLS, который он назвал "Slackware" и который является старейшим дистрибутивом из тех, которые до сих пор активно развиваются. На основе дистрибутива Slackware германской фирмой S.U.S.E (акроним от немецкого "Software- und System Entwicklung"), основанной в 1992 году как консультативная группа по ОС UNIX, был создан дистрибутив SuSE Linux, версия 1.0 которого вышла в 1994 году. Позже SuSE интегрировал дистрибутив Jurix Флориана Ла Роше (Florian La Roche). Еще один проект по разработке дистрибутива, Debian, был начат Яном Мёрдоком (Ian Murdock) 16 августа 1993 года как альтернатива коммерческим дистрибутивам Linux. Ян хотел создать систему, распространяемую абсолютно свободно и открыто, в духе Linux и GNU. Позже разработка Debian была профинансирована проектом GNU: Free Software Foundation, который выделил деньги на один год, с ноября 1994 по ноябрь 1995, что позволило Я.Мердоку в течение этого периода уделять проекту Debian все свое время. Дистрибутив Red Hat, который включал в себя некоторые аспекты дистрибутива Bogus (например, механизм пакетов), был основан в 1994 году. На основе Red Hat было создано множество других дистрибутивов, в том числе многие коммерческие дистрибутивы, например, Caldera, Mandrake и TurboLinux.

    А Линус Торвальдс к этому времени еще даже не окончил учебу в университете!....

    По материалам http://www.linuxcenter.ru

    Сравнение популярных дистрибутивов Linux

    Свободное программное обеспечение все активнее приходит в нашу жизнь. Одна из причин в том, что на протяжении последних лет всё большую актуальность приобретает вопрос нелегального использования программного обеспечения. Вторая причина миграции на свободное ПО – отсутствие прессинга производителя продуктов, заставляющих модернизировать как программное, так и аппаратное обеспечение. В отличие от распространенной собственнической операционной системы Windows, которую выпускает только один производитель, Linux выпускает множество фирм, проектов и просто любителей. Имеет смысл рассмотреть выбор дистрибутива Linux, поскольку каждый из них имеет свои сильные и слабые стороны.

    AltLinux

    http://www.altlinux.ru

    ALT Linux (Альт Линукс) — это дистрибутив GNU/Linux российской команды разработчиков ALT (аббревиатура рекурсивно расшифровывается как ALT Linux Team). Команду ALT Linux Team поддерживает компания ALT Linux, основанная в 2001 году в результате объединения отечественных проектов IPLabs Linux Team и Linux RuNet. В команду разработчиков входит свыше 150 человек, подавляющее большинство из Белоруссии, Украины и России. ALT Linux – динамично развивающийся дистрибутив, обеспечивающий неплохой баланс качество|безопасность. Сильными сторонами дистрибутивов ALT Linux является: стандартная и качественная интернационализация и локализация (поддержка русского языка в этом дистрибутиве работает «из коробки» для всех общеизвестных кодировок кириллицы: KOI8-R, KOI8-U, CP1251, UTF-8); высокая степень надёжности и защиты (TCB, chrooted environments…), наличие команды документирования (ALT Linux Doc Team), крупное и активное сообщество пользователей и разработчиков ALT Linux, система управления программными пакетами APT.
    Компания поддерживает проекты локализации OpenOffice.org и Mozilla, проводит конференции разработчиков и пользователей свободного ПО, активно участвует в проведении LinuxFest'а в Калужской области.


    Архитектура

    x86 (x86_64 в unstable)

    Назначение

    общее

    Уровень пользователя

    любой

    Пакетный менеджер

    rpm, apt

    Объем пакетов в поставке

    более 5000 srpm

    Бесплатный FTP

    ftp-версия публикуется не сразу после выхода коробочной

    Бесплатные обновления

    да

    Исправления проблем с безопасностью

    да

    Обновление версии дистрибутива

    Нормально. достаточно remote dist-upgrade -- mike@)

    Стабильность

    Очень хорошая

    Безопасность

    Очень хорошая (TCB, Openwall patch, все что
    можно в chroot, в Master 2.4 поддерживается vserver, в unstable попал и
    OpenVZ)

    GUI для настройки

    да

    Основное оконное окружение

    KDE, Gnome

    Простота установки

    GUI инсталлятор на базе Mandrake (с версии Compact 3.0
    свой граф. инсталятор)

    Источники для установки

    CD, НЖМД, FTP (загрузка с CD/DVD)

    Выпускается несколько модификаций дистрибутива:
    ALTLinux Compact – для установки на персональные компьютеры (ориентированный на начинающих пользователей Linux)
    ALTLinux Master – универсальный дистрибутив, содержащий дополнительно серверное ПО, исходные коды, дополнительное коммерческое ПО и печатную документацию.
    «ИВК Кольчуга» предназначен для использования в составе информационной системы предприятия в качестве межсетевого экрана (МЭ) с расширенной функциональностью.
    ALT Linux «Утёс-К» – универсальный защищённый дистрибутив Linux, сертифицированный Гостехкомиссией России по 5 классу СВТ защиты конфиденциальной информации, пригодный для использования как в качестве сервера так и рабочей станции.
    ALT Linux Castle - защищённый серверный дистрибутив на основе системы RSBAC.
    ALT Linux SOHO Server – интегрированная система для организации офисного шлюз-сервера и файлового сервера.



    Fedora Core

    http://fedora.redhat.com/

    Fedora Core (англ. мягкая фетровая шляпа, есть русское точное название «Федорино Коре») — дистрибутив открытой операционной системы Linux. Этот дистрибутив спонсируется (но не поддерживается) фирмой Red Hat Inc и поддерживается общественностью. Проект служит для тестирования новых технологий, которые в дальнейшем включаются в продукты Red Hat и других производителей. Версии Fedora Core выходят с периодичностью 2—3 раза в год по доступному расписанию.
    Пользователи Fedora Core в мире пытаются создать сообщества, служащие для обмена опытом и свободным ПО, для взаимной технической поддержки, общения и дружбы.
    Тестирование новых технологий практически всегда означает отсутствие достаточной стабильности. Вторым отрицательным моментом является отсутствие некоторых программ, характерных для нашего региона (проигрыватели mp3, кодеки DivX, xxkb), однако существует возможность использовать сторонние репозитории.
    Автор имеет достаточно негативный опыт использования Fedora Core 5 и не рекомендует использовать этот при построении ИС предприятия. Альтернативой может быть CentOS, если есть желание использовать бренд Red Hat. Однако в тестовой лаборатории Fedora Core – хороший выбор, это позволит посмотреть «куда идет паровоз промышленного Linux».


    Архитектура

    x86, AMD64, PPC

    Назначение

    общее (рекомендуется для использования на десктопе, для
    сервера недостает стабильности)

    Уровень пользователя

    любой

    Пакетный менеджер

    rpm, yum, up2date, частично apt

    Объем пакетов в поставке

    около 5000

    Бесплатный FTP

    да

    Бесплатные обновления

    да

    Исправления проблем с безопасностью

    хорошо

    Обновление версии дистрибутива

    плохо, от версии к версии много меняется, после
    обновления придется много перенастраивать

    Стабильность

    низкая (на дистрибутиве обкатываются многие
    экспериментальные вещи, в комплекте много сырого софта/последних
    версий)

    Безопасность

    стандартная, SELinux в комплекте

    GUI для настройки

    да

    Основное оконное окружение

    Gnome

    Простота установки

    GUI инсталлятор

    Источники для установки

    CD/DVD



    ASPLinux

    http://www.asplinux.ru/

    ASPLinux (Application Service Provider Linux) — российский дистрибутив ОС GNU/Linux, выпускаемый одноимённой компанией. Ядро команды составили разработчики легендарного Black Cat Linux, Кантер и Каневский.
    Дистрибутив базируется на системе пакетов RPM, по заявлениям разработчиков полностью совместим с дистрибутивом Red Hat (в настоящее время – Fedora Core). Поддержка русского языка в этом дистрибутиве работает прямо «из коробки».
    Из оригинальных компонентов дистрибутив включает собственный менеджер загрузки ASPLoader, очень похожий на Lilo; оригинальную программу установки, включающую менеджер разделов ASPDiskManager, который одним из первых в дистрибутивах Linux мог изменять размеры NTFS-разделов, а также средство установки по сети EspressoDownload. Сами разработчики заявляют, что это самый популярный дистрибутив в СНГ.

    Архитектура

    x86, AMD64

    Назначение

    общее

    Уровень пользователя

    любой

    Совместимость со стандартом LSB

    ?

    Пакетный менеджер

    rpm, yum

    Объем пакетов в поставке

    несколько больше чем в Fedora Core

    Бесплатный FTP

    частично

    Бесплатные обновления

    ?

    Исправления проблем с безопасностью

    ?

    Обновление версии дистрибутива

    ?

    Стабильность

    как у Fedora Core, ядро с kernel.org

    Безопасность

    несколько больше чем в Fedora Core

    GUI для настройки

    да

    Основное оконное окружение

    Gnome, хорошая поддержка мультимедиа

    Простота установки

    удобная программа установки собственного производитва

    Источники для установки

    ?

    Выпускается несколько модификаций дистрибутива:

    ASPLinux Express - содержит диски с базовой системой
    ASPLinux Standard - содержит дополнительно диски с коммерческими приложениями и играми и печатную документацию
    ASPLinux Deluxe - содержит дополнительно исходные коды компонентов системы
    ASPLinux Server - почти идеальное решение для тех, кто разворачивает файловый сервер «1С» на Linux для работы с решениями фирмы «1С». Настройка типовой конфигурации файлового сервера для работы с программным комплексом "1С:Предприятие" версий 7.7 или 8.0 происходит «нажатием одной кнопки», при этом автоматически создаются все необходимые ресурсы и группы пользователей.



    Knoppix

    http://www.knoppix.org/

    Knoppix — LiveCD-дистрибутив операционной системы GNU/Linux, созданный на базе Debian GNU/Linux. Иначе говоря, для того чтобы работать с Knoppix не нужна установка его на жёсткий диск. Сделать это удалось благодаря применению динамической компрессии: запускаемые программы распаковываются из архивов на лету.
    Knoppix – полноценная рабочая система общего назначения, используя Knoppix можно писать программы, составлять курсовые и дипломы, рисовать, слушать музыку, смотреть видеофильмы, просто играть — т. е. использовать компьютер на полную мощность. При желании, Knoppix можно переместить на жёсткий диск, превратив вашу машину в полноценную рабочую станцию. Knoppix достаточно неплохо поддерживает русский и украинский языки (при использовании Knoppix-UA, openoffice.com.ua/knoppix).
    Слабые стороны дистрибутива – некоторая медлительность (разархивирование на лету требует значительных затрат вычислительной мощности). В данный момент Knoppix Linux не поддерживает архитектуры AMD64, IA-64. Естественная ниша Knoppix – использование для освоения в новой операционной системе, в качестве демонстрационного диска сборщиками компьютеров.


    Архитектура

    x86

    Назначение

    знакомство с Линукс, переход с Windows, экстренные меры

    Уровень пользователя

    любой

    Совместимость со стандартом LSB

    да

    Пакетный менеджер

    dpkg, apt

    Объем пакетов в поставке

    CD - 1000, DVD - 2600

    Бесплатный FTP

    -

    Бесплатные обновления

    -

    Исправления проблем с безопасностью

    -

    Обновление версии дистрибутива

    -

    Стабильность

    стандартная

    Безопасность

    стандартная

    GUI для настройки

    да

    Основное оконное окружение

    KDE

    Простота установки

    да

    Источники для установки

    CD/DVD



    Mandriva Linux

    http://www.linux-mandriva.com/

    Mandriva (ранее – Mandrake Linux) был создан в 1998 году с целью сделать Linux простым в использовании для всех. В то время Linux уже был хорошо известен как мощная и стабильная операционная система, которая, однако, требовала серьезных технических знаний и активного использования «командной строки». Жиль Дюваль (Ga?l Duval)увидел возможность совместить ее с наилучшими графическими окружениями рабочих столов, добавил свои собственные графические утилиты настройки и дистрибутив быстро стал известен своими стандартами в простоте использования и функциональности.
    Именно Mandrake Linux развеял миф о том, что Linux сложен в установке. Возможности автоопределения оборудования и утилиты разбиения дисков в Mandrake считаются многими лучшими в этой области. За 8 лет Mandrake Linux стал весьма популярным дистрибутивом среди новичков в Linux и среди домашних пользователей, выбравших альтернативную операционную систему.
    В качестве расплаты за «удобства – прежде всего» пользователи вероятно заметят большее количество ошибок и возможно меньшую стабильность, по сравнению с другими дистрибутивами. И хотя многие пользователи находят эту цену приемлемой для настольных систем, использование в корпоративном секторе этого дистрибутива нельзя рекомендовать. Еще одной слабой стороной этого дистрибутива является отсутствие качественной коммерческой поддержки в регионе, что касается локальной некоммерческой поддержки – ее уровень расчитан скорее на начинающих пользователей.


    Архитектура

    x86, AMD64, PPC

    Назначение

    десктоп

    Уровень пользователя

    начинающий

    Совместимость со стандартом LSB

    да

    Пакетный менеджер

    rmp, RpmDrake,
    urpmi

    Объем пакетов в поставке

    около 11000

    Бесплатный FTP

    ограниченно

    Бесплатные обновления

    ?

    Исправления проблем с безопасностью

    часто исправления запаздывают

    Обновление версии дистрибутива

    проблематично

    Стабильность

    стандартная

    Безопасность

    стандартная

    GUI для настройки

    да

    Основное оконное окружение

    KDE

    Простота установки

    отлично

    Источники для установки

    CD/DVD/FTP



    Slackware Linux

    http://www.slackware.org/

    Slackware Linux (рус Слакварь или Слак) был одним из первых дистрибутивов Linux. Именно с него автор статьи начинал путь в Linux 10 лет тому. Первая версия этого дистрибутива была выпущена Патриком Фолькердингом (Patrick Volkerding) — также известным как Mr. Slackware и The Man в 1993 году и с этого времени дистрибутив поддерживается автором единолично.
    Slackware значительно отличается от других дистрибутивов (таких как Debian, Gentoo, Mandrakelinux, Red Hat и Novell Linux) тем, что Slackware был и остаётся «самым UNIX’овым» — большинство настроек производятся «напрямую», без дополнительных конфигураторов и других «прослоек». Основной принцип системы – простота и стабильность. Однако простота – простота построения, а не использования системы.
    Система управления пакетами в Slackware позволяет пользователю устанавливать, обновлять или удалять пакеты так же легко, как и аналогичные системы других дистрибутивов, но, в отличие от последних, не делает никаких попыток отслеживать зависимости между пакетами. То есть, при установке нового пакета система не проверяет наличие всех необходимых библиотек и/или программ, что усложняет (и удорожает) администрирование. Файлы пакетов представляют собой архивы, сделанные с помощью программы tar и сжатые затем с помощью программы gzip. Обычное расширение для файлов пакетов — .tgz.
    Это делает дистрибутив немного сложноватым для использования, но он пользуется популярностью у некоторого количества опытных пользователей.
    Дистрибутив позиционируется как универсальный конструктор. Отрицательными моментами является низкая прогнозируемость (проект одного человека) и отсутствие коммерческой поддержки от производителя. Локализация «из коробки» достаточно слабая. В нашем регионе на основе Slackware создан и успешно развивается дистрибутив DeepStyle Linux, который представляет собой превосходно локализованный Slackware Linux. На форумах проекта можно получить некоммерческую поддержку. Отсутствует юридическая защита пользователей.
    Все эти факторы позволяют утверждать, что использование дистрибутивов, базирующихся на Slackware Linux достаточно дорого в корпорациях.
    Некоторые (e.g. mike@) утверждают и аргументируют, что использование Slackware характеризует фанов, профанов и старпёров, причём какое-то понимание свидетельствуется только первой категории (каждый сходит с ума по-своему).


    Архитектура

    x86, IA-64 (неоф.), AMD64 (неоф.), S/390, PPC (неоф.),
    sparc (неоф.)

    Назначение

    для энтузиастов

    Уровень пользователя

    энтузиаст

    Совместимость со стандартом LSB

    нет

    Пакетный менеджер

    pkgtools + slackpkg/swaret/slapt-get

    Объем пакетов в поставке

    базовая система + некоторые популярные приложения

    Бесплатный FTP

    да

    Бесплатные обновления

    да

    Исправления проблем с безопасностью

    да

    Обновление версии дистрибутива

    требует ручного вмешательства

    Стабильность

    выше среднего

    Безопасность

    стандартная

    GUI для настройки

    нет

    Основное оконное окружение

    KDE, xfce, лёгкие оконные менеджеры

    Простота установки

    средняя

    Источники для установки

    CD,HDD,nfs



    Ubuntu/Kubuntu/Xubuntu/Runtu

    http://www.ubuntulinux.org/

    Ubuntu (произносится как «убу?нту») — молодой, но очень популярный дистрибутив GNU/Linux, основанный на Debian GNU/Linux. Ориентирован на простоту использования (всё должно «просто работать») и прогнозируемость (имеет чёткий график релизов – дважды в год). Спонсирует создание Ubuntu Canonical Ltd., основанная бизнесменом из ЮАР Марком Шаттлвортом.
    Пакеты Ubuntu, в основном, базируются на пакетах из нестабильной (unstable) группы пакетов из Debian. Ubuntu использует систему управления пакетами APT от Debian для управления установленными пакетами. Тем не менее, пакеты для Ubuntu и Debian не обязательно совместимы друг с другом – в апреле 2005 основатель Debian Иан Мердок критиковал Ubuntu за несовместимости между его пакетами и таковыми из Debian, говоря, что Ubuntu слишком далеко отклонился от Debian Sarge, чтобы остаться совместимым.
    Ubuntu сосредотачивается на удобстве и простоте использования, включает широко распространенное использование утилиты sudo, которая позволяет пользователям выполнять администраторские задачи, не запуская опасную сессию суперпользователя. Ubuntu имеет развитую интернационализацию, в том числе – неплохую поддержку русского и украинского языков.
    Ubuntu основан на системе рабочего стола GNOME, который слабо распространен в нашем регионе, имеет достаточный диапазон современных настольных приложений, включая OpenOffice.org, web-браузер Mozilla Firefox и растровый графический редактор GIMP. Есть также версии Ubuntu с рабочим столом KDE, который наиболее распространен в Украине и Росии. В целом, дистрибутив достаточно приятен в использовании (если не учитывать удивительное цветовое оформление дистрибутива).
    Диски Ubuntu не только бесплатны, но и могут быть бесплатно доставлены (однако отсутствует лицензия, которая позволила бы защититься от проверок на лицензионность). Отсутствует коммерческая поддержка Ubuntu в Украине. Положительным моментом является то, что разработчики Ubuntu, несмотря на старания, не отошли далеко от Debian GNU/Linux и можно использовать дебиановские репозитории ПО. Однако причин использовать Ubuntu взамен Debian все равно не видно. Весьма перспективной разработкой выглядит LiveCD дистрибутв от комманды русских разработчиков - Runtu. Он представляет собой сборку дистрибутива Xubuntu, подготовленную специально для использования на маломощных компьютерах. Создатели этого проекта тщательно подобрали, предустановили и настроили все необходимое для комфортной работы на компьютере офисного предназначения, сохранив при этом компактность и быстродействие дистрибутива на должном уровне.


    Архитектура

    x86, AMD64, HPPA, IA64, PPC, SPARC

    Назначение

    десктоп, сервер

    Уровень пользователя

    начинающий

    Совместимость со стандартом LSB

    да

    Пакетный менеджер

    dpkg, apt

    Объем пакетов в поставке

    около 3000 (на DVD пакетов больше чем на CD)

    Бесплатный FTP

    да

    Бесплатные обновления

    да

    Исправления проблем с безопасностью

    да

    Обновление версии дистрибутива

    простое при наличии сети (6.* -> 7.04
    автоматически апдейтится графическим wizard-ом)

    Стабильность

    стандартно

    Безопасность

    стандартно

    GUI для настройки

    да

    Основное оконное окружение

    Gnome (Ubuntu)/KDE(Kubuntu)/xfce(Xubuntu)

    Простота установки

    да:графический инсталлятор(есть альтернативный CD с
    текстовым инсталлятором - предоставляет больше опций)

    Источники для установки

    CD/DVD/сеть


    Статья написана с использованием следующих источников информации:

    Структура папок ОС Linux

    Эта статья основана на документе Linux filesystem standard, FSSTND, версии 1.2 (который пытается установить стандарт на организацию дерева каталогов в Linux-системе) и должна помочь тем людям, кто уже попробовал, что такое Linux и захотел разобраться в нем по подробнее.

    древовидная структура каталогов Linux

    Полное дерево каталогов разделено на части, каждая из которых может располагаться на своем диске или в своем разделе в интересах упрощения системного администрирования и резервирования. Это позволяет работать в случае недостатка места на дисках. Главные части дерева каталогов: файловые системы root, /usr, /var и /home (рис. 4.1). Каждая часть имеет свою цель. Дерево каталогов было разработано так, чтобы оно хорошо работало в сети Linux-машин, которые могут совместно использовать некоторые части файловых систем устройств только для чтения (например, CD-ROM), или сети с NFS.

    Роли различных частей дерева каталогов описаны ниже.

    - Корневая файловая система специфична для каждой машины (обычно она хранится на локальном диске, хотя это мог бы быть ramdisk или сетевой диск) и содержит файлы, которые являются необходимыми для загрузки системы. Содержимого корневой файловой системы достаточно для загрузки в однопользовательском режиме. Именно эта файловая система используется при загрузке до тех пор, пока не будут смонтированы другие файловые системы. Она также содержит инструментальные средства для ремонта поврежденной системы и для восстановления потерянных файлов из резервных копий.

    - Файловая система /usr содержит все команды, библиотеки, man-страницы, исходные тексты и другие неизменяемые файлы, необходимые для нормальной работы системы. Никакие файлы в /usr не должны быть специфическими для любой конкретной машины, и при этом они не должны измениться при нормальном использовании. Это позволяет файлам быть разделенными по сети, что может быть практично, так как это сохраняет дисковое пространство (могут легко иметься сотни мегабайт в /usr) и упрощает администрирование (только машина, на которой хранится /usr, должна быть изменена при модификации прикладной программы, а не каждая машина отдельно). Даже если файловая система находится на локальном диске, она может быть установлена только для чтения, что уменьшит возможность искажения в случае отказа.

    - Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п., файлы протоколов, форматированных man-страниц и временные файлы.

    - Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).

    Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если речь идето небольшом сервере или личном однопользовательском компьютере. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей, тем не менее, важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.

    Структура файловой системы в Unix группирует файлы по их назначению, то есть, все команды находятся в одном месте, все файлы данных в другом, документация в третьем и так далее. Альтернативный вариант группировал файлы согласно программе, которой они принадлежат, то есть, все Emacs-файлы были бы в одном каталоге, весь TeX в другом, и так далее. Проблема с последним подходом состоит в том, что это делает трудным совместно использовать файлы (каталог программ часто содержит статические, общие, изменяющиеся и личные файлы), и иногда даже находить файлы, например, man-страницы в огромном числе мест, благодаря чему поиск их программой просмотра сильно осложняется.

    Корневая файловая система

    Файловая система root должна быть небольших размеров, так как она содержит важные файлы и команды. Чем меньше объем файловой системы и чем реже она подлежит изменениям, тем меньше вероятность ее повреждения. Если система root повреждена, то обычно это означает, что начальная загрузка компьютера невозможна (кроме отдельных методов, например при помощи дискет).

    Файловая система дистрибутива имеет архитектуру классической файловой системы ОС Linux с единым корневым каталогом, обозначаемым символом обратной косой черты ("слэш") — /.

    Ниже приведено описание основных каталогов верхнего уровня.

    /bin - В этом каталоге хранятся основные команды, необходимые пользователю для работы в системе. Например, такие как командные оболочки и команды файловой системы (ls, cp и т.д.). Каталог /bin обычно не изменяется после установки. Если изменяется, то обычно лишь при обновлениях пакетов программ, предоставленных разработчиками операционной системы.

    /boot - В этом каталоге хранятся файлы, используемые загрузчиком ОС — LInux LOader (LILO). Этот каталог так же практически не изменяется после установки.

    /dev - В этом каталоге размещены описания устройств системы. В Linux всё рассматривается, как файл, даже различные устройства, такие как последовательные порты, жёсткие диски и сканеры. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл, называемый device node. Все эти файлы находятся в каталоге /dev. Аналогично устроено большинство UNIX-подобных операционных систем.

    /etc - Этот каталог содержит файлы настроек: всё, от конфигурационных файлов системы X Window, базы данных пользователей и до стартовых сценариев.

    /home - В этом каталоге размещены домашние каталоги пользователей. Linux является многопользовательской системой и каждому пользователю присваивается имя и уникальный каталог для персональных файлов. Этот каталог называется "home" (домашним) каталогом пользователя.

    /lib - В этом каталоге находятся системные библиотеки, необходимые для основных программ: библиотека C, динамический загрузчик, библиотека ncurses, модули ядра и другое.

    /lib/modules - Подгружаемые модули для ядра (например, сетевые драйверы или поддержка дополнительных файловых систем).

    /lost+found - В этом каталоге сохраняются восстановленные части файловой системы. При загрузке системы происходит проверка файловых систем на наличие ошибок. Для исправления ошибок файловой системы запускается программа fsck.

    /mnt - Этот каталог предоставляется как временная точка монтирования для жёстких дисков, дискет, компакт-дисков или отключаемых устройств.

    /opt - В этом каталоге размещаются дополнительные пакеты программ. Особенность Linux в том, что все пакеты программ, устанавливаются в этот каталог, например /opt/<программный пакет>. В последствии если этот пакет больше не будет нужен, то достаточно всего лишь удалить соответствующий каталог. В дистрибутивах SlackWare некоторые программы изначально поставляются в каталоге /opt (например, KDE - в /opt/kde).

    /proc - Это специальный каталог не входящий в файловую систему. Каталог /proc представляет собой виртуальную файловую систему, которая предоставляет доступ к информации ядра. Различная информация, которую ядро может сообщить пользователям, находится в "файлах" каталога /proc. Например, в файле /proc/modules находится список загруженных модулей ядра. А в файле /proc/cpuinfo — информация о процессоре компьютера.

    /root - Это домашний каталог администратора, вместо /home/root. Это потому, что каталог /home может находиться в разделе, отличном от корневого (/) и если по какой-то причине /home не может быть подключён, то пользователь root вынужден будет войти в систему, чтобы решить проблему. И если его домашний каталог на другом диске, то это усложнит вход в систему.

    /sbin - В этом каталоге хранятся основные программы, выполняемые пользователем root а так же программы, выполняемые в процессе загрузки. Обычные пользователи не могут пользоваться этими программами.

    /tmp - Временное хранилище данных. Все пользователи имеют права чтения и записи в этом каталоге.

    /usr - Это один из самых больших каталогов в системе. Практически всё остальное расположено здесь. Программы, документация, исходный код ядра и система X Window. Именно в этот каталог, чаще всего, устанавливаются программы.

    /var - В этом каталоге хранятся системные лог-файлы, кэш-файлы и файлы-замки программ. Это каталог для часто меняющихся данных.

    Каталог /etc - В этом каталоге содержится довольно много различных конфигурационных файлов. Некоторые из них рассмотрены ниже. Здесь также располагаются файлы, используемые для конфигурирования сети.

    /etc/rc.d - Командные файлы, выполняемые при запуске системы или при смене ее уровня выполнения.

    /etc/passwd - База данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, зашифрованный пароль и другие данные. Формат этого файла рассмотрен в man-руководстве к команде passwd.

    /etc/fdprm - Таблица параметров флоппи-дисковода, определяющая формат записи. Устанавливается программой setfdprm.

    /etc/fstab - Список файловых систем, автоматически монтируемых во время запуска системы командой mount -a (она запускается из командного файла /etc/rc.d/rc.S). Здесь также содержится информация о swaр-областях, автоматически устанавливаемых командой swapon -a.

    /etc/group - Подобен файлу /etc/рasswd, только здесь содержится информация о группах, а не о пользователях.

    /etc/inittab - Конфигурационный файл демона init.

    /etc/issue - Выводится программой getty перед приглашением login. Обычно здесь содержится краткое описание системы.

    /etc/magic - Конфигурационный файл команды file. Содержит описания различных форматов файлов, опираясь на которые эта команда определяет тип файла. Также см. руководства к magic и file.

    /etc/motd - Сообщение дня, автоматически выводится при успешном подключении к системе. Часто используется для информирования пользователей об изменениях в работе системы. Немного напоминает "совет дня" в Windows.

    /etc/mtab - Список смонтированных на данный момент файловых систем. Изначально устанавливается командными файлами при запуске, а затем автоматически модифицируется командой mount. Используется при необходимости получения доступа к смонтированным файловым системам (например, командой df).

    /etc/shadow - Теневая база данных пользователей. При этом информация из файла /etc/рasswd перемещается в /etc/shadow, который недоступен для чтению никому, кроме пользователя root. Это усложняет взлом системы.

    /etc/login.defs - Конфигурационный файл команды login.

    /etc/printcap - То же, что и /etc/termcap, только используется при работе с принтером.

    /etc/profile - Этот командный файл выполняется оболочкой Bourne Shell при запуске системы, что позволяет изменять системные установки для всех пользователей.

    /etc/securetty - Определяет терминалы, с которых может подключаться к системе пользователь root. Обычно это только виртуальные консоли, что усложняет взлом системы через модем или сеть.

    /etc/shells - Список рабочих оболочек. Команда chsh позволяет менять рабочую оболочку только на оболочки, находящиеся в этом файле. Процесс ftрd, предоставляющий работу с FTР, проверяет наличие оболочки пользователя в файле /etc/shells и не позволяет пользователю подключится к системе, пока ее имя не будет найдено в этом файле.

    /etc/termcap - База данных совместимости терминалов. Здесь находятся escape-последовательности для различных типов терминалов, что позволяет работать программам на разных типах терминалов.

    Каталог /dev - В этом каталоге находятся файлы устройств. Названия этих файлов соответствуют специальным положениям, рассмотренным в списке устройств (Device list). Файлы устройств создаются во время установки системы, а затем с помощью скрипта /dev/MAKEDEV. Файл /dev/MAKEDEV.local используется при создании локальных файлов устройств или ссылок (т.е. тех, что не соответствуют стандарту MAKEDEV).

    Каталог /usr - Обычно файловая система /usr достаточно большая по объему, так как многие программы установлены именно здесь. Вся информация в каталоге /usr помещается туда во время установки системы. Отдельно устанавливаемые пакеты программ и другие файлы размещаются в каталоге /usr/local. Некоторые подкаталоги системы /usr рассмотрены ниже (для более подробной информации см. описание стандарта FSSTND).

    /usr/X11R6 - Все файлы, используемые системой X Window. Для упрощения установки и администрирования, файлы системы X Window размещаются в отдельной структуре каталогов, которая находится в /usr/X11R6 и идентична структуре /usr.

    /usr/bin - Практически все команды, хотя некоторые находятся в /bin или в /usr/local/bin.

    /usr/sbin - Команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root (например, здесь находится большинство программ-серверов).

    /usr/man, /usr/info, /usr/doc - Файлы man-руководств, документации GNU Info и другая документация.

    /usr/include - Подключаемые файлы библиотек для языка С.

    /usr/src - Исходные тексты программ, установленных в системе, в том числе ядра Linux.

    /usr/lib - Неизменяемые файлы данных для программ и подсистем, включая некоторые конфигурационные файлы. Имя lib происходит от library (библиотека); первоначально библиотеки подпрограмм для программирования хранились в /usr/lib.

    /usr/local - Здесь размещаются отдельно устанавливаемые пакеты программ и другие файлы.

    Каталог /var - Эта файловая система содержит файлы, изменяемые при нормально работающей системе. Она специфична для каждого компьютера и не может быть разделена в сети между несколькими машинами.

    /var/man/cat* - Временный каталог для форматируемых страниц руководств. Источником этих страниц является каталог /usr/man/man*. Некоторые руководства поставляются в отформатированном виде. Они располагаются в /usr/man/cat*. Остальные руководства перед просмотром должны быть отформатированы. Затем они помещаются в каталог /var/man и при повторном просмотре в форматировании не нуждаются. Каталог /var/man/cat часто очищается, таким же образом, как и прочие временные каталоги.

    /var/lib - Файлы, изменяемые при нормальном функционировании системы.

    /var/local - Изменяемые данные для программ, установленных в /usr/local (то есть, программы которые были установлены администратором системы). Обратите внимание, что даже в местном масштабе установленные программы должны использовать другие /var каталоги, например, /var/lock.

    /var/lock - Файлы-защелки. Многие программы при обращении к какому-либо файлу устройства создают здесь файл-защелку. Другие программы при обращении к какому-либо устройству сначала проверяют наличие файла-защелки в этом каталоге, а затем уже производят доступ к этому устройству.

    /var/log - Журнальные файлы различных программ, в особенности login (/var/log/wtmр, куда записываются все подключения и выходы из системы) и syslog (/var/log/messages, где обычно хранятся все сообщения ядра и системных программ). Файлы из /var/log необходимо регулярно удалять, иначе разрастутся сверх всякой меры.

    /var/run - Файлы, информация в которых соответствует действительности только до очередной перезагрузки системы. Например, файл /var/run/utmp содержит информацию о пользователях, подключенных к системе в данный момент.

    /var/spool - Каталоги, используемые для хранения почты, новостей, очереди для принтера, а также для других задач. Для каждой задачи существует отдельный каталог в /var/spool, например, почтовые ящики пользователей хранятся в /var/spool/mail.

    /var/tmp - Каталог для временных файлов, размер которых достаточно велик или время существования которых больше, чем в /tmp. Хотя администратор системы не должен бы держать очень уж старые файлы в /var/tmp.

    Каталог /proc - Файловая система /proc является виртуальной и в действительности она не существует на диске. Ядро создает ее в памяти компьютера. Система /proc предоставляет информацию о системе (изначально только о процессах — отсюда ее название). Некоторые наиболее важные файлы и каталоги рассмотрены ниже. Более подробную информацию о структуре и содержании файловой системы /proc можно найти в man-руководстве к proc.

    /proc/1 - Каталог, содержащий информацию о процессе номер 1. Для каждого процесса существует отдельный каталог в /proc, именем которого является его числовой идентификатор.

    /proc/cpuinfo - Информация о процессоре, такая как тип процессора, его модель, производительность и др.

    /proc/devices - Список драйверов устройств, встроенных в действующее ядро.

    /proc/dma - Задействованные в данный момент каналы DMA.

    /proc/filesystems - Файловые системы, встроенные в ядро.

    /proc/interruрts - Задействованные в данный момент прерывания.

    /proc/ioports - Задействованные в данный момент порты ввода/вывода.

    /proc/kcore - Отображение физической памяти системы в данный момент. Размер этого файла точно такой же, как и у памяти компьютера, только он не занимает места в самой памяти, а генерируется на лету при доступе к нему программ. Однако при копировании этого файла куда-либо, он не займет места на диске.

    /proc/kmsg - Сообщения, выдаваемые ядром. Они также перенаправляются в syslog.

    /proc/ksyms - Таблица символов ядра.

    /proc/loadavg - Ориентировочная загруженность системы.

    /proc/meminfo - Информация об использовании памяти, как физической, так и swap-области.

    /proc/modules - Список модулей ядра, загруженных в данный момент.

    /proc/net - Информация о сетевых протоколах.

    /proc/self - Символическая ссылка к каталогу процесса, пытающегося получить информацию из /proc. При попытке двух различных процессов получить какую-либо информацию в /proc, они получают ссылки на различные каталоги. Это облегчает доступ программ к собственному каталогу процесса.

    /proc/stat - Различная статистическая информация о работе системы.

    /proc/uptime - Время, в течение которого система находится в рабочем состоянии.

    /proc/version - Версия ядра.

    Хотя многие файлы имеют обычный текстовый формат, некоторые из них имеют собственный. Существует много программ, которые не только преобразуют такие файлы в формат, доступный для чтения, но и предоставляют некоторые функции. Например, программа free считывает файл /proc/meminfo и преобразует значения, указанные в байтах, в килобайты (а также предоставляет некоторую дополнительную информацию).

    Файл-сервер на базе Ubuntu


    Данная статья должна помочь вам организовать файл-сервер уровня домашнего или малого офиса на базе персонального компьютера и операционной системы Ubuntu. Ресурсы данного сервера будут доступны компьютерам вашей локальной сети под управлением операционных систем Windows и Linux.

    Данный файл-сервер построен на базе ОС Ubuntu Server 7.10 (http://releases.ubuntu.com/7.10/ubuntu-7.10-server-i386.iso) с установленной службой Samba и может работать с жесткими дисками, форматированными под файловую систему NTFS и подключенными к большинству новых контроллеров IDE, SATA и RAID IDE/SATA. Файловое хранилище может быть организованно как на отдельном разделе основного жесткого диска (на котором будет установлена Ubuntu), так и на отдельном диске. Последний вариант является более предпочтительным с точки зрения надежности и производительности системы. Для организации разделов на ваших жестких дисках вы можете воспользоваться liveCD-дистрибутивом Gparted live CD (http://sourceforge.net/project/showfiles.php?group_id=115843&package_id=173828). Данный пакет так же построен на базе ОС Linux и имеет статус freeware.

    Итак, предположим, что наш сервер будет называться server1.example.com и иметь IP-адрес 192.168.0.100 и адрес шлюза доступа к Интернет 192.168.0.1. Эти настройки вы можете изменять на ваше усмотрение.

    Итак, приступим:
    1) Загрузитесь с вашего Ubuntu install CD и выберите пункт “Install to the hard disk”

    2) Начнется установка ОС Ubuntu. Выберите язык интерфейса и место вашего нахождения:

    3) Выберите предпочтительную раскладку клавиатуры:

    Вам будет предложено нажать несколько клавиш чтобы убедиться в правильности выбора вами раскладки клавиатуры:

    4) Инсталятор проверит ваш инсталяционный диск, опознает аппаратное обеспечение вашего ПК и сконфигурирует сетевые службы с настройками по-умолчанию:




    5) Введите имя вашего сервера (в нашем случае это server1.example.com, соответственно вводим server1):

    6) Теперь необходимо разобраться с партициями на основном жестком диске. В случае, если жесткий диск с данными будет физически отдельным диском, вам необходимо будет создать одну болшую партицию с точкой монтирования / небольшую swap-партицию (партицию файла подкачки) с точко монтирования /swap. В случае, если жесткий диск в вашей системе один, то вам так же придется создать NTFS-партицию под пользовательские данные:

    Выберите жесткий диск, который вам надо переразметить:

    После подтверждения вносимых вами изменений выбраный вами жесткий диск будет переразмечен и отформатирован. Все данные на нем будут уничтожены!!!

    7) Вам предложат сконфигурировать системные часы. Настройки по-умолчанию (UTC) вполне работоспособны - выбирайте их:

    8) Создайте пользователя (например, создатим пользователя Administrator с логином administrator). Не используйте в качестве имени пользователя слово admin - оно зарезервировано системой:




    9) После создания пользователя начнется установка базовых пакетов системы:

    Нам необходимо, чтобы была установлена служба Samba File server, но её установку лучше будет совершить позже вручную. Соответственно на данном этапе установки мы выбираем лишь пункт OpenSSH server для того чтобы иметь возможноть сразу после окончания установки использовать для управленя компьютером любой SSH-клиент (например, PuTTY - http://www.putty.spb.ru/download.html:

    Возможно, вам так же понадобятся службы Print server и Mail server, но их установка и конфигурация выходят за рамки данной статьи. После нажатия Continue установка продолжится:

    10) После окончания установки дополнительных пакетов, система предложит извлечь Installation CD из привода и перезагрузиться:

    Первый этап установки нашего файл-сервера завершен.

    11) После того, как сервер стартует, вы сможете зайти на него любым SSH-клиентом. Теперь активизируем root-аккаунт:

    sudo passwd root

    После указания пароля для root (обязательно его запомните, а лучше запишите!!!) вы получите доступ к коммандной строке вашего сервера с правами суперпользователя, введя команду:

    su

    12) Сконфигурируем сетевые настройки для нашей конкретной сети. Ubuntu по-умолчанию устанавливает получение IP-адреса системы от сервера DHCP? в нашем же случае мы хотим указать статический IP-адрес. Соответственно нам необходимо отредактировать файл конфигурации сети /etc/network/interfaces. Это можно сделать, например, тектовым редактором vi:

    vi /etc/network/interfaces

    Для того, чтобы настройки соответствовали требованиям нашего примера этот файл должен иметь следующий вид:

    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    
    # The loopback network interface
    auto lo
    iface lo inet loopback
    
    # The primary network interface
    auto eth0
    iface eth0 inet static
     address 192.168.0.100
     netmask 255.255.255.0
     network 192.168.0.0
     broadcast 192.168.0.255
     gateway 192.168.0.1

    Затем перезапустим сетевые службы:

    /etc/init.d/networking restart

    Так же нам необходимо подправить файл /etc/hosts. Для нашего примера он должен выглядеть следующим образом:

    127.0.0.1       localhost.localdomain   localhost
    192.168.0.100   server1.example.com     server1
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts#

    Теперь запустим его:

    echo server1.example.com > /etc/hostname
    /etc/init.d/hostname.sh start

    После этого исполните команды:

    hostname
    hostname -f

    Оба должны вывести имя нашего хоста - server1.example.com

    13) Отредактируйте файл, в котором указанны доступные репозитарии с пакетами программ для Ubuntu /etc/apt/sources.list.

    vi /etc/apt/sources.list

    Он должен выглядеть следующим образом:

    #
    # deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ - Release i386 (20071016)]/ gutsy main restricted
    
    #deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ - Release i386 (20071016)]/ gutsy main restricted
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    
    deb http://de.archive.ubuntu.com/ubuntu/ gutsy main restricted
    deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb http://de.archive.ubuntu.com/ubuntu/ gutsy-updates main restricted
    deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy-updates main restricted
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## universe WILL NOT receive any review or updates from the Ubuntu security
    ## team.
    deb http://de.archive.ubuntu.com/ubuntu/ gutsy universe
    deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy universe
    deb http://de.archive.ubuntu.com/ubuntu/ gutsy-updates universe
    deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy-updates universe
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb http://de.archive.ubuntu.com/ubuntu/ gutsy multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy multiverse
    deb http://de.archive.ubuntu.com/ubuntu/ gutsy-updates multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy-updates multiverse
    
    ## Uncomment the following two lines to add software from the 'backports'
    ## repository.
    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    # deb http://de.archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
    # deb-src http://de.archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
    
    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository. This software is not part of Ubuntu, but is
    ## offered by Canonical and the respective vendors as a service to Ubuntu
    ## users.
    # deb http://archive.canonical.com/ubuntu gutsy partner
    # deb-src http://archive.canonical.com/ubuntu gutsy partner
    
    deb http://security.ubuntu.com/ubuntu gutsy-security main restricted
    deb-src http://security.ubuntu.com/ubuntu gutsy-security main restricted
    deb http://security.ubuntu.com/ubuntu gutsy-security universe
    deb-src http://security.ubuntu.com/ubuntu gutsy-security universe
    deb http://security.ubuntu.com/ubuntu gutsy-security multiverse
    deb-src http://security.ubuntu.com/ubuntu gutsy-security multiverse

    Запустите процедуру получения списка доступных обновлений пакетов. В данный момент подключение вашего сервера к интернету должно быть активно:

    apt-get update

    Для запуска обновления установленных пакетов выполните:

    apt-get upgrade

    14) Установите пакеты samba, smbclient, smbfs, beep, ntp, ntpdate:

    apt-get install samba smbclient smbfs beep ntp ntpdate

    Samba, SMBlient и SMBFS нужны для организации самого файл-сервера. NTP и NTPdate позволяют синхронизировать по сети время. Beep позволяет сигнализировать встроенным динамиком ПК запуск и остановку сервера.

    15) При необходимости установите второй жесткий диск. Включите компьютер. Для того, чтобы узнать список достуных жестких дисков, партиций на них и имен, которые им дала Ubuntu введите команду:

    fdisk -l

    Вы получите список, аналогичный следующему:

    Disk /dev/hdb: 40.0 GB, 40020664320 bytes
    255 heads, 63 sectors/track, 4865 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot Start End Blocks Id System
    
    /dev/hdb1 * 1 4678 37576003+ 83 NTFS

    Имена жестких дисков в ОС Linux начинаются с hd. В примере Linux показывает нам на наличие жесткого диска - hdb (40 гб) и наличие на нем партиции hdb1 (NTFS 37 Гб доступно пользователю). Теперь мы создадим точку монтирования /store и дадим к ней полный доступ для всех пользователей:

    mkdir /media/store
    chmod 777 /media/store

    Примонтируем жесткий диск hda:

    mount /dev/hda /media/store

    Для того, чтобы система автоматически монтировала этот жестки диск при запуске, нам необходимо отредактировать файл /etc/fstab:

    vi /etc/fstab

    В файле /etc/fstab указанны параметры всех устройств хранения данных, монтируемые при запуске системы. В нашем примере он изначально должен выглядеть следующим образом:

    # /etc/fstab: static file system information.
    #
    #
         
    proc /proc proc defaults 0 0
    /dev/hda1 / ext3 defaults,errors=remount-ro 0 1
    /dev/hda5 none swap sw 0 0
    /dev/hdb1 /media/hdb1 ext3 defaults 0 0
    /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
    /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

    Обратите внимание, что диск hda разбит на 2 партиции (hda1 - основная, на которой стоит система и hda5 - swap-партиция) и каждая из них монтируется отдельно. Соответственно, если жесткий диск hdb разбит на несколько партиций, то их тоже придется монтировать отдельно. Все, что вам потребуется сделать для автомонтирования второго жетского диска, так это добавить в файл /etc/fstab следующую строчку:

    /dev/hdb1 /media/store ntfs defaults 0 0

    Перезагрузите файл /etc/fstab:

    mount -a

    Жесткий диск станет доступным без перезагрузки.

    16) Конфигурация службы Samba. Отредактируйте файл /etc/samba/smb.conf под ваши требования:

    vi /etc/samba/smb.conf

    Для изменения имени рабочей группы вашей сети, отредактируйте строку:

    workgroup = MSHOME

    Добавьте следующие строки в конец файла /etc/samba/smb.conf, чтобы дать доступ сетевых пользователей к жесткому диску:

    [hdb public hard disk]
    comment = Public Folder
    path = media/store
    public = yes
    writable = yes
    create mask = 0777
    directory mask = 0777
    force user = nobody
    force group = no group
    

    Перезапустите службу Samba:

    /etc/init.d/samba force-reload

    Задайте пароль доступа к данному сетевому хранилищу:

    smbpasswd -a family

    В появившемся запросе введите пароль на ваш выбор. Теперь вы можете получить доступ к вашему файл-серверу, используя логин family (или любой, какой вы укажете при настройке) и указанный вами пароль.

    17) Настройте сигнализацию активности вашего сервера. Откройте в редакторе файл /et/rc.load:

    vi /et/rc.load

    Добавьте в него следующую строчку:

    beep -l 900 -r 3 -f 500

    Теперь три сигнала из встроенного динамика вашего сервера будут означать окончание загрузки вашего сервера и его готовность к функционированию.

    По материалам http://www.howtoforge.com/ubuntu-home-fileserver

    Шпаргалка по командам в Ubuntu-образных дистрибутивах

    Данная статья - краткий справочник по наиболее важным командам и приложениям Ubuntu-подобных Linux систем.

    Привилегии

    sudo command – запустить command с правами root
    sudo su – открыть командную строку с правами root
    sudo su user – открыть коммандную строку с правами user
    sudo -k – забыть пароль sudo
    gksudo command – графический диалог sudo (GNOME)
    kdesudo command – графический диалог sudo (KDE)
    sudo visudo – редактировать /etc/sudoers
    gksudo nautilus – файловый менеджер с правами root (GNOME)
    kdesudo konqueror – файловый менеджер с правами root (KDE)
    passwd – сменить Ваш пароль

    Управление X-сервером

    sudo /etc/init.d/gdm restart – перезапустить X (GNOME)
    sudo /etc/init.d/kdm restart – перезапустить X (KDE)
    файл /etc/X11/xorg.conf – конфигурация X
    sudo dpkg-reconfigure -phigh xserver-xorg – сбросить конфигурацию X
    Ctrl+Alt+Bksp – перезапустить X-сервер
    Ctrl+Alt+Fn – переключиться на консоль №n
    Ctrl+Alt+F7 – вернуться к X

    Управление системными сервисами

    start service – запустить service (Upstart)
    stop service – остановить service (Upstart)
    status service – проверить, запущен ли service (Upstart)
    /etc/init.d/service start – запустить service (SysV)
    /etc/init.d/service stop – остановить service (SysV)
    /etc/init.d/service status – проверить service (SysV)
    /etc/init.d/service restart – перезапустить service (SysV)
    runlevel – посмотреть текущий runlevel

    Управление пакетами

    apt-get update – обновить базу пакетов
    apt-get upgrade – обновить все пакеты
    apt-get dist-upgrade – обновить версию Ubuntu
    apt-get install pkg – установить pkg
    apt-get remove pkg – удалить pkg
    apt-get autoremove – удалить устаревшие пакеты
    apt-get -f install – попытаться исправить сломаные пакеты(зависимости)
    dpkg --configure -a – попытаться исправить сломаные пакеты(зависимости)
    dpkg -i pkg.deb – установить пакет из файла pkg.deb
    файл /etc/apt/sources.list – список репозиториев APT

    Настройка сетевых подключений

    ifconfig – просмотр сетевой информации
    iwconfig – просмотр информации беспроводных устройств
    sudo iwlist scan – сканировать беспроводные сети
    sudo /etc/init.d/networking restart – перезапустить сеть
    файл /etc/network/interfaces – файл для ручной настройки сети
    ifup interface – поднять interface
    ifdown interface – положить interface

    Специальные пакеты

    ubuntu-desktop – стандартная среда Ubuntu
    kubuntu-desktop – рабочий стол KDE
    xubuntu-desktop – рабочий стол XFCE
    ubuntu-minimal – основные утилиты Ubuntu
    ubuntu-standard – стандартные утилиты Ubuntu
    ubuntu-restricted-extras – не свободные, но полезные пакеты
    kubuntu-restricted-extras – несвободные пакеты для kubuntu
    xubuntu-restricted-extras – несвободные пакеты для xubuntu
    build-essential – пакеты, необходимые для сборки программ
    linux-image-generic – последнее generic ядро
    linux-headers-generic – последние хедеры ядра

    Управление Фаерволом

    ufw enable – включить фаервол
    ufw disable – выключить фаервол
    ufw default allow – разрешить все подключения
    ufw default deny – запретить все подключения
    ufw status – текущий статус и правила
    ufw allow port – разрешить соединения по порту port
    ufw deny port – закрыть port
    ufw deny from ip – заблокировать ip адрес

    Имена приложений

    nautilus – файловый менеджер (GNOME)
    dolphin – файловый менеджер (KDE)
    krusader —двухпанельный файловый менеджер
    konqueror – веб-браузер (KDE)
    kate – текстовый редактор (KDE)
    gedit – текстовый редактор (GNOME)