Linux Boots

Както се оказва, там не е много за процеса на зареждане:

1. A зареждане Намира ядрото изображение на диска, тя зарежда в паметта, и тя започва.
2. Ядрото инициализиране на устройствата и НТИ драйвери.
3. The kernel mounts the root fileсистема.
4. Ядрото започва първоначален обади да планирате.
5. първоначален поставя останалата част от процесите в движение.
6. Последните процеси, които инициализиращите започва като част от обувка последователност ви позволяват да влезете.

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

Има подробно обсъждане на ядрото никъде в тази книга, от която е откъс тази статия. Тази статия покрива етап ядрото инициализация, На етапа, когато ядрото отпечатва куп послания за хардуер присъства на системата. Ядрото започва първоначален точно след него показва съобщение обявява, че ядрото е монтиран корен fileсистема:

VFS: Монтирани root (ext2 filesystem) readonly.

Скоро след това, ще видите съобщение за първоначален свързване, последвано от системни съобщения в стартирането на услугата, и най-накрая да получите покана за влизане на някакъв вид.

ЗАБЕЛЕЖКА На Red Hat Linux, Първоначален бележките е особено очевидна, както поради това "приветства" можете да "Red Hat Linux." Всички съобщения след това показват успех или провал в скоби в дясната страна на екрана.

Повечето от тази глава се занимава с първоначален, Защото това е, когато част от обувка последователност имате най-контрол.
първоначален

Няма нищо специално за първоначален. Това е график точно както всеки друг на Linux система, и ще го намерите в / SBIN заедно с други системни двоични файлове. Основната цел на първоначален е да се започне и да се спре други програми в определена последователност. Всичко, което трябва да знаете е как работи тази последователност.

There are a few different variations, but most Linux distributions use the System V style discussed here. Some distributions use a simpler version that resembles the BSD init, but you are unlikely to encounter this.

Нива на работа

Във всеки един момент на Linux система, набор от базови някои процеси се изпълнява. Това състояние на машината се нарича ITS ниво на работа, и тя е обозначена с номер от 0 6 сам. Системата прекарва повечето от времето ППИ в едно ниво на работа. Въпреки това, когато Изключете машината надолу, инициализиращите превключва на друг ниво на работа, за да завърши годината на системните услуги в реда си и да казва на ядрото да спре. Още един ниво на работа е само за еднократна употреба режим, обсъдени по-късно.

The easiest way to get a handle on runlevels is to examine the init configuration file, /etc/inittab. Look for a line like the following:

ID: 5: initdefault:

This line means that the default runlevel on the system is 5. All lines in the inittab file take this form, with four fields separated by colons occurring in the following order:
# A уникален идентификатор (на кратко низ, като например ID в предишния пример)
# The приложимият брой ниво на работа (и)
# Инициализиращата, които трябва да се предприемат действия (в предишния пример, действието е да се определи нивото на работа по подразбиране да 5)
# A Команда за изпълнение (по избор)

Не е Команда за изпълнение в предишния пример initdefault Защото командата няма смисъл в контекста на създаването на по подразбиране ниво на работа. Погледни малко по-нататък в inittab, докато видите линия, подобен на този:

l5: 5: изчакайте :/ и т.н. / rc.d / RC 5

Този ред задейства по-голямата част от системната конфигурация и услуги чрез директории rc * .d и init.d. Можете да видите, че init е настроен да изпълнява команда, наречена /etc/rc.d/rc 5, когато е в runlevel 5. Действието изчакване казва кога и как init изпълнява командата: изпълнете rc 5 веднъж, когато entering runlevel 5 и след това изчакайте тази команда да приключи, преди да направите нещо друго.

Има няколко различни дейности в допълнение към initdefault и да чакат, особено свързани с управление на захранването, и inittab (5) справочната страница ви казва всичко за тях. Тези, които са най-вероятно да се сблъска Това е обяснено в следващите раздели.

респавуннати

The respawn action causes init to run the command that follows, and if the command finishes executing, to run it again. You’re likely to see something similar to this line in your inittab file:

1: 2345: респавуннати :/ SBIN / mingetty tty1

Гети програми предоставят покани за влизане. Предходната линия е за първи виртуална конзола (/ сътрудничество / tty1), тази, която виждате, когато натиснете ALT или CONTROL-ALT-F1 F1. The респавуннати действие носи покана за влизане обратно след като излезете.

