Until Mobile IPv6 extensions are integrated in the mainline kernel, you may have to replace your kernel with one that has Mobile IPv6 support. This involves downloading kernel source and the modifications to support Mobile IPv6, and patching, configuring, compiling and last installing the new kernel in your system. If you have never patched or compiled a Linux kernel, you should take a look at the Kernel HOWTO or Kernel Rebuild Guide available through the Linux Documentation Project's site (http://www.tldp.org/). Be careful, you can render your system unbootable quite easily. Kernel patches usually only work for the exact kernel version they were made for. Therefore, you should not try to use mismatching kernel and patch versions (unless you know what you are doing, and are prepared to fix possible conflicts). All that said, here follows the instructions. 1. Check if your current kernel supports Mobile IPv6 extensions. To do this we have provided a shell script to check it for you. Just run: ./chkconf_kernel.sh This depends on /proc/config.gz to be available. It may tell you one of three things: 1) your kernel does not support /proc/config.gz, 2) your current running kernel does not support MIPv6 extensions, or 3) your current kernel supports everything we need. If the answer was three, you are very lucky and can just skip rest of this document. Otherwise, proceed to the next step. 2. Check if your current kernel sources support Mobile IPv6 extensions. Again, you can use the same tool as in the previous section. Now you just have to locate your kernel sources (usually in /usr/src/linux) and supply that path to the script: ./chkconf_kernel.sh /usr/src/linux Now the script will tell you: 1) if support for Mobile IPv6 is present or not, and 2) if it has been properly configured. If support is there and it has been configured (and you know these settings where used for your running kernel), again you are lucky and may skip rest of this document. If the support was found, but not configured, skip to step 5. For most of us, just continue on. 3. Get the latest Mobile IPv6 kernel patch. Download the latest patch from http://www.mobile-ipv6.org/. The patch will have a version number that tells which kernel version it was built for. As said before, you really should use that kernel version only. Next you should get a fresh kernel source tree. Usually, you should not use the kernel tree that came with your distribution, since distributors often apply their own patches to the tree, which might make it incompatible with the Mobile IPv6 patch. Safest way is to get your kernel source from kernel.org or some other reliable source. Grab a source tree that has matching version number with the Mobile IPv6 patch. 4. Unpack kernel source tree and patch the kernel tree. Once you've unpacked the source tree, change to the source tree's root directory (e.g. /usr/src/linux). Apply the Mobile IPv6 patch (replace mipv6-patch.gz with the actual path of the patch file you downloaded earlier): zcat mipv6-patch.gz | patch -p1 You should get information about the patching process, but no error messages. If no errors appeared, you are all done here and can proceed to the next step. 5. Now your kernel tree is ready for configuration. You may want to copy your old .config from an old kernel source tree (or even /proc/config.gz, if supported) to keep other configuration options the same as before. Run your favorite 'make *config' (e.g. make menuconfig). Make sure you have at least the following options set: CONFIG_EXPERIMENTAL=y CONFIG_SYSVIPC=y CONFIG_PROC_FS=y CONFIG_NET=y CONFIG_INET=y CONFIG_IPV6=y CONFIG_IPV6_MIP6=y CONFIG_XFRM=y CONFIG_XFRM_USER=y CONFIG_XFRM_SUB_POLICY=y CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=y The Home Agent and Mobile Node also need: CONFIG_IPV6_TUNNEL=y CONFIG_IPV6_ADVANCED_ROUTER=y CONFIG_IPV6_MULTIPLE_TABLES=y The Mobile Node also needs: CONFIG_IPV6_SUBTREES=y For some additional movement indicators on the Mobile Node you may set: CONFIG_ARPD=y For IPsec support you need at least: CONFIG_INET6_ESP=y If you plan to use IPsec tunnel mode you need: CONFIG_NET_KEY=y CONFIG_NET_KEY_MIGRATE=y Do not turn CONFIG_IPV6_MIP6_DEBUG on, unless you are specifically debugging the Mobile IPv6 extensions in the kernel. This options will degrade system performance and swamp you with too many debug messages. If you are unsure you got everything right, you can check your configuration with the tool used in steps 1 and 2. ./chkconf_kernel.sh /usr/src/linux Fix any warnings and proceed to the next step. 6. Compile and install the kernel. Proceed with the user space installation described in INSTALL. Be sure to reboot to your new kernel before trying to run the user space daemon.