Merge branch 'release/v.1.0' of https://github.com/Linux4Yourself/Linux4Yourself.Book into release/v.1.0

This commit is contained in:
Anton Maisak 2021-06-17 10:34:13 +03:00
commit fbd28ad0ff
23 changed files with 118 additions and 98 deletions

View File

@ -4,7 +4,9 @@
<img src="https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Design/main/misc/cover.svg" />
</div>
В своём большинстве, книга основана на наработках замечательного проекта Linux From Scratch. Однако, позиционируется как её ответвление. Отличительными особенностями является более широкое раскрытие некоторых важных аспектов и предоставление наиболее исчерпывающией информации по различным приемам создания операционной системы из исходного кода.
Lx4U или “Linux для себя” - русскоязычное подробное руководство по созданию Linux-системы, используя лишь исходные тексты необходимого программного обеспечения. Это руководство - самостоятельное ответвление от проекта <a href="https://linuxfromscratch.org">Linux From Scratch</a>.
На Ваш выбор предлагается использование multilib системы, поддержка EFI и набор дополнительного программного обеспечения для организации комфортной работы. Кроме того, существует расширенное руководство, в котором содержится информация о настройке окружения рабочего стола и программного обеспечения охватывающего различные области применения.
Но главная идея остается - Вы в центре всего, и Вы решаете каким должна быть Ваша собственная система. А мы просто протягиваем Вам руку помощи.

View File

@ -1,9 +1,8 @@
- **Предисловие**
- [Предисловие](prologue/foreword)
- [**Предисловие**](prologue/foreword)
- [От авторов](prologue/from-authors)
- [Преимущества](prologue/benefits)
- [Прежде чем начать](prologue/before-start)
- [Обозначения принятые в книге](prologue/typography)
- [Принятые обозначения](prologue/typography)
- [Информация об используемых пакетах](prologue/packages)
- [Опечатки и неточности](prologue/inaccuracies)
@ -25,8 +24,9 @@
- [**Сборка кросс компилятора**](cross-toolchain/cross-toolchain)
- [Binutils](cross-toolchain/binutils)
- [GCC](cross-toolchain/gcc)
- [**Заголовочные файлы ядра Linux**](build-system/linux-headers)
- [**Сборка временной системы**](build-temp-system/tempsystem)
- [Заголовки ядра Linux](build-temp-system/linux-headers)
- [Glibc](build-temp-system/glibc)
- [LibstdС++ проход 1](build-temp-system/libstdc)
- [M4](build-temp-system/m4)

View File

