Date: Sun, 9 Nov 2025 11:16:51 GMT From: Vladlen Popolitov <vladlen@FreeBSD.org> To: doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org Subject: git: a0e1df672e - main - update translation of books/arch-handbook to Russian Reviewed by: andy Differential Revision: https://reviews.freebsd.org/D53493 Message-ID: <202511091116.5A9BGpvF099297@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=a0e1df672e153605c7bcf765b8740bf630342e45 commit a0e1df672e153605c7bcf765b8740bf630342e45 Author: Vladlen Popolitov <vladlen@FreeBSD.org> AuthorDate: 2025-11-09 11:16:41 +0000 Commit: Vladlen Popolitov <vladlen@FreeBSD.org> CommitDate: 2025-11-09 11:16:41 +0000 update translation of books/arch-handbook to Russian Reviewed by: andy Differential Revision: https://reviews.freebsd.org/D53493 --- .../content/ru/books/arch-handbook/_index.adoc | 4 +- .../content/ru/books/arch-handbook/_index.po | 22 +- .../books/arch-handbook/bibliography/_index.adoc | 2 +- .../ru/books/arch-handbook/bibliography/_index.po | 6 +- .../content/ru/books/arch-handbook/book.adoc | 2 +- .../content/ru/books/arch-handbook/book.po | 26 +- .../ru/books/arch-handbook/boot/_index.adoc | 2 +- .../content/ru/books/arch-handbook/boot/_index.po | 390 +++++++++++---------- .../books/arch-handbook/driverbasics/_index.adoc | 2 +- .../ru/books/arch-handbook/driverbasics/_index.po | 34 +- .../content/ru/books/arch-handbook/isa/_index.adoc | 2 +- .../content/ru/books/arch-handbook/isa/_index.po | 156 +++++---- .../ru/books/arch-handbook/jail/_index.adoc | 4 +- .../content/ru/books/arch-handbook/jail/_index.po | 95 ++--- .../ru/books/arch-handbook/kobj/_index.adoc | 2 +- .../content/ru/books/arch-handbook/kobj/_index.po | 36 +- .../ru/books/arch-handbook/locking/_index.adoc | 2 +- .../ru/books/arch-handbook/locking/_index.po | 31 +- .../content/ru/books/arch-handbook/mac/_index.adoc | 38 +- .../content/ru/books/arch-handbook/mac/_index.po | 245 +++++++------ .../ru/books/arch-handbook/newbus/_index.adoc | 6 +- .../ru/books/arch-handbook/newbus/_index.po | 64 ++-- .../content/ru/books/arch-handbook/parti.adoc | 2 +- .../content/ru/books/arch-handbook/parti.po | 4 +- .../content/ru/books/arch-handbook/partii.adoc | 2 +- .../content/ru/books/arch-handbook/partii.po | 4 +- .../content/ru/books/arch-handbook/partiii.adoc | 2 +- .../content/ru/books/arch-handbook/partiii.po | 4 +- .../ru/books/arch-handbook/pccard/_index.adoc | 2 +- .../ru/books/arch-handbook/pccard/_index.po | 45 +-- .../content/ru/books/arch-handbook/pci/_index.adoc | 2 +- .../content/ru/books/arch-handbook/pci/_index.po | 74 ++-- .../ru/books/arch-handbook/scsi/_index.adoc | 20 +- .../content/ru/books/arch-handbook/scsi/_index.po | 149 ++++---- .../content/ru/books/arch-handbook/smp/_index.adoc | 10 +- .../content/ru/books/arch-handbook/smp/_index.po | 107 +++--- .../ru/books/arch-handbook/sound/_index.adoc | 2 +- .../content/ru/books/arch-handbook/sound/_index.po | 48 +-- .../ru/books/arch-handbook/sysinit/_index.adoc | 2 +- .../ru/books/arch-handbook/sysinit/_index.po | 12 +- .../content/ru/books/arch-handbook/usb/_index.adoc | 2 +- .../content/ru/books/arch-handbook/usb/_index.po | 77 ++-- .../content/ru/books/arch-handbook/vm/_index.adoc | 2 +- .../content/ru/books/arch-handbook/vm/_index.po | 37 +- 44 files changed, 962 insertions(+), 818 deletions(-) diff --git a/documentation/content/ru/books/arch-handbook/_index.adoc b/documentation/content/ru/books/arch-handbook/_index.adoc index 7417861a9b..b615f17b1a 100644 --- a/documentation/content/ru/books/arch-handbook/_index.adoc +++ b/documentation/content/ru/books/arch-handbook/_index.adoc @@ -1,5 +1,5 @@ --- -add_single_page_link: true +add_single_page_link: 'true' authors: - author: 'The FreeBSD Documentation Project' @@ -9,7 +9,7 @@ description: 'Для разработчиков систем FreeBSD. В это next: books/arch-handbook/parti params: path: /books/arch-handbook/ -showBookMenu: true +showBookMenu: 'true' tags: ["Arch Handbook", "FreeBSD"] title: 'Руководство по архитектуре FreeBSD' trademarks: ["freebsd", "apple", "microsoft", "unix", "general"] diff --git a/documentation/content/ru/books/arch-handbook/_index.po b/documentation/content/ru/books/arch-handbook/_index.po index 980f503404..c3bf8aae62 100644 --- a/documentation/content/ru/books/arch-handbook/_index.po +++ b/documentation/content/ru/books/arch-handbook/_index.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-10-14 22:43+0300\n" +"POT-Creation-Date: 2025-05-01 19:56-0300\n" "PO-Revision-Date: 2025-08-16 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" @@ -18,11 +18,13 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.17\n" -#. type: Yaml Front Matter Hash Value: description +#. type: YAML Front Matter: description #: 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 @@ -31,12 +33,12 @@ msgstr "Для разработчиков систем FreeBSD. В этой кн msgid "FreeBSD Architecture Handbook" msgstr "Руководство по архитектуре FreeBSD" -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/_index.adoc:51 msgid "Abstract" msgstr "Аннотация" -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/_index.adoc:53 msgid "" "Welcome to the FreeBSD Architecture Handbook. This manual is a _work in " @@ -50,7 +52,7 @@ msgstr "" "Если вы хотите помочь в работе над этим проектом, напишите на электронную " "почту списка рассылки {freebsd-doc}." -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/_index.adoc:55 msgid "" "The latest version of this document is always available from the " @@ -61,11 +63,11 @@ msgid "" msgstr "" "Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/" "[официальном веб-сервере FreeBSD]. Его также можно загрузить в различных " -"форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/" -"[сервера загрузок FreeBSD] или одного из многочисленных зеркал extref:" -"{handbook}mirrors/[mirror sites, mirrors]." +"форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[" +"сервера загрузок FreeBSD] или одного из многочисленных зеркал " +"extref:{handbook}mirrors/[mirror sites, mirrors]." -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/_index.adoc:56 msgid "'''" msgstr "'''" diff --git a/documentation/content/ru/books/arch-handbook/bibliography/_index.adoc b/documentation/content/ru/books/arch-handbook/bibliography/_index.adoc index 96ff388686..805bac4a4d 100644 --- a/documentation/content/ru/books/arch-handbook/bibliography/_index.adoc +++ b/documentation/content/ru/books/arch-handbook/bibliography/_index.adoc @@ -3,7 +3,7 @@ description: 'Библиография Руководства по архите params: path: /books/arch-handbook/bibliography/ prev: books/arch-handbook/partiii -showBookMenu: true +showBookMenu: 'true' tags: ["bibliography", "Arch Handbook", "FreeBSD"] title: Библиография weight: 20 diff --git a/documentation/content/ru/books/arch-handbook/bibliography/_index.po b/documentation/content/ru/books/arch-handbook/bibliography/_index.po index c5253e7d57..3caebc93a7 100644 --- a/documentation/content/ru/books/arch-handbook/bibliography/_index.po +++ b/documentation/content/ru/books/arch-handbook/bibliography/_index.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-10-14 22:43+0300\n" +"POT-Creation-Date: 2025-05-01 19:56-0300\n" "PO-Revision-Date: 2025-07-12 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" @@ -18,7 +18,7 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.17\n" -#. type: Yaml Front Matter Hash Value: description +#. type: YAML Front Matter: description #: documentation/content/en/books/arch-handbook/bibliography/_index.adoc:1 #, no-wrap msgid "Bibliography of the FreeBSD Architecture Handbook" @@ -31,7 +31,7 @@ msgstr "Библиография Руководства по архитекту msgid "Bibliography" msgstr "Библиография" -#. type: appendix +#. type: Plain text #: documentation/content/en/books/arch-handbook/bibliography/_index.adoc:51 msgid "" "[1] _Marshall Kirk McKusick, Keith Bostic, Michael J Karels, and John S " diff --git a/documentation/content/ru/books/arch-handbook/book.adoc b/documentation/content/ru/books/arch-handbook/book.adoc index 22f9cfba0b..4aea684095 100644 --- a/documentation/content/ru/books/arch-handbook/book.adoc +++ b/documentation/content/ru/books/arch-handbook/book.adoc @@ -1,5 +1,5 @@ --- -add_split_page_link: true +add_split_page_link: 'true' authors: - author: 'The FreeBSD Documentation Project' diff --git a/documentation/content/ru/books/arch-handbook/book.po b/documentation/content/ru/books/arch-handbook/book.po index a099efa2f7..067584be72 100644 --- a/documentation/content/ru/books/arch-handbook/book.po +++ b/documentation/content/ru/books/arch-handbook/book.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-10-14 22:43+0300\n" +"POT-Creation-Date: 2022-07-07 23:22-0300\n" "PO-Revision-Date: 2025-08-16 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" @@ -18,11 +18,13 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.17\n" -#. type: Yaml Front Matter Hash Value: description +#. type: YAML Front Matter: description #: 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 @@ -31,12 +33,12 @@ msgstr "Для разработчиков систем FreeBSD. В этой кн msgid "FreeBSD Architecture Handbook" msgstr "Руководство по архитектуре FreeBSD" -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/book.adoc:49 msgid "Abstract" msgstr "Аннотация" -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/book.adoc:51 msgid "" "Welcome to the FreeBSD Architecture Handbook. This manual is a _work in " @@ -50,22 +52,22 @@ msgstr "" "Если вы хотите помочь в работе над этим проектом, напишите на электронную " "почту списка рассылки {freebsd-doc}." -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/book.adoc:53 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]." msgstr "" "Актуальная версия этого документа всегда доступна на https://www.FreeBSD.org/" "[официальном веб-сервере FreeBSD]. Его также можно загрузить в различных " -"форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/" -"[сервера загрузок FreeBSD] или одного из многочисленных зеркал extref:" -"{handbook}mirrors/[mirror sites, mirrors]." +"форматах и с разными вариантами сжатия с https://download.freebsd.org/doc/[" +"сервера загрузок FreeBSD] или одного из многочисленных зеркал " +"extref:{handbook}mirrors/[mirror sites, mirrors]." -#. type: .abstract-title +#. type: Plain text #: documentation/content/en/books/arch-handbook/book.adoc:55 msgid "'''" msgstr "'''" diff --git a/documentation/content/ru/books/arch-handbook/boot/_index.adoc b/documentation/content/ru/books/arch-handbook/boot/_index.adoc index 5b356b42ac..f5a67dedba 100644 --- a/documentation/content/ru/books/arch-handbook/boot/_index.adoc +++ b/documentation/content/ru/books/arch-handbook/boot/_index.adoc @@ -4,7 +4,7 @@ next: books/arch-handbook/locking params: path: /books/arch-handbook/boot/ prev: books/arch-handbook/parti -showBookMenu: true +showBookMenu: 'true' tags: ["boot", "BIOS", "kernel", "MBR", "FreeBSD"] title: 'Глава 1. Начальная загрузка и инициализация ядра' weight: 2 diff --git a/documentation/content/ru/books/arch-handbook/boot/_index.po b/documentation/content/ru/books/arch-handbook/boot/_index.po index 171dbcf2b3..f013cc2bb5 100644 --- a/documentation/content/ru/books/arch-handbook/boot/_index.po +++ b/documentation/content/ru/books/arch-handbook/boot/_index.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-10-14 22:43+0300\n" +"POT-Creation-Date: 2025-05-01 19:56-0300\n" "PO-Revision-Date: 2025-07-02 04:45+0000\n" "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" "Language-Team: Russian <https://translate-dev.freebsd.org/projects/" @@ -25,7 +25,7 @@ msgstr "" msgid "Bootstrapping and Kernel Initialization" msgstr "Начальная загрузка и инициализация ядра" -#. type: Yaml Front Matter Hash Value: title +#. type: YAML Front Matter: title #: documentation/content/en/books/arch-handbook/boot/_index.adoc:1 #, no-wrap msgid "Chapter 1. Bootstrapping and Kernel Initialization" @@ -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, которая позволяет основной ОС передавать детали о том, что " @@ -124,8 +124,8 @@ msgid "" "stage is examined in the following sections." msgstr "" "Ключ к пониманию этого процесса заключается в том, что он состоит из " -"последовательных стадий возрастающей сложности. Эти стадии — " -"[.filename]#boot1#, [.filename]#boot2# и [.filename]#loader# (подробнее см. " +"последовательных стадий возрастающей сложности. Эти стадии — [." +"filename]#boot1#, [.filename]#boot2# и [.filename]#loader# (подробнее см. " "man:boot[8]). Система загрузки выполняет каждую стадию последовательно. " "Последняя стадия, [.filename]#loader#, отвечает за загрузку ядра FreeBSD. " "Каждая стадия рассматривается в следующих разделах." @@ -179,7 +179,9 @@ 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 @@ -234,7 +236,8 @@ 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 @@ -264,9 +267,12 @@ 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 == @@ -299,8 +305,8 @@ msgstr "" "битное значение `0xfffffff0`. Регистр указателя команд (также известный как " "Счётчик Команд) указывает на код, который должен быть выполнен процессором. " "Ещё один важный регистр — это 32-битный управляющий регистр `cr0`, и его " -"значение сразу после перезагрузки равно `0`. Один из битов ``cr0``, бит PE " -"(Protection Enabled, Защита Включена), указывает, работает ли процессор в 32-" +"значение сразу после перезагрузки равно `0`. Один из битов ``cr0``, бит PE (" +"Protection Enabled, Защита Включена), указывает, работает ли процессор в 32-" "битном защищённом режиме или 16-битном реальном режиме. Поскольку этот бит " "сброшен при загрузке, процессор запускается в 16-битном реальном режиме. " "Реальный режим означает, среди прочего, что линейные и физические адреса " @@ -333,9 +339,9 @@ msgid "" "jump instruction to the BIOS's POST routines." msgstr "" "BIOS (Basic Input Output System) — это микросхема на материнской плате, " -"которая содержит относительно небольшой объем памяти только для чтения " -"(ROM). Эта память включает различные низкоуровневые процедуры, специфичные " -"для оборудования, поставляемого с материнской платой. Процессор сначала " +"которая содержит относительно небольшой объем памяти только для чтения (ROM)" +". Эта память включает различные низкоуровневые процедуры, специфичные для " +"оборудования, поставляемого с материнской платой. Процессор сначала " "переходит по адресу 0xfffffff0, который фактически находится в памяти BIOS. " "Обычно по этому адресу содержится инструкция перехода к процедурам POST BIOS." @@ -370,15 +376,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 @@ -434,8 +440,8 @@ msgid "" "which is an awesome piece of code written by Robert Nordier." msgstr "" "Как упоминалось ранее, мы вызываем прерывание BIOS `INT 0x19` для загрузки " -"MBR ([.filename]#boot0#) в память по адресу `0x7c00`. Исходный файл для " -"[.filename]#boot0# можно найти в [.filename]#stand/i386/boot0/boot0.S# — это " +"MBR ([.filename]#boot0#) в память по адресу `0x7c00`. Исходный файл для [." +"filename]#boot0# можно найти в [.filename]#stand/i386/boot0/boot0.S# — это " "впечатляющий фрагмент кода, написанный Робертом Нордье." #. type: Plain text @@ -532,8 +538,8 @@ msgstr "" "дополнительной информации (например, без формата файла ELF). Такой " "низкоуровневый контроль достигается на этапе компоновки с помощью " "специальных флагов, передаваемых компоновщику. Например, текстовая секция " -"программы располагается по адресу `0x600`. На практике это означает, что " -"[.filename]#boot0# должен быть загружен в память по адресу `0x600` для " +"программы располагается по адресу `0x600`. На практике это означает, что [." +"filename]#boot0# должен быть загружен в память по адресу `0x600` для " "корректной работы." #. type: Plain text @@ -550,15 +556,15 @@ msgid "" "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` и создавать выходной файл \"как есть\" (удаляя любое " "форматирование файла):" @@ -720,11 +726,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 @@ -822,8 +828,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 @@ -862,8 +868,8 @@ msgid "" "not assembled and will not appear in our executable [.filename]#boot0#." msgstr "" "Обратите внимание, что мы предполагаем, что `TEST` не определён, поэтому " -"условный код в нём не собирается и не появится в нашем исполняемом файле " -"[.filename]#boot0#." +"условный код в нём не собирается и не появится в нашем исполняемом файле [." +"filename]#boot0#." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:351 @@ -879,8 +885,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 +964,8 @@ msgid "" "chooses to write the changes back to disk." msgstr "" "Важно отметить, что флаг активности для каждой записи сбрасывается, поэтому " -"после сканирования _ни одна_ запись о разделе не активна в нашей копии " -"[.filename]#boot0# в памяти. Позже флаг активности будет установлен для " +"после сканирования _ни одна_ запись о разделе не активна в нашей копии [." +"filename]#boot0# в памяти. Позже флаг активности будет установлен для " "выбранного раздела. Это гарантирует, что только один активный раздел " "существует, если пользователь решит записать изменения обратно на диск." @@ -1129,13 +1135,13 @@ 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, и когда значение, " +"`0xb6` (182 в десятичной системе). Идея заключается в том, что [." +"filename]#boot0# постоянно запрашивает время у BIOS, и когда значение, " "возвращённое в регистре `%dx`, становится больше значения, хранящегося в " "`%di`, время истекает и будет сделан выбор по умолчанию. Поскольку RTC " "тикает 18,2 раза в секунду, это условие выполнится через 10 секунд (это " @@ -1160,8 +1166,8 @@ msgstr "" "соответствующую запись раздела в таблице разделов. Этот новый выбор " "переопределяет предыдущий выбор по умолчанию. Действительно, он становится " "новым значением по умолчанию. Наконец, устанавливается флаг ACTIVE " -"выбранного раздела. Если это было разрешено при компиляции, версия " -"[.filename]#boot0# в памяти с этими изменёнными значениями записывается " +"выбранного раздела. Если это было разрешено при компиляции, версия [." +"filename]#boot0# в памяти с этими изменёнными значениями записывается " "обратно в MBR на диске. Мы оставляем детали этой реализации читателю." #. type: Plain text @@ -1170,8 +1176,8 @@ msgid "" "We now end our study with the last code block from the [.filename]#boot0# " "program:" msgstr "" -"Мы завершаем наше изучение последним блоком кода из программы " -"[.filename]#boot0#:" +"Мы завершаем наше изучение последним блоком кода из программы [." +"filename]#boot0#:" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:472 @@ -1240,8 +1246,8 @@ msgstr "" "первого сектора слайса FreeBSD выполняется вызовом `intx13`. Мы " "предполагаем, что всё прошло успешно, поэтому переход к `beep` не " "выполняется. В частности, новый прочитанный сектор должен заканчиваться " -"магической последовательностью `0xaa55`. Наконец, значение в `%si` " -"(указатель на выбранную таблицу разделов) сохраняется для использования на " +"магической последовательностью `0xaa55`. Наконец, значение в `%si` (" +"указатель на выбранную таблицу разделов) сохраняется для использования на " "следующем этапе, и выполняется переход по адресу `0x7c00`, где начинается " "выполнение нашего следующего этапа (только что прочитанного блока)." @@ -1263,8 +1269,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 @@ -1311,18 +1317,18 @@ msgstr "" "работали исключительно с секторами диска. Действительно, 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# и [." +"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# и передает ему управление." @@ -1508,7 +1514,8 @@ 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 @@ -1570,8 +1577,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` " @@ -1760,8 +1767,8 @@ msgstr "" "FreeBSD в таблице разделов MBR, поэтому вызов `nread` фактически прочитает " "секторы в начале этого раздела. Аргумент, переданный в регистре `%dh`, " "указывает `nread` прочитать 16 секторов диска. Напомним, что первые 512 " -"байт, или первый сектор слайса FreeBSD, совпадает с программой " -"[.filename]#boot1#. Также напомним, что файл, записанный в начало слайса " +"байт, или первый сектор слайса FreeBSD, совпадает с программой [." +"filename]#boot1#. Также напомним, что файл, записанный в начало слайса " "FreeBSD, это не [.filename]#/boot/boot1#, а [.filename]#/boot/boot#. Давайте " "посмотрим на размер этих файлов в файловой системе:" @@ -1796,13 +1803,13 @@ msgid "" msgstr "" "Оба файла [.filename]#boot0# и [.filename]#boot1# имеют размер 512 байт " "каждый, поэтому они занимают _ровно_ один сектор диска. [.filename]#boot2# " -"значительно больше, так как содержит как сервер BTX, так и клиент " -"[.filename]#boot2#. Наконец, файл под названием просто [.filename]#boot# на " +"значительно больше, так как содержит как сервер BTX, так и клиент [." +"filename]#boot2#. Наконец, файл под названием просто [.filename]#boot# на " "512 байт больше, чем [.filename]#boot2#. Этот файл представляет собой " -"объединение [.filename]#boot1# и [.filename]#boot2#. Как уже отмечалось, " -"[.filename]#boot0# записывается в самый первый сектор диска (MBR), а " -"[.filename]#boot# записывается в первый сектор раздела FreeBSD; " -"[.filename]#boot1# и [.filename]#boot2# _не_ записываются на диск. Команда, " +"объединение [.filename]#boot1# и [.filename]#boot2#. Как уже отмечалось, [." +"filename]#boot0# записывается в самый первый сектор диска (MBR), а [." +"filename]#boot# записывается в первый сектор раздела FreeBSD; [." +"filename]#boot1# и [.filename]#boot2# _не_ записываются на диск. Команда, " "используемая для объединения [.filename]#boot1# и [.filename]#boot2# в " "единый файл [.filename]#boot#, выглядит просто как `cat boot1 boot2 > boot`." @@ -1819,12 +1826,12 @@ msgid "" "in the next section." msgstr "" "Итак, [.filename]#boot1# занимает ровно первые 512 байт [.filename]#boot#, " -"и, поскольку [.filename]#boot# записывается в первый сектор слайса FreeBSD, " -"[.filename]#boot1# полностью помещается в этот первый сектор. Когда `nread` " -"читает первые 16 секторов слайса FreeBSD, он фактически читает весь файл " -"[.filename]#boot# footnote:[512*16=8192 байта, ровно размер boot]. Более " -"подробно о том, как [.filename]#boot# формируется из [.filename]#boot1# и " -"[.filename]#boot2#, мы увидим в следующем разделе." +"и, поскольку [.filename]#boot# записывается в первый сектор слайса FreeBSD, [" +".filename]#boot1# полностью помещается в этот первый сектор. Когда `nread` " +"читает первые 16 секторов слайса FreeBSD, он фактически читает весь файл [." +"filename]#boot# footnote:[512*16=8192 байта, ровно размер boot]. Более " +"подробно о том, как [.filename]#boot# формируется из [.filename]#boot1# и [." +"filename]#boot2#, мы увидим в следующем разделе." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:713 @@ -1840,10 +1847,10 @@ msgstr "" "Напомним, что `nread` использует адрес памяти `0x8c00` в качестве буфера " "передачи для хранения прочитанных секторов. Этот адрес выбран не случайно. " "Действительно, поскольку [.filename]#boot1# принадлежит первым 512 байтам, " -"он оказывается в диапазоне адресов `0x8c00`-`0x8dff`. Следующие 512 байт " -"(диапазон `0x8e00`-`0x8fff`) используются для хранения _bsdlabel_ footnote:" -"[Исторически известной как disklabel. Если вам когда-либо было интересно, " -"где FreeBSD хранит эту информацию, она находится в этой области — см. " +"он оказывается в диапазоне адресов `0x8c00`-`0x8dff`. Следующие 512 байт (" +"диапазон `0x8e00`-`0x8fff`) используются для хранения _bsdlabel_ footnote:[" +"Исторически известной как disklabel. Если вам когда-либо было интересно, где " +"FreeBSD хранит эту информацию, она находится в этой области — см. " "man:bsdlabel[8]]." #. type: Plain text @@ -1990,11 +1997,11 @@ msgid "" "`0x9010`, the entry point of the BTX server." msgstr "" "[.filename]#boot1# загружает первые 16 секторов среза FreeBSD по адресу " -"`0x8c00`. Эти 16 секторов, или 8192 байта, представляют собой весь файл " -"[.filename]#boot#. Файл является объединением [.filename]#boot1# и " -"[.filename]#boot2#. [.filename]#boot2#, в свою очередь, содержит сервер BTX " -"и клиент [.filename]#boot2#. Наконец, выполняется переход по адресу " -"`0x9010`, точке входа сервера BTX." +"`0x8c00`. Эти 16 секторов, или 8192 байта, представляют собой весь файл [." +"filename]#boot#. Файл является объединением [.filename]#boot1# и [." +"filename]#boot2#. [.filename]#boot2#, в свою очередь, содержит сервер BTX и " +"клиент [.filename]#boot2#. Наконец, выполняется переход по адресу `0x9010`, " +"точке входа сервера BTX." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:770 @@ -2006,10 +2013,9 @@ msgid "" "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 @@ -2036,8 +2042,8 @@ msgid "" "simple:" msgstr "" "Это говорит нам, что [.filename]#boot1# и [.filename]#boot2# необходимы, и " -"правило просто объединяет их для создания одного файла с именем " -"[.filename]#boot#. Правила для создания [.filename]#boot1# также довольно " +"правило просто объединяет их для создания одного файла с именем [." +"filename]#boot#. Правила для создания [.filename]#boot1# также довольно " "просты:" #. type: delimited block . 4 @@ -2058,7 +2064,8 @@ 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 @@ -2082,18 +2089,18 @@ msgid "" "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# необходимо собрать [." +"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` указывает на " -"удаление всей информации о перемещении и символов; `-O binary` указывает " -"формат вывода, то есть простой, неформатированный двоичный файл." +"правило создания [.filename]#boot1.out#. Оно указывает, что [.filename]#boot1" +".o# должен быть скомпонован с точкой входа `start` и начальным адресом " +"`0x7c00`. Наконец, [.filename]#boot1# создается из [.filename]#boot1.out# " +"применением соответствующего правила. Это команда [.filename]#objcopy#, " +"применяемая к [.filename]#boot1.out#. Обратите внимание на флаги, " +"передаваемые [.filename]#objcopy#: `-S` указывает на удаление всей " +"информации о перемещении и символов; `-O binary` указывает формат вывода, то " +"есть простой, неформатированный двоичный файл." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:801 @@ -2157,7 +2164,8 @@ 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 @@ -2173,7 +2181,8 @@ 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" @@ -2224,8 +2233,8 @@ msgid "" msgstr "" "Отметим, что изначально файл заголовка [.filename]#boot2.h# отсутствует, но " "его создание зависит от [.filename]#boot1.out#, который у нас уже есть. " -"Правило его создания немного лаконично, но важно то, что результат, " -"[.filename]#boot2.h#, выглядит примерно так:" +"Правило его создания немного лаконично, но важно то, что результат, [." +"filename]#boot2.h#, выглядит примерно так:" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:851 @@ -2253,13 +2262,12 @@ msgid "" msgstr "" "Напомним, что [.filename]#boot1# был перемещён (т.е. скопирован из `0x7c00` " "в `0x700`). Это перемещение теперь обретает смысл, потому что, как мы " -"увидим, сервер BTX освобождает часть памяти, включая область, куда " -"[.filename]#boot1# был изначально загружен. Однако серверу BTX необходим " -"доступ к функции `xread` из [.filename]#boot1#; согласно выводу " -"[.filename]#boot2.h#, эта функция находится по адресу `0x725`. " -"Действительно, сервер BTX использует функцию `xread` из перемещённого кода " -"[.filename]#boot1#. Теперь эта функция доступна из клиента " -"[.filename]#boot2#." +"увидим, сервер BTX освобождает часть памяти, включая область, куда [." +"filename]#boot1# был изначально загружен. Однако серверу BTX необходим " +"доступ к функции `xread` из [.filename]#boot1#; согласно выводу [." +"filename]#boot2.h#, эта функция находится по адресу `0x725`. Действительно, " +"сервер BTX использует функцию `xread` из перемещённого кода [." +"filename]#boot1#. Теперь эта функция доступна из клиента [.filename]#boot2#." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:868 @@ -2284,11 +2292,11 @@ msgstr "" "выполнения по адресу `0x2000` (${ORG2}). Напомним, что [.filename]#boot2# " "будет выполняться в пользовательском режиме внутри специального " "пользовательского сегмента, созданного сервером BTX. Этот сегмент начинается " -"с адреса `0xa000`. Также помните, что часть [.filename]#boot2# в " -"[.filename]#boot# была скопирована по адресу `0xc000`, то есть со смещением " +"с адреса `0xa000`. Также помните, что часть [.filename]#boot2# в [." +"filename]#boot# была скопирована по адресу `0xc000`, то есть со смещением " "`0x2000` от начала пользовательского сегмента, поэтому [.filename]#boot2# " -"будет работать корректно при передаче управления на него. Далее, " -"[.filename]#boot2.bin# создается из [.filename]#boot2.out# путем удаления " +"будет работать корректно при передаче управления на него. Далее, [." +"filename]#boot2.bin# создается из [.filename]#boot2.out# путем удаления " "символов и информации о формате; boot2.bin представляет собой _сырой_ " "бинарный файл. Теперь обратите внимание, что файл [.filename]#boot2.ldr# " "создается как 512-байтный файл, заполненный нулями. Это пространство " @@ -2306,14 +2314,13 @@ msgid "" "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# со своим " +"набором правил для сборки. Важно отметить, что он также компилируется как " +"_сырой_ бинарный файл и линкуется для выполнения по адресу `0x9000`. " +"Подробности можно найти в [.filename]#stand/i386/btx/btx/Makefile#." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:880 @@ -2335,11 +2342,11 @@ msgstr "" "названием [.filename]#btxld# (исходный код расположен в [.filename]#/usr/src/" "usr.sbin/btxld#). Некоторые аргументы этой программы включают имя выходного " "файла ([.filename]#boot#), его точку входа (`0x2000`) и формат файла " -"(бинарный). Различные файлы окончательно объединяются этой утилитой в файл " -"[.filename]#boot#, который состоит из [.filename]#boot1#, " -"[.filename]#boot2#, `bsdlabel` и сервера BTX. Этот файл, занимающий ровно 16 " -"секторов или 8192 байта, записывается в начало раздела FreeBSD во время " -"установки. Теперь перейдем к изучению программы сервера BTX." +"(бинарный). Различные файлы окончательно объединяются этой утилитой в файл [." +"filename]#boot#, который состоит из [.filename]#boot1#, [.filename]#boot2#, " +"`bsdlabel` и сервера BTX. Этот файл, занимающий ровно 16 секторов или 8192 " +"байта, записывается в начало раздела FreeBSD во время установки. Теперь " +"перейдем к изучению программы сервера BTX." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:883 @@ -2412,12 +2419,11 @@ msgid "" "has a special header at address range `0x9000-0x900f`, right before its " "entry point. This header is defined as follows:" msgstr "" -"Приступим к изучению фактической реализации. Напомним, что " -"[.filename]#boot1# выполнил переход на адрес `0x9010` — точку входа сервера " -"BTX. Прежде чем изучать выполнение программы там, обратите внимание, что " -"сервер BTX имеет специальный заголовок в диапазоне адресов `0x9000-0x900f`, " -"непосредственно перед точкой входа. Этот заголовок определён следующим " -"образом:" +"Приступим к изучению фактической реализации. Напомним, что [.filename]#boot1#" +" выполнил переход на адрес `0x9010` — точку входа сервера BTX. Прежде чем " +"изучать выполнение программы там, обратите внимание, что сервер BTX имеет " +"специальный заголовок в диапазоне адресов `0x9000-0x900f`, непосредственно " +"перед точкой входа. Этот заголовок определён следующим образом:" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:915 @@ -2469,10 +2475,10 @@ msgid "" msgstr "" "Обратите внимание, что первые два байта — это `0xeb` и `0xe`. В архитектуре " "IA-32 эти два байта интерпретируются как относительный переход за заголовок " -"к точке входа, поэтому теоретически [.filename]#boot1# мог бы перейти сюда " -"(адрес `0x9000`) вместо адреса `0x9010`. Обратите внимание, что последнее " -"поле в заголовке BTX — это указатель на точку входа клиента " -"([.filename]#boot2#)b2. Это поле исправляется во время компоновки." +"к точке входа, поэтому теоретически [.filename]#boot1# мог бы перейти сюда (" +"адрес `0x9000`) вместо адреса `0x9010`. Обратите внимание, что последнее " +"поле в заголовке BTX — это указатель на точку входа клиента ([." +"filename]#boot2#)b2. Это поле исправляется во время компоновки." #. type: Plain text #: documentation/content/en/books/arch-handbook/boot/_index.adoc:924 @@ -2759,8 +2765,8 @@ msgstr "" "только дескрипторы для векторов прерываний `0x30`, `0x31` и `0x32` имеют " "уровень привилегий 3, такой же, как у клиента [.filename]#boot2#, что " "означает, что клиент может выполнить программно-генерируемое прерывание к " -"этим векторам через инструкцию `int` без ошибки (это способ, которым " -"[.filename]#boot2# использует сервисы, предоставляемые сервером BTX). Также " +"этим векторам через инструкцию `int` без ошибки (это способ, которым [." +"filename]#boot2# использует сервисы, предоставляемые сервером BTX). Также " "обратите внимание, что _только_ программно-генерируемые прерывания защищены " "от кода, выполняющегося на более низких уровнях привилегий. Аппаратно-" "генерируемые прерывания и исключения, генерируемые процессором, _всегда_ " @@ -2931,8 +2937,8 @@ msgid "" msgstr "" "Наш последний блок кода отвечает за загрузку TR (Регистра Задач) с " "селектором сегмента для TSS, который мы создали ранее, и настройку окружения " -"пользовательского режима перед передачей управления исполнения клиенту " -"[.filename]#boot2#." +"пользовательского режима перед передачей управления исполнения клиенту [." +"filename]#boot2#." #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:1123 @@ -3181,14 +3187,13 @@ msgid "" msgstr "" "`boot2` входит в бесконечный цикл, ожидая ввода пользователя, затем вызывает " "`load()`. Если пользователь ничего не нажимает, цикл прерывается по " -"таймауту, и `load()` загружает файл по умолчанию ([.filename]#/boot/" -"loader#). Функции `ino_t lookup(char *filename)` и `int xfsread(ino_t inode, " -"void *buf, size_t nbyte)` используются для чтения содержимого файла в " -"память. [.filename]#/boot/loader# — это ELF-бинарный файл, но с заголовком " -"ELF, перед которым добавлена структура `struct exec` из [.filename]#a.out#. " -"`load()` анализирует ELF-заголовок загрузчика, загружает содержимое " -"[.filename]#/boot/loader# в память и передаёт управление на точку входа " -"загрузчика:" +"таймауту, и `load()` загружает файл по умолчанию ([.filename]#/boot/loader#)" +". Функции `ino_t lookup(char *filename)` и `int xfsread(ino_t inode, void *" +"buf, size_t nbyte)` используются для чтения содержимого файла в память. [." +"filename]#/boot/loader# — это ELF-бинарный файл, но с заголовком ELF, перед " +"которым добавлена структура `struct exec` из [.filename]#a.out#. `load()` " +"анализирует ELF-заголовок загрузчика, загружает содержимое [.filename]#/boot/" +"loader# в память и передаёт управление на точку входа загрузчика:" #. type: delimited block . 4 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:1201 @@ -3275,8 +3280,10 @@ msgid "" "<lots of kernel .o files>\n" msgstr "" "/usr/obj/usr/src/i386.i386/sys/GENERIC/kernel.meta:\n" -"ld -m elf_i386_fbsd -Bdynamic -T /usr/src/sys/conf/ldscript.i386 --build-id=sha1 --no-warn-mismatch \\\n" -"--warn-common --export-dynamic --dynamic-linker /red/herring -X -o kernel locore.o\n" +"ld -m elf_i386_fbsd -Bdynamic -T /usr/src/sys/conf/ldscript.i386 --build-" +"id=sha1 --no-warn-mismatch \\\n" +"--warn-common --export-dynamic --dynamic-linker /red/herring -X -o kernel " +"locore.o\n" "<lots of kernel .o files>\n" #. type: Plain text @@ -3312,8 +3319,8 @@ msgid "" "says that a kernel's entry point is the symbol `btext`. This symbol is " *** 3825 LINES SKIPPED ***home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202511091116.5A9BGpvF099297>
