Installing the Native Debian “armhf” Architecture on Raspberry Pi 3 Instead of Raspbian

I’m building a product for Algoram with a Raspberry Pi 3 as the embedded processor. In doing so, I wanted to have a path to a clean and current distribution with as little non-free content as possible. Raspbian, the Debian version run on Raspberry Pi up until now, was created because the Pi had an odd floating point format that wasn’t supported by Debian “armhf”. That is not the case with Pi 3, it works fine with “armhf”. And Raspbian has some other issues: not all packages were built, and it’s somewhat out-of-date compared to Debian 8.4 . So, I decided to put native Debian on the platform instead of Raspbian.

What follows contains a lot of copying of files that should be replaced with .deb packages in a special supplementary archive which is installed along with Native Debian. Run this from the March 18 Raspbian image:

# Manually create an ext4 partition for the Debian system, and mount it on /mnt
apt-get install debootstrap
mount /dev/mmcblk0p3 /mnt
debootstrap --arch=armhf jessie /mnt
cp -ar /lib/modules /mnt/lib
cp -ar /lib/firmware /mnt/lib
cp /etc/fstab /mnt/etc/fstab
# Manually edit /mnt/etc/fstab to mount the proper root partition.
chroot /mnt
mount -t proc proc /proc
apt-get update
apt-get install openssh-server wireless-tools build-essential bluez aptitude bluetooth bluez-hcidump exfat-fuse exfat-utils locales ntpdate fake-hwclock udisks2 wpasupplicant hostapd network-manager dnsmasq rfkill linux-wlan-ng libncurses5-dev bc git
# Manually add a user and set their password, replace $USER below.
adduser $USER
passwd root

If you want to use the serial console, for example if you plan to replace the kernel and need to see its output while booting, you should also edit /boot/config.txt to add this as the last line:


That will move /dev/ttyAMA0 to the serial0 alias and I/O pins 14 and 15 instead of /dev/ttyS0. On Pi 3, /dev/ttyS0 is a “mini-uart” which does not have its own clock generator. It goes off of its normal baud rate due to the dynamic clock frequency of the CPU. A side-effect of this is that Bluetooth is disabled, because /dev/ttyAMA0 was dedicated to the Bluetooth HCI (Host-Controller Interface) on Pi 3. A Bluetooth USB dongle is probably the best solution.

What doesn’t work:

Graphics, the display, the HDMI port.

What we need to do next:

Create a supplementary Debian repository for this work.

Bring over packages for firmware (put it in non-free) kernel, free libraries, pi-specific-bluetooth, and utilities.

Get the upstream 4.6 kernel running.

Get the Open Source OpenGL driver running.

Move over the uboot that someone recently got working.

Don’t attempt to get Debian to accept it at this time, make the whole thing work first and then once it’s stable ask some nice DD to move it over.  I don’t have time to be a DD again.

Ambitious stuff I won’t be able to do right away unless others want to help:

Take the documentation that Broadcom released on the GPU and a little reverse-engineering, and write a replacement for bootcode.bin that minimally boots uboot on the ARM without doing anything about graphics. Release as Free Software.

Figure out how to load the Broadcom graphics kernel in the same way that Linux loads the rest of its firmware from /lib/firmware .

Profit! (No really, I have a hardware product to sell.)

Licensing Code Fragments in Your Blog – It Really Does Matter

I help some big companies stay on top of Open Source compliance. Last week, a customer found a code fragment that had originated in a blog, in the documentation-writing product of a very big software company that is concerned with documents and graphics. The file was meant to be re-distributed with documents my customer produced. The entirety of the blog was licensed underCreative Commons Attribution Share-Alike. The big software company’s code wasn’t under any sort of share-alike license, and thus they were probably infringing on the blog author, and my customer was at risk of being a contributory infringer when it re-distributed this file.

We contacted the help desk of the big software company, and they might get back to us someday. Before getting louder with them, I contacted the blogger.

Bloggers have placed their work under Attribution Share-Alike and other restrictive licenses to prevent their work from being cloned improperly by unscrupulous people on the net, mostly search-engine-optimization scams. The Attribution Share-Alike license requires proper attribution of the author, and sharing of modifications under the same terms as the original. But like many of us, this blogger put code fragments in his writing, and intended for his readers to use them. CC Attribution Share-Alike isn’t the right license for that purpose. It’s not compatible with proprietary code, nor is it compatible with other share-alike licenses like the GPL.

The blogger admitted that it was tempting to get the big software company to take a look at its own compliance issues, but then graciously agreed to change his blog’s licensing. Now, it’s CC Attribution Share-Alike for the text, and the MIT license for the code fragments. And his readers can use the code fragments he publishes without worry, as the MIT license is compatible with pretty much everything.

Public domain or the BSD license would have worked as well. Remember that the default in copyright law is All Rights Reserved. If you don’t put a public domain declaration or some sort of license on your code, other folks don’t really have the legal right to use it at all.

Hopefully, other bloggers will see this and make sure their code fragments are licensed appropriately. Also, programmers should be careful to make sure that they have the right to use code, even if they’re just pulling a dozen lines off of someone’s blog. It’s not at all clear that the fair use doctrine always applies to such use, make sure you have a license and attribute your copy properly.

The Empathy Gap, and Why Women are Treated Badly in Open Source Communities

There are many stories of horrendous treatment of women in Open Source communities. Many projects are attempting to address the issue by instituting social codes and diversity policies. Yes, we really do need such things.

Some years ago, I contributed $1000 to be one of the seed funders of the Ada Initiative, which worked to assist women in participating in Open Source projects. That worked out for several years, and the organization had sort of an ugly meltdown in their last year that is best forgotten. There was something really admirable about the Ada Initiative in its good days, which is that it stuck to one message, stuck to the positive in helping women enter and continue in communities in which they were under-represented, and wasn’t anti-male. That’s the way we should do it.

