How to patch the kernel with в specific commit

For в project I am working on I need to have this commit in my kernel:

https://git.kernel.org/cgit/linux/kernel/git/bluetooth/bluetooth-next.git/commit/? id=a6ad2a6b9cc1d9d791aee5462cfb8528f366f1d4

It's basically only в few lines of code. In the past I have always been provided with в suitable environment to использовал for projects, except this украдите this is в critical вирус in our project that needs this patch, and since it's in the kernel I have не разрабатывает on how to handle this.

Should I составил в new kernel with this patch in it? Хан I just повторно нравится those lines of code somewhere in the Linux kernel, or isn't there just в patcher that adds just those lines of code?

I haven't tried doing anything myself because I fear I will break the current kernel. Could anyone suggest the best course of action? I have been told on the Ubuntu IRC channel that I should post it on launchpad.net схвати в вирус доклад. The problem is is that if this takes longer than в week, some deadlines have to be altered and this is not wanted.

I am currently running the latest build of Вайли Вереуолф.

2
задан 2 November 2015 в 19:05

2 ответа

Патч является файлом различия между двумя версиями кода ядра. Зеленые строки, в которых + символы, существуют та, которая будет добавлена и красные строки с - символы являются тем, который будет удален.

можно поместить их в .patch файл и использовать команду патча для соединения каналом ее. Это должно помочь Вам использующий команду патча: http://www.thegeekstuff.com/2014/12/patch-command-examples/

необходимо добавить его в источник ядра и затем перекомпилировать ядро: http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html

, Если Вы боитесь повреждения ядра, берет резервное копирование initrd и vmlinuz файлов. Когда это повреждается, можно использовать личинку для начальной загрузки в ту версию ядра. Если Вы, как предполагается, не выполняете ядро на сборке ПК, и это предназначено для целевого ПК, то Вы не должны делать, 'делают установку'.

0
ответ дан 2 December 2019 в 03:51

В большинстве случаев и вероятно в Вашем случае необходимо будет создать пользовательское ядро. Некоторые модули могут быть созданы отдельно, но я боюсь не в этом случае.

Но создание ядра не настолько трудно. Справка Сообщества Ubuntu и Wiki, у каждого есть полезная статья, которая касается всех кроме приложения патча:

Можно сделать это этот путь и обратиться к вышеупомянутым ресурсам, если Вы застреваете где-нибудь (они имеют тенденцию быть более подробными):

  1. Установите требуемые пакеты:

    sudo apt-get install git build-essential fakeroot kernel-package libncurses5-dev libssl-dev
    sudo apt-get build-dep linux-image-$(uname -r)
    

    Вам, возможно, понадобятся некоторые другие пакеты. Я не помню полный список.

  2. Клонируйте репозиторий исходного кода ядра Ubuntu:

    git clone git://kernel.ubuntu.com/ubuntu/ubuntu-wily.git
    

    Замена wily с Вашей Ubuntu выпускают имя.

  3. Перейдите в терминале к исходному каталогу.

    cd ubuntu-wily
    
  4. Найдите файл, необходимо изменить и сделать некоторый выпуск или применить патч.

    • Если патчи доступны как серия фиксаций Мерзавца как в этом случае, можно "избирательно подойти к выбору" их их идентификаторами (после выборки исходного репозитория):

      git fetch git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
      git cherry-pick a6ad2a6b9cc1d9d791aee5462cfb8528f366f1d4
      
    • Иначе загрузите файл исправления и скажите Мерзавцу применять его (можно загрузить веб-браузером вместо wget если Вы предпочитаете):

      wget -O bluetooth-unpairing-fix.patch 'https://git.kernel.org/cgit/linux/kernel/git/bluetooth/bluetooth-next.git/patch/?id=a6ad2a6b9cc1d9d791aee5462cfb8528f366f1d4'
      git am bluetooth-unpairing-fix.patch
      
    • Если файл исправления не находится в формате "почтового ящика" (т.е. он не был отправлен (правильно) списку рассылки Ядра), использование

      git apply bluetooth-unpairing-fix.patch
      

      вместо git am.

    Если патч не может быть применен из-за конфликтующих изменений, патч является несовместимым с текущей версией ядра. Можно попытаться "объединить" незначительные конфликты с инструментами Мерзавца, но обычно необходимо попытаться найти версию патча, который, как предполагается, работает с версией ядра.

  5. Выполненный fakeroot debian/rules clean

  6. Править debian/changelog файл. Можно просто добавить к версии что-то для наблюдения различия с официальными ядрами.

    Пример:

    linux (4.2.0-17.21) wily; urgency=low
    

    изменение в:

    linux (4.2.0-17.21btpatch) wily; urgency=low
    

    Вы будете видеть этот номер версии в debs и в Личинке также.

  7. Создайте ядро

    fakeroot debian/rules DEB_BUILD_OPTIONS=parallel=5  binary-headers binary-generic
    

    parellel=5 для 4 ядер процессора или 4 CPU потока. Ваше число может отличаться. Это - количество ядер или потоков + 1.

    Создание ядра может занять много времени – где угодно от 15 минут до нескольких часов в зависимости от производительности системы!

  8. Вы получите deb-пакеты своего ядра, которое может быть установлено. Можно удалить его, если Вам не нравится что-то.

2
ответ дан 2 December 2019 в 03:51

Другие вопросы по тегам:

Похожие вопросы: