Преди да преминете към по-задълбочена конфигурация, добре ще е да научите как е организирана самата система, да се запознаете с някои по-важни команди и др. Добре е да знаете и как да компилирате собствено ядро, според нуждите Ви. Тази глава ще Ви запознае с организацията на системата и конфигурационните файлове. След което, вече ще можете да преминете към по-сложните настройки.
Linux значително се различава от DOS, Windows и Macintosh (с изкл. на Unix-базираната Mac OS X), но не се притеснявайте. Секциите тук ще Ви покажат как да настроите Slackware, така че да посрещне вашите нужди.
Първото нещо, което ще забележите в (Slackware) Linux е файловата система. Тук не се използват букви за означението на устройствата, както в DOS / Windows. В Linux има една главна директория (нещо като C: в DOS), но всеки дял от твърдия диск е монтиран вътре в тази главна директория (нещо като D: вътре в C: (C: и D: общи)).
Главната директория се нарича root и се означава с наклонена черта (/). Тази концепция може да Ви изглежда странна, но впоследствие ще разберете, колко е удобна.
По-долу е представена таблица с главните директории в (от първо ниво) /.
binОсновните програми за нормалното функциониране на Linux се намират тук. Неща като shell-а и файлови команди (ls, cp и др.) са записани тук.
bootФайловете записани тук се използват от Linux Loader (LILO). Linux ядрото се намира тук.
devВсичко в Linux се третира под формата на файлове, дори хардуерните устройства, като серийни портове, твърди дискове, скенери и др. is treated as a file, even hardware devices like serial ports, hard disks, and scanners. За да получите достъп до тези устройства, трябва да е наличен специален файл (device node). Тези файлове се съхраняват тук.
etcДиректорията /etc съдържа конфигурационни файлове.
homeLinux е многопотребителска операционна система. Всеки потребител притежава акаунт и собствена директория - домашна директория. В /home по подразбиране се съхраняват потребителските директории.
libСистемните библиотеки, нужни за правилното функциониране на системата се съхраняват тук. Модулите на ядрото също са тук.
mntТази директория съдържа временни точки за монтиране, например за CD-ROM и флопи.
opt Тук са незадължителните софтуерни пакети. Идеята на тази директория е, че всеки софтуерен пакет се инсталира в /opt/software-package, което го прави лесен за последваща деинсталация. В Slackware тук се намира графичната среда KDE, както и някои други неща. Разбира се, Вие сте свободни да слагате, каквото прецените в тази директория.
proc Това е уникална директория. Тя не е точно част от файловата система, по-скоро е виртуална файлова система, предназначена за достъп до информация относно ядрото. Тази информация е достъпна отново чрез специални файлове.
root Системният администратор в Linux е root. Това е неговата домашна директория, причината тя да не е в /home/root е проста; представете си, че /home е на различен дял от / и поради проблем не може да се монтира, а единствено root може да отстрани проблема. Ето защо /root винаги трябва да е на един дял с /. Разбира се има още много причини /root да е извън /home, но засега няма да се впускаме в подробности.
sbin Основните програми използвани от root се съхраняват тук. Обикновените потребители по принцип не използват софтуера от тази директория.
tmpДиректория за временни файлове. Всички потребители имат права за четене и запис тук.
usr Това е най-голямата директория в Linux. Много неща се съхраняват тук, програми, документация, сорс кода на ядрото, X графичната система и др. В тази директория се инсталира по-голямата част от софтуера.
varСистемни log файлове, кеш данни, заключващи файлове и др. се съхраняват тук. Това е директорията с най-динамична промяна на информацията.
Първата от тях е which. which обикновено се използва за бързо локализиране на дадена програма. Командата просто претърсва вашия PATH и връща първата инстанция, която открие. Погледнете този пример:
% which bash
/bin/bash
Тук виждате, че bash се намира в директория /bin. Имайте в предвид, че тази команда е доста ограничена, предвид това, че претърсва само вашият PATH.
Командата whereis работи подобно на which, но претърсва и за man страници, и сорс файлове. Търсене с whereis ще върне подобен резултат:
% whereis bash
bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz
Командата не само връща директорията, където се намира bash, но показва и къде е разположена документацията му. Но също като which, това търсене е ограничено. Ако искате да намерите даден конфогурационен файл, тези команди няма да Ви помогнат особено в повечето случаи.
Командата find претърсва файловата система. Тя предлага богат избор от опции за търсене. Потребителите могат да търсят с помощта на глобални символи (примерно * в името или разширението на файла означава, че знакът на зададената позиция и тези след нея до края на името, респ. на разширението, могат да бъдат произволни), по време на създаване и др. Примерно за да намерите файла xinitrc, може да ползвате следното:
% find / -name xinitrc
/var/X11R6/lib/xinit/xinitrc
Търсенето с find може да отнеме известно време, понеже трябва да претърси цялата файлова система. Също така, ако тази команда се изпълни от обикновен потребител, ще изведе съобщения за грешки, понеже достъпът до някои директории е позволен само за root. Но find откри нашият файл, така че всичко е наред. Само ако можеше това да стане по-бързо...
Командата slocate претърсва цялата файлова система, също като find, но тя използва предварително изготвена база данни, като по този начин ускорява търсенето (прави го почти моментално). Станадартно базата данни се обновява всяка сутрин, така че разполагате с пресен списък на файловете. Можете да обновите базата данни и ръчно, с помощта на командата updatedb (трябва да сте root, за да направите това). Нека видим slocate в действие:
% slocate xinitrc
/var/X11R6/lib/xinit/xinitrc
/var/X11R6/lib/xinit/xinitrc.fvwm2
/var/X11R6/lib/xinit/xinitrc.openwin
/var/X11R6/lib/xinit/xinitrc.twm
Получихме дори повече от това, което търсихме. И то много бързо. С помощта на тези команди ще намерите всичко, което търсите във вашата система.
В тази директория се съхраняват файловете за системна инициализация. Slackware използва BSD-стил на инициализация, който е противоположен на System V инициализацията. В BSD скриптовете, всеки runlevel (работно ниво) е представен, като rc файл. В System V, всеки runlevel притежава собствена директория, съдържаща скиптовете.
Съществуват няколко категории инициализиращи файлове. Предназначени са за системно стартиране, работно ниво (режим) (runlevel), мрежова инициализация и System V съвместимост.
Първата програма (след ядрото), която се стартира в Slackware е init. Тази програма прочита /etc/inittab файла, за да разбере как да стартира системата. Зарежда /etc/rc.d/rc.S скрипта, за подготовка на системата преди да влезете в предпочетения runlevel. rc.S подготвя виртуалната памет (swap), монтира файловите системи, почиства някои log директории, стартира Plug and Play устройствата, зарежда кернел модулите, конфигурира PCMCIA устройствата, настройва серийните портове и зарежда System V инициализиращите скриптове (ако има такива). Очевидно rc.S върши доста работа, но в /etc/rc.d има скриптове, които се използват от rc.S. Нека да ги разгледаме:
rc.s Това всъщност е системният инициализиращ скрипт.
rc.modules Зарежда модулите на ядрото. Няща като мрежови карти, PPP поддръжка и други се зареждат тук. Ако този скрипт открие rc.netdevice, ще зареди и него.
rc.pcmcia Проверява за (и евентуално настройва) PCMCIA устройства. Това е полезно най-вече за преносими компютри, които обикновено са снабдени с PCMCIA модем или мрежова карта.
rc.serial Configures your serial ports by running the appropriate setserial commands.
rc.sysvinit Търси System V инициализиращи скриптове и ако намери ги изпълнява. Това е обяснено по-долу.
След като системната инициализация е приключила, init стартира runlevel инициализация. runlevel-а всъщност е работния режим на машината. Файловете по-долу обясняват различните работни нива в Slackware Linux:
rc.0Спиране на системата (runlevel 0). По подразбиране, rc.6 сочи към този файл.
rc.4Многопотребителски режим (runlevel 4), използва се графичен вход (login) към системата, чрез login менъджер (KDM, GDM или XDM).
rc.6Рестартиране на системата (runlevel 6).
rc.KРежим с един потребител (single user mode) (runlevel 1).
rc.MМногопотребителски режим (runlevels 2 и 3), но със стандартен текстов вход (login) към системата. Това е стандртния работен режим в Slackware.
Работни нива 2, 3 и 4 ще стартират мрежовите устройства. Тези файлове отговарят за мрежовата инициализация:
rc.inet1Създаден с netconfig, този файл отговаря за действителното конфигуриране на мрежовия интерфейс.
rc.inet2Зарежда се след rc.inet1, стартира основни мрежови услуги.
rc.atalkСтартира AppleTalk услуги.
rc.httpdЗарежда Apache уеб сървъра. Както още някои rc скриптове, този може да бъде използван за стартиране / спиране / рестартиране на услугата. Примерно rc.httpd stop ще спре сървъра. Валидни аргументи са stop, start или restart.
rc.newsСтартира news сървър.
Скриптовете описани по-долу са другите инициализиращи скриптове. Те обикновено се зареждат от някои главни скриптове (описани по-горе).
rc.gpmСтартира услуга, позволяваща Ви да работите с мишка в конзолата. Ако използвате Х тази услуга вероятно не Ви е нужна, също така могат да възникнат проблеми с X, ако тази услуга е стартирана.<
rc.fontЗарежда собствени шрифтове за конзолата.
rc.localСъдържа програми, които се изпълняват при стартиране на системата. Този файл първоначално е празен, в него можете да сложите програмите, които искате да се стартират в началото. Скрипта се изпълнява последен, след като всички гореописани скриптове завършат.
За да разрешите скрипта, трябва само да му дадете права за изпълнение с chmod командата. За да забраните изпълнението му, просто му отнемете правата за стартиране. Повече информация относно chmod ще откриете в секция 9.2.