People continue to work on women’s and diversity issues in the Open Source community in that tradition. Support them! But I remain interested in something they are not addressing:

How Did We Get Here??? How did we ever get to the point that a vocal minority of males in Open Source communities behave in the most boorish, misogynistic, objectifying manner toward women?

My theory is that in preschool through high school, we didn’t teach those individuals how to have healthy friendships and mutually respectful social interaction with women, and that they ended up having very little empathy for women. If the school environment didn’t actively segregate boys and girls, they naturally self-segregated and that wasn’t corrected. And we ended up with another generation of boys who hadn’t spent that much time around girl peers, didn’t understand them, didn’t have empathy for them. Later, when sexual attraction became a factor, the boys lack of empathy led them to objectify women.

It’s unfortunately the case that software development in general and Open Source communities are frequented by males who have social development issues. I once complained online about how offended I was by a news story that said many software developers were on the autism spectrum. To my embarrassment, there were many replies to my complaint by people who wrote “no, I really am on the spectrum and I’m not alone here”.

Why is software a comfortable world for people with social development issues? The world of social relationships isn’t a fair one. People like you or not for reasons of their own. In contrast, software development is inherently fair. If you write it correctly, your program runs. Otherwise, it doesn’t. Your computer doesn’t get offended if you don’t state your message well. It doesn’t hold a grudge. It just waits until you write it correctly.

Online communities like those hosting Open Source developers tend to use textual communications. This is a comfortable environment for people who have trouble with face-to-face interaction.

So, we have an environment that attracts people with social development issues that might lead them to have a lack of empathy toward women, and we have some males who don’t have a pathology but weren’t properly socialized regarding their interaction with women.

This isn’t only a women’s problem. Back in the 1950’s and 1960’s, the United States started to address the problem that White people didn’t grow up with much empathy for Black people because so many White people didn’t grow up with any Blacks around them who were peers rather than servants. So we integrated the schools. I was in Junior High  when we started “busing”, and there was so much resistance to integration that we evacuated for a bomb scare sometime during each school day. There is still a strong “segregationist South” political block within the United States, it’s a factor in every national election.

But school integration has addressed the issue of White people who simply grew up without any Black peers. We didn’t solve the problem of racial inequality but we did make progress.

Are we, as a society, paying as much attention to integrating male and female students throughout their preschool to 12th-grade years? Do we really do much to teach social maturity at all? Do we prevent males and females from naturally self-segregating whenever they have a chance in the school environment?

It’s still an open issue whether males and females have built-in biases that, for example, lead fewer women to be programmers, or if such biases only develop as a response to social signals. There is more science to be done. But it’s difficult to do that sort of science because we can’t separate the individuals from the social signals they’ve grown up with. Certainly we can improve the situation for the women who would be programmers except for the social signals.

Does your school district have the first policy regarding male and female integration and defeating self-segregation wherever it occurs? Can we, by implementing and following one, arrive at a generation with better social development and fewer anti-female biases?

Some feminists object to this idea, because they feel I’m saying that women’s safe spaces are the problem. A “women’s safe space” is a supportive environment where women can be together with other women separately from men, without the social conflict and intimidation that the presence of men (at least the misogynistic kind) would bring. Apparently, there are womens safe spaces at some software conferences, etc.

Women’s safe spaces are a symptom, and by the time we need them it might be too late to treat the disease, misogynistic behavior that develops in males in the preschool to 12th-grade years.

To prevent that disease, we can’t always put women in safe spaces, just as we can’t always put the Blacks and Whites in schools across town from each other if they are to live together as equals.

We can do so much with social codes, and that must be done because solving the real problem takes generations. We’ll only be able to solve that problem if we work today, with our children, to close the empathy gap.

Ian Murdock dead

Ian Murdock was best known as the creator of Debian. He’s someone I met back when I was first getting into Linux, some years after I’d published my first Open Source program. I’d tried SLS and Slackware (early Linux distributions) first, and then Debian, back when Ian was the sole developer of the core system and there were less than 50 package maintainers. It was Ian’s idea to create a non-profit Linux distribution when other distribution creators were attempting to cash in, and to make it all Free Software. 23 years later, I still run Debian on all of my systems and type this on one of them.

I remember writing a recommendation for him when he was taking a research position at U. of Arizona: “Ian is one of those rare people who can make something from nothing”. That he was. Although Debian was, and remains, the work of many people, Ian has the sole credit for its origination, and the impact of Debian has been tremendous although not always well-understood by the public whobenefit from it. Much good software that you use today happened because of Debian, and my own work on Open Source was because of my involvement in Debian.

Later on, I hired Ian to be CEO of Progeny Linux Systems, and my company arranged funding for Progeny. My concept for Progeny was to create a commercially supported Debian system, not unlike the Ubuntu system today. With the cooperation of his stockholders, the Simon group (known for their shopping malls), Ian departed from that concept and attempted to build a business based upon a distributed filesystem that he and a partner had been researching at Arizona.

Unfortunately, the business relationship went toxic from the moment the company was formed. Ian and I didn’t stay friends. None of this diminishes the fact that Ian was a tremendously bright and capable person who did a lot for the world.

After that, Ian was for a time CTO of the Linux Foundation, and was essentially the leader of operating systems development for Sun Microsystems. He held several impressive positions after that.

To those of you who blame the police he encountered twice before his suicide: not this time. Ian died a victim of mental illness.

It’s horrible that such a genius, someone who did so much good, went through that disease and had such a meaningless, unfair, undignified death.