Autor Wątek: [How To]Kompilujemy kernel z patchem ze "stable-review"  (Przeczytany 3819 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

sir_lucjan

  • AUR-OR
  • Administrator
  • Ekspert
  • *****
  • Wiadomości: 1327
  • Reputacja +11/-0
  • Nic nie działa, jak Polska cała!
    • Mój profil w AUR
  • Architektura: x86_64
  • DE/WM: Plasma 5
  • Distro: Arch Linux
  • GPU: Intel
  • Kernel: linux-bfq-haswell
[How To]Kompilujemy kernel z patchem ze "stable-review"
« dnia: Październik 27, 2014, 20:34:15 »
Uwaga. Poradnik skierowany jest dla osób średniozaawansowanych - czyli takich, dla których podjęcie reanimacji systemu po ewentualnych błędach nie będzie problemem.

Czym jest stable-review? Znajdziemy tutaj wersje rc patchy z upstreamu do wydań stabilnych oraz lts. Zanim wersja oznaczona przykładowo jako 3.16.6 ujrzy światło dzienne trafia właśnie do stable-review z oznaczeniem 3.16.6-rc1. Jeśli nie możemy doczekać się nowej wersji kernela, zżera nas ciekawość, co ona przyniesie oraz dysponujemy odpowiednią wiedzą, to możemy skompilować odpowiedni kernel z zastosowaniem patcha prosto ze stable-review. Nie przypomina to jednak klasycznego kompilowania kernela. Patcha ze stable review nie możemy nałożyć bezpośrednio na kernel tak jak czynimy to ze stabilnym patchem. Konstrukcja wygląda więc następująco:


kernel + stabilny patch z upstreamu + patch w wersji rcX ze stable-review


W przypadku kernela ze stabilnym patchem konstrukcja wygląda następująco (przedstawię to za pomocą swojego spersonalizowanego PKGBUILDA):

Cytuj
pkgbase=linux-lucjan
pkgname=('linux-lucjan-kernel' 'linux-lucjan-headers' 'linux-lucjan-docs')
_kernelname=-lucjan
_srcname=linux-3.16
pkgver=3.16.5
pkgrel=4
arch=('i686' 'x86_64')
url="http://kerneldedup.org/"
license=('GPL2')
options=('!strip')
makedepends=('kmod' 'inetutils' 'bc')
_uksmvernel="0.1.2.3"
_uksmname="v3.16.ge.1"
_bfqpath="http://algo.ing.unimo.it/people/paolo/disk_sched/patches/3.16.0-v7r5"
_ckpatchversion=2
_ckpatchname="patch-3.16-ck${_ckpatchversion}"
_gcc_patch="enable_additional_cpu_optimizations_for_gcc_v4.9+_kernel_v3.15+.patch"


source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
        "http://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz"
        "http://kerneldedup.org/download/uksm/${_uksmvernel}/uksm-${_uksmvernel}-for-${_uksmname}.patch" # website often went down
        #"uksm-${_uksmvernel}-for-${_uksmname}.test.patch"
        "http://ck.kolivas.org/patches/3.0/3.16/3.16-ck${_ckpatchversion}/${_ckpatchname}.bz2"
        "http://repo-ck.com/source/gcc_patch/${_gcc_patch}.gz"
        "${_bfqpath}/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r5-3.16.patch"
        "${_bfqpath}/0002-block-introduce-the-BFQ-v7r5-I-O-sched-for-3.16.patch"
        "${_bfqpath}/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r5-for-3.16.0.patch"
        'linux-lucjan.preset'
        'change-default-console-loglevel.patch'
        'config' 'config.x86_64')
       
prepare() {
    cd ${_srcname}

    ### add upstream patch
    patch -Np1 -i "${srcdir}/patch-${pkgver}"


Jest to klasyczny układ - praktycznie identyczny jak w linux-ck czy kernelach udostępnianych przeze mnie w AUR. Po zaaplikowaniu patcha ze stable-review winno to wyglądać następująco:


Cytuj
pkgbase=linux-lucjan
pkgname=('linux-lucjan-kernel' 'linux-lucjan-headers' 'linux-lucjan-docs')
_kernelname=-lucjan
_srcname=linux-3.16
pkgver=3.16.6
_pkgver=3.16.5
__pkgver=3.16.6-rc1
pkgrel=0
arch=('i686' 'x86_64')
url="http://kerneldedup.org/"
license=('GPL2')
options=('!strip')
makedepends=('kmod' 'inetutils' 'bc')
_uksmvernel="0.1.2.3"
_uksmname="v3.16.ge.1"
_bfqpath="http://algo.ing.unimo.it/people/paolo/disk_sched/patches/3.16.0-v7r5"
_ckpatchversion=2
_ckpatchname="patch-3.16-ck${_ckpatchversion}"
_gcc_patch="enable_additional_cpu_optimizations_for_gcc_v4.9+_kernel_v3.15+.patch"


source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
        "http://www.kernel.org/pub/linux/kernel/v3.x/patch-${_pkgver}.xz"
        "https://www.kernel.org/pub/linux/kernel/v3.x/stable-review/patch-${__pkgver}.xz"
        "http://kerneldedup.org/download/uksm/${_uksmvernel}/uksm-${_uksmvernel}-for-${_uksmname}.patch" # website often went down
        #"uksm-${_uksmvernel}-for-${_uksmname}.test.patch"
        "http://ck.kolivas.org/patches/3.0/3.16/3.16-ck${_ckpatchversion}/${_ckpatchname}.bz2"
        "http://repo-ck.com/source/gcc_patch/${_gcc_patch}.gz"
        "${_bfqpath}/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r5-3.16.patch"
        "${_bfqpath}/0002-block-introduce-the-BFQ-v7r5-I-O-sched-for-3.16.patch"
        "${_bfqpath}/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r5-for-3.16.0.patch"
        'linux-lucjan.preset'
        'change-default-console-loglevel.patch'
        'config' 'config.x86_64')
       
prepare() {
    cd ${_srcname}

    ### add upstream patch
    patch -Np1 -i "${srcdir}/patch-${_pkgver}"
    patch -Np1 -i "${srcdir}/patch-${__pkgver}"

Kolorem czerwonym oznaczyłem wszelkie zmiany jakie powinny zostać naniesione na posiadany przez nas PKGBUILD. Tak jak wspominałem wcześniej, do zbudowania kernela oznaczanego przeze mnie jako 3.16.6-0 potrzebowałem kombinacji patchy 3.16.5 oraz 3.16.6-rc1 - i takie zmiany naniosłem na PKGBUILD. Patch ze stable-review musi zostać zaaplikowany PO stabilnym patchu z upstreamu - kolejność nie jest przypadkowa - wręcz przeciwnie, w przypadku PKGBUILD-ów jest ona bardzo istotna.

Jeśli nanieśliśmy zmiany, możemy przejść do kolejnego etapu - czyli do skompilowania. Tutaj postępujemy analogicznie jak z każdym innym kernelem. Tak więc możemy skompilować kernel generic, możemy zastosować się też do poradników dostępnych na Forum i skompilować kernel skrojony na miarę.

Powtarzam, poradnik ten nie jest przeznaczony dla każdego użytkownika Forum, w szczególności dla tych, którzy dopiero rozpoczynają przygody z kompilowaniem.
« Ostatnia zmiana: Sierpień 25, 2015, 07:37:29 wysłana przez sir_lucjan »
Dell Inspiron 15-3542 (3542-2538) || Linux Register User: #536661
[AUR]  [GitHub]

 

Polityka cookies
Darmowe Fora | Darmowe Forum
weganizm thepunisher ppiz furenzu articz