1. Кратка история на Линукс
Линукс, както DOS и Windows, е операционна система.
Операционната система представлява съвкупност от програми, които имат за цел:
- управление на персоналния компютър и всички периферни устройства;
- изпълнение на зададените от потребителя команди;
- извеждане на получените резултатите на монитора или друго външно устройство;
- оптимално разпределение на паметта;
- стартиране на програми.
Общ вид на Линукс (дистрибуция Mandrake Linux, KDE на български език като графичен десктоп):

Линукс е създаден на базата на друга много популярна в миналото операционна система – UNIX. UNIX е създаден през 1969 година в Bell Laboratories като наследник на друга многопотребителска операционна система – Multics. По това време UNIX е била уникална операционна система. Написана изцяло на езика С, UNIX е бил лесно преносим между различните платформи за разлика от другите операционни системи по онова време, които били създадени на асемблер. Точно тази преносимост е била и основният двигател на UNIX и появилите се след него клонинги. Освен това UNIX е различен и в друго отношение – той е изграден от множество малки и бързи програми, които взаимодействат помежду си чрез кратки програми, наречени скриптове. Този подход се използва и сега и е различен от подхода използван в Windows – многофункционални, големи и тежки програми.
Линукс (Linux) води началото си от MINIX – един от многобройните клонинги на UNIX. MINIX е била безплатна операционна система и нейният създател Андрю Таненбаум предоставил нейния код за общо ползване. Точно на базата на този код през 1991 е било създадено и първото ядро на Линукс от студента Линус Торвалдс. Версии на това ядро все още може да се намерят за свободно сваляне на адрес http://www.kernel.org/pub/linux/kernel/Historic .
2. Принципи на софтуера с отворен код
Основната разлика между Линукс и Windows е принципа на отворения код, на базата на който се разработва Линукс ядрото. Софтуер, който се разпространява с отворен код спазва правилата дефинирани в Open Source лиценза.
- Първото изискване на OSD (Open Source Definition – Дефиниция на отворения код) е, че всеки пакет с отворен код трябва да се разпространява напълно свободно, като това не изключва негова продажба.
- Второто изискване е, че освен програмата, вие трябва да предоставите и изходния код на тази програма. На това се базира и модела на отворения код за подобрение и развитие на софтуера. Получавайки изходения код хиляди програмисти могат да работят над тази програма, да оправят грешки и да добавят нова функционалност.
- Третото изискване е променения изходен код да се разпространява по същия начин както и оригиналния.
- Четвъртото изискване е, че не може една програма компилирана от променен изходен код да се разпространява под същото име и номер на версията както и оригиналната.
Това са основните изисквания на отворения код. Пълния текст може да се намери на адрес http://opensource.org/docs/definition.php . Като цяло основната идея е свободното разпространение и развитие на софтуера.
3. История на GNU обществото
Съкращението GNU означава "GNU's Not UNIX" или преведено "ГНУ не е UNIX".
GNU e анонсирана от Ричард Сталман към края на Септември, 1983 година, с идеята да се създаде UNIX – подобна операционна система, която може да се разпространява свободно. Фактически GNU проекта официално стартира през Януари 1984г.
До тогава разпространението на свободен софтуер е ставало без никакви лицензи, което позволило на много компании да използват свободен софтуер за направата на комерсиални продукти. Именно това била причината да се замисли нов лиценз, който би могъл да предотврати комерсиализация и затваряне на продуктите.
Това е така наречения GNU General Public License (GPL) лиценз, който изисква всяка модификация на GPL софтуер също да бъде разпространявана под този лиценз. Това гарантирало, че свободния софтуер, каквото и развитие да търпи, ще си остане свободен.
GPL лиценза е един от няколкото лиценза прилагани при разпространението на свободен софтуер. Другите по често използвани са Artistic License и BSD лиценз. Общото между тях е следното:
· Софтуера може да се инсталира на неограничен брой компютри.
· Броят на хората използващи софтуера също е неограничен.
· Софтуера може да се копира неограничено (свободно или отворено редистрибутиране).
· Няма ограничения по модифицирането на софтуера с изключение на запазването на базовата функционалност, за който е бил създаден.
· Няма ограничение по разпространението, дори продажбата на софтуера.
4. Линукс дистрибуции
Освен операционна система персоналният компютър се нуждае от голяма база приложен софтуер. Без голям брой различни по вид и функционалност приложения компютърът е практически неизползваем. При Windows и DOS част от тези приложения идват с операционната система, но при Линукс не е така. Това е така, защото Ликукс е само ядрото на операционната система. Той може да управлява устройства и задачи, но сам по себе си е абсолютно неизползваем.
Именно за това съществуват Линукс дистрибуции, които съдържат в себе си както ядрото на операционната система, така и приложен софтуер. Всяка една дистрибуция идва с базов набор от най-необходимите програми, като те са еднакви в повечето Линукс дистрибуции. Освен това много Линукс дистрибуции идват и с огромен набор от приложения, които включват браузъри, текстообработващи програми, офис пакети, среди за разработка на приложения, набор от графични среди и т.н. Сега ще се запознаем с някои от по-известните Линукс дистрибуции:
Debian:
Debian е една уникална дистрибуция различаваща се от другите по това, че се издържа от дарения. Той е подходящ за опитни потребители и е една от най-големите (цели 7 диска). Друго характерно при Дебиан е начина на управление на пакетите (това с програмите преди да се инсталират). Пакетната система на Дебиан е толкова развита, че той може да се инсталира от две дискети и стабилна Интернет връзка.
Red Hat:
Red Hat е една от най-разпространените дистрибуции. Нейната инсталация е особенно лесна и е подходяща за начинаещи потребители. Red Hat е първата комерсиална дистрибуция. Едновременно с покупката на Red Hat потребителя получава и часове за поддръжка. Предимство на Red Hat е и това, че се поддържа от повечето производители на софтуер за Линукс. Наскоро обаче Red Hat преустанови свободното изтегляне и поддръжката на не сървърните си версии. За домашни потребители компанията пусна друга дистрибуция наречена Fedora.
SUSE:
Това е немска дистрибуция, която е изцяло локализирана на немски (това не означава, че не може да се използва и на други езици, вкл. и български). Инсталацията е елементарна и подходяща за начинаещи. Като цяло SUSE e една много добра дистрибуция. Тази година SUSE бе закупена от Novel и засега бъдещето на тази дистрибуция не е много ясно.
Slackware:
Slackware е предпочитан предимно от по-напредналите Линукс потребители, които искат да имат максимален контрол над всичко и това да става лесно и бързо. Под "лесно" и "бързо" обаче в Slackware се разбира ръчна промяна на множество конфигурационни файлове. Това прави дистрибуцията не особенно подходяща за начинаещи, въпреки нейната стабилност и сигурност. Освен това Slackware е идениствената дистрибуция от изброените, която не притежава вградено средство за ъпгрейд.
Mandrake:
Mandrake e френска дистрибуция базирана на Red Hat. Тя притежава елементарно средство за инсталация, която освен всичко друго може да работи на български. Като цяло Mandrake се характеризира с лесна администрация и удобен потребителски интерфейс. От изброените тя е най-подходяща за начинаещи.
Knoppix, Tilix (български линукс), Mandrake Move, VS Linux
Дистрибуции на на един компакт диск, които не се инсталират на твърдия диск и могат да работят направо от компакт диска. За целта в настройките на BIOS трябва да се избере като устройство за начално зареждане (boot) - компакт дисковото устройство. Този вид дистрибуции е много подходящ за начални потребители, които без риск за разрушаване на данните върху твърдия диск, могат да стартират линукс и да работят пълноценно в интернет, както и да ползват голям набор текстообработващи програми, електронни таблици, графични програми и други.
5. Основни понятия в Линукс
а) ядро (kernel) - най-важната и същевременно задължителна програма в операционната система. Ядрото се занимава с управлението на хардуера, паметта, разпределя ресурсите на компютъра между отделните програми, управлява мрежовия трафик, файловата система и други.
Разработчиците на ядрото непрекъснато добавят нови функции или усъвършенстват съществуващи функции на ядрото. Това налага строга и добре дефинирана номерация на версиите на ядрата. Принципа на номерация е следния: всеки номер се състои от три цифри. Първата от тях се променя много рядко, само при принципно различни ядра. Това засега е станало само веднъж – при преминаването от версия 1 към версия 2. Скоро не се очаква преминаване към версия 3. Второто число се променя при съществени промени в текущото ядро. За стабилните версии на ядрата, то винаги е четно, а за нестабилните (testing kernels) – нечетно. Последното число обозначава малко промени в ядрото. В момента се разработват две стабилни версии на ядрата – по-старата 2.4.х и съвременната 2.6.х. Последните версии в момента на писане са 2.4.25 и 2.6.8.
Всяко Линукс ядро е многопотребителско и многозадачно. Това означава, че в един и същ момент на една Линукс машина може да се стартират множество процеси от множество потребители едновременно, без това да влияе по-някакъв начин на изпълнението на програмите. Тъй като Линукс ядрото е наистина многозадачно, то всяка програма се стартира в собствена област от паметта, като евентуален срив в нея не причинява срив в операционната система.
б) процеси (process) - всички останали активни програми в паметта на компютъра
в) мрежова комуникация (networking) - Процесите могат да си предават един на друг информация по няколко начина, най-важният от които е мрежовата комуникация (networking). Подобно на телефонните разговори между хора, всеки процес може да се опита да се свърже с друг процес, работещ на сьщия или на отдалечен компютър. Ако другият процес 'вдигне телефона' (приеме TCP връзка), започва обмен на информация.
г) многозадачност
Ако компютърът има един процесор, във всеки един момент може да работи най-много един процес (или ядрото). Но ядрото, използвайки особеностите на хардуера така превключва активните процеси, че създава илюзията за едновременна работа на всички стартирани процеси. Тук новото ядро 2.6 въведе понятието приоритетна многозадачност (preemptible). В предишните версии, ядрото не можеше да бъде прекъсвано по време на работа. При Линукс 2.6 ядрото в повечето случаи може да бъде прекъснато по време на задача, така че другите приложения могат да продължат работата си дори когато нещо работи на много ниско ниво.
д) многопотребителност
Освен многозадачна Линукс е и многопотребителска операционна система. Тя може да съдържа набор от потребители, които се идентифицират пред нея чрез потребителско име и парола. Всеки един потребител има собствена директория, в която може да пази своите файлове (включително и конфигурационните файлове на различните програми), като тази директория е недостъпна за другите потребители. Всяка една Линукс система има един свръхпотребител наречен root. Той администрира система и има пълните права върху нея. Този свръхпотребител се създава при инсталирането на дистрибуцията, като след това той създава другите потребители
е) файлова система
Цялата потребителска информация (програми и данни) се пази на твърдият диск на компютъра. Файлова система, най-общо казано се нарича набор от файлове, структурирани по някакъв начин и съхранени върху запомнящо устройство.
Едно от основните предимства на Linux е, че поддържа множество файлови системи. Това го прави особено гъвкав при съвместно съжителство с други операционни системи. Linux без проблем поддържа ext и ext2, msdos, ntfs и vfat, xia, minix, umsdos, iso9660, ufs, proc, sysv, ncp, smb, affs, hpfs, raiserfs и др.
Linux, както и UNIXTM не използват идентификатори (например C:\ или D:\) на устройствата за различните файлови системи, а организират всичко в една единствена йерархична дървовидна структура. Всяка нова файлова система, която трябва да бъде достъпна за Linux се добавя към тази дървовидна структура като нейно под-дърво. Мястото където присъединяваме (монтираме) добавяната файлова система се нарича точка на монтиране и задължително трябва да съществува във файловата система на Linux.
Всеки хард диск трябва да е разделен на дялове, като всеки дял е форматиран на дадена файлова система. Под Линукс тези дялове не са видими докато не се монтират. Дяловете в Линукс се именуват по различен начин спрямо дяловете във Windows. Следната таблица показва точно как се именуват различните дискове в компютъра:
|
|
IDE0 |
IDE1 |
|
master |
hda |
hdc |
|
slave |
hdb |
hdd |
Дяловете на съответните дискове се номерират с името на диска последвано от номера на дяла. Номерата на дяловете започва от 1 до 4 за основните дялове и от 5 за логическите. Например първия дял на master диска закачен на първия IDE канал (IDE0) е hda1.
Файловата система може да бъде разгледана в два аспекта. На високо ниво под файлова система се разбира разположението на директориите и файловата йерархия в един дял, а на ниско ниво представлява начина на форматиране на блоковото устройство. Тук ще разгледаме файловата система само от високо ниво, тъй като ниското ниво обикновено е в интереса на тесен кръг от специалисти.
Една типична организация на директориите в една Linux система е следната:
|
/ | |-- X11R6 |
|
В зависимост от конкретната Линукс дистрибуция горната структура може повече или по-малко да се отличава. Монтирането на различните файлови системи може да стане както автоматично при зареждането на системата, така и ръчно с командата mount. Някои дистрибуции даже притежават програма, която следи за прикачването на нови устройства и ги монтира автоматично. Тази програма се нарича automounter и е стартирана непрекъснато.
ж) демони - програми, които са стартирани непрекъснато и следят за различни събития, на които реагират по определен начин.
з) блокови и символни устройства
Както може би прави впечатление, с устройствата под Линукс се работи малко по-различно отколкото под Windows. Тук всяко едно устройство представлява файл от файловата система. Споменатите hda, hdb и т.н всъщност са файлове в директорията /dev. В тази директория се намират и останалите устройства като звукови карти (/dev/dsp), мрежови карти (/dev/eth0 и т.н.), USB устройства и т.н. Тази схема е изключително гъвкава, тъй като операциите по четене и запис в устройствата се свеждат до операциите четене и запис от файлове (опростено казано). Всяко едно устройство може да е или block device или character device. Всеки един файл, който сочи устройство притежава два номера – major и minor. Например едно SCSI устройство /dev/sda2 (втория дял на първия открит SCSI диск), получава major номер 8, който е общ за всички SCSI устройства и minor номер 2, който указва втория дял на диска. Различните видове устройства си разпределят основните и второстепенните номера различно, затова не може да се определи със сигурност колко точно устройства може да има една Линукс система. В ядра до 2.4.х ограничението на основните и второстепенните номера е 255 и в съвременните системи понякога се оказват недостатъчни. Тези ограничения бяха повдигнати с новото 2.6.х ядро – 4096 major устройства и над милион minor.
Важни устройства са:
и) процес на първоначално зареждане (init)
Както бе отбелязано по-горе стартирането на Линукс започва от стартирането на ядрото. Това става благодарение на малка част от него записана на специално място на дисковия носител. Тази част сама по себе си не може да управлява компютъра, но тя знае къде да погледне, за да зареди пълното ядро. След като бъде заредено, ядрото започва хардуерна проверка на различните устройства на компютъра и присвояване на определени параметри на тези устройства. Когато хардуерната проверка завърши, Линукс ядрото предава управлението на специална програма наречена init. В този момент тя започва зареждане на стартиращите скриптове, откъдето разбира в какъв режим се стартира системата (графичен, конзолен, многопотребителски или еднопотребителски) и необходимите програми за нормалната работа на операционната система. На този етап се стартират и услугите на системата, които може да са различни видове сървъри, демон за отдалечено управление и т.н. В края на зареждането init зарежда програмата login, която подканя потребителя да въведе потребителско име или парола. Ако е зададен графичен режим, то вместо login се зарежда програмата xdm (X Display Manager), която стартира графичния сървър и графичната среда.
к) видове потребители в Линукс:
- администратор (root) - потребител, който има пълни и неограничени права над файловата структура, може да изпълнява всякакви команди с командния интерпретатор, може да управлява и настройва всички устройства на компютъра
- обикновен потребител - потребител с ограничени права. Създава се от администратора и има права само над своите собствени файлове, какво и възможност за стартиране на общи за системата команди и програми
- потребителска група - група, към която принадлежи даден потребител. Използва се за задаване на права на много потребители едновременно (група).