title: "📋 Манифест сопровождения ядра LANDAU-Linux"
description: "Описание процесса разработки ядра LANDAU-Linux — ветки, релизы, версионирование и сопровождение"
published: true
---
# 📋 Манифест процесса сопровождения ядра LANDAU-Linux
> **LANDAU-Linux** — форк ядра Linux с собственной схемой версионирования и предсказуемым циклом релизов.
> Этот документ описывает формальный процесс сопровождения (maintenance) проекта.
---
## 🧭 1. Обзор
### 🎯 Цель
Обеспечить стабильный, предсказуемый и документированный процесс выпуска LANDAU-Linux-релизов с отслеживанием оригинального репозитория ядра Linux.
### Глоссарий
V - VERSION - major версия ядра Linux
P - PATCHLEVEL - middle версия ядра Linux
S - SUBLEVEL - minor версия ядра Linux
E - EXTRAVERSION - поле в версии ядра Linux, в которое встраивается версия ядра LANDAU-Linux (ядром Linux обычно используется для -rc релизов (testing фазы))
MR - Merge Request - запрос на слияние одной GIT-ветки с другой. Обычно оформляется в виде ссылки на GIT-репозиторий и ветку авторизованного ментейнера (верифицированного источника) в сопровождение с формальным описанием содержимого. Информация из последнего может быть использована для формирования текста merge-коммита в GIT.
RMW - Rebase & Merge Window - временной отрезок, в рамках которого мейнтейнеры LANDAU переносят подопечный им набор изменений на новую базовую версию ядра.
Bundle - в общем случае это полный набор изменений репозитория LANDAU-Linux, который отличает его от оригинального репозитория ядра Linux (фактически это набор патч-серий). Есть общий LANDAU-Linux Bundle, а есть Bundle-ы мейнтейнеров в их форках.
EOL - End-of-Life - завершение этапа поддержки выпущенной версии продукта (релиза).
### 📁 Структура GIT-репозитория форка
| Сущность | Назначение |
|----------|-------------|
| `landau-next` | GIT-ветка для следующего релиза LANDAU-Linux, куда мейтейнеры отсылают свои MR |
| `landau-V.P.y` | GIT-ветка релиза LANDAU-Linux на базе ядра Linux с версией V.P |
> `landau-next` - GIT-ветка для работы всех мейтейнеров вместе. В ней разрешаются конфликты и собираются все MR вместе для создания ветки `landau-V.P.y`. При старте нового RMW её HEAD насильно переносится (_force-push_) на новый релиз ядра Linux.
### 🪞 Зеркала оригинальных репозиториев Linux
На сервере `https://git.rulkc.org` поддерживаются постоянно обновляемые зеркала:
- 🔷 `torvalds/linux` — основная ветка ядра Linux
- 🔷 `stable/linux` — стабильные релизы ядра Linux
- 🔷 `linux-next` — интеграционное дерево linux-next
---
## 🏷️ 2. Схема версионирования
### 📐 Формат версии LANDAU-Linux
```
VERSION.PATCHLEVEL.SUBLEVEL.lXYZ
```
| Компонент | Пример | Описание |
|-----------|--------|----------|
| `VERSION` | `7` | Мажорная версия ядра |
| `PATCHLEVEL` | `0` | Минорная версия ядра |
| `SUBLEVEL` | `12` | Номер стабильного обновления ядра |
| `l-rcX` | `l-rc1`, `l-rc2` | Сборочный номер отладочного релиза LANDAU-Linux |
| `lXYZ` | `l0`, `l1` | Сборочный номер стабильного релиза LANDAU-Linux |
### 🏷️ Git-теги
Используются **аннотированные теги** в формате:
```
v7.0.l-rcX
v7.0.lXYZ
```
Пример: `v7.0.l-rc1`, `v7.0.l0`, `v7.0.l5`
---
## 🌿 3. Cтратегия организации GIT-веток
### 📌 Основные GIT-ветки
| Ветка | Назначение |
|-------|-------------|
| `landau-next` | GIT-ветка следующего релиза LANDAU-Linux, куда мейтейнеры отсылают свои MR |
| `landau-V.P.y` | Текущая GIT-ветка для релиза LANDAU-Linux на базе стабильного ядра Linux с версией V.P |
### ⏳ Жизненный цикл GIT-веток
```mermaid
flowchart LR
subgraph one["Релиз LANDAU-Linux"]
E[landau-V.P.y→
landau-next]-->F
F[Поддержка
landau-V.P.y]-->G{Статус linux-V.P.y
EOL?}
G-->|Нет|F
G-->|Да|H([Архивация
landau-V.P.y])
end
subgraph two["Подготовка релиза (этап RC)"]
A([landau-next→
linux-V.P.y])-->B
B[Стабилизация
landau-next]-->C{Код landau-next
стабилен?}
C-->|Нет|B
C-->|Да|D(P = P + 1)
C-->|Да|E
D-.->|Ожидание
релиза P|A
end
```
| Стадия | Действие |
|--------|----------|
| 🛑 Старт | Принудительное переназначение `landau-next` на базовую версию ядра Linux |
| 🔧 Разработка | Сбор и стабилизация изменений LANDAU в GIT-ветке `landau-next` |
| 🆕 Релиз | Создание `landau-V.P.y` на основе стабильной `landau-next` |
| 🔧 Поддержка | Сбор исправлений ошибок в GIT-ветке `landau-V.P.y` |
| 🐢 Окончание поддержки | Исходная версия достигает EOL |
> В базовом представлении _поддержка_ подразумевает периодическую синхронизацию `landau-V.P.y` с исходной GIT-веткой `linux-V.P.y`.
---
## 📅 4. График релизов
### ⏱️ Цикл релизов ядра Linux
В оригинальном репозитории ядра Linux поддерживается следующий цикл разработки:
| Фаза | ⏰ Длительность | 📝 Описание |
|------|----------------|-------------|
| Разработка | 9-10 недель | Подготовка к новому релизу |
| Rebase & Merge Window | 2 недели | Приём новых Merge Requests от мейнтейнеров |
| RC-тестирование | 7-8 недель | Тестирование кандидатов на релиз |
| Финальный релиз | — | Публикация стабильного ядра |
> ℹ️ **Важно**: Поскольку релизы LANDAU-Linux базируются на стабильных релизах ядра Linux, то текущий цикл разработки всегда отстаёт от последней версии ядра Linux на **1 PATCHLEVEL**.
---
## 🔄 5. Процесс выпуска LANDAU-Linux
### 📊 Полный цикл релиза
```mermaid
flowchart TD
A["📦 Выход нового релиза ядра Linux"] --> B
B(["🔓 1. RMW LANDAU-Linux
(~2 недели)"]) --> C
C["🔧 Перенос и слияние наработок LANDAU-Linux"] --> D
D(["🔓 2. RC LANDAU-Linux
(~1 недели на RCx)"]) --> E
E["🔧 Исправление ошибок
(выпуск RC)"] --> F
F(["✅ 3. Релиз LANDAU-Linux"]) --> G
G["🔧 Публикация списка
изменений LANDAU-Linux"] --> H
H(["🔓 4. Поддержка LANDAU-Linux"]) --> I
I["🔧 Исправление ошибок и
синхронизация SUBLEVEL"] --> J
J(["🐢 5. EOL LANDAU-Linux"])
```
### 5.1 🆕 Этап RMW LANDAU-Linux
| Шаг | Действие |
|-----|----------|
| 1 | Создать GIT-ветку `landau-next` от первого релиза стабильного ядра Linux |
| 2 | Объявить сбор изменений LANDAU-Linux от нижестоящих ментейнеров |
| 3 | Применить изменения LANDAU-Linux в `landau-next` |
| 4 | Запросить повторную публикуцию изменений в случае сложных конфликтов |
| 5 | Провести базовое сборочное тестирование результирующей ветки `landau-next` |
| 6 | Обновить `EXTRAVERSION` на `l-rc1` и создать коммит "LANDAU-Linux V.P.l-rc1" |
| 7 | Отметить коммит аннотированным тегом `vV.P.l-rc1` |
> ℹ️ Переменная `EXTRAVERSION` в стабильных релизах ядра Linux остаётся пустым, потому может быть использована для сохранения версий LANDAU-Linux. При этом оригинальные значения `VERSION`, `PATCHLEVEL`, `SUBLEVEL` в дальнейшем сохраняются для индикации версии исходного ядра Linux.
| Параметр | Значение |
|----------|----------|
| ⏱️ Длительность | **~2 недели** |
| 🎯 Фокус | Сбор и базовая проверки работоспособности продуктв |
| 🏷️ Релизы | `l-rc1` |
| 🔧 Исправления | Незначительные проблемы разрешаются в merge-коммитах. Значительные - через повторный запрос изменения от ментейнера |
### 5.2 🧪 Этап RC LANDAU-Linux
| Шаг | Действие |
|-----|----------|
| 1 | Получить корректирующие изменений LANDAU-Linux от нижестоящих ментейнеров |
| 2 | Применить корректирующие изменения LANDAU-Linux в `landau-next` |
| 3 | Провести базовое сборочное тестирование результирующей ветки `landau-next` |
| 4 | Cоздать коммит "LANDAU-Linux V.P.l-rcX" для инкрементированной в `EXTRAVERSION` RC-версии |
| 5 | Отметить коммит аннотированным тегом `vV.P.l-rcX` |
| 6 | Перейти к 1. в случае выявления ошибок |
| Параметр | Значение |
|----------|----------|
| ⏱️ Длительность | **~1 неделя** на каждый RC, но **не более 7-8 недель** |
| 🎯 Фокус | Регрессионное тестирование, стабильность, валидация фич |
| 🏷️ Релизы | `l-rc1`, `l-rc2`, `l-rc3` ... |
| 🔧 Исправления | Применяются непосредственно в ветку релиза по запросу нижестоящих ментейнеров |
> ℹ️ Стабилизация GIT-ветки `landau-next` (отсуствие выявленных ошибок в очреденом RC-цикле) символизирует окончание этапа RC и выход на релиз.
### 5.3 ✅ Релиз LANDAU-Linux
| Шаг | Действие |
|-----|----------|
| 1 | Убедиться в отсуствии существенных проблем на последнем этапе RC |
| 2 | Обновить `EXTRAVERSION` на `l` и создать коммит "LANDAU-Linux V.P.l" |
| 3 | Отметить коммит аннотированным тегом `vV.P.l` |
| 4 | Создать GIT-ветку `landau-V.P.y` на основе последнего RC-релиза LANDAU-Linux |
| Параметр | Значение |
|----------|----------|
| ⏱️ Длительность | **более 1 недели** в последней фазе RC |
| 🎯 Фокус | Стабилизация собранных измений и опубликование списка изменений |
| 🏷️ Релизы | `l` |
| 🔧 Исправления | Отсуствуют в рамках последней фазы RC |
### 5.4 🔄 Поддержка стабильной и LTS-версий LANDAU-Linux
| Шаг | Действие | Пример |
|-----|----------|--------|
| 1 | Определить последний `SUBLEVEL` в исходной GIT-ветки стабильного ядра Linux | `v7.0.1` |
| 2 | Применить изменения из стабильной GIT-ветки ядра Linux в `landau-V.P.y` | `git merge v7.0.1` |
| 3 | Получить корректирующие изменений LANDAU-Linux от нижестоящих ментейнеров | - |
| 4 | Применить корректирующие изменения LANDAU-Linux в `landau-V.P.y` при наличии | - |
| 5 | Инкрементировать `EXTRAVERSION` на единицу и создать коммит "LANDAU-Linux V.P.Y.lX" | `l` → `l1` |
| 6 | Отметить коммит аннотированным тегом `vV.P.Y.lX` | `v7.0.1.l1` |
| Параметр | Значение |
|----------|----------|
| ⏱️ Длительность | До получения статуса EOL исходной версии ядра Linux |
| 🎯 Фокус | Исправление серьезных ошибок, выявленных в стабильном релизе LANDAU-Linux |
| 🏷️ Релизы | `l1`, `l2`, `l2`, ... |
| 🔧 Исправления | Применяются по запросу нижестоящих ментейнеров в рамках корректирующих релизов |
Мейнтейнеры LANDAU-Linux приняли решение **нативно поддерживать стабильные и LTS-версии** ядра Linux до получения статуса EOL. Однако гарантировано корректирующие изменения LANDAU-Linux портируются в LANDAU-Linux на основе последней LTS-версии ядра Linux. Портирование изменений в более ранние версии возможно при наличии ресурсов.
⚠️ Особенности интеграции изменений в стабильную и LTS версии LANDAU-Linux:
| ✅ Разрешено | ❌ Запрещено |
|--------------|--------------|
| Исправления безопасности | Бэкпорт новых фич |
| Критические багфиксы | Новые драйверы |
| Стабилизирующие патчи | Изменения подсистем |
| Документация | Любые не-багфиксы |
> 📌 **Принцип**: Поддерживается тот Changelog, который был на момент отвода LTS основного ядра.
### 5.5 🔄 Завершение поддержки релиза LANDAU-Linux (EOL)
| Шаг | Действие |
|-----|----------|
| 1 | Получение статуса EOL исходной версии стабильного ядра Linux |
| 2 | Объявление о завершении поддержки LANDAU-Linux в GIT-ветке `landau-V.P.y` |
| Параметр | Значение |
|----------|----------|
| ⏱️ Длительность | Минимум несколько корректирующих релизов стабильной версии LANDAU-Linux до регистрации EOL |
| 🎯 Фокус | Завершение поддержки релиза |
| 🏷️ Релизы | `lZ` |
| 🔧 Исправления | Не применяются |
Поддержка **стабильной и LTS версий** LANDAU-Linux завершается либо вместе с получением статуса EOL исходной версии ядра Linux, либо после выпуска релиза LANDAU-Linux, основанного на последней LTS-версии ядра Linux.
---
## 👤 6. Обязанности мейнтейнера
| Область | Ответственность |
|---------|------------------|
| 👁️ Мониторинг исходного репозитория | Отслеживание новых релизов и RC-циклов |
| 📦 Применение патчей | Интеграция LANDAU-специфичных изменений ядра |
| 🏷️ Управление тегами | Создание аннотированных тегов в формате `vX.Y.lZ` |
| 🧪 Координация RC | Организация тестирования кандидатов на релиз |
| 🔒 Безопасность | Мониторинг и применение исправлений безопасности |
| 📝 Документирование | Ведение changelog для каждого LANDAU-релиза |
### Личные репозитории ментейнеров
В личных репозиториях ментейнеры хранят и развивают собственные форки ядра Linux с подведомственным им набором изменений. В целом, способ организации персональных репозиториев ментейнеры могут выбирать самостоятельное. Например, можно разделить независимые изменения на GIT-ветки по подсистемам и отправлять MR с каждым из них, либо предварительно объединить их в единую GIT-ветку и отправить один целостный MR. Как бы то ни было, при этом необходимо придерживаться правила **преемственности предыдущих изменений и минимизации merge-конфликтов**. То есть GIT-ветка, отправляемая в MR главному ментейнеру, должна сохранять историю предыдущих изменений LANDAU-Linux и их исправлений, а также содержать последнюю версию оригинальной версии ядра Linux, для которого готовится релиз LANDAU-Linux. Для реализации такого требования удобно использовать подход **двойного слияния**, суть которого в том, чтобы сначала ментейнеры sub-LANDAU-Linux репозиториев выполнили слияние своих GIT-веток с `landau-next`, разрешили все конфликты и лишь потом отправляли MR в рамках этапа RMW:
```mermaid
---
config:
gitGraph:
parallelCommits: true
mainBranchName: 'linux-V.P.y'
---
gitGraph
branch baikal-next order: 2
branch amlogic-next order: 3
commit
commit
commit
commit
checkout baikal-next
commit
commit
commit
checkout linux-V.P.y
commit
commit
commit id: "Linux V.P" tag: "vV.P"
branch landau-next order: 1
commit id: " " type: HIGHLIGHT
checkout amlogic-next
merge landau-next
checkout baikal-next
merge landau-next
checkout landau-next
merge amlogic-next
merge baikal-next
commit id: "LANDAU-Linux V.P.l-rc1" tag: "vV.P.l-rc1"
```
Таким образом, основная нагрузка по исправлению конфликтов ложится на нижестоящих ментейнеров. Главному ментейнуру остаётся лишь собрать все MR в `linux-next`. Если и в этом случае возникают сложные конфликты, то главный ментейнер вправе попросить выполнить повторный цикл **двойного слияния**, чтобы кросс sub-LANDAU-Linux конфликты были разешены на стороне нижестоящих ментейнеров.
К тому же опционально ментейнеры могут выполнять поддержку GIT-веток с патч-сетами для последующей отправки изменений в оригинальный репозиторий ядра Linux. До момента интеграции патч-сеты могут "поглощать" исправления и стилистические изменения в процессе перебазирования на новую версию ядра Linux. Это упрощает сопровождение таких GIT-веток, минимизируя лог изменений, который к тому же является лишним при интеграции в ядро Linux.
---
## 📖 7. Пример полного цикла релиза
### Исходные данные
Выпущено ядро Linux версии **`7.0`**. Это означает, что в оригинальном репозитории ядра Linux изменения, добавленные в период окна слияния, достаточно стабилизировались, этап RC завершён, EXTRAVERSION принимает пустое значение, последний коммит сомволизирует релиз ядра Linux 7.0, а в GIT-репозитории стабильных и LTS веток появляется новая ветка `linux-7.0.y`.
### 📍 Пошаговый пример
#### 👁️ Схема
| Этап | Действие | Результат | Версия сборки |
|------|----------|-----------|---------------|
| 1 | Force-push GIT-ветки `landau-next` на `v7.0` | `landau-next` | — |
| 2 | Старт RMW | `landau-next` | `N/A` |
| 3 | Создание RC1 | `v7.0.l-rc1` | `7.0.l-rc1` |
| 4 | Создание RC2 | `v7.0.l-rc2` | `7.0.l-rc2` |
| 5 | Создание RC3 | `v7.0.l-rc3` | `7.0.l-rc3` |
| 6 | **Финальный релиз** и **создание нумерованной GIT-ветки** | `v7.0.l`
`landau-7.0.y` | `7.0.l` |
| 7 | Выходит оригинальный релиз `7.0.1` | Слияние изменений в `landau-7.0.y` | — |
| 8 | Обновление версии | `v7.0.1.l1` | `7.0.1.l1` |
| 9 | Исходная версия `7.0.x` получает статус EOL | GIT-ветка `landau-7.0.y` архивируется | — |
#### 🔄 Детальное описание процесса
1. **Выход нового стабильного релиза ядра Linux** (например, `v7.0` по результатам 7 недель стабилизации)
2. **Открытие RMW LANDAU-Linux** — берём 2 недели на свой релиз LANDAU-Linux:
- Затаскиваем патч-серии (MR) в ветку `landau-next`, на основе `v7.0`
- Там же происходит решение всех конфликтов
- Формируются первые общие сборки ядра
3. **Выпуск RC-версий** (например, `v7.0.l-rc1`) — RC-релизы делаются в GIT-ветке `landau-next`
4. **Тестирование** — длится до 7 недель (может быть меньше):
- Выпускаются RC-версии: `l-rc1`, `l-rc2`, `l-rc3` и т.д.
5. **Финальный релиз и отвод стабильной ветки**:
- Выпускаем релиз `v7.0.l`
- Создаём стабильную GIT-ветку **`landau-7.0.y`** на базе последнего релиза
- Вся дальнейшая поддержка этой версии ведётся в `landau-7.0.y`
6. **Завершение цикла `landau-next`**:
- Ветка `landau-next` останавливает свой рост на первом релизе `v7.0.l`
- Переключается на шаг 1, когда в исходном репозитории Linux выходит новый стабильный релиз (например, `v7.1`)
7. **Интеграция новых изменений SUBLEVEL из исходной стабильной версии ядра Linux**:
- Если в исходном репозитории меняется SUBLEVEL (например, `7.0.1`), мы интегрируем данный релиз в **`landau-7.0.y`**
- Повышаем свою версию: `v7.0.1.l1`
- То есть повышается версия LANDAU-Linux, а SUBLEVEL получает новое значение согласно интегрированным изменениям
8. **Развитие стабильной версии**:
- Стабильная версия LANDAU-Linux `v7.0` ведётся в ветке `landau-7.0.y`
9. **Окончание поддержки релиза**:
- Поддержка релиза ветки LANDAU-Linux заканчивается, когда версия основного ядра больше не имеет статус стабильной на kernel.org (например, `7.0` достигла статуса EOL)
10. **LTS-поддержка**:
- Если основное ядро уходит в LTS, LANDAU поддерживает LTS до конца
- Приносятся только фиксы LANDAU-Linux (без новых фич) и новые SUBLEVEL
11. **Гарантии поддержки**:
- LANDAU-Linux Owners гарантированно поддерживают **одно последнее LTS ядро**
- Про поддержку более старых LTS ядер думаем при наличии ресурсов
#### 📊 Визуализация цикла
```mermaid
flowchart TD
A[Выход нового
стабильного релиза ядра Linux
например, v7.0] --> B[Открытие RMW LANDAU
2 недели]
B --> C[Приём MR в landau-next
на основе v7.0]
C --> D[Выпуск RC1, RC2, RC3...
до 7 недель]
D --> E{Тестирование пройдено?}
E -->|Нет| D
E -->|Да| F[Релиз v7.0.l
⚡ Отвод GIT-ветки
landau-7.0.y]
F --> G[Ожидание нового
стабильного релиза ядра Linux]
G --> H[Выходит стабильный релиз
с новым SUBLEVEL,
например, 7.0.1]
H --> I[Интеграция в landau-7.0.y:
v7.0.1.l1]
I --> J{Исходная версия EOL?}
J -->|Нет| H
J -->|Да| K[Архивация GIT-ветки
landau-7.0.y]
```
#### 🏷️ Пример полной цепочки тегов
Для ядра `7.0.x` в LANDAU:
```
v7.0.l-rc1 → v7.0.l-rc2 → v7.0.l-rc3 → v7.0.l
↓
отвод landau-7.0.y
↓
v7.0.1.l1 → v7.0.2.l2 → ...
```
---
### Требования к патчам
TODO
### Pull requests
TODO
### Maintainers B4 usage
TODO
---
## 📚 8. Ссылки и ресурсы
| Ресурс | URL |
|--------|-----|
| 📦 Репозитории LANDAU | `https://git.rulkc.org/pub/scm/landau` |
| 🪞 Зеркала репозиториев Linux| `https://git.rulkc.org` |
| 🔗 Оригинальные репозитории Linux | `https://kernel.org` |
---
> 📌 **Актуальная версия документа**: 1.0
> ✍️ **Поддерживается**: LANDAU Maintainers
> 📅 **Последнее обновление**: 2026
[⬅️ Вернуться на страницу LANDAU Linux](./index.md)