|
|
|
Линуксова онтогенезаBIOSПървата програма, която се стартира автоматично след включване на компютъра, е BIOS. Тя съдържа различни драйвери, т.е. програми управляващи устройствата на компютъра на "ниско ниво". За запис и четене на информация от секторите на дисковете например, операционната система ДОС използва драйверите на BIOS, но за поддържането на файловете и каталозите по диска се грижи самият ДОС. Навремето конструкторите на IBM, избрали тази организация по две причини. Първо, компютърът не се обвързва с конкретна операционна система, а всеки потребител може да исталира онази операционна система, която най-добре отговаря на потребностите му. Второ, операционната система става по-независима от хардуера -- ако някой компютър има например твърд диск, който се управлява нестандартно, то това засяга само драйверите на BIOS, но не и операционната система, използваща тези драйвери наготово. Отначало на ограниченият ДОС се гледало като на временна операционна система, която трябвало бъде изместена от по-развита операционна система, от типа на CP/M-86. Това обаче не се осъществило, защото ДОС станал толкова популярен, че програми се писали практически само за него. Опитите на IBM да наложи по-късно при появата на PC/AT и PS/2 новата си операционна система OS/2 по различни причини се оказват неуспешни. Популярността на операционните системи от типа на ДОС (FreeDos, DR-DOS, PC-DOS, MS-DOS и др.) довежда обаче до това, че BIOS се специализира и престава да отговаря на първоначалния си замисъл -- да бъде средство улесняващо използването на различни операционни системи. Затова днес никоя модерна операционна система не се ползва от услугите на BIOS, въпреки че това води до очевидни трудности за производителите на тези операционни системи. Що се касае до Линукс, то тук ролята на BIOS се свежда само до средство за стартиране на операционната система. Едно от първите неща, които Линукс прави щом получи управлението, е да изземе управлението от BIOS. За да стане това по-лесно е необходимо да изключим някои услуги, които BIOS може да предлага, като напр. защита против вируси, shadow ram, advanced power management и др. Това става с програмата SETUP на BIOS (обикновено се извиква с натискането на клавиш Del или Ins след включване на компютъра). Повече подробности по този въпрос може да прочетете в инструкциите за инсталация на избраната от Вас дистрибуция на Линукс. Главен запис за първоначално зарежданеСлед като инициализира програмите си, BIOS пристъпва към зареждане на операционната система. Обикновено с програмата SETUP на BIOS можем да посочим откъде BIOS ще опитва да зареди операционната система. Това може да бъде твърд диск, дискета или компактдиск. В първия сектор на носителя, избран от BIOS, трябва да се съдържа малка програма за първоначално зареждане на операционната система, която BIOS пуска и която зарежда и стартира самата операционна система. Когато носителят, от който зареждаме, е твърд диск, в процеса на зареждане се добавя още една стъпка. Както е известно, твърдият диск се разделя на дялове, които могат да принадлежат на различни операционни системи. Всеки от тези дялове си има свой запис за първоначално зареждане, а в първия сектор на твърдия диск се намера така нареченият главен запис за първоначално зареждане (на англ. master boot record, съкратено MBR). Той съдържа таблица на главните (primari) дялове на диска и освен това програма, която зарежда програмата за начално зареждане на дисковия дял на избраната от нас операционна система. Това дава възможност различните дискови дялове да съдържат различни операционни системи с различни програми за начално зареждане. Най-простият главен запис може би е този, който инсталира ДОС. Един от главните дискови дялове в таблицата на дяловете е отбелязан като активен и главният запис на ДОС просто стартира програмата за начално зареждане на активния дял, който обикновено е дял на самия ДОС, но нищо не пречи активният дял да бъде и дял на Линукс. Ако искаме да стартираме операционна система от неактивен дял, трябва най-напред да стартираме активната операционна система и след това с някоя от нейните команди да сменим активния дял. В ДОС това става с командата FDISK, а в Линукс с командата 'activate диск дял', например 'activate /dev/hda 2'. Ако първият сектор на диска не съдържа главния запис на ДОС, то можем да го инсталираме като заредим ДОС и след това използваме командата 'FDISK /MBR'. По-развитите главни записи дават възможност потребителят диалогово да избере коя операционна система да се стартира. Някои от тях предлагат дори менюта които се показват на екрана на компютъра в графичен режим върху фон показващ предпочитана от вас картина. Интересно е, че програмата за първоначално зареждане на Линукс (LILO) може да се използва освен по предназначение, още и като главен запис, като също позволява диалогово да се избира коя операционна система да бъде стартирана. Основното й предназначение обаче е друго и затова възможностите й да прави красиви менюта не са толкова впечатляващи. Програма за начално зареждане (LILO)ОписаниеПрограмата на главният запис стартира програмата за първоначално зареждане на избраната от нас операционна система. Най-разпространена програма за първоначално зареждане на Линукс е LILO (LInux LOader). След като получи управлението от главния запис или директно от BIOS в случай че самата тя е главен запис или зареждаме от дискета или компактдиск, LILO извежда на екрана надписа LILO. Ако се покаже само част от този надпис, значи някой от компонентите, от които зависи LILO, се е повредил или изменил и ще трябва да преконфигурираме LILO. По-нататъшното поведение на LILO зависи много от конфигурацията му. Обикновено LILO ще изчака няколко секунди и след това ще пристъпи автоматично към зареждане на Линукс. Ако преди изтичането на тези няколко секунди натиснем някой от клавишите Shift, Control или Alt или пък ако CapsLock или ScrollLock е бил включен то LILO показва надписа 'boot:' и очаква команда от оператора. С натискане на клавиша Tab ще получим списък от допустимите команди. Допустимите команди се определят при конфигурирането на LILO, като на всяка от тях съответства някоя операционна система или вариант на Линукс. Трябва да отбележим, че Линукс е програма, която макар да поема изцяло управлението на компютъра, също като останалите обикновени програми, може при извикването си да приема от LILO различни параметри. Някои от тях LILO е конфигуриран да предава автоматично, а други можем ние изрично да зададем. От параметрите си например Линукс може да определи в кой текстов режим искаме той да работи или кой дисков дял желаем да бъде основен. Затова е напълно възможно Линукс да бъде зареден не от дисковия дял, който впоследствие ще стане основен, а от съвсем друг дял или дори от дискета. Следват няколко примера: В последната от тези команди посочваме, че основен дисков дял трябва да бъде /dev/hda10. Едно възможно приложение на тази команда е следното. Да допуснем, че в конфигурацията на LILO е посочено, че основен дял за linux е /dev/hda9. В даден момент обаче решаваме, че е целесъобразно да разделим /dev/hda6 на два дяла /dev/hda6 и /dev/hda7. По такъв начин старият дял /dev/hda9 вече става /dev/hda10, а LILO не знае това и ще каже на Линукс че основен дял трябва да бъде /dev/hda9, който всъщност е бившият /dev/hda8. С посочената команда получаваме възможност да стартираме Линукс, след което да преконфигурираме LILO и /etc/fstab.boot: dos boot: linux boot: linux root=/dev/hda10 Параметърът debug казва на Линукс да извежда по-подробни съобщения при стартиране.boot: linux debug Тук казваме на Линукс, че първата програма, която той ще стартира трябва да бъде /bin/sh. Това може да бъде от полза ако сме объркали при редактирането на файла /etc/inittab и затова прoграмата init (която обикновено е първа) не може да работи нормално. Така пръв процес ще стане обвивката sh, която ще ни даде възможност да поправим повредения файл. Параметърът rw казва на Линукс, че основният дял трябва да е достъпен не само за четене, но и за писане.boot: linux rw init=/bin/sh Параметрите от вида 'променлива=стойност', които не се разпознават от Линукс, той записва в обкръжението на първия стартиран процес. Онези пък, които нямат посочения вид, той предава като параметри. Примери: Тук Линукс ще предаде на първия процес init параметър single, което ще доведо до влизането в така наречения еднопотребителски режим, при което се пропускат повечето от процедурите за системна инициализация и директно се стартира обвивката на root.boot: linux single Параметърът rw вече разгледахме. Подобно на предния пример тук emergency е параметър, който Линукс "не разбира" и затова го предава на първия стартиран процес. За init това означава да влезе в така наречения режим emergency. Последният параметър Линукс записва в обкръжението на init. Тази команда е полезна ако искаме да заменим системни библиотеки с по-нови, но не желаем цялостна преинсталация.boot: linux rw emergency SUSHELL=/sbin/sash Параметърът 3 казва на init да влезе при стартиране в режим 3, а не в режима по подразбиране, който обикновено е 2. За режимите може да прочетете по-нататък.boot: linux 3 КонфигуриранеКонфигурирането на LILO е двустъпково -- записване на конфигурацията във файла /etc/lilo.conf и пускане на програмата /sbin/lilo. Причината, поради която се налага това двустъпково конфигуриране, е че за четене от диска LILO може да се ползва само от услугите на драйверите на BIOS, които работят не с файлове, а с номера на сектори. Това значи, че ако в конфигурацията за LILO се споменават някакви файлове, то LILO ще има достъп до тях само ако знае предварително в кои сектори са тези файлове. Това трябва да имаме предвид, ако решим да дефрагментираме дисков дял, който съдържа файлове, от които LILO се нуждае, или просто да променим с нещо някой от тези файлове. Инсталирането на MS-DOS или Windows пък разваля главния запис за първоначално зареждане, където също може да се намира LILO. Затова ако нещо се случи, то тук именно идва ползата от резервната стартираща дискета, която инсталационната програма на избраната от Вас дистрибуция на Линукс може би Ви е предложила да си направите. Заредете Линукс от нея и после пуснете командата /sbin/lilo за да оправите LILO. Стандартната конфигурация, на LILO, която някои дистрибуции на Линукс използват при инсталацията не е направена така, че да позволява алтернативно стартиране на две или повече операционни системи. Ето една примерна конфигурация на LILO, която позволява алтернативен избор между Линукс и друга операционна система, наречена условно dos: # файл /etc/lilo.conf # На кой диск ще инсталираме LILO. По подразбиране това е дискът # в който е основния дял на работещия в момента Линукс boot = /dev/hda4 # Колко време да се изчака преди да се стартира по подразбиране # някой от вариантите (в децисекунди) delay = 50 # Вариантът, който се стартира по подразбиране default = linux # разбира се! compact # Следва описанието на различните варианти # Първи вариант. Друга операционна система (не Линукс) other = /dev/hda1 # в кой дисков дял е label = dos # име, което даваме на този вариант table = /dev/hda # Втори вариант. Линукс image = /vmlinuz # това е файлът с обектния код на Линукс label = linux # име на варианта root = /dev/hda4 # основния дял на Линукс при този вариант vga = normal # в кой текстов режим ще работи Линукс. read-only # край на файла /etc/lilo.conf Имената след командите label са имената на командите, които може да задавате след надписа 'boot:'. ВНИМАНИЕ: стойностите на командите boot, other, table, image и root по-горе са само примерни, а при Вас те трябва да са съобразени с Вашата конкретна инсталация. От стойността на командата boot зависи къде ще бъде инсталитан LILO. В случая е посочено LILO да стане запис за първоначално зареждане на операционната система в дял /dev/hda4. Ако искаме LILO да стане главен запис за първоначално зареждане, то вместо /dev/hda4 трябва да посочим /dev/hda. С командата table се задава устройството, което съдържа таблицата на дяловете, която да се предаде на другата операционна система. Тази команда не е нужна ако другата операционна система е ДОС. Възможните стойности на командата vga са normal, extended, ask и номер на видеорежим. Повече информация за видеорежимите може да прочетете от файла /usr/src/linux/Documentation/svga.txt от програмния код на Линукс. Имайте предвид, че освен файловете, споменати изрично в lilo.conf, LILO може да използва още и други файлове от каталога /boot. След промяната на lilo.conf съобразно Вашите желания и потребности, задайте командата /sbin/lilo и ако няма допуснати грешки може да рестартирате компютъра за да проверите новата конфигурация. Не е зле да имате под ръка резервната стартираща дискета в случай, че нещо сте объркали при конфигурацията. В случай, че често работите с повече от една операционна система и вместо специализиран главен запис за първоначално зареждане използвате LILO, то може да направите следната конфигурация на LILO: # файл /etc/lilo.conf boot = /dev/hda delay = 50 default = L compact timeout = 50 prompt single-key message = /boot/message # Първи вариант. Не Линукс other = /dev/hda2 label = D table = /dev/hda # Втори вариант. Линукс image = /vmlinuz label = L root = /dev/hda4 vga = normal read-only # край на файла /etc/lilo.conf При този вариант на екрана се появява съдържанието на файла /boot/message, без изчакване ще се появи надписът boot: и при натискане на клавиша 'L' ще се зареди Линукс, а при натискане на клавиша 'D' ще се зареди операционната система в /dev/hda2. Това е по-удобно, но губите възможността да предавате параметри на Линукс. ЛинуксЛинукс всъщност е само ядрото на операционната система, включваща още много други системни и приложни програми. То има възможност да поддържа едновременното изпълнение на много процеси и едновременната работа на много потребители. Линукс разпределя ресурсите на компютъра, сред които най-важни са оперативната памет и процесорното време, между едновременно изпълняващите се процеси. Освен това Линукс поддържа файловите системи по дисковете, като следи никой потребител да не може да използва непозволено файловете на друг потребител. Файлови системиФайловата система е начинът, който Линукс използва за организация на данните във външната памет на комютъра. Той се състои в това, че всички данни се разпределят във файлове. Файловете биват пет типа:
Начина за реализация на файловата система се нарича тип на файловата система. Линукс може да работи с много различни типове файлови системи, като някои от тях са следните:
ПроцесиПроцесът е нещо, което Вашият компютър изпълнява. Линукс е в състояние да поддържа много паралелно изпълняващи се процеси. Стартирането на дадена програма води до създаването на нов процес. Изпълнението на програмата може да доведе до създаването на нови процеси, затова не е правилно да се счита, че процесът е изпълнявана програма. Информация за изпълняваните в даден момент процеси може да получите посредством командата ps. Следват няколко примера за извикване на командата ps. Извежда всички Ваши процеси, стартирани от терминал.ps Извежда всички Ваши процеси, включително тези, които не са стартирани от терминал. Тази команда е полезна ако работите в графичната среда X Window System.ps x Извежда процесите и на другите потребители, но само стартираните от терминал.ps a Извежда процесите и на другите потребители, включително тези, които не са стартирани от терминал. Това означава, че с тази команда може да видите ВСИЧКИ процеси.ps ax Действа като предната команда, но извежда и имената на потребителите, владеещи всеки от процесите.ps uax ps fax Всеки от процесите в системата има възможност да стартира нов процес. Новия процес се нарича породен или дъщерен, а стария -- родителски. С тази команда имате възможност да видите 'родословното дърво' на процесите в системата. Обикновено през по-голямата част от своето съществуване процесите не работят нищо, а само чакат да възникнат различни събития. Например редакторът, който използвам в момента за да пиша този текст, почти през цялото време очаква да възникне събитието 'натискане на клавиш'. Процесорно време отнемат само процесите, които не чакат възникването на никакво събитие -- работещите процеси. С тази команда може да видите кои са работещите процеси в системата в момента.ps rax Всеки от процесите получава от Линукс уникален номер, който остава непроменим докато процесът съществува. В горните примери номера на процеса се съдържа в колонката PID. Този номер се използва за еднозначно идентифициране на процесите. Например с командата 'kill номер' ще изпратим съобщение до процеса с посочения номер, че искаме той да завърши изпълнението си. Командата 'kill -KILL номер' ще доведе до незабавно прекратяване на процеса, без да му се даде възможност да се приготви. Първият процес, който Линукс стартира, е /sbin/init. Този процес получава номер 1 и се намира донякъде в привилегировано положение в сравнение с останалите процеси. Този процес не може да бъде спрян и освен това 'осиновява' процесите, чиито родителски процеси са завършили изпълнението си. Всички процеси, които вече споменатата команда 'ps fax' показва без родителски процес, всъщност имат за родителски процес процесът с номер 1. Потребители и права за достъпОсвен, че организира данните във файлове и поддържа едновременното изпълнение на много процеси, Линукс позволява операционната система да се използва от много потребители по такъв начин, че те да не си пречат взаимно, нито пък да могат да повредят с нещо системата. Доброто използване на свойствата на съвременните микропроцесори позволява процесите да разполагат със собствено виртуално адресно пространство и да не могат директно да четат или пишат в адресното пространство на другите процеси. Ако процесът опита да извърши нещо непозволено, Линукс просто ще го прекрати. Освен това за всеки от файловете Линукс поддържа права за достъп, въз основа на които определя процесите на кои потребители ще бъдат допуснати да четат от файла, да пишат в него или да го изпълнят като програма. При определяне правата за достъп на процесите Линукс взема предвид не само кой потребител е собственик на процеса, но и на кои групи от потребители е член собственика. Всеки потребител е член на една или повече потребителски групи. Всеки файл в системата си има собственик, който определя коя от групите, на които е член, ще е групата на файла, както и правата за достъп до файла за себе си, за членовете на групата и за всички останали потребители. Това означава, че по отношение правата за достъп до файла потребителите са разпределени в три категории -- собственикът на файла еднолично образува едната категория, членовете на групата, определена от собственика, образуват друга категория и всички останали потребители влизат в третата категория. В привилегировано положение е потребителят root, който има право да чете и пише във всички файлове на системата. initПървият процес, който Линукс стартира, е /sbin/init. Като такъв, init се явява родоначалник на останалите процеси. В зависимост от това какви процеси са стартирани операционната система може да се намира в един от седем режима или нива (runlevels), които са номерирани с числата от 0 до 6. В конфигурационния файл на init (това е /etc/inittab) е посочено кои процеси да се пуснат веднага след стартирането на системата и в кой режим да се влезе по подразбиране, както и какво да се предприема при преминаване от един режим в друг. Режим 1 е така нареченият еднопотребителски режим, при който повечето процеси в системата са спрени и само потребителят root може да включи в системата. Този режим може да използвате административни задачи, които водят до съществени промени във файловите системи, като например преместване на каталог от една файлова система в друга (напр. пренасочване на /tmp към /var/tmp). Режими 2, 3, 4 и 5 са така наречените многопотребителски режими. Обикновено между тях няма съществени различия, но ако желаете може да въведете разлики между режимите, напр. режим с и без xdm. В /etc/inittab обикновено e посочен като режим по подразбиране при стартиране на операционната система режим 2. За преминаване от един режим в друг може да използвате командата init. Например с командата 'init 3' може да се премине в режим 3. Освен това, както вече бе показано, може да използвате програмата за първоначално зареждане на Линукс (LILO) за да се влезе направо в режим различен от режима по подразбиране. По-нататъкСлед като бъде стартиран, процесът init изчита конфигурационния си файл /etc/inittab и предриема действия, довеждащи в крайна сметка до стартирането на всички останали небходими процеси. Така Вашият компютър ще засияе достойно под управлението на една истинска многопотребителска операционна система, която мъдро използва ресурсите му, и едновременно с решаването на типичните задачи за един съвременен офис, ще се грижи за поддържането на електронната Ви поща, за Вашата страница в Интернет, дори ще Ви даде незаменимата възможност да използвате програмите Си седейки пред съвсем друг комютър и Ви избавя от необходимостта да носите всичко с Вашия лаптоп. КраятСтабилността на Линукс е забележителна. Редките блокирания на системата най-често сa причинени от хардуерни дефекти. Но всяко земно нещо има край. Дори компютърът Ви да е с UPS и да работи постоянно, пак ще трябва да го спирате понякога за да го обновите с нов процесор, памет или ново устройство. Режими 0 и 6 са със специално предназначение. При влизане в режим 0 се предприемат действия, довеждащи в крайна сметка до спиране на операционната система. При влизане в режим 6 операционната система също се спира, но след това компютърът се рестартира. Вместо с командите init 0, init 6 и init 1, за спиране, рестартиране на системата и преминаване в еднопотребителски режим е по-добре да използвате командата shutdown по следния начин:
Тази команда ще изпрати предупреждения до включените потребители, като
по такъв начин ще им даде възможност да се приготвят преди да бъдат принудително
изключени. Един от възможните формати на параметъра време е +m,
където m са минутите, които ще се дадат на потребителите за да завършат
работата си. Забележка: В операционната система са включени и команди
halt
и reboot, които при новите дистрибуции на Линукс работят, както
би могло да се очаква от тях. Помнете обаче, че при по-старите дистрибуции,
както и при някои други операционни системи, те никога не трябва
да се използват директно.
|
Авторски права: (c) Антон Кирилов Зиновиев, 1999г. (anton@lml.bas.bg)
С настоящото авторът разрешава тази публикация или част от нея да бъде
възпроизвеждана и разпространявана неограничено при условие, че тя се
съпровожда от текста на тази лицензия. Разпространяването на изменен вариант на
публикацията е позволено при условие, че:
1. Отстъпено е безплатно правото всяка трета страна да използва преработения
вариант съгласно условията на тази лицензия.
2. В него ясно е посочено, че той е преработка.
3. Посочено е лицето, извършило измененията, както и датата на тези изменения.
4. Признава се кой е оригиналният автор и оригиналната публикация съгласно
нормалната академична практика при цитиране.
5. Не се твърди или намеква, че оригиналният автор е автор или съавтор и на
изменения вариант без негово разрешение.
ТАЗИ ПУБЛИКАЦИЯ СЕ ПРЕДЛАГА БЕЗ ГАРАНЦИИ ОТ КАКЪВ ДА Е РОД, ВКЛЮЧИТЕЛНО БЕЗ
ГАРАНЦИИ, ЧЕ Е ПРИГОДНА ЗА НЯКАКВА ЦЕЛ ИЛИ НЯМА ДА ДОВЕДЕ ДО ЩЕТИ.