6.9.3.2. Ukázka překladu jádra

Jedná se o překlad jádra 2.4.22 s moduly pro notebook IBM T30+. Do jádra je zahrnuta formou modulů podpora pro ovládání hardvare notebooku thinkpad a podpora šifrovaných tunelů cipe, jakožto i podpora pro zvukový čip alsa-driver a PC card pcmcia-cs. V modulu cipe je upraven soubor cipe/cipe.h

--- cipe/cipe.h.orig    Sat Oct  4 16:44:26 2003
+++ cipe/cipe.h Sat Oct  4 16:50:39 2003
@@ -153,6 +153,9 @@
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
 #define LINUX_23
 #endif
+#if LINUX_VERSION_CODE == KERNEL_VERSION(2,4,22)
+#define LINUX_26
+#endif
 #if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 91)) && defined(__i386__)
 #define REGPARM /* __attribute__((regparm,3)) XX needs testing */
 #else

a soubor cipe/output.c

--- cipe/output.c.orig  Mon Apr  7 00:53:12 2003
+++ cipe/output.c       Sat Oct  4 17:41:54 2003
@@ -192,10 +192,10 @@
                           cipe_ntoa(0, dst), cipe_ntoa(1, tunnel->myaddr),
                           RT_TOS(tos), tunnel->sock->bound_dev_if));
 #endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,7)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,7) && !defined(LINUX_26)
        err = ip_route_output(&rt, dst, tunnel->sock->rcv_saddr, RT_TOS(tos),
                               tunnel->sock->bound_dev_if);
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45)
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45) && !defined(LINUX_26)
         err = ip_route_output(&rt, dst, inet_sk(tunnel->sock)->rcv_saddr,
                               RT_TOS(tos), tunnel->sock->bound_dev_if);
 #else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45) */
@@ -204,7 +204,11 @@
               { .oif = tunnel->sock->bound_dev_if,
                 .nl_u = { .ip4_u =
                           { .daddr = dst,
+#if defined(LINUX_26)
+                            .saddr = tunnel->sock->rcv_saddr,
+#else
                             .saddr = inet_sk(tunnel->sock)->rcv_saddr,
+#endif
                             .tos = RT_TOS(tos) } },
                 .proto = IPPROTO_UDP };
            err = ip_route_output_key(&rt, &fl);
@@ -236,7 +240,7 @@
                goto tx_error;
        }
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45) && !defined(LINUX_26)
         mtu = rt->u.dst.pmtu - (cipehdrlen+cipefootlen);
 #else
         mtu = dst_pmtu(&rt->u.dst) - (cipehdrlen+cipefootlen);
@@ -252,7 +256,7 @@
                tunnel->stat.collisions++;
                goto tx_error;
        }
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45) && !defined(LINUX_26)
        if (skb->dst && mtu < skb->dst->pmtu) {
                skb->dst->pmtu = mtu;
 #else
@@ -393,7 +397,7 @@
         nf_conntrack_null(skb);
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
         {
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,45) && !defined(LINUX_26)
             int err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL,
                               rt->u.dst.dev, ip_send);
 #else

Poté je možno jádro přeložit

# cd /usr/src
# tar xjf kernel-source-2.4.22.tar.bz2
# export PATCH_THE_KERNEL=NO
# make-kpkg clean
# make-kpkg --append-to-version -yoda --revision 12 \
            --config menu \
            kernel_image modules_image

Při překladu nastaly problémy s moduly alsa-driver.

/usr/bin/make  -C pnp modules
make[5]: Entering directory `/usr/src/modules/alsa-driver/support/pnp'
make[5]: *** No rule to make target `/usr/src/linux/include/linux/modules/bm_osl.ver', needed by `pnp.o'.  Stop.
make[5]: Leaving directory `/usr/src/modules/alsa-driver/support/pnp'
make[4]: *** [_modsubdir_pnp] Error 2
make[4]: Leaving directory `/usr/src/modules/alsa-driver/support'
make[3]: *** [compile] Error 1
make[3]: Leaving directory `/usr/src/modules/alsa-driver'
make[2]: *** [build-stamp] Error 2
make[2]: Leaving directory `/usr/src/modules/alsa-driver'
make[1]: *** [kdist_image] Error 2
make[1]: Leaving directory `/usr/src/modules/alsa-driver'
Module /usr/src/modules/alsa-driver failed.
Hit return to Continue