English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Во время запуска Linux мы видим много информации о загрузке.
Процесс запуска Linux-системы не так сложен, как может показаться, и можно разделить его на 5 этапов:
Запуск ядра.
Запуск init.
Инициализация системы.
Создание терминала.
Пользователь входит в систему.
Типы init-программ:
SysV: init, до CentOS 5, файл конфигурации: /etc/inittab.
Upstart: init, CentOS 6, файлы конфигурации: /etc/inittab, /etc/init/*.conf.
Systemd: Systemd, CentOS 7, файлы конфигурации: /usr/lib/systemd/system, /etc/systemd/system.
Когда компьютер включается, сначала выполняется POST-диагностика BIOS, и загрузка выполняется с устройства, указанного в BIOS (обычно это жёсткий диск).
После того как операционная система接管硬件, сначала загружается файл ядра из каталога /boot.
Процесс init является началом всех процессов системы, можно сравнить его с прародителем всех процессов системы, без этого процесса ни один процесс в системе не сможет запуститься.
Программа init в первую очередь должна читать конфигурационный файл /etc/inittab.
Многие программы необходимо запускать при загрузке. В Windows они называются "службами" (service), а в Linux - "даemonами" (daemon).
Одна из основных задач процесса init - запуск этих программ загрузки.
Но, в зависимости от различных случаев, необходимо запускать различные программы, например, при использовании в качестве сервера необходимо запустить Apache, а при использовании в качестве рабочей станции это не нужно.
Linux позволяет для различных случаев分配 различные программы загрузки, что называется "уровнем запуска" (runlevel). То есть, при запуске программа запускается в зависимости от "уровня запуска".
Система Linux имеет 7 уровней запуска (runlevel):
Уровень запуска 0: состояние системы выключена, уровень запуска по умолчанию не может быть установлен в 0,否则 система не сможет нормально запуститься
Уровень запуска 1: режим работы одного пользователя, права root, используется для обслуживания системы, запрещен удаленный вход
Уровень запуска 2: многоуровневый режим (без NFS)
Уровень запуска 3: полный многоользовательский режим (с NFS), после входа в систему переходим в режим командной строки консоли
Уровень запуска 4: система не используется, сохраняется
Уровень запуска 5: X11 консоль, после входа в систему переходим в графический GUI режим
Уровень запуска 6: нормальное завершение работы и перезагрузка системы, уровень запуска по умолчанию не может быть установлен в 6,否则 система не сможет нормально запуститься
В конфигурационном файле init есть такая строка: si::sysinit:/etc/rc.d/rc.sysinit, она вызывает выполнение /etc/rc.d/rc.sysinit, а rc.sysinit - это скрипт bash shell, который主要负责完成一些 работы по инициализации системы, rc.sysinit - это важный скрипт, который необходимо запустить сначала для каждого уровня запуска.
Основные задачи, которые он выполняет: активация раздела подкачки, проверка дисков, загрузка аппаратных модулей и другие задачи, которые необходимо выполнить с приоритетом.
l5:5:wait:/etc/rc.d/rc 5
Эта строка означает запуск /etc/rc.d/rc с параметром 5, /etc/rc.d/rc - это Shell-скрипт, который принимает параметр 5 для выполнения всех rc-запускных скриптов из каталога /etc/rc.d/rc5.d/, эти запускные скрипты в каталоге /etc/rc.d/rc5.d/ на самом деле являются некоторыми связующими файлами, а не真正的 rc-запускными скриптами,真正的 rc-запускные скрипты на самом деле находятся в каталоге /etc/rc.d/init.d/.
Эти скрипты запуска имеют аналогичное использование, они обычно могут принимать параметры start, stop, restart, status и т.д.
Скрипты запуска в /etc/rc.d/rc5.d, как правило, файлы с начальными символами K или S, для скриптов, начинающихся с S, они будут запускаться с параметром start.
А если обнаружено, что существуют соответствующие скрипты с началом K и они уже работают (файлы в /var/lock/subsys/ в качестве знака), то сначала остановят уже запущенные демоны с параметром stop, а затем заново запустят.
Таким образом, гарантируется, что при изменении уровня выполнения init все связанные демоны будут перезапущены.
Что касается того, какие демоны будут запускаться в каждом уровне выполнения, пользователь может самостоятельно настроить это через chkconfig или "Системные сервисы" в setup.
После выполнения rc, он возвращается к init. В этот момент основные системные окружения уже установлены, а различные демонские процессы уже запущены.
Init接下来会打开6个终端,以便用户登录系统。В inittab следующие 6 строк определяют 6 терминалов:
1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6
Изabove можно看出, в уровнях выполнения 2, 3, 4, 5 программа mingetty будет запускаться с помощью способа respawn, программа mingetty может открывать терминал, устанавливать режим.
同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户名将作为参数传递给login программа для проверки подлинности пользователя.
В общем, у пользователей есть три способа входа:
(1) Вход через командную строку
(2) Вход через ssh
(3) Вход через графический интерфейс
Для пользователей графического режима с уровнем выполнения 5 вход осуществляется через графический интерфейс входа. После успешного входа можно сразу перейти в KDE, Gnome и другие оконные менеджеры.
Основная тема этой статьи все еще касается случая входа через текстовый способ: когда мы видим интерфейс входа mingetty, мы можем ввести имя пользователя и пароль, чтобы войти в систему.
Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。
然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。
这通常用于系统维护时防止非root用户登录。只有/etc/securetty中登记的终端才允许root用户登录,如果不存在这个文件,则root用户可以在任何终端上登录。
/etc/usertty文件用于对用户进行附加访问限制,如果不存在这个文件,则没有其他限制。
在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其他信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/bash。
Linux预设提供了六个命令窗口终端机供我们登录。
默认我们登录的就是第一个窗口,也就是tty1,这六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6来切换它们。
如果你安装了图形界面,默认情况下是进入图形界面的,此时你可以按Ctrl + Alt + F1 ~ F6进入其中一个命令窗口界面。
当你进入命令窗口界面后,再返回图形界面只需按下Ctrl + Alt + F7即可。
如果你使用的是VMware虚拟机,命令窗口切换的快捷键为Alt + Space + F1~F6。如果你在图形界面下,请按Alt + Shift + Ctrl + F1~F6切换到命令窗口。
在Linux领域内,大多数情况下用于服务器上,很少遇到关机操作。毕竟服务器上运行的服务是永无止境的,除非在特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
关机命令为:shutdown,你可以使用man shutdown查看帮助文档。
例如,你可以运行以下命令关机:
sync同步数据到硬盘中。 Команда shutdown для выключения, вы можете использовать man shutdown для просмотра документации. Например, вы можете запустить следующие команды для выключения системы: shutdown —h 10 — ‘Этот сервер выключится через 10 минут’ эта команда уведомляет пользователей, что компьютер будет выключен через 10 минут, и это будет отображаться на текущем экране входа пользователя. shutdown —h now — система немедленно выключится shutdown —h 20:25 — система выключится в 20:25 сегодня shutdown —h +10 — система выключится через 10 минут shutdown —r now — система немедленно перезагрузится shutdown —r +10 — система перезагрузится через 10 минут reboot — это перезагрузка, эквивалент shutdown —r now halt —关闭系统,эквивалент shutdown —h now и poweroff
В заключение, независимо от того, перезагружаете ли вы систему или выключаете её, сначала необходимо запустить sync Команда, которая записывает данные из памяти на диск.
, команды для выключения системы: shutdown –h now halt poweroff и init 0 , команды для перезагрузки системы: shutdown –r now reboot init 6.