Date: Tue, 18 Nov 2025 18:22:31 +0000 From: Vladlen Popolitov <vladlen@FreeBSD.org> To: doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org Subject: git: 61907dad5d - main - update translation of books/arch-handbook to Russian Reviewed by: andy Differential Revision: https://reviews.freebsd.org/D53717 Message-ID: <691cb967.24319.726f3f1a@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by vladlen: URL: https://cgit.FreeBSD.org/doc/commit/?id=61907dad5dce51a7bd40f8fca0108636fb71707d commit 61907dad5dce51a7bd40f8fca0108636fb71707d Author: Vladlen Popolitov <vladlen@FreeBSD.org> AuthorDate: 2025-11-18 18:22:13 +0000 Commit: Vladlen Popolitov <vladlen@FreeBSD.org> CommitDate: 2025-11-18 18:22:13 +0000 update translation of books/arch-handbook to Russian Reviewed by: andy Differential Revision: https://reviews.freebsd.org/D53717 --- .../content/ru/books/arch-handbook/_index.adoc | 2 +- .../content/ru/books/arch-handbook/_index.po | 16 +- .../content/ru/books/arch-handbook/book.adoc | 2 +- .../content/ru/books/arch-handbook/book.po | 12 +- .../ru/books/arch-handbook/boot/_index.adoc | 12 +- .../content/ru/books/arch-handbook/boot/_index.po | 516 ++++++++++----------- .../books/arch-handbook/driverbasics/_index.adoc | 4 +- .../ru/books/arch-handbook/driverbasics/_index.po | 6 +- .../content/ru/books/arch-handbook/isa/_index.adoc | 6 +- .../content/ru/books/arch-handbook/isa/_index.po | 8 +- .../content/ru/books/arch-handbook/jail/_index.po | 115 +++-- .../content/ru/books/arch-handbook/mac/_index.adoc | 6 +- .../content/ru/books/arch-handbook/mac/_index.po | 12 +- .../ru/books/arch-handbook/scsi/_index.adoc | 8 +- .../content/ru/books/arch-handbook/scsi/_index.po | 10 +- .../content/ru/books/arch-handbook/smp/_index.adoc | 2 +- .../content/ru/books/arch-handbook/smp/_index.po | 6 +- .../ru/books/arch-handbook/sound/_index.adoc | 20 +- .../content/ru/books/arch-handbook/sound/_index.po | 110 +++-- .../content/ru/books/arch-handbook/usb/_index.adoc | 2 +- .../content/ru/books/arch-handbook/usb/_index.po | 81 ++-- 21 files changed, 462 insertions(+), 494 deletions(-) diff --git a/documentation/content/ru/books/arch-handbook/_index.adoc b/documentation/content/ru/books/arch-handbook/_index.adoc index b615f17b1a..9a6e3ea45f 100644 --- a/documentation/content/ru/books/arch-handbook/_index.adoc +++ b/documentation/content/ru/books/arch-handbook/_index.adoc @@ -52,6 +52,6 @@ endif::[] Добро пожаловать в Руководство по архитектуре FreeBSD. Это руководство находится _в стадии разработки_ и создаётся усилиями многих участников. Многие разделы пока не написаны, а существующие могут требовать обновления. Если вы хотите помочь в работе над этим проектом, напишите на электронную почту списка рассылки {freebsd-doc}. -Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/[официально веб-сервере FreeBSD]. Его также можно загрузить в различных форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[сервер загрузок FreeBSD] или одного из многочисленных зеркал extref:{handbook}mirrors/[mirror sites, mirrors]. +Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/[официально веб-сервере FreeBSD]. Его также можно загрузить в различных форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[сервер загрузок FreeBSD] или одного из многочисленных зеркал extref:{handbook}mirrors[mirror sites, mirrors]. ''' diff --git a/documentation/content/ru/books/arch-handbook/_index.po b/documentation/content/ru/books/arch-handbook/_index.po index c3bf8aae62..4e60b24fe0 100644 --- a/documentation/content/ru/books/arch-handbook/_index.po +++ b/documentation/content/ru/books/arch-handbook/_index.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-05-01 19:56-0300\n" -"PO-Revision-Date: 2025-08-16 04:45+0000\n" +"POT-Creation-Date: 2025-11-08 16:17+0000\n" +"PO-Revision-Date: 2025-11-11 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" "documentation/booksarch-handbook_index/ru/>\n" @@ -22,9 +22,7 @@ msgstr "" #: documentation/content/en/books/arch-handbook/_index.adoc:1 #, no-wrap msgid "For FreeBSD system developers. This book covers the architectural details of many important FreeBSD kernel subsystems" -msgstr "" -"Для разработчиков систем FreeBSD. В этой книге рассматриваются архитектурные " -"особенности многих важных подсистем ядра FreeBSD" +msgstr "Для разработчиков систем FreeBSD. В этой книге рассматриваются архитектурные особенности многих важных подсистем ядра FreeBSD" #. type: Title = #: documentation/content/en/books/arch-handbook/_index.adoc:1 @@ -55,17 +53,17 @@ msgstr "" #. type: Plain text #: documentation/content/en/books/arch-handbook/_index.adoc:55 msgid "" -"The latest version of this document is always available from the " -"link:https://www.FreeBSD.org/[FreeBSD World Wide Web server]. It may also be " +"The latest version of this document is always available from the link:" +"https://www.FreeBSD.org/[FreeBSD World Wide Web server]. It may also be " "downloaded in a variety of formats and compression options from the https://" "download.freebsd.org/doc/[FreeBSD download server] or one of the numerous " -"extref:{handbook}[mirror sites, mirrors]." +"extref:{handbook}mirrors[mirror sites, mirrors]." msgstr "" "Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/" "[официальном веб-сервере FreeBSD]. Его также можно загрузить в различных " "форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[" "сервера загрузок FreeBSD] или одного из многочисленных зеркал " -"extref:{handbook}mirrors/[mirror sites, mirrors]." +"extref:{handbook}mirrors[mirror sites, mirrors]." #. type: Plain text #: documentation/content/en/books/arch-handbook/_index.adoc:56 diff --git a/documentation/content/ru/books/arch-handbook/book.adoc b/documentation/content/ru/books/arch-handbook/book.adoc index 4aea684095..6b2eb0a47c 100644 --- a/documentation/content/ru/books/arch-handbook/book.adoc +++ b/documentation/content/ru/books/arch-handbook/book.adoc @@ -50,7 +50,7 @@ endif::[] Добро пожаловать в Руководство по архитектуре FreeBSD. Это руководство находится _в стадии разработки_ и создаётся усилиями многих участников. Многие разделы пока не написаны, а существующие могут требовать обновления. Если вы хотите помочь в работе над этим проектом, напишите на электронную почту списка рассылки {freebsd-doc}. -Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/[официально веб-сервере FreeBSD]. Его также можно загрузить в различных форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[сервер загрузок FreeBSD] или одного из многочисленных зеркал extref:{handbook}mirrors/[mirror sites, mirrors]. +Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/[официально веб-сервере FreeBSD]. Его также можно загрузить в различных форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[сервер загрузок FreeBSD] или одного из многочисленных зеркал extref:{handbook}mirrors[mirror sites, mirrors]. ''' diff --git a/documentation/content/ru/books/arch-handbook/book.po b/documentation/content/ru/books/arch-handbook/book.po index 067584be72..605ee60cd1 100644 --- a/documentation/content/ru/books/arch-handbook/book.po +++ b/documentation/content/ru/books/arch-handbook/book.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2022-07-07 23:22-0300\n" -"PO-Revision-Date: 2025-08-16 04:45+0000\n" +"POT-Creation-Date: 2025-11-08 16:17+0000\n" +"PO-Revision-Date: 2025-11-11 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" "documentation/booksarch-handbookbook/ru/>\n" @@ -22,9 +22,7 @@ msgstr "" #: documentation/content/en/books/arch-handbook/book.adoc:1 #, no-wrap msgid "For FreeBSD system developers. This book covers the architectural details of many important FreeBSD kernel subsystems" -msgstr "" -"Для разработчиков систем FreeBSD. В этой книге рассматриваются архитектурные " -"особенности многих важных подсистем ядра FreeBSD" +msgstr "Для разработчиков систем FreeBSD. В этой книге рассматриваются архитектурные особенности многих важных подсистем ядра FreeBSD" #. type: Title = #: documentation/content/en/books/arch-handbook/book.adoc:1 @@ -59,13 +57,13 @@ msgid "" "https://www.FreeBSD.org/[FreeBSD World Wide Web server]. It may also be " "downloaded in a variety of formats and compression options from the https://" "download.freebsd.org/doc/[FreeBSD download server] or one of the numerous " -"extref:{handbook}[mirror sites, mirrors]." +"extref:{handbook}mirrors[mirror sites, mirrors]." msgstr "" "Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/" "[официальном веб-сервере FreeBSD]. Его также можно загрузить в различных " "форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[" "сервера загрузок FreeBSD] или одного из многочисленных зеркал " -"extref:{handbook}mirrors/[mirror sites, mirrors]." +"extref:{handbook}mirrors[mirror sites, mirrors]." #. type: Plain text #: documentation/content/en/books/arch-handbook/book.adoc:55 diff --git a/documentation/content/ru/books/arch-handbook/boot/_index.adoc b/documentation/content/ru/books/arch-handbook/boot/_index.adoc index f5a67dedba..43dacd74c7 100644 --- a/documentation/content/ru/books/arch-handbook/boot/_index.adoc +++ b/documentation/content/ru/books/arch-handbook/boot/_index.adoc @@ -189,7 +189,7 @@ start: .... .[.filename]#stand/i386/boot0/boot0.S# [[boot-boot0-entrypoint]] -Этот первый блок кода является точкой входа программы. Именно сюда BIOS передаёт управление. Сначала он гарантирует, что строковые операции автоматически увеличивают указатели операндов (инструкция `cld`) footnote:[В случае сомнений мы отсылаем читателя к официальным руководствам Intel, где описана точная семантика каждой инструкции: .]. Затем, не делая предположений о состоянии сегментных регистров, он их инициализирует. Наконец, он устанавливает регистр указателя стека (`%sp`) в ($LOAD = адрес `0x7c00`), чтобы обеспечить работоспособный стек. +Этот первый блок кода является точкой входа программы. Именно сюда BIOS передаёт управление. Сначала он гарантирует, что строковые операции автоматически увеличивают указатели операндов (инструкция `cld`) footnote:[В случае сомнений мы отсылаем читателя к официальным руководствам Intel, где описана точная семантика каждой инструкции.]. Затем, не делая предположений о состоянии сегментных регистров, он их инициализирует. Наконец, он устанавливает регистр указателя стека (`%sp`) в ($LOAD = адрес `0x7c00`), чтобы обеспечить работоспособный стек. Следующий блок отвечает за перемещение и последующий переход к перемещенному коду. @@ -368,7 +368,7 @@ read_key: * BIOS выполнил первоначальную инициализацию оборудования, включая POST. MBR ([.filename]#boot0#) был загружен по адресу `0x7c00` из абсолютного сектора один с диска. Управление выполнением было передано по этому адресу. * [.filename]#boot0# переместил себя по адресу, по которому он был скомпонован для выполнения (`0x600`), после чего выполнил переход для продолжения выполнения в соответствующем месте. В завершение, [.filename]#boot0# загрузил первый сектор диска из раздела FreeBSD по адресу `0x7c00`. Управление выполнением было передано по этому адресу. -[.filename]#boot1# — это следующий шаг в последовательности загрузки. Это первая из трех стадий загрузки. Обратите внимание, что до сих пор мы работали исключительно с секторами диска. Действительно, BIOS загружает самый первый сектор, а [.filename]#boot0# загружает первый сектор раздела FreeBSD. Обе загрузки происходят по адресу `0x7c00`. Мы можем концептуально представлять эти секторы диска как содержащие файлы [.filename]#boot0# и [.filename]#boot1#, соответственно, но на самом деле это не совсем верно для [.filename]#boot1#. Строго говоря, в отличие от [.filename]#boot0#, [.filename]#boot1# не являет ся частью загрузочных блоков footnote:[Файл /boot/boot1 существует, но он не записывается в начало раздела FreeBSD. Вместо этого он объединяется с boot2, формируя файл boot, который записывается в начало раздела FreeBSD и считывается во время загрузки.]. Вместо этого, единый полноценный файл [.filename]#boot# ([.filename]#/boot/boot#) в итоге записывается на диск. Этот файл представляет собой комбинацию [.filename]#boot1#, [.filename]#boot2# и `Boot Extender` (или BTX). Этот единый файл превышает размер одного сектора (больше 512 байт). К счастью, [.filename]#boot1# занимает _ровно_ первые 512 байт этого файла, поэтом , когда [.filename]#boot0# загружает первый сектор раздела FreeBSD (512 байт), он фактически загружает [.filename]#boot1# и передает ему управление. +[.filename]#boot1# — это следующий шаг в последовательности загрузки. Это первая из трех стадий загрузки. Обратите внимание, что до сих пор мы работали исключительно с секторами диска. Действительно, BIOS загружает самый первый сектор, а [.filename]#boot0# загружает первый сектор раздела FreeBSD. Обе загрузки происходят по адресу `0x7c00`. Мы можем концептуально представлять эти секторы диска как содержащие файлы [.filename]#boot0# и [.filename]#boot1#, соответственно, но на самом деле это не совсем верно для [.filename]#boot1#. Строго говоря, в отличие от [.filename]#boot0#, [.filename]#boot1# не являет ся частью загрузочных блоков footnote:[Файл /boot/boot1 существует, но он не записывается в начало раздела FreeBSD. Вместо этого он объединяется с boot2, формируя файл boot, который записывается в начало раздела FreeBSD и считывается во время загрузки.]. Вместо этого, единый полноценный файл [.filename]#boot# ([.filename]#/boot/boot#) в итоге записывается на диск. Этот файл представляет собой комбинацию [.filename]#boot1#, [.filename]#boot2# и `Boot Extender` (или BTX). Этот единый файл превышает размер одного сектора (больше 512 байт). К счастью, [.filename]#boot1# занимает _ровно_ первые 512 байт этого файла, поэтом , когда [.filename]#boot0# загружает первый сектор раздела FreeBSD (512 байт), он фактически загружает [.filename]#boot1# и передаёт ему управление. Основная задача [.filename]#boot1# — загрузить следующий этап загрузки. Этот следующий этап несколько сложнее. Он состоит из сервера под названием "Boot Extender" (BTX) и клиента под названием [.filename]#boot2#. Как мы увидим, последний этап загрузки, [.filename]#loader#, также является клиентом сервера BTX. @@ -528,7 +528,7 @@ main.5: Начиная с адреса `0x9000` находится начало сервера BTX, и сразу за ним следует клиент [.filename]#boot2#. Сервер BTX действует как ядро и выполняется в защищённом режиме с наивысшим уровнем привилегий. В отличие от этого, клиенты BTX (например, [.filename]#boot2#) выполняются в пользовательском режиме. Мы увидим, как это реализовано, в следующем разделе. Код после вызова `nread` находит начало [.filename]#boot2# в буфере памяти и копирует его по адресу `0xc000`. Это связано с тем, что сервер BTX размещает [.filename]#boot2# для выполнения в сегменте, начинающемся с `0xa000`. Мы подробно рассмо рим это в следующем разделе. -Последний блок кода в [.filename]#boot1# разрешает доступ к памяти выше 1MB footnote:[Это необходимо по историческим причинам. Заинтересованные читатели могут обратиться к .] и завершается переходом к начальной точке сервера BTX: +Последний блок кода в [.filename]#boot1# разрешает доступ к памяти выше 1MB footnote:[Это необходимо по историческим причинам.] и завершается переходом к начальной точке сервера BTX: [.programlisting] .... @@ -851,7 +851,7 @@ init.9: push $0x0 # general [[boot2]] == Этап загрузки boot2 -`boot2` определяет важную структуру, `struct bootinfo`. Эта структура инициализируется `boot2` и передается загрузчику, а затем ядру. Некоторые узлы этой структуры устанавливаются `boot2`, остальные — загрузчиком. Эта структура, среди прочей информации, содержит имя файла ядра, геометрию жесткого диска в BIOS, номер диска в BIOS для загрузочного устройства, доступную физическую память, указатель `envp` и т.д. Ее определение выглядит так: +`boot2` определяет важную структуру, `struct bootinfo`. Эта структура инициализируется `boot2` и передаётся загрузчику, а затем ядру. Некоторые узлы этой структуры устанавливаются `boot2`, остальные — загрузчиком. Эта структура, среди прочей информации, содержит имя файла ядра, геометрию жесткого диска в BIOS, номер диска в BIOS для загрузочного устройства, доступную физическую память, указатель `envp` и т.д. Ее определение выглядит так: [.programlisting] .... @@ -906,7 +906,7 @@ stand/common/boot.c: [[boot-kernel]] == Инициализация ядра -Давайте рассмотрим команду, которая компонует ядро. Это поможет определить точное местоположение, где загрузчик передает выполнение ядру. Это местоположение является фактической точкой входа ядра. Данная команда теперь исключена из [.filename]#sys/conf/Makefile.i386#. Интересующее нас содержимое можно найти в [.filename]#/usr/obj/usr/src/i386.i386/sys/GENERIC/#. +Давайте рассмотрим команду, которая компонует ядро. Это поможет определить точное местоположение, где загрузчик передаёт выполнение ядру. Это местоположение является фактической точкой входа ядра. Данная команда теперь исключена из [.filename]#sys/conf/Makefile.i386#. Интересующее нас содержимое можно найти в [.filename]#/usr/obj/usr/src/i386.i386/sys/GENERIC/#. [.programlisting] .... @@ -1193,7 +1193,7 @@ sys/kern/init_main.c: } .... -Хотя фреймворк sysinit описан в link:/books/developers-handbook[Руководстве разработчика], я рассмотрю его внутреннее устройство. +Хотя фреймворк sysinit описан в extref:{developers-handbook}[Руководстве разработчика], я рассмотрю его внутреннее устройство. Каждый объект инициализации системы (объект sysinit) создается путем вызова макроса SYSINIT(). Возьмем, к примеру, объект sysinit `announce`. Этот объект выводит сообщение об авторских правах: diff --git a/documentation/content/ru/books/arch-handbook/boot/_index.po b/documentation/content/ru/books/arch-handbook/boot/_index.po index f013cc2bb5..863c740fc1 100644 --- a/documentation/content/ru/books/arch-handbook/boot/_index.po +++ b/documentation/content/ru/books/arch-handbook/boot/_index.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-05-01 19:56-0300\n" -"PO-Revision-Date: 2025-07-02 04:45+0000\n" +"POT-Creation-Date: 2025-11-08 16:17+0000\n" +"PO-Revision-Date: 2025-11-12 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" "documentation/booksarch-handbookboot_index/ru/>\n" @@ -92,8 +92,8 @@ msgid "" "allows the HOST OS to communicate details about what to boot that go beyond " "a simple partition as was possible in the past. But UEFI is more relevant " "than the CSM these days. The example that follows shows booting an x86 " -"computer from an MBR-partitioned hard drive with the FreeBSD " -"[.filename]#boot0# multi-boot loader stored in the very first sector. That " +"computer from an MBR-partitioned hard drive with the FreeBSD [." +"filename]#boot0# multi-boot loader stored in the very first sector. That " "boot code starts the FreeBSD three-stage boot process." msgstr "" "Процесс загрузки — это операция, крайне зависимая от оборудования. Не только " @@ -101,9 +101,9 @@ msgstr "" "существовать различные типы загрузки в рамках одной архитектуры. Например, " "список файлов в каталоге [.filename]#stand# показывает большое количество " "кода, зависящего от архитектуры. Для каждой из поддерживаемых архитектур " -"существует отдельный каталог. FreeBSD поддерживает стандарт загрузки CSM (" -"Compatibility Support Module). Таким образом, CSM поддерживается (как с GPT, " -"так и с MBR разметкой), а также загрузка через UEFI (GPT полностью " +"существует отдельный каталог. FreeBSD поддерживает стандарт загрузки CSM " +"(Compatibility Support Module). Таким образом, CSM поддерживается (как с " +"GPT, так и с MBR разметкой), а также загрузка через UEFI (GPT полностью " "поддерживается, MBR — в основном). Также поддерживается загрузка файлов с " "ext2fs, MSDOS, UFS и ZFS. FreeBSD поддерживает функцию загрузочного " "окружения ZFS, которая позволяет основной ОС передавать детали о том, что " @@ -117,8 +117,8 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:82 msgid "" "The key to understanding this process is that it is a series of stages of " -"increasing complexity. These stages are [.filename]#boot1#, " -"[.filename]#boot2#, and [.filename]#loader# (see man:boot[8] for more " +"increasing complexity. These stages are [.filename]#boot1#, [." +"filename]#boot2#, and [.filename]#loader# (see man:boot[8] for more " "detail). The boot system executes each stage in sequence. The last stage, " "[.filename]#loader#, is responsible for loading the FreeBSD kernel. Each " "stage is examined in the following sections." @@ -179,9 +179,7 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:104 #, no-wrap msgid "`boot2` footnote:[This prompt will appear if the user presses a key just after selecting an OS to boot at the boot0 stage.]" -msgstr "" -"`boot2` footnote:[Это приглашение появится, если пользователь нажмет клавишу " -"сразу после выбора ОС для загрузки на этапе boot0.]" +msgstr "`boot2` footnote:[Это приглашение появится, если пользователь нажмет клавишу сразу после выбора ОС для загрузки на этапе boot0.]" #. type: Table #: documentation/content/en/books/arch-handbook/boot/_index.adoc:113 @@ -236,8 +234,7 @@ msgstr "" "Console internal video/keyboard\n" "(root@releng1.nyi.freebsd.org, Fri Apr 9 04:04:45 UTC 2021)\n" "Loading /boot/defaults/loader.conf\n" -"/boot/kernel/kernel text=0xed9008 data=0x117d28+0x176650 " -"syms=[0x8+0x137988+0x8+0x1515f8]\n" +"/boot/kernel/kernel text=0xed9008 data=0x117d28+0x176650 syms=[0x8+0x137988+0x8+0x1515f8]\n" "...." #. type: Table @@ -267,12 +264,9 @@ msgstr "" "Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994\n" " The Regents of the University of California. All rights reserved.\n" "FreeBSD is a registered trademark of The FreeBSD Foundation.\n" -"FreeBSD 13.0-RELEASE 0 releng/13.0-n244733-ea31abc261f: Fri Apr 9 04:04:45 " -"UTC 2021\n" -" root@releng1.nyi.freebsd.org:/usr/obj/usr/src/i386.i386/sys/GENERIC " -"i386\n" -"FreeBSD clang version 11.0.1 (git@github.com:llvm/llvm-project.git llvmorg-11" -".0.1-0-g43ff75f2c3fe)\n" +"FreeBSD 13.0-RELEASE 0 releng/13.0-n244733-ea31abc261f: Fri Apr 9 04:04:45 UTC 2021\n" +" root@releng1.nyi.freebsd.org:/usr/obj/usr/src/i386.i386/sys/GENERIC i386\n" +"FreeBSD clang version 11.0.1 (git@github.com:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe)\n" "...." #. type: Title == @@ -305,8 +299,8 @@ msgstr "" "битное значение `0xfffffff0`. Регистр указателя команд (также известный как " "Счётчик Команд) указывает на код, который должен быть выполнен процессором. " "Ещё один важный регистр — это 32-битный управляющий регистр `cr0`, и его " -"значение сразу после перезагрузки равно `0`. Один из битов ``cr0``, бит PE (" -"Protection Enabled, Защита Включена), указывает, работает ли процессор в 32-" +"значение сразу после перезагрузки равно `0`. Один из битов ``cr0``, бит PE " +"(Protection Enabled, Защита Включена), указывает, работает ли процессор в 32-" "битном защищённом режиме или 16-битном реальном режиме. Поскольку этот бит " "сброшен при загрузке, процессор запускается в 16-битном реальном режиме. " "Реальный режим означает, среди прочего, что линейные и физические адреса " @@ -339,9 +333,9 @@ msgid "" "jump instruction to the BIOS's POST routines." msgstr "" "BIOS (Basic Input Output System) — это микросхема на материнской плате, " -"которая содержит относительно небольшой объем памяти только для чтения (ROM)" -". Эта память включает различные низкоуровневые процедуры, специфичные для " -"оборудования, поставляемого с материнской платой. Процессор сначала " +"которая содержит относительно небольшой объем памяти только для чтения " +"(ROM). Эта память включает различные низкоуровневые процедуры, специфичные " +"для оборудования, поставляемого с материнской платой. Процессор сначала " "переходит по адресу 0xfffffff0, который фактически находится в памяти BIOS. " "Обычно по этому адресу содержится инструкция перехода к процедурам POST BIOS." @@ -376,15 +370,15 @@ msgid "" "MBR, or Master Boot Record. The remaining sectors on the first track are " "never used." msgstr "" -"Самым последним действием в POST является инструкция `INT 0x19`. Обработчик `" -"INT 0x19` считывает 512 байт из первого сектора загрузочного устройства в " +"Самым последним действием в POST является инструкция `INT 0x19`. Обработчик " +"`INT 0x19` считывает 512 байт из первого сектора загрузочного устройства в " "память по адресу `0x7c00`. Термин _первый сектор_ происходит из архитектуры " "жёстких дисков, где магнитная пластина разделена на множество цилиндрических " "дорожек. Дорожки нумеруются, и каждая дорожка разделена на несколько (обычно " "64) секторов. Нумерация дорожек начинается с 0, но нумерация секторов " "начинается с 1. Дорожка 0 находится на внешней стороне магнитной пластины, а " -"сектор 1, первый сектор, имеет особое назначение. Он также называется MBR (" -"Master Boot Record) или Главная Загрузочная Запись. Остальные секторы на " +"сектор 1, первый сектор, имеет особое назначение. Он также называется MBR " +"(Master Boot Record) или Главная Загрузочная Запись. Остальные секторы на " "первой дорожке не используются." #. type: Plain text @@ -407,17 +401,17 @@ msgstr "Главная загрузочная запись (`boot0`)" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:194 msgid "" -"After control is received from the BIOS at memory address `0x7c00`, " -"[.filename]#boot0# starts executing. It is the first piece of code under " +"After control is received from the BIOS at memory address `0x7c00`, [." +"filename]#boot0# starts executing. It is the first piece of code under " "FreeBSD control. The task of [.filename]#boot0# is quite simple: scan the " "partition table and let the user choose which partition to boot from. The " "Partition Table is a special, standard data structure embedded in the MBR " "(hence embedded in [.filename]#boot0#) describing the four standard PC " -"\"partitions\". [.filename]#boot0# resides in the filesystem as " -"[.filename]#/boot/boot0#. It is a small 512-byte file, and it is exactly " -"what FreeBSD's installation procedure wrote to the hard disk's MBR if you " -"chose the \"bootmanager\" option at installation time. Indeed, " -"[.filename]#boot0# _is_ the MBR." +"\"partitions\". [.filename]#boot0# resides in the filesystem as [." +"filename]#/boot/boot0#. It is a small 512-byte file, and it is exactly what " +"FreeBSD's installation procedure wrote to the hard disk's MBR if you chose " +"the \"bootmanager\" option at installation time. Indeed, [.filename]#boot0# " +"_is_ the MBR." msgstr "" "После получения управления от BIOS по адресу памяти `0x7c00` начинает " "выполняться [.filename]#boot0#. Это первый код, который управляется FreeBSD. " @@ -435,8 +429,8 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:197 msgid "" "As mentioned previously, we're calling the BIOS `INT 0x19` to load the MBR " -"([.filename]#boot0#) into memory at address `0x7c00`. The source file for " -"[.filename]#boot0# can be found in [.filename]#stand/i386/boot0/boot0.S# - " +"([.filename]#boot0#) into memory at address `0x7c00`. The source file for [." +"filename]#boot0# can be found in [.filename]#stand/i386/boot0/boot0.S# - " "which is an awesome piece of code written by Robert Nordier." msgstr "" "Как упоминалось ранее, мы вызываем прерывание BIOS `INT 0x19` для загрузки " @@ -451,8 +445,8 @@ msgid "" "_partition table_. It has four records of 16 bytes each, called _partition " "records_, which represent how the hard disk is partitioned, or, in FreeBSD's " "terminology, sliced. One byte of those 16 says whether a partition (slice) " -"is bootable or not. Exactly one record must have that flag set, otherwise " -"[.filename]#boot0#'s code will refuse to proceed." +"is bootable or not. Exactly one record must have that flag set, otherwise [." +"filename]#boot0#'s code will refuse to proceed." msgstr "" "Особая структура, начинающаяся со смещения `0x1be` в MBR, называется " "_таблицей разделов_. Она содержит четыре записи по 16 байт каждая, " @@ -545,26 +539,26 @@ msgstr "" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:230 msgid "" -"It is worth looking at the [.filename]#Makefile# for [.filename]#boot0# " -"([.filename]#stand/i386/boot0/Makefile#), as it defines some of the run-time " +"It is worth looking at the [.filename]#Makefile# for [.filename]#boot0# ([." +"filename]#stand/i386/boot0/Makefile#), as it defines some of the run-time " "behavior of [.filename]#boot0#. For instance, if a terminal connected to " "the serial port (COM1) is used for I/O, the macro `SIO` must be defined (`-" "DSIO`). `-DPXE` enables boot through PXE by pressing kbd:[F6]. " "Additionally, the program defines a set of _flags_ that allow further " -"modification of its behavior. All of this is illustrated in the " -"[.filename]#Makefile#. For example, look at the linker directives which " +"modification of its behavior. All of this is illustrated in the [." +"filename]#Makefile#. For example, look at the linker directives which " "command the linker to start the text section at address `0x600`, and to " "build the output file \"as is\" (strip out any file formatting):" msgstr "" -"Стоит взглянуть на [.filename]#Makefile# для [.filename]#boot0# ([.filename]#" -"stand/i386/boot0/Makefile#), так как он определяет некоторые аспекты " -"поведения [.filename]#boot0# во время выполнения. Например, если для ввода-" -"вывода используется терминал, подключённый к последовательному порту (COM1), " -"необходимо определить макрос `SIO` (`-DSIO`). `-DPXE` включает загрузку " -"через PXE при нажатии kbd:[F6]. Кроме того, программа определяет набор " -"_флагов_, которые позволяют дополнительно настроить её поведение. Всё это " -"проиллюстрировано в [.filename]#Makefile#. Например, обратите внимание на " -"директивы компоновщика, которые предписывают ему начинать секцию текста с " +"Стоит взглянуть на [.filename]#Makefile# для [.filename]#boot0# ([." +"filename]#stand/i386/boot0/Makefile#), так как он определяет некоторые " +"аспекты поведения [.filename]#boot0# во время выполнения. Например, если для " +"ввода-вывода используется терминал, подключённый к последовательному порту " +"(COM1), необходимо определить макрос `SIO` (`-DSIO`). `-DPXE` включает " +"загрузку через PXE при нажатии kbd:[F6]. Кроме того, программа определяет " +"набор _флагов_, которые позволяют дополнительно настроить её поведение. Всё " +"это проиллюстрировано в [.filename]#Makefile#. Например, обратите внимание " +"на директивы компоновщика, которые предписывают ему начинать секцию текста с " "адреса `0x600` и создавать выходной файл \"как есть\" (удаляя любое " "форматирование файла):" @@ -638,7 +632,7 @@ msgid "" "BIOS transfers control. First, it makes sure that the string operations " "autoincrement its pointer operands (the `cld` instruction) footnote:[When in " "doubt, we refer the reader to the official Intel manuals, which describe the " -"exact semantics for each instruction: .]. Then, as it makes no assumption " +"exact semantics for each instruction.]. Then, as it makes no assumption " "about the state of the segment registers, it initializes them. Finally, it " "sets the stack pointer register (`%sp`) to ($LOAD = address `0x7c00`), so we " "have a working stack." @@ -647,10 +641,10 @@ msgstr "" "передаёт управление. Сначала он гарантирует, что строковые операции " "автоматически увеличивают указатели операндов (инструкция `cld`) footnote:[В " "случае сомнений мы отсылаем читателя к официальным руководствам Intel, где " -"описана точная семантика каждой инструкции: .]. Затем, не делая " -"предположений о состоянии сегментных регистров, он их инициализирует. " -"Наконец, он устанавливает регистр указателя стека (`%sp`) в ($LOAD = адрес " -"`0x7c00`), чтобы обеспечить работоспособный стек." +"описана точная семантика каждой инструкции.]. Затем, не делая предположений " +"о состоянии сегментных регистров, он их инициализирует. Наконец, он " +"устанавливает регистр указателя стека (`%sp`) в ($LOAD = адрес `0x7c00`), " +"чтобы обеспечить работоспособный стек." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:266 @@ -701,12 +695,12 @@ msgid "" "As [.filename]#boot0# is loaded by the BIOS to address `0x7C00`, it copies " "itself to address `0x600` and then transfers control there (recall that it " "was linked to execute at address `0x600`). The source address, `0x7c00`, is " -"copied to register `%si`. The destination address, `0x600`, to register " -"`%di`. The number of words to copy, `256` (the program's size = 512 bytes), " +"copied to register `%si`. The destination address, `0x600`, to register `" +"%di`. The number of words to copy, `256` (the program's size = 512 bytes), " "is copied to register `%cx`. Next, the `rep` instruction repeats the " "instruction that follows, that is, `movsw`, the number of times dictated by " -"the `%cx` register. The `movsw` instruction copies the word pointed to by " -"`%si` to the address pointed to by `%di`. This is repeated another 255 " +"the `%cx` register. The `movsw` instruction copies the word pointed to by `" +"%si` to the address pointed to by `%di`. This is repeated another 255 " "times. On each repetition, both the source and destination registers, `%si` " "and `%di`, are incremented by one. Thus, upon completion of the 256-word " "(512-byte) copy, `%di` has the value `0x600`+`512`= `0x800`, and `%si` has " @@ -726,11 +720,11 @@ msgstr "" "который указывает `%di`. Это повторяется ещё 255 раз. При каждом повторении " "оба регистра, исходный и конечный, `%si` и `%di`, увеличиваются на единицу. " "Таким образом, по завершении копирования 256 слов (512 байт), `%di` имеет " -"значение `0x600`+`512`= `0x800`, а `%si` — значение `0x7c00`+`512`= `0x7e00`;" -" таким образом, мы завершили _перемещение_ кода. С момента последнего " -"обновления этого документа инструкции копирования в коде изменились, поэтому " -"вместо movsb и stosb были введены movsw и stosw, которые копируют 2 байта (1 " -"слово) за одну итерацию." +"значение `0x600`+`512`= `0x800`, а `%si` — значение `0x7c00`+`512`= " +"`0x7e00`; таким образом, мы завершили _перемещение_ кода. С момента " +"последнего обновления этого документа инструкции копирования в коде " +"изменились, поэтому вместо movsb и stosb были введены movsw и stosw, которые " +"копируют 2 байта (1 слово) за одну итерацию." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:304 @@ -806,8 +800,8 @@ msgid "" "This code tests the `SETDRV` bit (`0x20`) in the _flags_ variable. Recall " "that register `%bp` points to address location `0x800`, so the test is done " "to the _flags_ variable at address `0x800`-`69`= `0x7bb`. This is an " -"example of the type of modifications that can be done to " -"[.filename]#boot0#. The `SETDRV` flag is not set by default, but it can be " +"example of the type of modifications that can be done to [." +"filename]#boot0#. The `SETDRV` flag is not set by default, but it can be " "set in the [.filename]#Makefile#. When set, the drive number stored in the " "MBR is used instead of the one provided by the BIOS. We assume the " "defaults, and that the BIOS provided a valid drive number, so we jump to " @@ -828,8 +822,8 @@ msgid "" "The next block saves the drive number provided by the BIOS, and calls `putn` " "to print a new line on the screen." msgstr "" -"Следующий блок сохраняет номер диска, предоставленный BIOS, и вызывает `putn`" -" для вывода новой строки на экран." +"Следующий блок сохраняет номер диска, предоставленный BIOS, и вызывает " +"`putn` для вывода новой строки на экран." #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:341 @@ -885,8 +879,8 @@ msgstr "" "выводит на экран тип раздела для каждой из четырёх записей в таблице " "разделов. Каждый тип сравнивается со списком известных файловых систем " "операционных систем. Примерами распознаваемых типов разделов являются NTFS " -"(Windows(R), ID 0x7), `ext2fs` (Linux(R), ID 0x83) и, конечно же, " -"`ffs`/`ufs2` (FreeBSD, ID 0xa5). Реализация довольно проста." +"(Windows(R), ID 0x7), `ext2fs` (Linux(R), ID 0x83) и, конечно же, `ffs`/" +"`ufs2` (FreeBSD, ID 0xa5). Реализация довольно проста." #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:356 @@ -958,8 +952,8 @@ msgstr "[.filename]#stand/i386/boot0/boot0.S# [[boot-boot0-partition-scan]]" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:383 msgid "" "It is important to note that the active flag for each entry is cleared, so " -"after the scanning, _no_ partition entry is active in our memory copy of " -"[.filename]#boot0#. Later, the active flag will be set for the selected " +"after the scanning, _no_ partition entry is active in our memory copy of [." +"filename]#boot0#. Later, the active flag will be set for the selected " "partition. This ensures that only one active partition exists if the user " "chooses to write the changes back to disk." msgstr "" @@ -1105,27 +1099,27 @@ msgstr "[.filename]#stand/i386/boot0/boot0.S# [[boot-boot0-start-input]]" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:449 msgid "" -"An interrupt is requested with number `0x1a` and argument `0` in register " -"`%ah`. The BIOS has a predefined set of services, requested by applications " +"An interrupt is requested with number `0x1a` and argument `0` in register `" +"%ah`. The BIOS has a predefined set of services, requested by applications " "as software-generated interrupts through the `int` instruction and receiving " "arguments in registers (in this case, `%ah`). Here, particularly, we are " "requesting the number of clock ticks since last midnight; this value is " "computed by the BIOS through the RTC (Real Time Clock). This clock can be " "programmed to work at frequencies ranging from 2 Hz to 8192 Hz. The BIOS " "sets it to 18.2 Hz at startup. When the request is satisfied, a 32-bit " -"result is returned by the BIOS in registers `%cx` and `%dx` (lower bytes in " -"`%dx`). This result (the `%dx` part) is copied to register `%di`, and the " -"value of the `TICKS` variable is added to `%di`. This variable resides in " -"[.filename]#boot0# at offset `_TICKS` (a negative value) from register `%bp` " +"result is returned by the BIOS in registers `%cx` and `%dx` (lower bytes in `" +"%dx`). This result (the `%dx` part) is copied to register `%di`, and the " +"value of the `TICKS` variable is added to `%di`. This variable resides in [." +"filename]#boot0# at offset `_TICKS` (a negative value) from register `%bp` " "(which, recall, points to `0x800`). The default value of this variable is " "`0xb6` (182 in decimal). Now, the idea is that [.filename]#boot0# " "constantly requests the time from the BIOS, and when the value returned in " "register `%dx` is greater than the value stored in `%di`, the time is up and " "the default selection will be made. Since the RTC ticks 18.2 times per " "second, this condition will be met after 10 seconds (this default behavior " -"can be changed in the [.filename]#Makefile#). Until this time has passed, " -"[.filename]#boot0# continually asks the BIOS for any user input; this is " -"done through `int 0x16`, argument `1` in `%ah`." +"can be changed in the [.filename]#Makefile#). Until this time has passed, [." +"filename]#boot0# continually asks the BIOS for any user input; this is done " +"through `int 0x16`, argument `1` in `%ah`." msgstr "" "Прерывание запрашивается с номером `0x1a` и аргументом `0` в регистре `%ah`. " "BIOS имеет предопределённый набор сервисов, запрашиваемых приложениями как " @@ -1135,18 +1129,18 @@ msgstr "" "значение вычисляется BIOS через RTC (Real Time Clock). Эти часы могут быть " "настроены на работу с частотой от 2 Гц до 8192 Гц. BIOS устанавливает их на " "18,2 Гц при запуске. Когда запрос выполнен, 32-битный результат возвращается " -"BIOS в регистрах `%cx` и `%dx` (младшие байты в `%dx`). Этот результат (" -"часть `%dx`) копируется в регистр `%di`, и к `%di` добавляется значение " +"BIOS в регистрах `%cx` и `%dx` (младшие байты в `%dx`). Этот результат " +"(часть `%dx`) копируется в регистр `%di`, и к `%di` добавляется значение " "переменной `TICKS`. Эта переменная находится в [.filename]#boot0# по " "смещению `_TICKS` (отрицательное значение) от регистра `%bp` (который, " "напомним, указывает на `0x800`). Значение этой переменной по умолчанию — " "`0xb6` (182 в десятичной системе). Идея заключается в том, что [." "filename]#boot0# постоянно запрашивает время у BIOS, и когда значение, " -"возвращённое в регистре `%dx`, становится больше значения, хранящегося в " -"`%di`, время истекает и будет сделан выбор по умолчанию. Поскольку RTC " -"тикает 18,2 раза в секунду, это условие выполнится через 10 секунд (это " -"поведение по умолчанию можно изменить в [.filename]#Makefile#). До истечения " -"этого времени [.filename]#boot0# непрерывно опрашивает BIOS на предмет ввода " +"возвращённое в регистре `%dx`, становится больше значения, хранящегося в `" +"%di`, время истекает и будет сделан выбор по умолчанию. Поскольку RTC тикает " +"18,2 раза в секунду, это условие выполнится через 10 секунд (это поведение " +"по умолчанию можно изменить в [.filename]#Makefile#). До истечения этого " +"времени [.filename]#boot0# непрерывно опрашивает BIOS на предмет ввода " "пользователя; это делается через `int 0x16`, аргумент `1` в `%ah`." #. type: Plain text @@ -1246,8 +1240,8 @@ msgstr "" "первого сектора слайса FreeBSD выполняется вызовом `intx13`. Мы " "предполагаем, что всё прошло успешно, поэтому переход к `beep` не " "выполняется. В частности, новый прочитанный сектор должен заканчиваться " -"магической последовательностью `0xaa55`. Наконец, значение в `%si` (" -"указатель на выбранную таблицу разделов) сохраняется для использования на " +"магической последовательностью `0xaa55`. Наконец, значение в `%si` " +"(указатель на выбранную таблицу разделов) сохраняется для использования на " "следующем этапе, и выполняется переход по адресу `0x7c00`, где начинается " "выполнение нашего следующего этапа (только что прочитанного блока)." @@ -1269,8 +1263,8 @@ msgid "" "MBR ([.filename]#boot0#) was loaded from absolute disk sector one to address " "`0x7c00`. Execution control was passed to that location." msgstr "" -"BIOS выполнил первоначальную инициализацию оборудования, включая POST. MBR ([" -".filename]#boot0#) был загружен по адресу `0x7c00` из абсолютного сектора " +"BIOS выполнил первоначальную инициализацию оборудования, включая POST. MBR " +"([.filename]#boot0#) был загружен по адресу `0x7c00` из абсолютного сектора " "один с диска. Управление выполнением было передано по этому адресу." #. type: Plain text @@ -1293,13 +1287,13 @@ msgstr "" msgid "" "[.filename]#boot1# is the next step in the boot-loading sequence. It is the " "first of three boot stages. Note that we have been dealing exclusively with " -"disk sectors. Indeed, the BIOS loads the absolute first sector, while " -"[.filename]#boot0# loads the first sector of the FreeBSD slice. Both loads " +"disk sectors. Indeed, the BIOS loads the absolute first sector, while [." +"filename]#boot0# loads the first sector of the FreeBSD slice. Both loads " "are to address `0x7c00`. We can conceptually think of these disk sectors as " "containing the files [.filename]#boot0# and [.filename]#boot1#, " -"respectively, but in reality this is not entirely true for " -"[.filename]#boot1#. Strictly speaking, unlike [.filename]#boot0#, " -"[.filename]#boot1# is not part of the boot blocks footnote:[There is a file /" +"respectively, but in reality this is not entirely true for [." +"filename]#boot1#. Strictly speaking, unlike [.filename]#boot0#, [." +"filename]#boot1# is not part of the boot blocks footnote:[There is a file /" "boot/boot1, but it is not the written to the beginning of the FreeBSD " "slice. Instead, it is concatenated with boot2 to form boot, which is " "written to the beginning of the FreeBSD slice and read at boot time.]. " @@ -1330,7 +1324,7 @@ msgstr "" "единый файл превышает размер одного сектора (больше 512 байт). К счастью, [." "filename]#boot1# занимает _ровно_ первые 512 байт этого файла, поэтому, " "когда [.filename]#boot0# загружает первый сектор раздела FreeBSD (512 байт), " -"он фактически загружает [.filename]#boot1# и передает ему управление." +"он фактически загружает [.filename]#boot1# и передаёт ему управление." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:518 @@ -1435,8 +1429,8 @@ msgstr "" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:556 msgid "" -"Next comes a loop that looks for the FreeBSD slice. Although " -"[.filename]#boot0# loaded [.filename]#boot1# from the FreeBSD slice, no " +"Next comes a loop that looks for the FreeBSD slice. Although [." +"filename]#boot0# loaded [.filename]#boot1# from the FreeBSD slice, no " "information was passed to it about this footnote:[Actually we did pass a " "pointer to the slice entry in register %si. However, boot1 does not assume " "that it was loaded by boot0 (perhaps some other MBR loaded it, and did not " @@ -1482,8 +1476,8 @@ msgid "" "device. This is passed on by the BIOS and preserved by the MBR. Numbers " "`0x80` and greater tells us that we are dealing with a hard drive, so a call " "is made to `nread`, where the MBR is read. Arguments to `nread` are passed " -"through `%si` and `%dh`. The memory address at label `part4` is copied to " -"`%si`. This memory address holds a \"fake partition\" to be used by " +"through `%si` and `%dh`. The memory address at label `part4` is copied to `" +"%si`. This memory address holds a \"fake partition\" to be used by " "`nread`. The following is the data in the fake partition:" msgstr "" "В приведённом выше коде регистр `%dl` содержит информацию о загрузочном " @@ -1514,8 +1508,7 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:584 #, no-wrap msgid "[.filename]#stand/i386/boot2/boot1.S# [[boot-boot2-make-fake-partition]]" -msgstr "" -"[.filename]#stand/i386/boot2/boot1.S# [[boot-boot2-make-fake-partition]]" +msgstr "[.filename]#stand/i386/boot2/boot1.S# [[boot-boot2-make-fake-partition]]" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:589 @@ -1577,8 +1570,8 @@ msgid "" "also uses `xread.1`. This mechanism will be discussed in the next section." msgstr "" "Напомним, что `%si` указывает на поддельный раздел. Слово footnote:[В " -"контексте 16-битного реального режима слово — это 2 байта.] по смещению `0x8`" -" копируется в регистр `%ax`, а слово по смещению `0xa` — в `%cx`. BIOS " +"контексте 16-битного реального режима слово — это 2 байта.] по смещению " +"`0x8` копируется в регистр `%ax`, а слово по смещению `0xa` — в `%cx`. BIOS " "интерпретирует их как младшее 4-байтовое значение, обозначающее LBA для " "чтения (старшие четыре байта предполагаются нулевыми). Регистр `%bx` " "содержит адрес памяти, куда будет загружен MBR. Инструкция, помещающая `%cs` " @@ -1757,10 +1750,10 @@ msgid "" "in the MBR partition table, so a call to `nread` will effectively read " "sectors at the beginning of this partition. The argument passed on register " "`%dh` tells `nread` to read 16 disk sectors. Recall that the first 512 " -"bytes, or the first sector of the FreeBSD slice, coincides with the " -"[.filename]#boot1# program. Also recall that the file written to the " -"beginning of the FreeBSD slice is not [.filename]#/boot/boot1#, but " -"[.filename]#/boot/boot#. Let us look at the size of these files in the " +"bytes, or the first sector of the FreeBSD slice, coincides with the [." +"filename]#boot1# program. Also recall that the file written to the " +"beginning of the FreeBSD slice is not [.filename]#/boot/boot1#, but [." +"filename]#/boot/boot#. Let us look at the size of these files in the " "filesystem:" msgstr "" "Напомним, что в данный момент регистр `%si` указывает на запись среза " @@ -1792,14 +1785,14 @@ msgid "" "Both [.filename]#boot0# and [.filename]#boot1# are 512 bytes each, so they " "fit _exactly_ in one disk sector. [.filename]#boot2# is much bigger, " "holding both the BTX server and the [.filename]#boot2# client. Finally, a " -"file called simply [.filename]#boot# is 512 bytes larger than " -"[.filename]#boot2#. This file is a concatenation of [.filename]#boot1# and " -"[.filename]#boot2#. As already noted, [.filename]#boot0# is the file " -"written to the absolute first disk sector (the MBR), and [.filename]#boot# " -"is the file written to the first sector of the FreeBSD slice; " -"[.filename]#boot1# and [.filename]#boot2# are _not_ written to disk. The " -"command used to concatenate [.filename]#boot1# and [.filename]#boot2# into a " -"single [.filename]#boot# is merely `cat boot1 boot2 > boot`." +"file called simply [.filename]#boot# is 512 bytes larger than [." +"filename]#boot2#. This file is a concatenation of [.filename]#boot1# and [." +"filename]#boot2#. As already noted, [.filename]#boot0# is the file written " +"to the absolute first disk sector (the MBR), and [.filename]#boot# is the " +"file written to the first sector of the FreeBSD slice; [.filename]#boot1# " +"and [.filename]#boot2# are _not_ written to disk. The command used to " +"concatenate [.filename]#boot1# and [.filename]#boot2# into a single [." +"filename]#boot# is merely `cat boot1 boot2 > boot`." msgstr "" "Оба файла [.filename]#boot0# и [.filename]#boot1# имеют размер 512 байт " "каждый, поэтому они занимают _ровно_ один сектор диска. [.filename]#boot2# " @@ -1816,18 +1809,18 @@ msgstr "" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:707 msgid "" -"So [.filename]#boot1# occupies exactly the first 512 bytes of " -"[.filename]#boot# and, because [.filename]#boot# is written to the first " +"So [.filename]#boot1# occupies exactly the first 512 bytes of [." +"filename]#boot# and, because [.filename]#boot# is written to the first " "sector of the FreeBSD slice, [.filename]#boot1# fits exactly in this first " "sector. When `nread` reads the first 16 sectors of the FreeBSD slice, it " "effectively reads the entire [.filename]#boot# file footnote:[512*16=8192 " -"bytes, exactly the size of boot]. We will see more details about how " -"[.filename]#boot# is formed from [.filename]#boot1# and [.filename]#boot2# " -"in the next section." +"bytes, exactly the size of boot]. We will see more details about how [." +"filename]#boot# is formed from [.filename]#boot1# and [.filename]#boot2# in " +"the next section." msgstr "" "Итак, [.filename]#boot1# занимает ровно первые 512 байт [.filename]#boot#, " -"и, поскольку [.filename]#boot# записывается в первый сектор слайса FreeBSD, [" -".filename]#boot1# полностью помещается в этот первый сектор. Когда `nread` " +"и, поскольку [.filename]#boot# записывается в первый сектор слайса FreeBSD, " +"[.filename]#boot1# полностью помещается в этот первый сектор. Когда `nread` " "читает первые 16 секторов слайса FreeBSD, он фактически читает весь файл [." "filename]#boot# footnote:[512*16=8192 байта, ровно размер boot]. Более " "подробно о том, как [.filename]#boot# формируется из [.filename]#boot1# и [." @@ -1847,11 +1840,11 @@ msgstr "" "Напомним, что `nread` использует адрес памяти `0x8c00` в качестве буфера " "передачи для хранения прочитанных секторов. Этот адрес выбран не случайно. " "Действительно, поскольку [.filename]#boot1# принадлежит первым 512 байтам, " -"он оказывается в диапазоне адресов `0x8c00`-`0x8dff`. Следующие 512 байт (" -"диапазон `0x8e00`-`0x8fff`) используются для хранения _bsdlabel_ footnote:[" -"Исторически известной как disklabel. Если вам когда-либо было интересно, где " -"FreeBSD хранит эту информацию, она находится в этой области — см. " -"man:bsdlabel[8]]." +"он оказывается в диапазоне адресов `0x8c00`-`0x8dff`. Следующие 512 байт " +"(диапазон `0x8e00`-`0x8fff`) используются для хранения _bsdlabel_ footnote:" +"[Исторически известной как disklabel. Если вам когда-либо было интересно, " +"где FreeBSD хранит эту информацию, она находится в этой области — см. man:" +"bsdlabel[8]]." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:721 @@ -1880,12 +1873,12 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:724 msgid "" "The last code block of [.filename]#boot1# enables access to memory above 1MB " -"footnote:[This is necessary for legacy reasons. Interested readers should " -"see .] and concludes with a jump to the starting point of the BTX server:" +"footnote:[This is necessary for legacy reasons.] and concludes with a jump " +"to the starting point of the BTX server:" msgstr "" "Последний блок кода в [.filename]#boot1# разрешает доступ к памяти выше 1MB " -"footnote:[Это необходимо по историческим причинам. Заинтересованные читатели " -"могут обратиться к .] и завершается переходом к начальной точке сервера BTX:" +"footnote:[Это необходимо по историческим причинам.] и завершается переходом " +"к начальной точке сервера BTX:" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:732 @@ -1990,11 +1983,11 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:766 msgid "" "[.filename]#boot1# loads the first 16 sectors of the FreeBSD slice into " -"address `0x8c00`. This 16 sectors, or 8192 bytes, is the whole file " -"[.filename]#boot#. The file is a concatenation of [.filename]#boot1# and " -"[.filename]#boot2#. [.filename]#boot2#, in turn, contains the BTX server " -"and the [.filename]#boot2# client. Finally, a jump is made to address " -"`0x9010`, the entry point of the BTX server." +"address `0x8c00`. This 16 sectors, or 8192 bytes, is the whole file [." +"filename]#boot#. The file is a concatenation of [.filename]#boot1# and [." +"filename]#boot2#. [.filename]#boot2#, in turn, contains the BTX server and " +"the [.filename]#boot2# client. Finally, a jump is made to address `0x9010`, " +"the entry point of the BTX server." msgstr "" "[.filename]#boot1# загружает первые 16 секторов среза FreeBSD по адресу " "`0x8c00`. Эти 16 секторов, или 8192 байта, представляют собой весь файл [." @@ -2007,15 +2000,16 @@ msgstr "" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:770 msgid "" "Before studying the BTX Server in detail, let us further review how the " -"single, all-in-one [.filename]#boot# file is created. The way " -"[.filename]#boot# is built is defined in its [.filename]#Makefile# " -"([.filename]#stand/i386/boot2/Makefile#). Let us look at the rule that " -"creates the [.filename]#boot# file:" +"single, all-in-one [.filename]#boot# file is created. The way [." +"filename]#boot# is built is defined in its [.filename]#Makefile# ([." +"filename]#stand/i386/boot2/Makefile#). Let us look at the rule that creates " +"the [.filename]#boot# file:" msgstr "" "Прежде чем изучать сервер BTX подробно, давайте рассмотрим, как создается " -"единый, всеобъемлющий файл [.filename]#boot#. Способ сборки [.filename]#boot#" -" определен в его [.filename]#Makefile# ([.filename]#stand/i386/boot2/" -"Makefile#). Рассмотрим правило, которое создает файл [.filename]#boot#:" +"единый, всеобъемлющий файл [.filename]#boot#. Способ сборки [." +"filename]#boot# определен в его [.filename]#Makefile# ([.filename]#stand/" +"i386/boot2/Makefile#). Рассмотрим правило, которое создает файл [." +"filename]#boot#:" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:775 @@ -2037,8 +2031,8 @@ msgstr "[.filename]#stand/i386/boot2/Makefile# [[boot-boot1-make-boot]]" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:780 msgid "" "This tells us that [.filename]#boot1# and [.filename]#boot2# are needed, and " -"the rule simply concatenates them to produce a single file called " -"[.filename]#boot#. The rules for creating [.filename]#boot1# are also quite " +"the rule simply concatenates them to produce a single file called [." +"filename]#boot#. The rules for creating [.filename]#boot1# are also quite " "simple:" msgstr "" "Это говорит нам, что [.filename]#boot1# и [.filename]#boot2# необходимы, и " @@ -2064,8 +2058,7 @@ msgid "" "\t${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} boot1.o\n" msgstr "" " boot1.out: boot1.o\n" -"\t${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${." -"TARGET} boot1.o\n" +"\t${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} boot1.o\n" #. type: Block title #: documentation/content/en/books/arch-handbook/boot/_index.adoc:790 @@ -2077,28 +2070,28 @@ msgstr "[.filename]#stand/i386/boot2/Makefile# [[boot-boot1-make-boot1]]" #: documentation/content/en/books/arch-handbook/boot/_index.adoc:799 msgid "" "To apply the rule for creating [.filename]#boot1#, [.filename]#boot1.out# " -"must be resolved. This, in turn, depends on the existence of " -"[.filename]#boot1.o#. This last file is simply the result of assembling our " +"must be resolved. This, in turn, depends on the existence of [." +"filename]#boot1.o#. This last file is simply the result of assembling our " "familiar [.filename]#boot1.S#, without linking. Now, the rule for creating " "[.filename]#boot1.out# is applied. This tells us that [.filename]#boot1.o# " "should be linked with `start` as its entry point, and starting at address " -"`0x7c00`. Finally, [.filename]#boot1# is created from " -"[.filename]#boot1.out# applying the appropriate rule. This rule is the " -"[.filename]#objcopy# command applied to [.filename]#boot1.out#. Note the " -"flags passed to [.filename]#objcopy#: `-S` tells it to strip all relocation " -"and symbolic information; `-O binary` indicates the output format, that is, " -"a simple, unformatted binary file." +"`0x7c00`. Finally, [.filename]#boot1# is created from [.filename]#boot1." +"out# applying the appropriate rule. This rule is the [.filename]#objcopy# " +"command applied to [.filename]#boot1.out#. Note the flags passed to [." +"filename]#objcopy#: `-S` tells it to strip all relocation and symbolic " +"information; `-O binary` indicates the output format, that is, a simple, " +"unformatted binary file." msgstr "" "Для применения правила создания [.filename]#boot1# необходимо собрать [." "filename]#boot1.out#. Это, в свою очередь, зависит от наличия [." "filename]#boot1.o#. Последний файл является результатом ассемблирования " "нашего знакомого [.filename]#boot1.S# без компоновки. Теперь применяется " -"правило создания [.filename]#boot1.out#. Оно указывает, что [.filename]#boot1" -".o# должен быть скомпонован с точкой входа `start` и начальным адресом " -"`0x7c00`. Наконец, [.filename]#boot1# создается из [.filename]#boot1.out# " -"применением соответствующего правила. Это команда [.filename]#objcopy#, " -"применяемая к [.filename]#boot1.out#. Обратите внимание на флаги, " -"передаваемые [.filename]#objcopy#: `-S` указывает на удаление всей " +"правило создания [.filename]#boot1.out#. Оно указывает, что [." +"filename]#boot1.o# должен быть скомпонован с точкой входа `start` и " +"начальным адресом `0x7c00`. Наконец, [.filename]#boot1# создается из [." +"filename]#boot1.out# применением соответствующего правила. Это команда [." +"filename]#objcopy#, применяемая к [.filename]#boot1.out#. Обратите внимание " +"на флаги, передаваемые [.filename]#objcopy#: `-S` указывает на удаление всей " "информации о перемещении и символов; `-O binary` указывает формат вывода, то " "есть простой, неформатированный двоичный файл." @@ -2164,8 +2157,7 @@ msgid "" "\t${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC}\n" msgstr "" " boot2.out: ${BTXCRT} boot2.o sio.o ashldi3.o\n" -"\t${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${." -"ALLSRC}\n" +"\t${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC}\n" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:828 @@ -2181,8 +2173,7 @@ msgstr "" " boot2.h: boot1.out\n" "\t${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \\\n" "\t { x = $$1 - ORG1; \\\n" -"\t printf(\"#define XREADORG %#x\\n" -"\", REL1 + x) }' \\\n" +"\t printf(\"#define XREADORG %#x\\n\", REL1 + x) }' \\\n" "\t ORG1=`printf \"%d\" ${ORG1}` \\\n" "\t REL1=`printf \"%d\" ${REL1}` > ${.TARGET}\n" @@ -2253,8 +2244,8 @@ msgstr "[.filename]#stand/i386/boot2/boot2.h# [[boot-boot1-make-boot2h]]" msgid "" "Recall that [.filename]#boot1# was relocated (i.e., copied from `0x7c00` to " "`0x700`). This relocation will now make sense, because as we will see, the " -"BTX server reclaims some memory, including the space where " -"[.filename]#boot1# was originally loaded. However, the BTX server needs " +"BTX server reclaims some memory, including the space where [." +"filename]#boot1# was originally loaded. However, the BTX server needs " "access to [.filename]#boot1#'s `xread` function; this function, according to " "the output of [.filename]#boot2.h#, is at location `0x725`. Indeed, the BTX " "server uses the `xread` function from [.filename]#boot1#'s relocated code. " @@ -2272,19 +2263,19 @@ msgstr "" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:868 msgid "" -"The next rule directs the linker to link various files " -"([.filename]#ashldi3.o#, [.filename]#boot2.o# and [.filename]#sio.o#). Note " -"that the output file, [.filename]#boot2.out#, is linked to execute at " -"address `0x2000` (${ORG2}). Recall that [.filename]#boot2# will be executed " -"in user mode, within a special user segment set up by the BTX server. This " -"segment starts at `0xa000`. Also, remember that the [.filename]#boot2# " -"portion of [.filename]#boot# was copied to address `0xc000`, that is, offset " -"`0x2000` from the start of the user segment, so [.filename]#boot2# will work " -"properly when we transfer control to it. Next, [.filename]#boot2.bin# is " -"created from [.filename]#boot2.out# by stripping its symbols and format " -"information; boot2.bin is a _raw_ binary. Now, note that a file " -"[.filename]#boot2.ldr# is created as a 512-byte file full of zeros. This " -"space is reserved for the bsdlabel." +"The next rule directs the linker to link various files ([.filename]#ashldi3." +"o#, [.filename]#boot2.o# and [.filename]#sio.o#). Note that the output " +"file, [.filename]#boot2.out#, is linked to execute at address `0x2000` " +"(${ORG2}). Recall that [.filename]#boot2# will be executed in user mode, " +"within a special user segment set up by the BTX server. This segment starts " +"at `0xa000`. Also, remember that the [.filename]#boot2# portion of [." +"filename]#boot# was copied to address `0xc000`, that is, offset `0x2000` " +"from the start of the user segment, so [.filename]#boot2# will work properly " +"when we transfer control to it. Next, [.filename]#boot2.bin# is created " +"from [.filename]#boot2.out# by stripping its symbols and format information; " +"boot2.bin is a _raw_ binary. Now, note that a file [.filename]#boot2.ldr# " +"is created as a 512-byte file full of zeros. This space is reserved for the " +"bsdlabel." msgstr "" "Следующее правило указывает компоновщику на необходимость связать различные " "файлы ([.filename]#ashldi3.o#, [.filename]#boot2.o# и [.filename]#sio.o#). " @@ -2305,31 +2296,31 @@ msgstr "" #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:873 msgid "" -"Now that we have files [.filename]#boot1#, [.filename]#boot2.bin# and " -"[.filename]#boot2.ldr#, only the BTX server is missing before creating the " -"all-in-one [.filename]#boot# file. The BTX server is located in " -"[.filename]#stand/i386/btx/btx#; it has its own [.filename]#Makefile# with " -"its own set of rules for building. The important thing to notice is that it " -"is also compiled as a _raw_ binary, and that it is linked to execute at " -"address `0x9000`. The details can be found in [.filename]#stand/i386/btx/" -"btx/Makefile#." +"Now that we have files [.filename]#boot1#, [.filename]#boot2.bin# and [." +"filename]#boot2.ldr#, only the BTX server is missing before creating the all-" +"in-one [.filename]#boot# file. The BTX server is located in [." +"filename]#stand/i386/btx/btx#; it has its own [.filename]#Makefile# with its " +"own set of rules for building. The important thing to notice is that it is " +"also compiled as a _raw_ binary, and that it is linked to execute at address " +"`0x9000`. The details can be found in [.filename]#stand/i386/btx/btx/" +"Makefile#." msgstr "" -"Теперь, когда у нас есть файлы [.filename]#boot1#, [.filename]#boot2.bin# и [" -".filename]#boot2.ldr#, осталось только добавить сервер BTX перед созданием " -"универсального файла [.filename]#boot#. Сервер BTX находится в [.filename]#" -"stand/i386/btx/btx#; у него есть собственный [.filename]#Makefile# со своим " -"набором правил для сборки. Важно отметить, что он также компилируется как " -"_сырой_ бинарный файл и линкуется для выполнения по адресу `0x9000`. " -"Подробности можно найти в [.filename]#stand/i386/btx/btx/Makefile#." +"Теперь, когда у нас есть файлы [.filename]#boot1#, [.filename]#boot2.bin# и " +"[.filename]#boot2.ldr#, осталось только добавить сервер BTX перед созданием " +"универсального файла [.filename]#boot#. Сервер BTX находится в [." +"filename]#stand/i386/btx/btx#; у него есть собственный [.filename]#Makefile# " +"со своим набором правил для сборки. Важно отметить, что он также " +"компилируется как _сырой_ бинарный файл и линкуется для выполнения по адресу " *** 1371 LINES SKIPPED ***help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?691cb967.24319.726f3f1a>