@ -35,7 +35,7 @@ python $FILE
Но так же эту команду используют и для улучшения переносимости скриптов, так как в разных дистрибутивах нужные интерпретаторы могут находиться в разных местах, а вот путь к `env` одинаковый везде.
Например, в одних дистрибутивах путь к bash `/bin/bash`, а в других: `/usr/bin/bash`. И при компиляции этого интерпретатора он ставится именно в `/usr`, а уже позже его можно перенести в `/bin` (что и реализовано в этой книге, поэтому в вашем дистрибутиве путь классический: `/bin/bash`).
Например, в одних дистрибутивах путь к bash `/bin/bash`, а в других: `/usr/bin/bash`. И при компиляции этого интерпретатора он ставится именно в `/usr`, а уже позже его можно перенести в `/bin` (что и реализовано в этом руководстве, поэтому в вашем дистрибутиве путь классический: `/bin/bash`).
А, например, во FreeBSD `bash` находится по пути `/usr/local/bin/bash`, поэтому использование `env` будет таким:
```bash

View File

@ -71,7 +71,7 @@ Checking for attribute(visibility) support... Yes.
```bash
./configure --prefix=/usr
```
В книге так же по мере компиляции пакетов ключи у configure будут меняться. Для новых опуий будет краткое описание.
Так же по мере компиляции пакетов ключи у `configure` будут меняться. Для новых опций будет краткое описание.
Изучив вывод скрипта configure, можно сделать вывод о том, стоит ли далее приступать к сборке пакета. Обычно о критических ошибках сообщается фразами «configure: error». Убедившись, что всё нормально, можно приступать к построению:

View File

@ -2,7 +2,7 @@
## Настройка
?> В extra книге данный пакет следует переустановить после установки ``harfbuzz`` из-за циклической зависимости.
?> В руководстве extra, данный пакет следует переустановить после установки ``harfbuzz`` из-за циклической зависимости.
<package-script :package="'freetype'" :type="'configure'"></package-script>

View File

@ -0,0 +1,64 @@
# Заголовочные файлы ядра Linux v.{{ package.version }}
Ссылка для скачивания: <a :href="package.url"><b>{{ package.url }}</b></a>
<br />
Текущая версия: <b>{{ package.version }}</b>
<br />
Домашняя страница: <a :href="package.homeUrl"><b>{{ package.homeUrl }}</b></a>
<br />
Важность: <b>Необходимый</b>
<br />
Размер архива: <b>{{ package.size }} Mb</b>
<script>
new Vue({
el: '#main',
data: { package: {} },
mounted: function () {
this.getPackage('linux');
},
methods: {
getPackage: function(name) {
getPackage(name)
.then(response => this.package = response);
}
}
})
</script>
Файлы заголовков определяют интерфейс: они определяют способ определения функций в исходном файле. Они используются таким образом, чтобы компилятор мог проверить правильность использования функции в качестве сигнатуры функции (возвращаемое значение и параметры) в файле заголовка. Для этой задачи фактическая реализация функции не требуется.
Когда вы компилируете драйвер устройства как модуль ядра, вам необходимы установленные заголовочные файлы ядра. Также они требуются, если вы собираете пользовательское приложение, которое взаимодействует напрямую с ядром.
!> Версия заголовочных файлов должна соответствовать версии устанавливаемого ядра.
## Сборка
?> **Данный пакет является частью архива с ядром Linux**
Убедитесь что в архив не включены файлы которые могут помешать сборке.
```bash
make mrproper
```
Эта команда выполнит очистку дерева исходных текстов. Разработчики ядра рекомендуют, чтобы эта команда выполнялась перед каждым процессом компиляции.
### Подготовьте заголовки для использования:
```bash
make headers
```
## Установка
```bash
find usr/include -name '.*' -delete
rm usr/include/Makefile
cp -rv usr/include $LIN/usr
```
!> Заголовочные файлы расположенные в системном каталоге `/usr/include` должны всегда быть те, которые использовались при компиляции <a href="#/build-system/glibc">`Glibc`</a>. Их никогда не следует заменять на чистые заголовочные файлы ядра или любые другие подготовленные заголовочные файлы.
### Установленные файлы
Данный пакет устанавливает множество заголовочных файлов, в частности ` /usr/include/asm/*.h, /usr/include/asm-generic/*.h, /usr/include/drm/*.h, /usr/include/linux/*.h, /usr/include/misc/*.h, /usr/include/mtd/*.h, /usr/include/rdma/*.h, /usr/include/scsi/*.h, /usr/include/sound/*.h, /usr/include/video/*.h, and /usr/include/xen/*.h`

View File

@ -12,7 +12,7 @@
## Тестирование
<package-script :package="'python'" :type="'test'"></package-script>
!> На данном этапе, тестирование Python не рекомендуется производить. Тесты могут зависнуть. При желании, проведите тесты при переустановке пакета Python, но уже в Extra-книге.
!> На данном этапе, тестирование Python не рекомендуется производить. Тесты могут зависнуть. При желании, проведите тесты при переустановке пакета Python, но уже в руководстве ``Extra``.
## Установленные файлы

View File

@ -7,7 +7,7 @@
## Тестирование
!> Тестирование пакета от имени пользователя `root` может сломать Вашу систему. Для того, чтобы этого не случилось, производите тесты от имени непривилегированного пользователя. Для запуска тестов параметр `CONFIG_SCSI_DEBUG` для ядра должен быть доступен в текущей системе и должен быть собран в виде модуля. Так же должны быть установлены некоторые другие пакеты из extra книги. При желании, этот тест может быть запущен после перезагрузки в завершенную систему LX4: ``bash tests/run.sh --srcdir=$PWD --builddir=$PWD``
!> Тестирование пакета от имени пользователя `root` может сломать Вашу систему. Для того, чтобы этого не случилось, производите тесты от имени непривилегированного пользователя. Для запуска тестов параметр `CONFIG_SCSI_DEBUG` для ядра должен быть доступен в текущей системе и должен быть собран в виде модуля. Так же должны быть установлены некоторые другие пакеты из руководства extra. При желании, этот тест может быть запущен после перезагрузки в завершенную систему LX4: ``bash tests/run.sh --srcdir=$PWD --builddir=$PWD``
<package-script :package="'util-linux'" :type="'test'"></package-script>

View File

@ -1,57 +0,0 @@
# Заголовки ядра Linux v.{{ package.version }}
Ссылка для скачивания: <a :href="package.url"><b>{{ package.url }}</b></a>
<br />
Текущая версия: <b>{{ package.version }}</b>
<br />
Домашняя страница: <a :href="package.homeUrl"><b>{{ package.homeUrl }}</b></a>
<br />
Важность: <b>Необходимый</b>
<br />
Размер архива: <b>{{ package.size }} Mb</b>
<script>
new Vue({
el: '#main',
data: { package: {} },
mounted: function () {
this.getPackage('linux');
},
methods: {
getPackage: function(name) {
getPackage(name)
.then(response => this.package = response);
}
}
})
</script>
## Сборка
!> **Данный пакет является частью архива с ядром Linux**
!> **Данный пакет устанавливается на свое окончательное место и не будет переустановлен впоследствии**
Убедитесь что в архив не включены файлы которые могут помешать сборке.
```bash
make mrproper
```
Эта команда выполнит более интенсивную очистку дерева исходных текстов. Иногда она является необходимой.
### Подготовьте заголовки для использования:
```bash
make headers
```
## Установка
```bash
find usr/include -name '.*' -delete
rm usr/include/Makefile
cp -rv usr/include $LIN/usr
```
### Установленные файлы
Данный пакет устанавливает множество заголовочных файлов, в частности ` /usr/include/asm/*.h, /usr/include/asm-generic/*.h, /usr/include/drm/*.h, /usr/include/linux/*.h, /usr/include/misc/*.h, /usr/include/mtd/*.h, /usr/include/rdma/*.h, /usr/include/scsi/*.h, /usr/include/sound/*.h, /usr/include/video/*.h, and /usr/include/xen/*.h`

View File

@ -8,5 +8,4 @@
!> Следует обратить особое внимание, что все инструкции в разделе, должны выполняться от имени пользователя ``lin``, который был создан ранее. Внимательно проверьте настройку окружения данного пользователя, проверьте, выполнены ли инструкции, указанные в главе [Настройка окружения](prepare/set-env)
?> Все установленные здесь пакеты (кроме заголовков ядра) будут переустановлены впоследствии.
?> Все установленные здесь пакеты будут переустановлены впоследствии.

View File

@ -11,7 +11,7 @@ window.$docsify = {
maxLevel: 2,
subMaxLevel: 3,
auto2top: true,
homepage: './prologue/foreword.md',
homepage: './index.md',
autoHeader: true,
executeScript: true,
mergeNavbar: true,

12
docs/index.md Normal file
View File

@ -0,0 +1,12 @@
<div style="text-align:center; margin: 30px 0">
<img src="https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Design/main/misc/cover.svg" />
</div>
Lx4U или “Linux для себя” - русскоязычное подробное руководство по созданию Linux-системы, используя лишь исходные тексты необходимого программного обеспечения. Это руководство - самостоятельное ответвление от проекта <a href="https://linuxfromscratch.org">Linux From Scratch</a>.
На Ваш выбор предлагается использование multilib системы, поддержка EFI и набор дополнительного программного обеспечения для организации комфортной работы. Кроме того, существует расширенное руководство, в котором содержится информация о настройке окружения рабочего стола и программного обеспечения охватывающего различные области применения.
Но главная идея остается - Вы в центре всего, и Вы решаете каким должна быть Ваша собственная система. А мы просто протягиваем Вам руку помощи.
Начните собственное путешествие в мир Linux прямо сейчас!

View File

@ -1,6 +1,6 @@
# О приоритете
В данной книге будет указываться приоритет пакетов.
В этом руководстве будет определен приоритет пакетов.
Он может быть следующим:
<span>**Необходимый**</span>
@ -13,4 +13,4 @@
<span>**Необязательный**</span>
<br/>
Сборку данного пакета можно пропустить и это не повлияет на пакеты из данной книги, однако может повлиять на пакеты за её пределами.
Сборку данного пакета можно пропустить и это не повлияет на работоспособность других пакетов, однако может повлиять на пакеты за её пределами.

View File

@ -2,7 +2,7 @@
Время сборки пакетов во многом зависит от мощности компьютера.
В данной книге используется единица времени, аналогичная такой же в книге Linux from scratch - SBU (Standart Build Unit).
В этом руководстве используется единица времени, аналогичная такой же как в Linux from scratch - SBU (Standard Build Unit).
Она равна времени сборки первого пакета. Первым пакетом является `binutils`, время его компиляции в один поток на компьютере с процессором i3-2370M составляет примерно 3 минуты. 3 минуты = 1 SBU. На Вашем ПК значение будет немного другим. Так же, если какой-то пакет компилируется 10 SBU, то, переводя SBU в более привычную единицу, это будет равняться 30 минутам (учитывая то, что 1 SBU = 3 минутам).

View File

@ -1,10 +1,15 @@
# О тестах
Многие пакеты предоставляют наборы тестов для проверки их работоспособности после сборки.
Запустить тесты обычно можно, выполнив `make check` или `make test`.
Большинство пакетов предоставляют наборы тестов для проверки их работоспособности после сборки.
Запуск их необязателен, но рекомендуется, если вам важна надежность системы.
Выполнить тесты может быть хорошей идеей, поскольку это позволит проверить, что все
компоненты были скомпилированы корректно. Успешное прохождение пакетом всех
тестов обычно гарантирует, что пакет будет работать именно так, как задумано
разработчиком. Если тесты провалены, значит в пакете может содержаться
ошибка.
Запуск тестов необязателен, но рекомендуется, если вам важна надежность системы.
Некоторые тесты занимают очень много времени, например тесты для GCC продолжаются около сотни SBU.
SBU для пакетов в книге будет указан без учета тестов.
SBU для пакетов будет указан без учета тестов.
При кросс-компиляции тесты могут не работать и выполнять их для пакетов временной системы не рекомендуется.

View File

@ -2,15 +2,15 @@
Основной целевой архитектурой является `x86_64` (64-разрядная).
С другой стороны, инструкции в этой книге также работают, с некоторыми модификациями, с Power PC, ARM и AMD / Intel x86 (32-bit) процессорами.
С другой стороны, инструкции в этом руководстве также работают, с некоторыми модификациями, с Power PC, ARM и AMD / Intel x86 (32-bit) процессорами.
Чтобы собрать систему, которая должна работать на одном из вышеуказанных процессоров, главным условием является существующая операционная система Linux, например уже ранее собранная система по инструкциям этой книги, Ubuntu, Red Hat/Fedora, SuSE, или другой дистрибутив, который нацелен на требуемую архитектуру.
Чтобы собрать систему, которая должна работать на одном из вышеуказанных процессоров, главным условием является существующая операционная система Linux, например уже ранее собранная система по инструкциям этого руководства, Ubuntu, Red Hat/Fedora, SuSE, или другой дистрибутив, который нацелен на требуемую архитектуру.
Также обратите внимание, что 32-разрядный дистрибутив может быть установлен и использоваться как хост-система на 64-разрядном AMD / Intel компьютере.
## О поддержке multilib
В данной книге присутствует частичная поддержка multilib.
В этом руководстве присутствует частичная поддержка multilib.
### Что такое multilib
@ -21,9 +21,9 @@
### Зачем это нужно
Некоторые программы с закрытым исходным кодом до сих пор имеют только 32-битные версии. Для Linux таких программ не много, а вот для Windows их существует огромное количество. А для того что бы запустить их необходим Wine с поддержкой multilib.
### Как это реализовано в книге
### Как это реализовано в руководстве
В книге присутствуют инструкции в конце многих страниц для multilib систем. Поддержка multilib является опциональной - если Вам она не нужна - не выполняйте эти инструкции.
В руководстве присутствуют инструкции в конце многих страниц для multilib систем. Поддержка multilib является опциональной. Если Вам она не нужна - не выполняйте эти инструкции.
Поддержка multilib является частичной - инструкции для сборки 32-битных версий библиотек предоставляются только тогда, когда они необходимы для сборки пакета.
[Подробнее про архитектуры процессора](additional/cpu-arch)

View File

@ -8,8 +8,9 @@
## Форматирование корневого раздела
На данный момент, в книге поддерживается только файловая система ext4.
Рекомендуется создать её на корневом разделе следующей командой (или по-другому, например с помощью GParted):
На данный момент, в руководстве поддерживается только файловая система ext4.
Рекомендуется создать её на корневом разделе следующей командой (или по-другому, например с помощью GParted):
```bash
mkfs -v -t ext4 /dev/sdX
```

View File

@ -1,10 +1,10 @@
# Общая инструкция по сборке пакетов
Сборка всех пакетов в этой книге производиться следующим образом:
1. Загрузка исходного кода - можно сделать непосредственно перед сборкой, а можно воспользоваться wget-list и сразу загрузить все исходные коды.
Сборка всех пакетов в этом руководстве выполняется следующим образом:
1. Загрузка исходного кода - можно сделать непосредственно перед сборкой, а можно воспользоваться `wget-list` и сразу загрузить все файлы.
2. Распаковка исходных кодов. Используйте команду `tar -xf архив.tar.xz`.
3. Переход в директорию с недавно распакованным исходным кодом. Используйте `cd`
4. Выполнение инструкции, данной в книге.
4. Выполнение инструкции.
5. Выход из директории с исходным кодом.
6. Удаление директории с исходным кодом (данный шаг обязателен при сборке временной системы).

View File

@ -1,6 +1,6 @@
# Установка переменной $LIN
В данной книге для обозначения пути к собираемой системе используется переменная $LIN.
В этом руководстве для обозначения пути к собираемой системе используется переменная $LIN.
Эта переменная должна указывать на каталог, в который будет смонтирован корень собираемой ОС.
В принципе, может быть любым, однако ниже, для примера, будет использован `/mnt/lin`.

View File

@ -1,6 +1,6 @@
# Преимущества
Одна из главных целей проекта - образовательная. Дать понимание как работает Linux изнутри. Создание такой системы поможет узнать, как всё работает вместе и как каждый компонент системы взаимодействует с другим. Немаловажно, что книга даёт опыт и, как следствие, способность настроить систему Linux в соответствии с Вашими потребностями.
Одна из главных целей проекта - образовательная. Дать понимание как работает Linux изнутри. Создание такой системы поможет узнать, как всё работает вместе и как каждый компонент системы взаимодействует с другим. Немаловажно, что руководство даёт опыт и, как следствие, способность настроить Linux систему в соответствии с Вашими потребностями.
Другое ключевое преимущество - предоставление более глубокого контроля, не полагаясь на иную реализацию Linux. Вы можете диктовать каждый аспект своей системы.

View File

@ -6,8 +6,6 @@ Linux распахивает дверь в гигантский мир откр
Нужна ОС попроще? Для игр? А, возможно, нужен мультимедийный дистрибутив для комфортного просмотра и прослушивания медиа контента?
Эта книга обеспечит Вас необходимыми знаниями чтобы создать свою собственную Linux систему с самого начала.
Используя это руководство, вы получите работающую систему на Ваш вкус. Вы всё контролируете, а мы просто протягиваем Вам руку помощи.
Начните собственное путешествие в мир Linux прямо сейчас!

View File

@ -1,12 +1,8 @@
# От авторов
В своём большинстве, книга основана на наработках замечательного проекта [Linux From Scratch](https://linuxfromscratch.ru). Однако, позиционируется как её ответвление. Отличительными особенностями является более широкое раскрытие некоторых важных аспектов и предоставление наиболее исчерпывающей информации по различным приемам создания операционной системы из исходного кода.
Но главная идея остается - Вы в центре всего, и Вы решаете каким должна быть Ваша собственная система. А мы просто протягиваем Вам руку помощи.
**Уважаемый читатель!**
Мы ценим, что вы читаете эту книгу. Мы искренне надеемся что она принесёт Вам как образовательную пользу, так и практическую.
Мы ценим, что Вы читаете это руководство. Мы искренне надеемся что она принесёт Вам как образовательную пользу, так и практическую.
Если у Вас возникли вопросы, проблемы, или вы хотите внести свой вклад в развитие этого проекта - пожалуйста, оставьте запрос в нашем официальном репозитории по адресу **https://github.com/Linux4Yourself/Linux4Yourself.Book**.

View File

@ -1,6 +1,6 @@
# Обозначения принятые в книге
# Принятые обозначения
В этой книге используются следующие типографские обозначения:
В руководстве используются следующие обозначения:
```bash
./configure --prefix=/usr