Introduction
I’m going to describe how to install Kernel 3.8 from Debian experimental repositories into a Debian Unstable from March 2013 (which it’s current kernel version is 3.2).
What I want to test is if I can use my MacBookPro 6,2 integrated Intel Graphics card without having to apply any patch to the kernel as I had already done.
System update
First of all what I have done is updated my system with:
apt-get update apt-get dist-upgrade
Pinning setup
So, once updated the system we need to setup pinning. As explained in Debian Wiki – How To Upgrade kernel we add some lines to preferences file so that experimental packages aren’t used as default.
cat >> /etc/apt/preferences << EOF Package: * Pin: release o=Debian,a=experimental Pin-Priority: 102 EOF
Now we are going to add the experimental repository to sources list with just:
echo "deb http://ftp.de.debian.org/debian experimental main" >> /etc/apt/sources.list
and we apply changes with:
apt-get update
Kernel installation
In my case I want to install the latest amd64 kernel so I need to issue:
apt-get -t experimental install linux-image-3.8-trunk-amd64
You can check latest versions at packages debian experimental linux-image .
Once rebooted (and connected via cable) I’m going to install linux-headers so that I can install wl module so that wireless works too:
sudo apt-get install -t experimental linux-headers-3.8 m-a prepare
After some tests I realised that I needed to uninstall virtualbox before doing m-a prepare with:
apt-get remove virtualbox
.
Then I realised that I needed a fixed version of module-assistant which can be downloaded from this bug: 697360 because kernel version was not being detected ok.
Wireless install
m-a a-i broadcom-sta
But, even then, the build failed.
for templ in ; do \ cp $templ `echo $templ \ | sed -e 's/_KVERS_/3.8-trunk-amd64/g'` ; \ done for templ in `ls debian/*.modules.in` ; do \ test -e ${templ%.modules.in}.backup \ || cp ${templ%.modules.in} \ ${templ%.modules.in}.backup 2>/dev/null \ || true; \ sed -e 's/##KVERS##/3.8-trunk-amd64/g \ ;s/#KVERS#/3.8-trunk-amd64/g \ ; s/_KVERS_/3.8-trunk-amd64/g \ ; s/##KDREV##/3.8.3-1~experimental.1/g \ ; s/#KDREV#/3.8.3-1~experimental.1/g \ ; s/_KDREV_/3.8.3-1~experimental.1/g \ ' ${templ%.modules.in}; \ done dh_clean /usr/bin/make clean KBUILD=/lib/modules/3.8-trunk-amd64/build KVERS=3.8-trunk-amd64 make[1]: se ingresa al directorio `/usr/src/modules/broadcom-sta' KBUILD_NOPEDANTIC=1 make -C /lib/modules/3.8-trunk-amd64/build M=/usr/src/modules/broadcom-sta clean make[2]: se ingresa al directorio `/usr/src/linux-headers-3.8-trunk-amd64' CFG80211 API is prefered for this kernel version CLEAN /usr/src/modules/broadcom-sta/.tmp_versions make[2]: se sale del directorio `/usr/src/linux-headers-3.8-trunk-amd64' make[1]: se sale del directorio `/usr/src/modules/broadcom-sta' debian/rules \ KVERS=3.8-trunk-amd64 \ KSRC=/lib/modules/3.8-trunk-amd64/build \ KDREV=3.8.3-1~experimental.1 kdist_image /usr/bin/make -f debian/rules kdist_clean kdist_config binary-modules make[1]: se ingresa al directorio `/usr/src/modules/broadcom-sta' for templ in ; do \ cp $templ `echo $templ \ | sed -e 's/_KVERS_/3.8-trunk-amd64/g'` ; \ done for templ in `ls debian/*.modules.in` ; do \ test -e ${templ%.modules.in}.backup \ || cp ${templ%.modules.in} ${templ%.modules.in}.backup 2>/dev/null || true; \ sed -e 's/##KVERS##/3.8-trunk-amd64/g ;\ s/#KVERS#/3.8-trunk-amd64/g ;\ s/_KVERS_/3.8-trunk-amd64/g ;\ s/##KDREV##/3.8.3-1~experimental.1/g ;\ s/#KDREV#/3.8.3-1~experimental.1/g ;\ s/_KDREV_/3.8.3-1~experimental.1/g \ ' ${templ%.modules.in}; \ done dh_clean /usr/bin/make clean KBUILD=/lib/modules/3.8-trunk-amd64/build KVERS=3.8-trunk-amd64 make[2]: se ingresa al directorio `/usr/src/modules/broadcom-sta' KBUILD_NOPEDANTIC=1 make -C /lib/modules/3.8-trunk-amd64/build M=/usr/src/modules/broadcom-sta clean make[3]: se ingresa al directorio `/usr/src/linux-headers-3.8-trunk-amd64' CFG80211 API is prefered for this kernel version /usr/src/modules/broadcom-sta/Makefile:80: Neither CFG80211 nor Wireless Extension is enabled in kernel make[3]: se sale del directorio `/usr/src/linux-headers-3.8-trunk-amd64' make[2]: se sale del directorio `/usr/src/modules/broadcom-sta' make[1]: No se hace nada para `kdist_config'. dh_testdir dh_testroot dh_prep # Build and install the module make -C /lib/modules/3.8-trunk-amd64/build M=/usr/src/modules/broadcom-sta make[2]: se ingresa al directorio `/usr/src/linux-headers-3.8-trunk-amd64' CFG80211 API is prefered for this kernel version Using CFG80211 API Kernel architecture is X86_64 LD /usr/src/modules/broadcom-sta/built-in.o CC [M] /usr/src/modules/broadcom-sta/src/shared/linux_osl.o CC [M] /usr/src/modules/broadcom-sta/src/wl/sys/wl_linux.o CC [M] /usr/src/modules/broadcom-sta/src/wl/sys/wl_iw.o CC [M] /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.o /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c: In function ‘wl_cfg80211_join_ibss’: /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 757:26: error: ‘struct cfg80211_ibss_params’ has no member named ‘channel’ /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ At top level: /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 1664:2: warning: initialization from incompatible pointer type [enabled by default] /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 1664:2: warning: (near initialization for ‘wl_cfg80211_ops.set_tx_power’) [enabled by default] /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 1665:2: warning: initialization from incompatible pointer type [enabled by default] /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 1665:2: warning: (near initialization for ‘wl_cfg80211_ops.get_tx_power’) [enabled by default] /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ In function ‘wl_update_bss_info’: /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 2092:11: error: ‘struct cfg80211_bss’ has no member named ‘information_elements’ /usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.c:\ 2093:15: error: ‘struct cfg80211_bss’ has no member named ‘len_information_elements’ make[5]: *** [/usr/src/modules/broadcom-sta/src/wl/sys/wl_cfg80211.o] Error 1 make[4]: *** [_module_/usr/src/modules/broadcom-sta] Error 2 make[3]: *** [sub-make] Error 2 make[2]: *** [all] Error 2 make[2]: se sale del directorio `/usr/src/linux-headers-3.8-trunk-amd64' make[1]: *** [binary-modules] Error 2 make[1]: se sale del directorio `/usr/src/modules/broadcom-sta' make: *** [kdist_build] Error 2
Even trying to force broadcom-sta-source from experimental branch did not work because I had already the last package version.
In the official broadcom sta site: http://www.broadcom.com/support/802.11/linux_sta.php the last version is from 2011 :(. There’s an email for making questions.
I’ll probably ask there if they plan to release versions adapted to 3.8 or not.
So I’m going to revert to my former 3.2.21 custom kernel for the moment.
About Intel i915
As far as I’ve tried the Intel thing did not work
If I remove the four outb lines from the grub boot online editing and I boot then nouveau driver was used instead of intel. In the logs I notice:
'2' invalid for lvds_channel
If the four outb lines remain then I get a blank screen of no use.