ctrlaltdel

Най- ctrlaltdel действие контролира какво прави системата, когато натиснете CONTROL-ALT-DELETE на виртуална конзола. В повечето системи това е някаква команда за рестартиране с помощта на командата за изключване.

sysinit

Действието sysinit е първото нещо, което init трябва да стартира, когато се стартира, преди това enterвъв всякакви критерии.

Как процеси в нива на работа начало

Вече сте готови да научите как първоначален започва на системните услуги, точно преди тя ви позволява да влезете. Спомнете си тази inittab линия от рано:

l5: 5: изчакайте :/ и т.н. / rc.d / RC 5

Този малък ред поражда много други програми. RC означава изпълняват команди, и ще чуете хората се позова на команди като скриптове, програми или услуги. Така че, къде са тези команди, все пак?

For runlevel 5, in this example, the commands are probably either in /etc/rc.d/rc5.d or /etc/rc5.d. Runlevel 1 uses rc1.d, runlevel 2 uses rc2.d, and so on. You might find the following items in the rc5.d directory:

S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutd S89cron

РК 5 команда стартира програми в тази директория ниво на работа, като пуснете GMT ​​команди:

S10sysklogd дома
S12kerneld дома
S15netstd_init дома
S18netbase дома
...
S99sshd дома

Забележете аргумент в началото на всяка команда. The S в средство името на командата, които трябва да изпълните командата в началото режим, а броят (чрез 00 99) определя къде в последователността RC започва командата.

The * RC. D команди са шел скриптове, които обикновено започват програми в / SBIN или / ЮЕсАр / SBIN. Обикновено можете да разберете това, което една от командите всъщност се като погледнете в сценария с по-малко или пейджър друга програма.

Можете да започнете една от тези услуги на ръка. Например, ако искате да стартирате уеб-сървър софтуер Web ръчно, бягай началото S99httpd. По същия начин, ако някога се наложи да убие една от услугите, когато машината е включена, можете да изпълните командата в ж.к. *. D директория със стоп аргумент (S99httpd спирка, например).

Някои * RC. D директории, които съдържат команди започват с K (за "убие" или режим стоп). В този случай, RC изпълнява командата със стоп аргумент вместо вкъщи. Вие сте най-вероятно да се сблъска K команди в нива на работа затворената система надолу.

Добавяне и премахване на услуги

If you want to add, delete, or modify services in the rc*.d directories, you need to take a closer look at the files inside. A long listing reveals a structure like this:

lrwxrwxrwx. . . S10sysklogd -> .. / init.d / Sysklogd
lrwxrwxrwx. . . S12kerneld -> .. / init.d / kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / netbase
...

The commands in an rc*.d directory are actually symbolic links to files in an init.d directory, usually in /etc or /etc/rc.d. Linux distributions contain these links so that they can use the same startup scripts for all runlevels. This convention is by no means a requirement, but it often makes organization a little easier.

За да се предотврати появата на една от командите в init.d директорията от тичане в определена ниво на работа, може да се мисли за премахване на символната връзка в съответните RC *. D директория. Това не работи, но ако сте допуснали грешка и се наложи да сложи линк обратно на място, може да не могат да запомнят точното име на връзката. Ето защо, не трябва да се премахне връзката в * RC D директории, а по-скоро, добави долна черта (_) в началото на връзката име като това.:

MV S99httpd _S99httpd

По време на зареждане, RC игнорира _S99httpd защото не започнете с S или K. Освен това, първоначалното име все още е очевидна, и имате бърз достъп до командата, ако сте в краен случай и трябва да я стартирате на ръка.

За да добавите услуга, трябва да създадете скрипт като останалите в init.d директорията и след това направи символна връзка в правилния RC *. D директория. Най-лесният начин да напиша сценарий е да се проучи скриптове вече в init.d, направи копие на този, който ви разбирам, и промяна на копие.

При добавяне на услуга, уверете се, че сте избрали подходящо място в багажника последователност за стартиране на услугата. Ако услугата започва твърде рано, може да не работи, поради зависимостта си от друга услуга. За несъществени услуги, повечето администратори системи предпочитат номера в 90s, след като повечето от услугите, които камера със системата.

