Какова цель исправлений ядра Linux?

21

Для каждой версии ядра Linux существует файл патча, доступный для скачивания. Например, linux-3.12.22 имеет соответствующий патч-3.12.22 .

Какова цель этого патча? Всегда ли исправлять соответствующее ядро ​​перед его компиляцией или обновлять предыдущую версию ядра тем ядром, которому соответствует исправление (в данном случае 3.12.22)?

Елена
источник

Ответы:

31

Цель состоит в том, чтобы сэкономить много трафика.

Тарбол Linux составляет около 75 МБ, тогда как патчи обычно занимают всего несколько КБ.

Поэтому, если вы компилируете свое собственное ядро ​​и обновляете каждую новую минорную версию в день ее выпуска, а не перезагружаете новый архив размером 75 МБ для каждого второстепенного обновления, вы просто загружаете (например) основной тарбол для данной версии, а затем патч для версии, которую вы на самом деле хотите. При появлении обновления вы повторно используете уже загруженный основной архив.

linux-3.14.tar.xz+ patch-3.14.{1..n}.xzниже 100 МБ в общей сложности.

linux-3.14.tar.xz+ linux-3.14.{1..n}.tar.xzнесколько раз 100MB.

У исправления нет недостатков, конечный результат идентичен, если вы не делаете что-то не так.

frostschutz
источник
9
Как написано, это не совсем отвечает на вопрос. Чтобы быть точным, цель патча состоит в том, что применение его к версии n-1 исходного кода "обновляет" его до версии n. Преимуществом является то , что он экономит много трафика, так как ответ описывает.
Дэвид Ричерби
1
Я не носитель языка. Но преимущество кажется мне слишком слабым. Экономия полосы пропускания / трафика важна для любого сервера. У этого есть цель.
frostschutz
Часть, на которую вы не ответили в явном виде: «Всегда исправлять соответствующее ядро ​​перед его компиляцией или обновлять предыдущую версию ядра тем ядром, которому соответствует исправление (в данном случае 3.12.22)? " patch-3.12.22 - это обновление с версии 3.12.21 до .22, которое нельзя применять к источникам 3.12.22 до их компиляции.
Дэвид Ричерби
Патчи, как правило, для .0, например VERSION = 3 PATCHLEVEL = 12 -SUBLEVEL = 0 +SUBLEVEL = 22. Было бы неприятно пройти через 20 патчей ...
frostschutz
Как бы такая схема экономии трафика была бы лучше, чем, например, иметь git-клон репозитория и делать это, git pullкогда выходит новая версия?
Руслан
5

Они называются «патчсет». Patchset - это группы патчей, которые выполняют одну и ту же функциональность, связаны или реализуют функцию поэтапно. В частности, это разница между основной ревизией ядра (XY) и последующими второстепенными / техническими ревизиями (XY Z ) с несколькими предложениями:

  • Экономьте место на серверах.
  • Сохранить пропускную способность.
  • Быть легко применимым и распространяемым

Помните, что эти наборы патчей являются инкрементными. Сначала вы должны применить патч .1 до патча .2, а после этого вы можете применить .3.

Braiam
источник