8.2.2.1. Překlad VServeru na jádro 2.4.24

Po změnách na jednom serveru (moon) jsem se rozhodl upgradovat taky jádro. O tom jak jsem postupoval, je tato sekce. Všechny verze jsou aktuální ke dni 2004-02-18.

Jádro 2.4.24 jsem získal, spolu s potřebnými nástroji z Backports. Pro úplnost uvádím související informace. V souboru /etc/apt/sources.list mám řádek:

deb http://www.backports.org/debian woody kernel-source-2.4.24 kernel-package

a s pomocí apt-get nainstaluji zdroje jádra a pomocné nástroje

# apt-get update
# apt-get install kernel-source-2.4.24 kernel-package

Stáhl jsem si patch na jádro 2.4.24 do adresáře /root/tmp

# wget http://www.13thfloor.at/vserver/s_release/v1.26/patch-2.4.24-vs1.26.diff.gz

Zdroje jádra je třeba rozbalit a vytvořit symbolický odkaz

# cd /usr/src
# tar xjf kernel-source-2.4.24.tar.bz2
# ln -s kernel-source-2.4.24 linux

Do zdrojů jádra si ještě nakopíruji konfiguraci běžícího jádra 2.4.20

# cp /boot/config-2.4.20-moon linux/moon.0

Připravené zdroje jádra je třeba zazáplatovat

# cd linux
# zcat /root/tmp/patch-2.4.24-vs1.26.diff.gz| patch -p1

v průběhu záplatování se vyskytl problém:

patching file include/net/ip.h
Hunk #1 FAILED at 29.
1 out of 1 hunk FAILED -- saving rejects to file include/net/ip.h.rej
patching file include/net/route.h
Hunk #1 succeeded at 33 (offset 1 line).
Hunk #2 FAILED at 168.
1 out of 2 hunks FAILED -- saving rejects to file include/net/route.h.rej
...
Hpatching file net/ipv4/udp.c
Hunk #1 succeeded at 116 (offset 6 lines).
Hunk #2 succeeded at 176 (offset 6 lines).
Hunk #3 succeeded at 219 (offset 6 lines).
Hunk #4 succeeded at 251 (offset 6 lines).
Hunk #5 succeeded at 309 (offset 6 lines).
Hunk #6 FAILED at 557.
Hunk #7 succeeded at 1312 (offset 262 lines).
1 out of 7 hunks FAILED -- saving rejects to file net/ipv4/udp.c.rej

tento je třeba řešit ručne. Vypadá to že oprava je netriviální. Tím jsme skončili a samotný překlad jenž bychom provedi následujícím způsobem nemá smysl.

Ovšem řešení se našlo v použití jiného patche

# cd /root/tmp
# wget http://vserver.13thfloor.at/Experimental/patch-2.4.24-1-vs1.24.1.diff
# cd /usr/src/linux 
# cat /root/tmp/patch-2.4.24-1-vs1.24.1.diff| patch -p1

Tato záplata proběhla bez jakýchkoliv problémů. Pro pořádek jsem si přejmenoval adresář se zdroji jádra

# mv kernel-source-2.4.24 kernel-source-2.4.24-vs1.24.1

Poté jsem již mohl přistoupit k překladu

# cd /usr/src
# ln -sf kernel/source-2.4.24-vs1.24.1 linux
# cd /usr/src/linux
# make-kpkg clean
# make-kpkg --append-to-version -moon --revision 1 \
            --config menu \
            kernel_image modules_image

nahrávám konfiguraci z aktuálního jádra uloženou v moon.0, ukládám konfiguraci do moon.1 beze změn a spouštím překlad opuštěním konfiguračního menu s uložením konfigurace.

K takto připravenému jádru si připravíme nastroje.

deb-src http://debian:9999/main sarge main contrib non-free

# apt-get source --build vserver

Je potřeba nechat v /etc/apt/sources.list odkazy jen na stabilní větev a naše lokální balíčky.

# apt-get install --reinstall vserver