Обикновено Линукс дистрибуции идват с команда, за да активирате и деактивирате услуги в * RC. D директории. Например, в Debian, командата е актуализация-rc.d, и в Red Hat Linux, командата е chkconfig. Графични потребителски интерфейси са също на разположение. С помощта на тези програми спомага за стартиране на директории последователна и помага при ъпгрейд.

Подхвърлям: Един от най-често срещаните проблеми Linux инсталацията години неправилно конфигуриран сървър XFree86 Това движения и изключване, което прави системата неизползваема за конзолата. За да спре това поведение, за първоначално зареждане в режим на единичен потребител и да променят нивото на работа или си ниво на работа услуги. Потърсете нещо съдържащо XDM, GDM или KDM в RC си *. D директории, или в / и т.н. / inittab.

Контрол първоначален

Occasionally, you need to give init a little kick to tell it to switch runlevels, to re-read the inittab file, or just to shut down the system. Because init is always the first process on a system, its process ID is always 1.

Можете да управлявате с първоначален telinit. Например, ако искате да преминете към ниво на работа 3, използвайте следната команда:

telinit 3

When switching runlevels, init tries to kill off any processes that aren’t in the inittab file for the new runlevel. Therefore, you should be careful about changing runlevels.

When you need to add or remove respawning jobs or make any other change to the inittab file, you must tell init about the change and cause it to re-read the file. Some people use kill -HUP 1 to tell init to do this. This traditional method works on most versions of Unix, as long as you type it correctly. However, you can also run this telinit command:

telinit р

Можете да използвате и telinit и да преминете към режим на единичен потребител.

Изключване

Също инициализиращите контрол как системата изключва и отскачам. Правилният начин за изключване на Linux машина е да използвате командата изключване.

Има два основни начина за използване на изключване. Ако се спре системата, тя изключва машината надолу и го поддържа надолу. За да направите спре машината Веднага, използвайте следната команда:

изключване-з сега

При повечето съвременни машини с разумно последните версии на Linux, спиране намалява захранването на машината. Можете също така да рестартирате машината. За рестартиране, използвайте-R-з ВМЕСТО.

Изключването процес отнема няколко секунди. Никога не трябва да нулирате или изключване на машината по време на този етап.

В предишния пример, сега е моментът да го изключите. Този аргумент е задължително, но има много начини да го Уточняване. Ако искате машината да сляза някъде в бъдещето, един от начините е да се използва + п, където п е броят на минутите изключване изчака, преди да прави всичко трябва да работи. За други опции, погледнете изключване (8) справочната страница.

За да се направи системата рестартира 10 минута, стартирате тази команда:

изключване-R + 10

On Linux, shutdown notifies anyone logged on that the machine is going down, but it does little real work. If you specify a time other than now, shutdown creates a file called /etc/nologin. When this file is present, the system prohibits logins by anyone except the superuser.

Когато най-накрая настъпи времето за изключване на системата, изключването казва на init да премине към runlevel 0 за спиране и runlevel 6 за рестартиране. Когато инит enters runlevel 0 или 6, се извършва всичко по-долу, което можете да проверите, като разгледате скриптите вътре rc0.d и rc6.d:

1. първоначален убива всеки процес, че да може (както ако би преминаване към всяка друга ниво на работа).

# The initial rc0.d/rc6.d commands run, locking system files into place and making other preparations for shutdown.
# The next rc0.d/rc6.d commands unmount all filesystems other than the root.
# Further rc0.d/rc6.d commands remount the root filesystem read-only.
# Still more rc0.d/rc6.d commands write all buffered data out to the filesystem with the sync program.
# Окончателните rc0.d / rc6.d команди казва на ядрото да се рестартира или да спре с рестартиране, спиране, или изключен двигател програма.

Рестартиране и спиране програми държат по различен начин за всеки ниво на работа, което ще доведе до объркване. По подразбиране Тези програми се обадя изключване с-R или-Н опции, но ако системата е вече на спиране или рестартиране на нивото на работа, програмите на ядрото, за да изключите себе си веднага. Ако наистина искате да изключите устройството надолу в бързаме (независимо от всякакви възможни щети от хаотични спиране), използвайте опцията-F.

Linux Boots

Оставете коментар