AppleTalk Kernel Module for Red Hat Enterprise Linux 5


Red Hat does not provide AppleTalk kernel modules for Red Hat Enterprise Linux 5.1. For common systems a pre-compiled kernel module from HELIOS is available. Optionally you may compile the kernel module on your own.

Note: This description covers Red Hat Enterprise Linux 5.1 but may be similar on other versions.


1. Determining kernel version details

To check your kernel version and patch details enter the following command on a shell:
# uname -r
2.6.18-53.1.13.el5

To check the processor architecture enter the following command on a shell:
# uname -m
x86_64


2. Pre-compiled kernel module

The pre-compiled kernel module should fit for most customers:

Red Hat Enterprise Linux 5.1 64-bit SMP*
* Symmetric Multiprocessing

Note: We compiled the module for the current kernel version 2.6.18-53.1.13.el5 on a x86_64 machine. Other or upcoming kernel patch levels, superseding level 53, have not been tested yet and may need to be compiled manually.

Download the pre-compiled kernel modules from:
http://webshare.helios.de
User Name: tools
Password: tools

  • Login to WebShare and go to the  HELIOS Tools sharepoint. Open the “RHEL5 AppleTalk modules” folder, select the “RHEL5-x86_64-2.6.18-53.1.13.el5.tar” file and select “Transfer” > “Download” from the menu bar.

  • To extract the archive, enter the following commands:
    # cd /usr/local/helios
    # tar xf RHEL5-x86_64-2.6.18-53.1.13.el5.tar

  • Two files are extracted from the archive:
    • The kernel module (“HELIOSDIR/etc/kernel/appletalk.ko”)
    • The pre-start script that loads the kernel module when starting the HELIOS services (“HELIOSDIR/etc/startstop/31helatalk”)

3. Compile the kernel module on your own

We compiled the module for the current kernel version 2.6.18-53.1.13.el5 on a x86_64 machine. Substitute the version and architecture strings as needed. If you do a kernel update later, you may need to re-compile the module to fit the new kernel.

