diff options
Diffstat (limited to 'documentation/content/ru/books/handbook/boot/_index.adoc')
| -rw-r--r-- | documentation/content/ru/books/handbook/boot/_index.adoc | 454 |
1 files changed, 177 insertions, 277 deletions
diff --git a/documentation/content/ru/books/handbook/boot/_index.adoc b/documentation/content/ru/books/handbook/boot/_index.adoc index 837de2defe..6683bbeeb8 100644 --- a/documentation/content/ru/books/handbook/boot/_index.adoc +++ b/documentation/content/ru/books/handbook/boot/_index.adoc @@ -1,12 +1,14 @@ --- -title: Глава 13. Процесс загрузки FreeBSD -part: Часть III. Системное администрирование -prev: books/handbook/config +description: 'В этой главе описывается процесс загрузки FreeBSD и способы его настройки. Рассматриваются все этапы — от начальной загрузки до момента, когда ядро FreeBSD завершает инициализацию, определяет оборудование и запускает процесс init' next: books/handbook/security -showBookMenu: true -weight: 17 params: - path: "/books/handbook/boot/" + path: /books/handbook/boot/ +part: 'Часть III. Администрирование системы' +prev: books/handbook/config +showBookMenu: true +tags: ["boot", "boot process", "device hints", "x86", "amd64", "MBR", "GPT", "UEFI", "bsdlabel", "boot0", "Single-User Mode", "Multi-User Mode"] +title: 'Глава 15. Процесс загрузки FreeBSD' +weight: 19 --- [[boot]] @@ -17,7 +19,7 @@ params: :icons: font :sectnums: :sectnumlevels: 6 -:sectnumoffset: 13 +:sectnumoffset: 15 :partnums: :source-highlighter: rouge :experimental: @@ -48,115 +50,102 @@ include::../../../../../shared/asciidoctor.adoc[] endif::[] [[boot-synopsis]] -== Описание +== Обзор -Процесс включения компьютера и загрузки операционной системы называется "процессом первоначальной загрузки", или просто "загрузкой". Процесс загрузки FreeBSD предоставляет большие возможности по гибкой настройке того, что происходит при запуске системы, позволяя вам выбирать из различных операционных систем, установленных на одном и том же компьютере, или даже из различных версий той же самой операционной системы или установленного ядра. +Процесс запуска компьютера и загрузки операционной системы называется "процессом начальной загрузки" или "загрузкой". Процесс загрузки FreeBSD предоставляет большую гибкость в настройке действий при старте системы, включая возможность выбора между различными операционными системами, установленными на одном компьютере, разными версиями одной операционной системы или другим установленным ядром. -Эта глава подробно описывает параметры, которые вы можете изменить для настройки процесса загрузки FreeBSD. Под этим подразумевается все, что происходит до начала работы ядра FreeBSD, обнаружения устройств и запуска man:init[8]. Если вы не совсем уверены, то это происходит, когда выводимый текст меняет цвет с ярко-белого на серый. +Эта глава подробно описывает доступные параметры конфигурации. В ней показано, как настроить процесс загрузки FreeBSD, включая все этапы до момента, когда ядро FreeBSD запустится, определит устройства и запустит man:init[8]. Это происходит, когда цвет текста загрузочных сообщений меняется с ярко-белого на серый. -После чтения этой главы вы будете знать: +Прочитав эту главу, вы узнаете: -* Из каких частей состоит система начальной загрузки FreeBSD, и как эти части взаимодействуют. -* Параметры, которые вы можете передать компонентам начальной загрузки FreeBSD для управления этим процессом. -* Основы работы man:device.hints[5] +* Компоненты загрузочной системы FreeBSD и их взаимодействие. +* Параметры, которые можно передать компонентам в процессе загрузки FreeBSD для управления процессом загрузки. +* Основы настройки подсказок устройств. +* Как загрузиться в однопользовательском и многопользовательском режимах и как правильно завершить работу системы FreeBSD. [NOTE] -.Только для x86 ==== -Эта глава описывает процесс загрузки FreeBSD только для систем на основе архитектуры Intel x86. +Эта глава описывает только процесс загрузки FreeBSD на системах с архитектурой x86 и amd64. ==== [[boot-introduction]] -== Проблема загрузки - -Включение компьютера и запуск операционной системы приводят к интересной дилемме. По определению до запуска операционной системы компьютер не умеет ничего. В том числе и не знает, как запускать программы с диска. Так что компьютер не может запустить программу с диска без операционной системы, но программы операционной системы находятся на диске, но как запустить операционную систему? +== Процесс загрузки FreeBSD -Эта проблема имеет параллели с одной проблемой из книги Приключения барона Мюнхгаузена. Герой провалился в болото, и вытащил сам себя, ухватив за волосы и потянув. В эпоху начала компьютеризации термин _начальная загрузка_ применялся к механизму, используемому для загрузки операционной системы, и затем был сокращен до просто "загрузки". +Включение компьютера и запуск операционной системы представляет собой интересную дилемму. По определению, компьютер не умеет ничего делать до запуска операционной системы. Это включает в себя запуск программ с диска. Если компьютер не может запустить программу с диска без операционной системы, а программы операционной системы находятся на диске, то как же тогда запускается операционная система? -На оборудовании архитектуры x86 за загрузку операционной системы отвечает BIOS (Basic Input/Output System). Для этого BIOS ищет на жестком диске MBR (Master Boot Record), которая должна располагаться в определенном месте на диске. BIOS может загрузить и запустить MBR, и предполагается, что MBR может взять на себя остальную работу, связанную с загрузкой операционной системы. +Эта проблема аналогична описанной в книге «Приключения барона Мюнхгаузена». Персонаж частично провалился в люк, но смог выбраться, ухватившись за шнурки своих сапог и подтянув себя вверх. В первые дни развития вычислительной техники термин **_bootstrap_** применялся к механизму загрузки операционной системы. Со временем он сократился до «**загрузки**» (англ. "booting"). -Выполняемую часть MBR обычно называют _менеджером загрузки (boot manager)_, в особенности если она взаимодействует с пользователем. В этом случае менеджер загрузки, как правило, занимает большее пространство на первом _треке_ диска или внутри файловой системы ОС. (Менеджер загрузки иногда называют _загрузчиком (boot loader)_, но во FreeBSD этот термин используется для описания более поздней фазы загрузки). Среди популярных менеджеров загрузки стоит отметить boot0 (он же Boot Easy, стандартный менеджер загрузки FreeBSD), Grub, GAG и LILO. Из перечисленных менеджеров загрузки в MBR помещается только boot0. +На аппаратном обеспечении x86 загрузка операционной системы выполняется базовой системой ввода/вывода (BIOS). BIOS ищет на жестком диске главную загрузочную запись (MBR), которая должна находиться в определенном месте диска. BIOS обладает достаточными знаниями для загрузки и запуска MBR и предполагает, что MBR затем сможет выполнить остальные задачи по загрузке операционной системы, возможно, с помощью BIOS. -Если на вашем диске установлена только одна операционная система, то стандартной MBR будет достаточно. Такая MBR выполняет поиск на диске первого загрузочного (активного) слайса, после чего запускает с этого слайса код загрузки оставшейся части операционной системы. Утилита man:fdisk[8] по умолчанию устанавливает именно такую MBR, на основе файла [.filename]#/boot/mbr#. +[NOTE] +==== +FreeBSD поддерживает загрузку как по старому стандарту MBR, так и по новому стандарту GUID Partition Table (GPT). Разметка GPT часто встречается на компьютерах с Unified Extensible Firmware Interface (UEFI). Однако FreeBSD может загружаться с разделов GPT даже на машинах с устаревшим BIOS, используя man:gptboot[8]. Ведутся работы по обеспечению прямой загрузки через UEFI. +==== -Если на ваших дисках установлено несколько операционных систем, то вы можете установить другой менеджер загрузки, который может выдать список различных операционных систем и позволит вам выбрать одну из них для загрузки. Два варианта менеджеров загрузки будут описаны чуть ниже. +Код в MBR обычно называют _загрузчиком_, особенно если он взаимодействует с пользователем. Загрузчик обычно содержит больше кода в первом треке диска или в файловой системе. Примерами загрузчиков являются стандартный загрузчик FreeBSD boot0, также называемый Boot Easy, и GNU GRUB, который используется во многих дистрибутивах Linux(R). -Оставшаяся часть системы начальной загрузки FreeBSD разделяется на три этапа. Первый этап запускается из MBR, и он знает достаточно для перевода компьютера в особое состояние и загрузки второго этапа. Второй этап может делать несколько больше до запуска третьего этапа. Третий этап заканчивает работу по загрузке операционной системы. Работа разделена на эти три этапа, потому что стандарты ПК ограничивают размеры программ, которые могут быть запущены на первом и втором этапах. Последовательное выполнение работ позволяет FreeBSD получить более гибкий загрузчик. +[NOTE] +==== +// There is extref:{faq}[a frequently asked question] about GRUB. Beyond the answer there, // +Пользователи GRUB могут обратиться к https://www.gnu.org/software/grub/grub-documentation.html[документации от GNU]. +==== -Затем стартует ядро, которое начинает опознавать устройства и выполняет их инициализацию. После завершения процесса своей загрузки, ядро передает управление пользовательскому процессу с именем man:init[8], который выполняет проверку дисков на возможность использования. Затем man:init[8] запускает пользовательский процесс настройки ресурсов, который монтирует файловые системы, выполняет настройку сетевых адаптеров для работы в сети и вообще осуществляет запуск всех процессов, обычно выполняемых в системе FreeBSD при загрузке. +Если на компьютере установлена только одна операционная система, MBR ищет первый загрузочный (активный) раздел на диске, а затем запускает код в этом разделе для загрузки остальной части операционной системы. При наличии нескольких операционных систем можно установить другой загрузчик, который отобразит список операционных систем, позволяя пользователю выбрать нужную для загрузки. -[[boot-blocks]] -== Менеджер загрузки и этапы загрузки +Оставшаяся часть загрузочной системы FreeBSD разделена на три этапа. Первый этап знает ровно столько, чтобы перевести компьютер в определённое состояние и запустить второй этап. Второй этап может выполнить немного больше, прежде чем запустить третий этап. Третий этап завершает загрузку операционной системы. Работа разделена на три этапа, потому что MBR накладывает ограничения на размер программ, которые могут быть выполнены на первом и втором этапах. Объединение задач в цепочку позволяет FreeBSD предоставить более гибкий загрузчик. -[[boot-boot0]] -=== Менеджер загрузки +Затем запускается ядро, которое начинает поиск и инициализацию устройств для их использования. После завершения процесса загрузки ядра управление передаётся пользовательскому процессу man:init[8], который проверяет готовность дисков к работе, запускает пользовательскую настройку ресурсов, монтирует файловые системы, настраивает сетевые карты для работы в сети и запускает процессы, запланированные для выполнения при старте системы. -Код MBR или менеджера загрузки время от времени называют _нулевой стадией_ процесса загрузки. В этом разделе мы обсудим два из упомянутых ранее менеджеров загрузки: boot0 и LILO. +Этот раздел подробно описывает эти этапы и показывает, как взаимодействовать с процессом загрузки FreeBSD. -MBR для FreeBSD находится в [.filename]#/boot/boot0#. Это _копия_ MBR, так как настоящая MBR должна располагаться в специальном месте диска, вне области FreeBSD. +[[boot-boot0]] +=== Загрузчик -[.filename]#boot0# очень прост, так как программа в может иметь размер, не превышающий 512 байт. Если вы установили MBR FreeBSD и несколько операционных систем на ваш жесткий диск, то во время загрузки вы увидите нечто похожее на следующее: +Код загрузчика в MBR иногда называют _нулевой стадией_ процесса загрузки. По умолчанию FreeBSD использует загрузчик boot0. -*Менеджер загрузки boot0:* MBR, устанавливаемый программой установки FreeBSD или утилитой man:boot0cfg[8], основан на [.filename]#/boot/boot0#. ([.filename]#boot0# очень прост, так как программа в может иметь размер, не превышающий 446 байт, так как часть первого сектора диска занята таблицей слайсов и сигнатурой `0x55AA`). Если вы установили boot0 и несколько операционных систем на ваш жесткий диск, то во время загрузки вы увидите нечто похожее на следующее: +MBR, записываемый установщиком FreeBSD, основан на [.filename]#/boot/boot0#. Размер и возможности boot0 ограничены 446 байтами из-за таблицы разделов и идентификатора `0x55AA` в конце MBR. Если установлены boot0 и несколько операционных систем, при загрузке будет отображаться сообщение, похожее на этот пример: [[boot-boot0-example]] -.Образец экрана [.filename]#boot0# +.Экран [.filename]#boot0# [example] ==== -[source,shell] +[source, shell] .... -F1 DOS +F1 Win F2 FreeBSD -F3 Linux -F4 ?? -F5 Drive 1 Default: F2 .... ==== -Известно, что другие операционные системы, в частности, Windows(R) 95, записывают поверх существующей MBR свою собственную. Если так случилось в вашем случае, или же вы хотите заменить существующую MBR на MBR от FreeBSD, то воспользуйтесь следующей командой: +Другие операционные системы перезапишут существующую MBR, если они установлены после FreeBSD. Если это произошло или требуется заменить существующую MBR на MBR FreeBSD, используйте следующую команду: -[source,shell] +[source, shell] .... # fdisk -B -b /boot/boot0 device .... -Здесь _device_ является устройством, с которого вы загружаетесь, таким, как [.filename]#ad0# в случае первого диска IDE, [.filename]#ad2# в случае первого диска IDE на втором контроллере IDE, [.filename]#da0# для первого диска SCSI и так далее. Если вы используете MBR нестандартного вида, воспользуйтесь man:boot0cfg[8]. - -*Менеджер загрузки LILO:* Для того, чтобы этот менеджер загрузки мог загружать FreeBSD, загрузите Linux и добавьте к существующему файлу конфигурации [.filename]#/etc/lilo.conf# такие строки: - -[.programlisting] -.... -other=/dev/hdXY -table=/dev/hdb -loader=/boot/chain.b -label=FreeBSD -.... - -Укажите диск с основным разделом FreeBSD в терминах Linux, заменив _X_ буквой диска, используемой в Linux, а _Y_ - номером основного раздела. Если вы используете диски SCSI, замените _/dev/hd_ на _/dev/sd_. Строка `loader=/boot/chain.b` может быть опущена, если обе операционные системы находятся на одном диске. Теперь запустите `/sbin/lilo -v` для того, чтобы ваши изменения были восприняты системой, что должно быть подтверждено сообщениями на экране. +где _device_ — это загрузочный диск, например, [.filename]#ad0# для первого IDE-диска, [.filename]#ad2# для первого IDE-диска на втором IDE-контроллере или [.filename]#da0# для первого SCSI-диска. Для создания пользовательской конфигурации MBR обратитесь к man:boot0cfg[8]. [[boot-boot1]] -=== Этап первый, [.filename]#/boot/boot1#, и этап второй, [.filename]#/boot/boot2# - -Концептуально первый и второй этапы загрузки являются частями одной и той же программы, в одной области диска. Из-за ограничений на объем дискового пространства они были разделены на две, но вы всегда должны устанавливать их вместе. Они копируются инсталлятором или утилитой bsdlabel (см. ниже) из общего файла [.filename]#/boot/boot#. +=== Этап первый и Этап второй -Они располагаются вне файловых систем, на первом треке загрузочного слайса, то есть там, где <<boot-boot0,boot0>> или любой другой менеджер загрузки ожидает найти программу, которую следует запустить для продолжение процесса загрузки. Количество используемых секторов легко может быть вычислено из размера файла [.filename]#/boot/boot#. +Концептуально первая и вторая стадии являются частью одной программы и расположены в одной области диска. Из-за ограничений по объёму они были разделены на две части, но всегда устанавливаются вместе. Они копируются из объединённого файла [.filename]#/boot/boot# с помощью установщика FreeBSD или `bsdlabel`. -[.filename]#boot1# очень прост, так как он не может иметь размер, превышающий 512 байт, и знает лишь о _метке диска_ FreeBSD, хранящей информацию о слайсе, для того, чтобы найти и запустить [.filename]#boot2#. +Эти два этапа расположены за пределами файловых систем, в первом треке загрузочного раздела, начиная с первого сектора. Именно здесь boot0 или любой другой загрузчик ожидает найти программу для запуска, которая продолжит процесс загрузки. -[.filename]#boot2# устроен несколько более сложно, и умеет работать с файловой системой FreeBSD в объёме, достаточном для нахождения в ней файлов, и может предоставлять простой интерфейс для выбора и передачи управления ядру или загрузчику. +Первая стадия, [.filename]#boot1#, очень проста, так как её размер может составлять только 512 байт. Она знает ровно столько о _bsdlabel_ FreeBSD, в котором хранится информация о слайсе, чтобы найти и выполнить [.filename]#boot2#. -Так как <<boot-loader,загрузчик>> устроен гораздо более сложно, и дает удобный и простой способ настройки процесса загрузки, [.filename]#boot2# обычно запускает его, однако раньше его задачей был запуск непосредственно самого ядра. +Этап два, [.filename]#boot2#, немного сложнее и понимает файловую систему FreeBSD достаточно хорошо, чтобы находить файлы. Он может предоставить простой интерфейс для выбора ядра или загрузчика для запуска. Он запускает loader, который гораздо более продвинут и предоставляет файл конфигурации загрузки. Если процесс загрузки прерывается на втором этапе, отображается следующий интерактивный экран: [[boot-boot2-example]] -.Образец экрана [.filename]#boot2# +.Экран [.filename]#boot2# [example] ==== -[source,shell] +[source, shell] .... >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader @@ -165,318 +154,229 @@ boot: ==== -Если вам когда-либо понадобится заменить установленные [.filename]#boot1# и [.filename]#boot2#, то используйте утилиту man:bsdlabel[8]: +Для замены установленных [.filename]#boot1# и [.filename]#boot2# используйте `bsdlabel`, где _diskslice_ — это диск и раздел, с которого производится загрузка, например [.filename]#ad0s1# для первого раздела на первом IDE-диске: -[source,shell] +[source, shell] .... # bsdlabel -B diskslice .... -Здесь _diskslice_ являются диском и слайсом, с которых вы загружаетесь, например, [.filename]#ad0s1# в случае первого слайса на первом диске IDE. - [WARNING] -.Режим Dangerously Dedicated ==== -Если вы используете только имя диска, к примеру, [.filename]#ad0#, в команде man:bsdlabel[8] вы создадите диск в режиме эксклюзивного использования, без слайсов. Это, скорее всего, вовсе не то, что вы хотите сделать, так что дважды проверьте параметры команды man:bsdlabel[8], прежде, чем нажать kbd:[Return]. +Если указано только имя диска, например [.filename]#ad0#, `bsdlabel` создаст диск в «опасном выделенном режиме» (dangerously dedicated mode) без разделов. Вероятно, это нежелательное действие, поэтому дважды проверьте _дисковый раздел_ перед нажатием kbd:[Enter]. ==== [[boot-loader]] -=== Третий этап, [.filename]#/boot/loader# +=== Этап три -Передача управления загрузчику является последним, третьим этапом в процессе начальной загрузки, а сам загрузчик находится в файловой системе, обычно как [.filename]#/boot/loader#. +Загрузчик является завершающим этапом трёхэтапного процесса начальной загрузки. Он располагается в файловой системе, обычно как [.filename]#/boot/loader#. -Загрузчик являет собой удобный в использовании инструмент для настройки при помощи простого набора команд, управляемого более мощным интерпретатором с более сложным набором команд. +Загрузчик предназначен для интерактивной настройки с использованием встроенного набора команд, а также поддерживается более мощным интерпретатором с расширенным набором команд. -[[boot-loader-flow]] -==== Процесс работы загрузчика +Во время инициализации загрузчик определит консоль и диски, а также выяснит, с какого диска происходит загрузка. Он установит соответствующие переменные и запустит интерпретатор, в котором пользовательские команды могут передаваться из скрипта или вводиться в интерактивном режиме. -Во время инициализации загрузчик пытается произвести поиск консоли, дисков и определить, с какого диска он был запущен. Соответствующим образом он задаёт значения переменных и запускает интерпретатор, которому могут передаваться пользовательские команды как из скрипта, так и в интерактивном режиме. +Затем загрузчик прочитает [.filename]#/boot/loader.rc#, который по умолчанию загружает [.filename]#/boot/defaults/loader.conf#, где задаются разумные значения по умолчанию для переменных, а также читает [.filename]#/boot/loader.conf# для локальных изменений этих переменных. После этого [.filename]#loader.rc# действует в соответствии с этими переменными, загружая выбранные модули и ядро. -Затем загрузчик читает файл [.filename]#/boot/loader.rc#, который по умолчанию использует файл [.filename]#/boot/defaults/loader.conf#, устанавливающий подходящие значения по умолчанию для переменных и читает файл [.filename]#/boot/loader.conf# для изменения в этих переменных. Затем с этими переменными работает [.filename]#loader.rc#, загружающий выбранные модули и ядро. - -И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу, ожидая нажатия клавиши, и загружает ядро, если этого не произошло. Если ожидание было прервано, пользователю выдается приглашение, которое воспринимает простой набор команд, с помощью которых пользователь может изменить значения переменных, выгрузить все модули, загрузить модули и окончательно продолжить процесс загрузки или перезагрузить машину. +Наконец, по умолчанию загрузчик ожидает нажатия клавиш в течение 10 секунд и загружает ядро, если не было прерывания. Если прерывание произошло, пользователю предоставляется командная строка, поддерживающая набор команд, где можно изменить переменные, выгрузить все модули, загрузить модули и, наконец, загрузить или перезагрузить систему. crossref:boot[boot-loader-commands,Встроенные команды загрузчика] перечисляет наиболее часто используемые команды загрузчика. Для полного описания всех доступных команд обратитесь к man:loader[8]. [[boot-loader-commands]] -==== Встроенные команды загрузчика - -Далее следуют наиболее часто используемые команды загрузчика. Полное описание всех имеющихся команд можно найти на странице справки о команде man:loader[8]. - -autoboot _секунды_:: -Продолжает загрузку ядра, если не будет прерван в течение указанного в секундах промежутка времени. Он выводит счетчик, и по умолчанию выдерживается интервал в 10 секунд. +.Встроенные команды загрузчика +[cols="20%,80%", frame="none", options="header"] +|=== +| Переменная +| Описание -boot [-параметры] [имя ядра]:: -Продолжить процесс загрузки указанного ядра, если оно было указано, и с указанными параметрами, если они были указаны. Загрузка и использование указанного ядра возможны лишь после выгрузки текущего ядра, а выгрузка текущего ядра производится командой _unload_. +|autoboot _секунды_ +|Продолжает загрузку ядра, если не прервано в течение указанного времени в секундах. Отображает обратный отсчет, а время по умолчанию составляет 10 секунд. -boot-conf:: -Повторно провести тот же самый процесс автоматической настройки модулей на основе переменных, что был произведен при загрузке. Это имеет смысл, если до этого вы выполнили команду `unload`, изменили некоторые переменные, например, наиболее часто меняемую `kernel`. +|boot [`-options`] [`kernelname`] +|Немедленно переходит к загрузке ядра с любыми указанными параметрами или именем ядра. Указание имени ядра в командной строке применимо только после выполнения команды `unload`. В противном случае будет использовано ранее загруженное ядро. Если _kernelname_ не указан полностью, поиск будет выполнен в _/boot/kernel_ и _/boot/modules_. -help [тема]:: -Вывод сообщений подсказки из файла [.filename]#/boot/loader.help#. Если в качестве темы указано слово `index`, то выводится список имеющихся тем. +|boot-conf +|Проходит ту же автоматическую настройку модулей на основе указанных переменных, чаще всего `kernel`. Имеет смысл только при использовании `unload` перед изменением некоторых переменных. -include _имя файла_ ...:: -Выполнить файл с указанным именем. Файл считывается и его содержимое интерпретируется строчка за строчкой. Ошибка приводит к немедленному прекращению выполнения команды include. +|help [`_тема_`] +|Показывает справочные сообщения, прочитанные из файла [.filename]#/boot/loader.help#. Если указана тема `index`, отображается список доступных тем. -load [-t тип] имя файла:: -Загружает ядро, модуль ядра или файл указанного типа с указанным именем. Все аргументы после имени файла передаются в файл. +|include `_имяфайла_` ... +|Читает указанный файл и обрабатывает его построчно. Ошибка немедленно останавливает `include`. -ls [-l] [маршрут]:: -Выводит список файлов по указанному маршруту или в корневом каталоге, если маршрут не был указан. Если указан параметр `-l`, будут выводиться и размеры файлов. +|load [-t ``_тип_``] `_имяфайла_` +|Загружает ядро, модуль ядра или файл указанного типа с заданным именем. Все аргументы после _имяфайла_ передаются файлу. Если _имяфайла_ не указано полностью, файл будет искаться в _/boot/kernel_ и _/boot/modules_. -lsdev [-v]:: -Выводится список всех устройств, с которых могут быть загружены модули. Если указан параметр `-v`, выводится дополнительная информация. +|ls [-l] [``_путь_``] +|Отображает список файлов в указанном пути или в корневом каталоге, если путь не указан. Если указан параметр `-l`, также будут показаны размеры файлов. -lsmod [-v]:: -Выводит список загруженных модулей. Если указан параметр `-v`, то выводится дополнительная информация. +|lsdev [`-v`] +|Перечисляет все устройства, с которых возможно загрузить модули. Если указан параметр `-v`, выводится более подробная информация. -more _имя файла_:: -Вывод указанного файла с паузой при выводе каждой строки `LINES`. +|lsmod [`-v`] +|Отображает загруженные модули. Если указан параметр `-v`, выводится более подробная информация. -reboot:: -Выполнить немедленную перезагрузку машины. +|more `_имяфайла_` +|Отображает указанные файлы с паузой после каждых `LINES` выведенных строк. -set _переменная_:: -Задает значения переменных окружения загрузчика. +|reboot +|Немедленно перезагружает систему. -unload:: -Удаление из памяти всех загруженных модулей. +|set `_variable_`, set `_variable=value_` +|Устанавливает указанные переменные окружения. -[[boot-loader-examples]] -==== Примеры использования загрузчика +|unload +|Удаляет все загруженные модули. +|=== -Вот несколько примеров практического использования загрузчика: +Вот несколько практических примеров использования загрузчика. Чтобы загрузить обычное ядро в однопользовательском режиме: -* Чтобы просто загрузить ваше ядро обычным образом, но в однопользовательском режиме: -+ -[source,shell] +[source, shell] .... boot -s .... -* Для выгрузки обычных ядра и модулей, а потом просто загрузить ваше старое (или другое) ядро: -+ -[source,shell] +Чтобы выгрузить обычное ядро и модули, а затем загрузить предыдущее или другое указанное ядро: + +[source, shell] .... -unload -load kernel.old + unload + load /путь/к/файлуядра .... -+ -Вы можете использовать [.filename]#kernel.GENERIC# для обозначения стандартного ядра, поставляемого на установочном диске, или [.filename]#kernel.old# для обращения к ранее установленному ядру (после того, как, например, вы обновили или отконфигурировали новое ядро). -+ -[NOTE] -==== -Для загрузки ваших обычных модулей с другим ядром используйте такие команды: -[source,shell] +Используйте полный путь [.filename]#/boot/GENERIC/kernel# для ссылки на стандартное ядро, поставляемое с установкой, или [.filename]#/boot/kernel.old/kernel# для ссылки на предыдущую версию ядра до обновления системы или до настройки собственного ядра. + +Используйте следующее для загрузки обычных модулей с другим ядром. Обратите внимание, что в этом случае не обязательно указывать полное имя: + +[source, shell] .... unload -set kernel="kernel.old" +set kernel="mykernel" boot-conf .... -==== +Для загрузки автоматизированного сценария конфигурации ядра: -* Для загрузки скрипта конфигурации ядра (автоматизированный скрипт, который выполняет то, что вы обычно делаете в конфигураторе ядра во время загрузки): -+ -[source,shell] +[source, shell] .... load -t userconfig_script /boot/kernel.conf .... -[[boot-splash]] -==== Загрузочные экранные заставки - -Заставка создает более привлекательный вид процесса загрузки по сравнению с традиционными сообщениями загрузки. Изображение заставки будет отображаться до тех пор, пока не придет очередь приглашения ввода логина на консоли или в менеджере дисплеев. - -Есть два базовых окружения во FreeBSD. Первое - это окружение командной строки текстовой виртуальной консоли. По завершении загрузки системы вам предоставляется консольное приглашение ввода логина. Второе окружение - это графическое окружение рабочего стола X11. После установки crossref:x11[x-install,X11] и одной из графических оболочек, таких как GNOME, KDE или XFce, становится возможным запуск рабочего стола Х11 командой `startx`. - -Некоторые пользователи предпочитают графический интерфейс входа традиционному текстовому приглашению ввода логина. Менеджеры экранов, наподобие XDM для Xorg, gdm для GNOME, kdm для KDE (а также другие, доступные из коллекции портов), изначально предоставляют графический интерфейс входа. После успешного входа в систему они запускают соответствующий оконный менеджер. - -В текстовом окружении экранная заставка скрывает все подробности процесса загрузки и сообщения стартовых скриптов до момента выдачи приглашения ввода логина. Если используется экранная заставка перед входом в графическое окружение, то пользователи получают визуально более чистый старт системы, чем-то напоминающий опыт работы с Microsoft(R) Windows(R) или с иной не unix-подобной системой. +[[boot-init]] +=== Последний этап -[[boot-splash-function]] -===== Экранная заставка в действии +После загрузки ядра с помощью `loader` или `boot2`, который обходит `loader`, оно проверяет флаги загрузки и при необходимости корректирует свое поведение. В crossref:boot[boot-kernel,Взаимодействие ядра во время загрузки] приведены часто используемые флаги загрузки. Дополнительную информацию о других флагах загрузки можно найти в man:boot[8]. -В качестве заставки можно использовать лишь содержащие 256 цветов изображения формата BMP ([.filename]#.bmp#) или изображения формата PCX ([.filename]#.pcx#) от ZSoft. К тому же, для вывода на стандартный VGA адаптер, файл изображения заставки должен иметь разрешение не более 320 на 200 пикселей. +[[boot-kernel]] +.Взаимодействие с ядром во время загрузки +[cols="1,1", frame="none", options="header"] +|=== +| Опция +| Описание -Чтобы можно было использовать изображения большего размера, вплоть до максимального 1024 на 768, активируйте поддержку VESA. Активация может быть осуществлена либо подключением модуля VESA во время загрузки системы, либо сборкой специализированного ядра с добавленной опцией `VESA` (смотрите crossref:kernelconfig[kernelconfig, Настройка ядра FreeBSD]). Поддержка режима VESA дает пользователям возможность отображать заставку, перекрывающую всю видимую область экрана. +|`-a` +|Во время инициализации ядра запросить устройство для монтирования в качестве корневой файловой системы. -Отображаемая во время загрузки заставка может быть убрана нажатием любой клавиши на клавиатуре. +|`-C` +|Загрузка корневой файловой системы с CDROM. -С настройками по умолчанию заставка также становится хранителем экрана в консольном окружении. После некоторого бездействия экран сменится заставкой, яркость которой будет периодически изменяться от её максимального значения к минимальному и обратно. Подобное поведение заставки может быть переопределено добавлением строки `saver=` в [.filename]#/etc/rc.conf#. В качестве значения опции `saver=` можно выбрать одно из встроенных имен хранителей экранов, а с полным перечнем можно ознакомиться на странице справочника man:splash[4]. Хранитель экрана, используемый по умолчанию, называется "warp". Заметьте, что установка опции `saver=` в [.filename]#/etc/rc.conf# воздействует исключительно на текстовые виртуальные консоли. Она не влияет на менеджеры экранов X11. +|`-s` +|Загрузится в однопользовательский режим. -Несколько сообщений загрузчика, включая меню загрузки и счетчик, отображаются во время загрузки, даже если экран-заставка активирован. +|`-v` +|Более подробный вывод во время загрузки ядра. +|=== -Файлы-примеры с изображениями для заставок могут быть скачаны из галереи по адресу http://artwork.freebsdgr.org/node/3/[http://artwork.freebsdgr.org]. Установив порт package:sysutils/bsd-splash-changer[], между загрузками вы получите автоматическую смену случайно выбираемых изображений заставок. +После завершения загрузки ядро передает управление пользовательскому процессу man:init[8], который находится в [.filename]#/sbin/init#, или программе, указанной в переменной `init_path` в `loader`. Это последний этап процесса загрузки. -[[boot-splash-enable]] -===== Активация экранной заставки +Последовательность загрузки гарантирует, что файловые системы, доступные в системе, находятся в согласованном состоянии. Если файловая система UFS не согласована и `fsck` не может исправить несоответствия, init переводит систему в однопользовательский режим, чтобы администратор системы мог устранить проблему вручную. В противном случае система загружается в многопользовательский режим. -Файл изображения для заставки ([.filename]#.bmp# или [.filename]#.pcx#) следует разместить в корневой файловой системе, например в каталоге [.filename]#/boot#. +[[boot-singleuser]] +==== Однопользовательский режим -Для работы заставки с разрешением, доступным при загрузке (256 цветов и не более 320х200 точек), отредактируйте [.filename]#/boot/loader.conf#, добавив в него следующие строки: +Пользователь может указать этот режим, загрузившись с ключом `-s` или установив переменную `boot_single` в загрузчике. Также можно перейти в этот режим, выполнив команду `shutdown now` из многопользовательского режима. Однопользовательский режим начинается со следующего сообщения: [.programlisting] .... -splash_bmp_load="YES" -bitmap_load="YES" -bitmap_name="/boot/splash.bmp" +Enter full pathname of shell or RETURN for /bin/sh: .... -Для получения больших разрешений видео режима (вплоть до максимального 1024x768), внесите в [.filename]#/boot/loader.conf# следующие записи: +Если пользователь нажмёт kbd:[Enter], система запустит оболочку Bourne по умолчанию. Чтобы указать другую оболочку, введите полный путь к ней. -[.programlisting] -.... -vesa_load="YES" -splash_bmp_load="YES" -bitmap_load="YES" -bitmap_name="/boot/splash.bmp" -.... +Однопользовательский режим обычно используется для восстановления системы, которая не загружается из-за несогласованности файловой системы или ошибки в конфигурационном файле загрузки. Он также может применяться для сброса пароля `root`, если он неизвестен. Эти действия возможны, поскольку приглашение однопользовательского режима предоставляет полный локальный доступ к системе и её конфигурационным файлам. В этом режиме отсутствует сетевое взаимодействие. + +Хотя однопользовательский режим полезен для восстановления системы, он представляет угрозу безопасности, если система не находится в физически защищенном месте. По умолчанию любой пользователь, имеющий физический доступ к системе, получит полный контроль над ней после загрузки в однопользовательском режиме. -Вышеприведённый пример подразумевает, что файл [.filename]#/boot/splash.bmp# содержит изображение заставки. Если же требуется выводить файл формата PCX, то используйте следующие строки (в зависимости от необходимого разрешения может также потребоваться строка `vesa_load="YES"`): +Если в [.filename]#/etc/ttys# параметр `console` изменён на `insecure`, система сначала запросит пароль `root` перед переходом в однопользовательский режим. Это добавляет уровень безопасности, но лишает возможности сбросить пароль `root`, если он неизвестен. +[[boot-insecure-console]] +.Настройка небезопасной консоли в [.filename]#/etc/ttys# +[example] +==== [.programlisting] .... -splash_pcx_load="YES" -bitmap_load="YES" -bitmap_name="/boot/splash.pcx" +# name getty type status comments +# +# If console is marked "insecure", then init will ask for the root password +# when going to single-user mode. +console none unknown off insecure .... -Возможное имя файла не ограничено одним лишь словом "splash". Оно может выбираться произвольно, например: [.filename]#splash_640x400.bmp# или [.filename]#blue_wave.pcx#. Важен лишь тип файла: он должен быть либо BMP, либо PCX. - -Далее приведены еще две полезные опции [.filename]#loader.conf#: - -`beastie_disable="YES"`:: -Эта опция отключит меню загрузчика, но приглашение с обратным отсчетом останется. Даже при не отображаемом меню во время отсчета возможен выбор номера варианта загрузки. - -`loader_logo="beastie"`:: -Эта установка заменит слова "FreeBSD", которые отображаются справа от меню загрузчика, цветным логотипом демона, который занимал это место в предыдущих релизах FreeBSD. - -За более детальной информацией обратитесь к следующим страницам справочника: man:splash[4], man:loader.conf[5] и man:vga[4]. - -[[boot-kernel]] -== Взаимодействие с ядром во время загрузки - -Как только ядро окажется загруженным при помощи <<boot-loader,загрузчика>> (обычный способ) или <<boot-boot1,boot2>> (минуя загрузчик), оно проверяет флаги загрузки, если они есть, и действует соответствующим образом. - -[[boot-kernel-bootflags]] -=== Флаги загрузки ядра - -Вот наиболее часто используемые флаги загрузки: - -`-a`:: -во время инициализации ядра запрашивать устройство для его монтирования в качестве корневой файловой системы. +==== -`-C`:: -загрузка с компакт-диска. +`insecure` консоль означает, что физическая безопасность консоли считается ненадежной, поэтому только тот, кто знает пароль `root`, может использовать однопользовательский режим. -`-c`:: -запустить UserConfig для конфигурации ядра во время загрузки +[[boot-multiuser]] +==== Многопользовательский режим -`-s`:: -после загрузки перейти в однопользовательский режим +Если `init` обнаруживает, что файловые системы в порядке, или после того, как пользователь завершит свои команды в однопользовательском режиме и введёт `exit` для выхода из этого режима, система переходит в многопользовательский режим, в котором начинается настройка ресурсов системы. -`-v`:: -во время запуска ядра выводить более подробную информацию +Система конфигурации ресурсов загружает настройки по умолчанию из [.filename]#/etc/defaults/rc.conf# и специфичные для системы параметры из [.filename]#/etc/rc.conf#. Затем она монтирует файловые системы, перечисленные в [.filename]#/etc/fstab#. После этого запускаются сетевые службы, различные системные демоны, а затем скрипты запуска локально установленных пакетов. -[NOTE] -==== -Есть и другие флаги загрузки, обратитесь к странице справочника по man:boot[8] для выяснения подробной информации по ним. -==== +Чтобы узнать больше о системе настройки ресурсов, обратитесь к man:rc[8] и изучите скрипты в [.filename]#/etc/rc.d#. [[device-hints]] -== Хинты устройств +== Подсказки устройств -Во время начального запуска системы загрузчик man:loader[8] производит чтение файла man:device.hints[5]. В этом файле хранится необходимая для загрузки ядра информация, задаваемая в виде переменных, которую иногда называют хинтами для устройств ("device hints"). Эти "хинты устройств" используются драйверами устройств для их конфигурации. +Во время начальной загрузки системы загрузчик man:loader[8] читает файл man:device.hints[5]. Этот файл хранит информацию о загрузке ядра, известную как переменные, иногда называемые "подсказками устройств" ("device hints"). Эти "подсказки устройств" используются драйверами устройств для их конфигурации. -Хинты для устройств могут быть также заданы в приглашении <<boot-loader,начального загрузчика Стадии 3>>. Переменные могут быть добавлены при помощи команды `set`, удалены посредством `unset` и просмотрены командой `show`. В этот момент могут быть также переопределены переменные, заданные в файле [.filename]#/boot/device.hints#. Хинты для устройств, введённые в начальном загрузчике, не сохраняются, и при следующей перезагрузке будут утеряны. +Подсказки для устройств также могут быть указаны в строке загрузчика на Этапе 3, как показано в crossref:boot[boot-loader, Третий Этап]. Переменные можно добавить с помощью `set`, удалить с помощью `unset` и просмотреть с помощью `show`. Переменные, заданные в [.filename]#/boot/device.hints#, также могут быть переопределены. Подсказки для устройств, введённые в загрузчике, не являются постоянными и не будут применены при следующей перезагрузке. -После загрузки системы для выдачи значений всех переменных можно воспользоваться командой man:kenv[1]. +После загрузки системы все переменные можно вывести с помощью man:kenv[1]. -Синтаксически в файле [.filename]#/boot/device.hints# в каждой строке определяется по одной переменной, в качестве метки начала комментария используется стандартный символ "#". Строки строятся следующим образом: +Синтаксис для [.filename]#/boot/device.hints# — одна переменная на строку, символ "#" используется для комментариев. Строки формируются следующим образом: -[source,shell] +[source, shell] .... hint.driver.unit.keyword="value" .... -Синтаксис для начального загрузчика Стадии 3 таков: +Синтаксис загрузчика Этапа 3 следующий: -[source,shell] +[source, shell] .... set hint.driver.unit.keyword=value .... -`driver` определяет имя драйвера устройства, `unit` соответствует порядковому номеру модуля устройства, а `keyword` является ключевым словом хинта. В качестве ключевых слов могут применяться следующие опции: - -* `at`: задаёт шину, к которой подключено устройство. -* `port`: задаёт начальный адрес используемого диапазона ввода/вывода (I/O). -* `irq`: задаёт используемый номер запроса на прерывание. -* `drq`: задаёт номер канала DMA. -* `maddr`: задаёт физический адрес памяти, занимаемый устройством. -* `flags`: устанавливает различные битовые флаги для устройства. -* `disabled`: если установлено в значение "1", то устройство не используется. - -Драйверы устройств могут поддерживать (и даже требовать) другие хинты, здесь не перечисленные, поэтому рекомендуется просматривать справочные страницы по этим драйверам. Для получения дополнительной информации обратитесь к страницам справки по man:device.hints[5], man:kenv[1], man:loader.conf[5] и man:loader[8]. - -[[boot-init]] -== Init: инициализация управления процессами - -После того, как ядро завершит загрузку, оно передает управление пользовательскому процессу man:init[8], который расположен в файле [.filename]#/sbin/init# или в файле, маршрут к которому указан в переменной `init_path загрузчика`. - -[[boot-autoreboot]] -=== Процесс автоматической перезагрузки - -Процесс автоматической перезагрузки проверяет целостность имеющихся файловых систем. Если это не так, и утилита man:fsck[8] не может исправить положение, то man:init[8] переводит систему в <<boot-singleuser,однопользовательский режим>> для того, чтобы системный администратор сам разобрался с возникающими проблемами. - -[[boot-singleuser]] -=== Однопользовательский режим +где `driver` — это имя драйвера устройства, `unit` — номер устройства драйвера, а `keyword` — ключевое слово подсказки. Ключевое слово может включать следующие варианты: -В этот режим можно перейти во время <<boot-autoreboot,процесса автоматической перезагрузки>>, при ручной загрузке с параметром `-s` или заданием переменной `boot_single` для программы `loader`. +* `at`: указывает шину, к которой подключено устройство. +* `port`: указывает начальный адрес ввода-вывода, который будет использоваться. +* `irq`: указывает номер запроса на прерывание, который должен использоваться. +* `drq`: указывает номер канала DMA. +* `maddr`: указывает физический адрес памяти, занятый устройством. +* `flags`: устанавливает различные биты флагов для устройства. +* `disabled`: если установлено в `1`, устройство отключено. -Этот режим может быть также вызван запуском программы man:shutdown[8] без параметров перезагрузки (`-r`) или останова (`-h`) из <<boot-multiuser,многопользовательского режима>>. - -Если режим доступа к системной консоли `console` установлен в файле [.filename]#/etc/ttys# в `insecure`, то система выведет запрос на ввод пароля пользователя `root` перед переходом в однопользовательский режим. - -[[boot-insecure-console]] -.Незащищённая консоль в [.filename]#/etc/ttys# -[example] -==== -[.programlisting] -.... -# name getty type status comments -# -# Если консоль помечена как "insecure", то init будет запрашивать пароль -# пользователя root при переходе в однопользовательский режим. -console none unknown off insecure -.... - -==== - -[NOTE] -==== -Обозначение консоли как `insecure` означает, что вы считаете физический доступ к консоли незащищённым, и хотите, чтобы только тот, кто знает пароль пользователя `root`, мог воспользоваться однопользовательским режимом, но это не значит, что вы хотите работать с консолью небезопасным способом. Таким образом, если вы хотите добиться защищённости, указывайте `insecure`, а не `secure`. -==== - -[[boot-multiuser]] -=== Многопользовательский режим - -Если man:init[8] определит, что ваши файловые системы находятся в полном порядке, или после того, как пользователь выйдет из <<boot-singleuser,однопользовательского режима>>, система перейдет в многопользовательский режим, работа в котором начинается с настройки ресурсов системы. - -[[boot-rc]] -==== Настройка ресурсов (rc) - -Система настройки ресурсов считывает настройки, применяемые по умолчанию, из файла [.filename]#/etc/defaults/rc.conf#, а настройки, специфичные для конкретной системы, из [.filename]#/etc/rc.conf#, после чего осуществляется монтирование файловых систем, перечисленных в файле [.filename]#/etc/fstab#, запуск сетевых служб, различных системных даемонов и, наконец, выполнение скриптов запуска дополнительно установленных пакетов. - -Страница справочника по man:rc[8] является хорошим источником информации о системе настройки ресурсов, так же, как и самостоятельное изучение скриптов. +Поскольку драйверы устройств могут принимать или требовать дополнительные подсказки, не перечисленные здесь, рекомендуется ознакомиться с руководством по конкретному драйверу. Для получения дополнительной информации обратитесь к man:device.hints[5], man:kenv[1], man:loader.conf[5] и man:loader[8]. [[boot-shutdown]] -== Процесс остановки системы +== Последовательность выключения + +При контролируемом завершении работы с помощью man:shutdown[8], man:init[8] попытается выполнить скрипт [.filename]#/etc/rc.shutdown#, а затем отправит всем процессам сигнал `TERM`, и после этого сигнал `KILL` всем процессам, которые не завершатся своевременно. -Во время контролируемого процесса остановки системы через утилиту man:shutdown[8] программа man:init[8] будет пытаться запустить скрипт [.filename]#/etc/rc.shutdown#, после чего будет посылать всем процессам сигнал `TERM`, а затем и `KILL` тем процессам, которые ещё не завершили свою работу. +Для выключения питания машины FreeBSD на архитектурах и системах, поддерживающих управление питанием, используйте `shutdown -p now`, чтобы немедленно отключить питание. Для перезагрузки системы FreeBSD используйте `shutdown -r now`. Для выполнения man:shutdown[8] необходимо быть `root` или членом группы `operator`. Также можно использовать man:halt[8] и man:reboot[8]. Дополнительную информацию см. на их справочных страницах и в man:shutdown[8]. -Для выключения машины с FreeBSD на аппаратных платформах и системах, которые поддерживают управление электропитанием, просто воспользуйтесь командой `shutdown -p now` для немедленного отключения электропитания. Чтобы просто перезагрузить систему FreeBSD, воспользуйтесь командой `shutdown -r now`. Для запуска команды man:shutdown[8] вам необходимо быть пользователем `root` или членом группы `operator`. Кроме того, можно также воспользоваться командами man:halt[8] и man:reboot[8], пожалуйста, обратитесь к соответствующим страницам справки и справочной странице по команде man:shutdown[8] для получения дополнительной информации. +Измените членство в группе, обратившись к разделу crossref:basics[users-synopsis,«Пользователи и основы управления учетными записями»]. [NOTE] ==== -Для управления электропитанием требуется наличие поддержки man:acpi[4] в ядре или в виде загруженного модуля. +Управление питанием требует, чтобы модуль man:acpi[4] был загружен как модуль или статически скомпилирован в собственное ядро. ==== |
