3.2 Процесс запуска при близком рассмотрении
Linux может быть запущена как с дискет, так и с жесткого
диска. В книге "Установка и запуск Linux" подробно описан запуск
системы.
При включении компьютера, сначала BIOS производит
тестирование оборудования, а затем запуск операционной системы.
Сначала выбирается устройство, с которого будет производится
запуск (обычно первый дисковод, если в него вставлена дискета, в
противном случае - первый жесткий диск, если он установлен, хотя
порядок выбора может быть настроен) и считывается самый первый
сектор, который называется загрузочным. Его также называют MBR
(Master Boot Record), так как у жесткого диска может быть
несколько разделов и у кажодого может быть свой загрузочный
сектор.
В загрузочном секторе находится небольшая программа
(относительно небольшая чтобы она могла разместится в одном
секторе), которая загружает и запускает операционную систему. При
загрузке с дискеты, в загрузочном секторе находится код, который
обеспечивает только считывание ядра системы в определенную заранее
область памяти. Загрузочная дискета для Linux не содержит никаких
файловых систем. Ядро записано на дискете как последовательность
блоков, так как это значительно упрощает процесс загрузки. Однако,
вполне можно загружаться с дискеты, на которой установлена
какая-нибудь файловая система, используя загpузчик LILO.
При загрузке с жесткого диска, код, расположенный в MBR,
проверяет таблицу разделов (также расположенную в MBR), определяет
активный раздел (раздел, используемый при загрузке), считывает
загрузочный сектор этого раздела и запускает считанный код. Код,
расположенный в загрузочном секторе активного раздела жесткого
диска, выполняет те же функции, что и код, находящийся в
- 18 -
загрузочном секторе дискеты: он считывает ядро из выбранного
раздела, а затем запускает его. Однако здесь существует много
тонкостей, так как использование отдельного раздела диска только
для хранения кода ядра неэффективно, поэтому код, расположенный в
загрузочном секторе раздела, не просто последовательно считывает
информацию с диска, а использует считывание по секторам.
Существует несколько способов решения этой проблемы, но наиболее
простым из них является использование LILO загрузчика (информацию
по установке и настройке LILO см. в документации по LILO).
При загрузке с использованием LILO обычно сразу же
загружается и запускается ядро, заданное по умолчанию, однако
можно сконфигурировать LILO так, чтобы можно было бы загрузить
одно из нескольких возможных ядер или даже другую операционную
систему (в добавление к Linux). Также можно указать требуемое ядро
или операционную сиситему во время загрузки. При нажатии клавиши
ALT, SHIFT или CTRL (после загрузки LILO) будет выдан запрос, где
можно указать ядро или систему. Однако при конфигурировании можно
установить опцию, при которой LILO будет всегда выдвать такой
запрос, а также указать время, по истечении которого загружается
ядро, установленное по умолчанию.
Существуют и другие загрузчики, подобные LILO, однако у него
есть несколько полезных функций, которых нет в других загрузчиках,
так как он был написан специально для Linux. Например, имеется
возможность передачи ядру параметров во время загрузки или
изменения некоторых опций, встроенных в ядро. Среди подобных
загрузчиков (bootlin, bootactv и др.) LILO является наилучшим
выбором.
Загрузка системы как с жесткого диска, так и с дискет имеет
свои преимущества, хотя загрузка с жесткого диска считается лучше
и быстрее, так как она позволяет избежать неудобства, связанные со
сменой дискет. Однако в некоторых случаях загрузка с дискет более
удобна. Например, при установке системы или при повреждении
файловой системы.
После того, как ядро системы загружено в память (с жесткого
- 19 -
диска или с дискет) и запущено, выполняются приблизительно
следующие действия:
Так как ядро Linux установлено в запакованном виде, то прежде
всего оно само себя распаковывает. Это выполняет небольшая
программа, расположенная в самом начале кода.
Если на компьютере установлена видеоплата sVGA,
поддерживающая нестандартные текстовые режимы (такие как 100x40),
выдается запрос для указания требуемого режима. При компиляции
ядра можно сразу указать используемый режим, чтобы он не
запрашивался системой во время загрузки. Режим также может быть
установлен при помощи LILO или rdev(8).
Затем ядро тестирует аппаратное обеспечение (жесткие диски,
дисководы, сетевые адаптеры и др.) и конфигурирует соответствующие
драйверы устройств. Во время этого процесса на экран выдаются
подсказывающие сообщения. Вот примерно то, что происходит во время
загрузки:
LILO boot:
Loading linux.
Console: colour EGA+ 80x25, 8 virtual consoles
Serial driver version 3.94 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
lp_init: lp1 exists (0), using polling driver
Memory: 7332k/8192 available (300k kernel code, 384k reserved, 176k data)
Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
Loopback device init
Warning WD8013 board not found at i/o = 280
Math coprocessor using irq13 error reporting
Partition check:
hda: hda1 hda2 hda3
VFS: Mounted root (ext filesystem)
Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20
Хотя текст сообщений довольно сильно различается на разных
- 20 -
системах и зависит от аппаратного обеспечения, версии Linux и
конфигурации.
После этого, ядро пытается смонтиpовать файловую систему
root. Место, куда она будет смонтирована, устанавливается во время
компиляции или с помощью rdev или LILO. Тип файловой системы
определяется автоматически. Если система root не монтиpуется,
например по причине того, что ядро не содержит драйвер
соответствующей файловой системы, то система зависает.
Файловая система root обычно монтиpуется в режиме read-only
(это устанавливается таким же образом как и узел монтиpования).
Это делает возможным проверку файловой системы в то время как она
смонтиpована, хотя проверка файловой системы, установленной в
режиме read-write не рекомедуется.
Затем ядро запускает программу init(8) в фоновом режиме (она
расположена в каталоге /sbin/init) которая становится главным
процессом. init выполняет различные функции, требуемые при
установке системы.
В конце концов init запускает программу getty(8) для
виртуальных консолей и последовательных линий. Эта программа
позволяет подключаться к системе посредством виртуальных консолей
и терминалов, подключенных через последовательные порты. init
может быть сконфигурирована также для запуска и других программ.
После этого процесс запуска системы считается завершенным и
система готова к работе.
... которая состоит из личных каталогов пользователей. Разделение может существенно отличатся от выше указанного в зависимости от работы системного администратора и конфигурации аппаратного обеспечения. В главе 5 сруктура файловой системы рассматривается более подробно (см. также Linux Filesystem Standard). Глава 3 Запуск Системы и Перезагрузка В этой главе описывается то, ...
... каталог с логом непосредственно пользователем root и убедиться, что доступ для самого пользователя в заданный каталог разрешен. Заключение В данной работе была освещен Security-Enhanced Linux — линукс с улучшенной безопасностью. Достоинства данной технологии очевидны, т.к. он базируется на принципе наименьших прав, т.е. запущенному процессу дается именно столько прав, сколько ему требуется. ...
... отладочной информации; - use_uid — определение принадлежности на основании текущего идентификатора пользователя, а не того, что был назначен ему при входе в систему; - trust — в случае принадлежности пользователя к группе wheel возвращать значение УСПЕХ (SUCCESS), а не ИГНОРИРОВАТЬ (IGNORE); - group=xxx — использовать для авторизации GID ххх, а не GID группы wheel; - deny — меняет смысл ...
... работы за компьютером, а также методы и средства, позволяющие свести к минимуму риск облучения при работе за компьютером. Заключение В данной работе был выполнен обзор средств безопасности, которыми располагает операционная система Linux для безопасного функционирования как в качестве пользовательской системы, так и в качестве сервера. В работе были рассмотрены следующие темы: · Обзор ...
0 комментариев