Note: This section addresses experts.

  • Log in on a shell as “root” (No “sudo” nor “su”!).
     
  • Make sure that the required development packages are installed:

    # yum install ncurses-devel
    # yum install kernel-devel
    # yum install make
    # yum install gcc
    # yum install unifdef
    # yum install rpm-build
    # yum install redhat-rpm-config


    Note: The “yum” utility needs internet access and access to RHN (Red Hat Network). If you do not have RHN access on this machine, find the packages (if missing) on http://rhn.redhat.com and install with rpm -ivh <package>.
  • Get kernel source from RHN (this cannot be done using “yum”):
    • Login to http://rhn.redhat.com
    • Go to “Channels”, select your system and architecture
    • Then go to the “Packages” tab, and click the appropriate kernel link, e.g. kernel-2.6.18-53.1.13.el5.x86_64
    • Download the source package, e.g. “kernel-2.6.18-53.1.13.el5.src.rpm”
  • Make sure that the Red Hat source directory exists:
    # mkdir /usr/src/redhat

    Install the kernel source:
    # rpm -ivh /path/to/kernel-2.6.18-53.1.13.el5.src.rpm
  • Unpack the source code in order to get access to the configuration files:
    # cd /usr/src/redhat/SPECS
    # rpmbuild -bp --target=x86_64 kernel-2.6.spec


    This may take a few minutes and will produce a lot of output. The last line should be exit 0.
  • Change to the build directory:
    # cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64
  • Copy the configuration file of the running Red Hat kernel (check uname -r) from the “/boot” directory into the current directory:
    # cp /boot/config-2.6.18-53.1.13.el5 .config

  • Note: There may be several configuration files. Make sure to copy the configuration file with the correct version string.

  • Activate the AppleTalk module in the kernel configuration using the “menuconfig” option:
    # make menuconfig

    Navigate to “Networking” > “Networking options” and find the “Appletalk protocol support” entry. With the space bar you can toggle to “M” (for “module”). Select “Exit” until you will be asked to save the configuration. Save the configuration.
  • The Makefile must now be adjusted for the kernel version.

    First make a backup of your Makefile:
    # cp Makefile Makefile.sav

    Open the Makefile and enter the kernel extra version (Red Hat Enterprise Linux patch level) as parameter EXTRAVERSION, like shown in the example below. Make sure that the specified version information matches exactly the one used for your current kernel (check uname -r):
    # uname -r
    2.6.18-53.1.13.el5


    For the example given above the Makefile would look like this:
    VERSION = 2
    PATCHLEVEL = 6
    SUBLEVEL = 18
    EXTRAVERSION = -53.1.13.el5


    Save the edited Makefile.
  • To create the files required for module compilation start „make“.

    Interrupt the build process (CTRL-C) after about 25 lines (Make sure that the “scripts” directory has been processed!), because at that time, the files you need will be ready.

    # make
     scripts/kconfig/conf -s arch/x86_64/Kconfig
     CHK     include/linux/version.h
     UPD     include/linux/version.h
     CHK     include/linux/utsrelease.h
     UPD     include/linux/utsrelease.h
     SYMLINK include/asm -> include/asm-x86_64
     CC      arch/x86_64/kernel/asm-offsets.s
     GEN     include/asm-x86_64/asm-offsets.h
     HOSTCC  scripts/genksyms/genksyms.o
     SHIPPED scripts/genksyms/lex.c
     SHIPPED scripts/genksyms/parse.h
     SHIPPED scripts/genksyms/keywords.c
     HOSTCC  scripts/genksyms/lex.o
     SHIPPED scripts/genksyms/parse.c
     HOSTCC  scripts/genksyms/parse.o
     HOSTLD  scripts/genksyms/genksyms
     CC      scripts/mod/empty.o
     HOSTCC  scripts/mod/mk_elfconfig
     MKELF   scripts/mod/elfconfig.h
     HOSTCC  scripts/mod/file2alias.o
     HOSTCC  scripts/mod/modpost.o
     HOSTCC  scripts/mod/sumversion.o
     HOSTLD  scripts/mod/modpost
     HOSTCC  scripts/kallsyms
     HOSTCC  scripts/pnmtologo
     HOSTCC  scripts/conmakehash
     CC      init/main.o
     CHK     include/linux/compile.h
     UPD     include/linux/compile.h
     CC      init/version.o
     CC      init/do_mounts.o
    make[1]: *** [init/do_mounts.o] Interrupt
    make:    *** [init] Interrupt
  • Compile the AppleTalk module:

    # make M=net/appletalk
     LD      net/appletalk/built-in.o
     CC [M]  net/appletalk/aarp.o
     CC [M]  net/appletalk/ddp.o
     CC [M]  net/appletalk/dev.o
     CC [M]  net/appletalk/atalk_proc.o
     CC [M]  net/appletalk/sysctl_net_atalk.o
     LD [M]  net/appletalk/appletalk.o
     Building modules, stage 2.
     MODPOST
     CC      net/appletalk/appletalk.mod.o
     LD [M]  net/appletalk/appletalk.ko


    The AppleTalk module has been created as “net/appletalk/appletalk.ko”.
  • To test the new AppleTalk kernel module type:
    # insmod net/appletalk/appletalk.ko

    The following line should be written to the system messages:
    kernel: NET: Registered protocol family 5
  • To unload the kernel module, enter rmmod appletalk. Make sure that the HELIOS services are not running when doing so.
  • To get the kernel module loaded automatically when starting the HELIOS services, copy the module to “HELIOSDIR/etc/kernel” and use the “31helatalk” script.
    The script is available from:

    http://webshare.helios.de
    User Name: tools
    Password: tools

    Login, go to “HELIOS Tools” > “RHEL5 AppleTalk modules”, select “script-only.tar” and click the “Download” button. To extract the archive, enter the following commands:
    # cd /usr/local/helios
    # tar xf script-only.tar


    The module will now be loaded every time the HELIOS services are started.

Note: Feedback is appreciated!