After Ubuntu 10.04 melted down–more on that later–on the MacBook, I decided to re-install Slackware64 13.0. Of course, I didn’t keep notes from the last install so I was starting over.
I booted to MacOS, inserted the Slackware DVD, selected Foreign OS on SlackDVD in Startup Disk, and clicked the Restart . . . button. The install went well and quickly. When installing LILO, I selected the Expert option and placed LILO on the MBR of /dev/sda.
When I rebooted, LILO took over and booted Slackware. After logging in as root, I shut down, using halt: experience has taught me that reboot doesn’t work on the Mac.. To get back to MacOS I had to clear the Mac’s PRAM holding command+option+p+r and wait for the startup chord. This got me back to normal Mac startup and I opened a terminal window and re-blessed rEFIt. (Yeah, I still use rEFIt; I never bothered to learn how BootCamp works -)
Upon rebooting into Slackware, I installed wicd from extra. I started the wicd daemon, opened wicd and found that I had no wireless driver. (From this point, I’ll skip all the mistakes I made getting to the solution. Perhaps I’ll blog about those later, though I doubt it!)
For those keeping score, I’m working with one of the unibody MacBooks. Going to About This Mac and clicking the More info . . . button reveals the Model Identifier MacBook5,1 (whatever that means).
In Linux as root, running lspci -v revealed the wireless adapter: Broadcom Corporation BCM4322. I recalled that the quick way to get this working was to install the driver the Broadcom web site. I rebooted to MacOS and after some poking around I finally found the 802.11 Linux STA driver page. I downloaded the 64-bit driver (hybrid-portsrc-x86_64-v5.60.48.36.tar.gz) and saved it to my Mac desktop.
Back in Linux, I mounted the MacOS partion–type hfsplus–and used tar zxf to put the driver in /usr/src/broadcom on my Linux partition. README.txt gave me the very simple build directions: type make in the top-level directory. All went well, and I ended up with the driver wl.ko, which I copied to the /lib/modules/2.6.29.6/kernel/drivers/net directory. All that left was blacklisting b43 and ssb in /etc/modprobe.d/blacklist.conf and rebooting.
The driver loaded and when I open wicd, I can see my wireless network. One click connected me and now I’m up-and-blogging.
May 22, 2010 – Update: I installed Linux kernel version 2.6.34 and, of course, broke the wireless driver.
When I tried to compile the driver using, I got the error:
/usr/src/broadcom/src/include/linuxver.h:23:28: error: linux/autoconf.h: No such file or directory
A little poking around led me to the solution. It seems that autoconf.h has moved in 2.6.34: it now lives in generated (instead of linux). In the Broadcom driver source, in the file src/include/linuxver.h, I changed the line:
#include <linux/autoconf.h>
to
#include <generated/autoconf.h>
The module compiled and worked when I loaded it manually.
In order to load it automagically, I created a new /etc/rc.d/rc.netdevice:
#!/bin/sh
modprobe wl
thank for the tip, I had exactly the same problem to compile on my debian.