[Voyage-linux] Preferred method for compiling external kernel modules in voyage 0.8

Gustin Johnson (spam-protected)
Wed Dec 21 01:44:02 HKT 2011


You could also use make-kpkg to output a .deb file.

On Mon, Dec 19, 2011 at 9:21 PM, Jim Cromie <jim.cromie at gmail.com> wrote:
> On Mon, Dec 19, 2011 at 9:56 AM, Jonathan Polom <jon at spkr.net> wrote:
>> On Fri, Dec 16, 2011 at 10:11 AM, Jonathan Polom <jon at spkr.net> wrote:
>>> On Fri, Dec 16, 2011 at 10:10 AM, Jonathan Polom <jon at spkr.net> wrote:
>>>> On Fri, Dec 16, 2011 at 10:05 AM, Zenny <garbytrash at gmail.com> wrote:
>>>>> Yeah, I tried like what Jonathan and Jon explained in 0.8, but failed
>>>>> miserably. I want to roll back to the standard kernel what squeeze
>>>>> officially supports, and trying to install the 2.6.32-6 kernel has
>>>>> been a pain in the ass for the last few days.
>>>>>
>>>>> Actually, there is no clear documentation on how to use SDK and that
>>>>> confused me a while.
>>>>>
>>>>> On 12/16/11, Jonathan Polom <jon at spkr.net> wrote:
>>>>>> On Fri, Dec 16, 2011 at 9:43 AM, Jon Meek <meekjt at gmail.com> wrote:
>>>>>>> On Fri, Dec 16, 2011 at 8:48 AM, Jonathan Polom <jon at spkr.net> wrote:
>>>>>>>>
>>>>>>>> I just started using Voyage MPD last week and quite like it, except
>>>>>>>> for one flaw I've found: building kernel modules for proprietary
>>>>>>>> drivers. The only problem I'm having (and this is not a voyage issue,
>>>>>>>> I had the same problem when I ran Debian stable) is that my wired NIC,
>>>>>>>> which is a lovely Realtek 8111/8168 series controller, uses the
>>>>>>>> problematic r8169 kernel module. The r8169 module is effectively broke
>>>>>>>> for my NIC and causes it to up/down the link randomly and drop a lot
>>>>>>>> of incoming packets. Obviously this is not acceptable and I need to
>>>>>>>> fix it. The accepted fix at this time is to use the r8168 module
>>>>>>>> provided by Realtek. Realtek provides the "source" for this driver on
>>>>>>>> their web site to be compiled as a kernel module and there's also an
>>>>>>>> r8168-dkms package in the Debian sid repos.
>>>>>>>>
>>>>>>>> So far I've had no success compiling the r8168 module from the Realtek
>>>>>>>> tarball or from the DKMS package out of sid (all deps are satisfied
>>>>>>>> for that package). I've installed the kernel source for the
>>>>>>>> 3.0.0-voyage kernel, untarred it to /usr/src/linux-source-3.0.0-voyage
>>>>>>>> and symlinked /usr/src/linux to it, but DKMS consistently claims that
>>>>>>>> it doesn't think the source for the kernel is installed when I run
>>>>>>>> `dpkg-reconfigure r8168-dkms`. I've tried compiling the module
>>>>>>>> directly from the Realtek source via their autorun.sh script, but it
>>>>>>>> looks in /lib/modules/3.0.0-voyage/build for something that isn't
>>>>>>>> there (not too sure what *should* be there even, I've tried symlinking
>>>>>>>> the kernel sources there but that doesn't work either). I've never had
>>>>>>>> this much trouble trying to compile a kernel module before, especially
>>>>>>>> in Debian.
>>>>>>>>
>>>>>>>> I searched my configured apt repos (squeeze, sid and voyage) for
>>>>>>>> available kernel headers and couldn't find one for the voyage kernel
>>>>>>>> (why isn't one available by default? that seems odd, especially so
>>>>>>>> since you're offering a kernel source package) since you really don't
>>>>>>>> need the full source tree available to compile a module in most cases.
>>>>>>>> I did find what looks like a kernel headers package in the voyage
>>>>>>>> experimental repository for the 3.0.0-voyage kernel. But I have to
>>>>>>>> ask: why is the headers package for the default voyage kernel
>>>>>>>> considered experimental? Will that package allow me to compile modules
>>>>>>>> against the headers it contains or are there some known issues with
>>>>>>>> it?
>>>>>>>>
>>>>>>>> So my main question here is: How is one supposed to compile a third
>>>>>>>> party/out-of-tree kernel module on voyage for the voyage kernel?
>>>>>>>>
>>>>>>>> Any help is appreciated on this topic.
>>>>>>>>
>>>>>>>> Jon
>>>>>>>>
>>>>>>>
>>>>>>> This is how I compiled the e1000e driver from Intel's tarball for
>>>>>>> Voyage 0.7.5. Note that this was done to fix an auto-negotiation
>>>>>>> problem that was actually due to a bad UTP cable.
>>>>>>>
>>>>>>> Since I did not want to significantly increase the size of my USB
>>>>>>> image, I built the driver on my mpd server which is a PC Engines ALIX
>>>>>>> board.
>>>>>>>
>>>>>>> On the ALIX board, where some development tools are already installed.
>>>>>>>
>>>>>>>  sudo apt-get update
>>>>>>>  sudo apt-get upgrade
>>>>>>>
>>>>>>>  sudo apt-get install linux-headers-`uname -r`
>>>>>>>
>>>>>>>  sudo reboot
>>>>>>>
>>>>>>> Log back in and move to an appropriate directory:
>>>>>>>
>>>>>>>  cd build
>>>>>>>
>>>>>>>  tar zxf ../dist/e1000e-1.6.3.tar.gz
>>>>>>>
>>>>>>>  sudo ln -s /usr/src/linux-headers-2.6.38-voyage /usr/src/linux
>>>>>>>
>>>>>>>  make
>>>>>>>
>>>>>>> Then grab the compiled driver (mpd:~/build/e1000e-1.6.3/src/e1000e.ko)
>>>>>>> and get it to the target system (running USB system).
>>>>>>>
>>>>>>> On the USB system, verify what driver we are using:
>>>>>>>
>>>>>>>  dmesg | egrep e1000e
>>>>>>>   [    0.971963] e1000e: Intel(R) PRO/1000 Network Driver - 1.2.20-k2
>>>>>>>
>>>>>>> Backup the original driver:
>>>>>>>
>>>>>>>  sudo cp -pi
>>>>>>> /lib/modules/2.6.38-voyage/kernel/drivers/net/e1000e/e1000e.ko
>>>>>>> /lib/modules/2.6.38-voyage/kernel/drivers/net/e1000e/e1000e.ko.orig
>>>>>>>
>>>>>>> Copy new driver into the modules directory
>>>>>>>
>>>>>>>  sudo cp -p ~/dist/e1000e.ko
>>>>>>> /lib/modules/2.6.38-voyage/kernel/drivers/net/e1000e
>>>>>>>
>>>>>>>  sudo /sbin/depmod -a
>>>>>>>
>>>>>>>  sudo dpkg-reconfigure linux-image-2.6.38-voyage
>>>>>>>
>>>>>>>  sudo reboot
>>>>>>>
>>>>>>> Log back in and verify that the new version is running:
>>>>>>>
>>>>>>>  dmesg | egrep e1000e
>>>>>>>  [    0.886074] e1000e: Intel(R) PRO/1000 Network Driver - 1.6.3-NAPI
>>>>>>>
>>>>>>> Success!
>>>>>>>
>>>>>>> Jon (a different one...)
>>>>>>>
>>>>>>
>>>>>> Did you have to configure additional apt repositories to find the
>>>>>> linux-headers package? I did an apt-cache search headers and didn't
>>>>>> find any header packages for the voyage kernel, only the debian
>>>>>> kernels. I'm using voyage 0.8 if that matters which uses the
>>>>>> 3.0.0-voyage kernel. The appropriate headers package would be
>>>>>> linux-headers-3.0.0-voyage and that doesn't seem to exist. From
>>>>>> memory, I have the squeeze repos, voyage repos and sid repos (for the
>>>>>> r8168-dkms package) in sources.list. I will downgrade if necessary as
>>>>>> I don't require bleeding edge anything for this device.
>>>>>>
>>>>>> _______________________________________________
>>>>>> Voyage-linux mailing list
>>>>>> Voyage-linux at list.voyage.hk
>>>>>> http://list.voyage.hk/mailman/listinfo/voyage-linux
>>>>>>
>>>>
>>>> Alright, so I'm not the only one having this problem. That's good I
>>>> guess. It sounds like the voyage 3.0.0 kernel is not complete at this
>>>> point then (missing essential packages for module building). I will
>>>> try 0.7.5 since it seems it works to compile modules against. They
>>>> need to get a kernel headers package for 0.8 or else list it as
>>>> development (not even rc material in my book). But why can't I build
>>>> the DKMS module against the kernel source? Is there something I need
>>>> to do to prepare the source? I tried running make oldconfig but that
>>>> bombed out due to lack of essential support files. Is it completely
>>>> not normal to compile kernel modules against the full kernel source?
>>>
>>> How old is 0.7.5?
>>
>> Would just like to add that I got the r8168 module compiled on
>> voyage-mpd 0.7.5 using the available linux-headers package. I had to
>> blacklist the r8169 module and manually run depmod -a after
>> compilation. I now have the r8168 module loaded for my Realtek
>> 8111/8168 series controller on Voyage MPD.
>>
>
>
> FWIW, you can build plain kernel.org kernels too,
> and skip the debian-isms.
>
> Just untar the kernel, copy the voyage config to .config,
> make oldconfig (to update it with latest CONFIG_* items)
> make
>
> After making, I install to the build-box (a 32 bit laptop) then scp everything
> (/lib/modules/$newver and /boot/*$newver*) over to the voyage box.
> Then edit /boot/grub/menu.lst to add the stanza for the new kernel.
>
> _______________________________________________
> Voyage-linux mailing list
> Voyage-linux at list.voyage.hk
> http://list.voyage.hk/mailman/listinfo/voyage-linux




More information about the Voyage-linux mailing list