Debian Linux on MacBook Pro

I first came across Debian in 1997, nearly 20 years ago. Back then, most internet access was dial-up, and trying to get internet access (if you even knew what that was) could be a major hassle. I was wrestling with the configuration of a Windows '95 computer, on the phone with the tech support people at my ISP. The guy I was talking with mentioned, as we were going one-by-one through the settings of my modem to figure out which one was misbehaving, that this was why he didn't like Windows. I asked him what he used instead and he said, "Oh, I have Debian Linux installed at home. I don't have these kinds of problems. It's so much nicer."

Now, I had heard of Linux — when I was in college, I did most of my coursework on Solaris, a commercial Unix variant that was popular in the 80's. Not because it was required, but because the communications majors raided the PCs in the computer lab and the only computers left were the Sun boxes that the communications majors didn't know (and had no inclination to learn) how to use. I knew that Linux was a Unix variant designed to be run on a PC; I had once come across a shrink-wrapped "RedHat" installation box in a B. Dalton bookstore years before, but at that time, as a full-time student, I didn't have the $100 or so that they wanted for it and I was honestly a little scared to risk turning my very expensive computer hardware into a very expensive paperweight by overwriting the entire operating system.

Still... the recommendation of that one tech support guy, so many years later, was very compelling. I was due to upgrade my computer, so I figured I could keep the old one around and install Linux on it — Debian, based on his recommendation (he seemed to know what he was talking about). Once I made sure that my new computer worked, and I had a way to get on the internet if I ended up completely destroying my old computer, I went to the download site and downloaded the Debian .iso files. Over dialup, it took days, and many restarts, but I finally had enough data to burn a few installation CDs and start the installation process.

The whole installation was great, nerdy fun. I wasn't worried (too much) about frying my hardware, since I had a backup. The installation disc, even back then, offered to walk you through setting up a dual-boot configuration, but you had to do some up-front repartitioning to make that work, including shrinking the windows partition to free up some space for Debian. To keep things simple, I just opted for a full-disk installation. The dire warnings about misconfiguring the XFree86 modeline parameters and actually catching your monitor on fire gave me pause, especially since the warnings just said not to set the modeline values too high but didn't actually say how to figure out what "too high" was. I fortunately did manage to get it up and running without burning down my apartment, though, and it booted to the very nice WindowMaker interface.

I found out that the tech support guy was mistaken about at least one thing: Debian wasn't easier to use against a dial-up ISP — in fact, by default, it was impossible, because my modem was what they called a "winmodem" which didn't actually include enough firmware to complete a dial-up; it needed some additional software to be provided by the OS, and Debian didn't include it. I did briefly try to teach myself enough about firmware and hardware and Linux device drivers to see if I could port it myself, but finally gave up and just bought an external, Linux-friendly modem.

Still, Debian was compelling enough and useful enough that I kept installing it on new computers as I upgraded my hardware. I did finally get around to biting the bullet and figuring out how to do a dual-boot, which was a lot easier than I had anticipated, because it was optimized for the hardware I was working on. I even branched out and tried RedHat and Ubuntu, but to this day, there's still a special place in my heart for Debian.

However, until just now, I had only ever run Debian (or any Linux) on what we used to call "IBM Compatible" hardware — that is, not Apple hardware. As it turns out, I happen to have an old (early 2011) MacBook Pro that's been getting slower and slower as OS/X keeps upgrading, so I finally decided, yet again, to repurpose the hardware as a Debian host. My target install was Macbook8,1, according to System... Preferences. Interestingly, I wasn't able to figure out a way to burn a .iso file onto a bootable CD from Mac; I had to do it from windows. When I tried burning the .iso file onto the CD, I ended up with a copy of the .iso file on the CD, which wasn't at all what I wanted. I burned the netinst.iso amd64 Debian Jessie onto a writable CD, inserted it into the CD-ROM and rebooted. I had to do a little research on how to instruct my Mac to boot from CD; it turns out that have to hold down the "c" key while booting. The "isolinux" screen popped up. I got the warning message:

Some of your hardware needs non-free firmware files to operate. The firmware can be loaded from removable media, such as a USB stick or floppy. The missing firmware files are: b43/ucode29_mimo.fw b43/ucode29_mimo.fw b43-open/ucode29_mimo.fw b43-open/ucode29_mimo.fw If you have such media available now, insert it and continue.
It took me a while to figure out that it wanted the .deb package linux-firmware-nonfree_1.11_all.deb. I just copied that file into the root directory of a USB drive and plugged it in. This was needed for the wifi interface - I wasn't brave enough to try to do the netinst using the wifi, though. I did the installation using the wired ethernet interface. After that, everything was smooth sailing; it felt just like installing Debian on PC hardware. I didn't try to set it up to dual boot, however. When it restarted, I had a moment of panic when I got:
i8042: no controller found
I was reaching for the power button to shut down my failed experiment when it continued on and finished the loading process, with no further problems. I checked, and everything was working: wired ethernet, wifi, sound, external display... after a bit of research, it appears that it was looking for an old keyboard controller, but since it wasn't needed, it's safe to ignore the warning.

All in all, though, I didn't get the speedup I was hoping for. I had timed the startup under OS/X to be somewhere in the neighborhood of 2 and a half minutes. With GNOME running, booting to a graphical login prompt, I observed around 2 minutes. Faster, but still slower than I'd like. I was curious to see how much of that time was spent booting the OS and how much of it was being taken up by GNOME itself, so I decided to change to runlevel 3 and boot to a command prompt and time that. However, as it turns out, there is no runlevel 3 in Debian any more! Debian Jessie uses systemd instead of init (apparently that's actually old news and I'm just out of the loop), and there's no inittab file to modify any more. Instead, you change the default target:

# ln -s /lib/systemd/system/
After making this change, it took a little over a minute consistently to boot to my login prompt, which definitely seemed like progress, but that didn't include wifi initialization. From there, I could run startx manually and get GNOME to come back up (including wifi) in a little over 30 more seconds. A little better, but the startup was still pretty slow; on an older Dell desktop I have, booting to a character-mode login screen takes around 30 seconds and another 2 seconds for startx. I installed the GNOME desktop instead of KDE, but I think I may just ditch the whole "desktop" concept and go back to my tried-and-true WindowMaker that takes up practically no memory, adds practically no overhead, and "just works".

Add a comment:

Completely off-topic or spam comments will be removed at the discretion of the moderator.

You may preserve formatting (e.g. a code sample) by indenting with four spaces preceding the formatted line(s)

Name: Name is required
Email (will not be displayed publicly):
Comment is required
My Book

I'm the author of the book "Implementing SSL/TLS Using Cryptography and PKI". Like the title says, this is a from-the-ground-up examination of the SSL protocol that provides security, integrity and privacy to most application-level internet protocols, most notably HTTP. I include the source code to a complete working SSL implementation, including the most popular cryptographic algorithms (DES, 3DES, RC4, AES, RSA, DSA, Diffie-Hellman, HMAC, MD5, SHA-1, SHA-256, and ECC), and show how they all fit together to provide transport-layer security.

My Picture

Joshua Davies

Past Posts