X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/ef634407f1967a158c6cc90e4d2384c9212cb768..ebfb53b51b789a038b3157fc273aaf96559b76c4:/blog/archive/2013/10/index.html diff --git a/blog/archive/2013/10/index.html b/blog/archive/2013/10/index.html index 75d9687b93..b84631e63c 100644 --- a/blog/archive/2013/10/index.html +++ b/blog/archive/2013/10/index.html @@ -21,6 +21,133 @@

Entries from October 2013.

+
+
+ Teaching vmdebootstrap to create Raspberry Pi SD card images +
+
+ 27th October 2013 +
+
+

The +vmdebootstrap +program is a a very nice system to create virtual machine images. It +create a image file, add a partition table, mount it and run +debootstrap in the mounted directory to create a Debian system on a +stick. Yesterday, I decided to try to teach it how to make images for +Raspberry Pi, as part +of a plan to simplify the build system for +the FreedomBox +project. The FreedomBox project already uses vmdebootstrap for +the virtualbox images, but its current build system made multistrap +based system for Dreamplug images, and it is lacking support for +Raspberry Pi.

+ +

Armed with the knowledge on how to build "foreign" (aka non-native +architecture) chroots for Raspberry Pi, I dived into the vmdebootstrap +code and adjusted it to be able to build armel images on my amd64 +Debian laptop. I ended up giving vmdebootstrap five new options, +allowing me to replicate the image creation process I use to make +Debian +Jessie based mesh node images for the Raspberry Pi. First, the +--foreign /path/to/binfm_handler option tell vmdebootstrap to +call debootstrap with --foreign and to copy the handler into the +generated chroot before running the second stage. This allow +vmdebootstrap to create armel images on an amd64 host. Next I added +two new options --bootsize size and --boottype +fstype to teach it to create a separate /boot/ partition with the +given file system type, allowing me to create an image with a vfat +partition for the /boot/ stuff. I also added a --variant +variant option to allow me to create smaller images without the +Debian base system packages installed. Finally, I added an option +--no-extlinux to tell vmdebootstrap to not install extlinux +as a boot loader. It is not needed on the Raspberry Pi and probably +most other non-x86 architectures. The changes were accepted by the +upstream author of vmdebootstrap yesterday and today, and is now +available from +the +upstream project page.

+ +

To use it to build a Raspberry Pi image using Debian Jessie, first +create a small script (the customize script) to add the non-free +binary blob needed to boot the Raspberry Pi and the APT source +list:

+ +

+#!/bin/sh
+set -e # Exit on first error
+rootdir="$1"
+cd "$rootdir"
+cat <<EOF > etc/apt/sources.list
+deb http://http.debian.net/debian/ jessie main contrib non-free
+EOF
+# Install non-free binary blob needed to boot Raspberry Pi.  This
+# install a kernel somewhere too.
+wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update \
+    -O $rootdir/usr/bin/rpi-update
+chmod a+x $rootdir/usr/bin/rpi-update
+mkdir -p $rootdir/lib/modules
+touch $rootdir/boot/start.elf
+chroot $rootdir rpi-update
+

+ +

Next, fetch the latest vmdebootstrap script and call it like this +to build the image:

+ +
+sudo ./vmdebootstrap \
+    --variant minbase \
+    --arch armel \
+    --distribution jessie \
+    --mirror http://http.debian.net/debian \
+    --image test.img \
+    --size 600M \
+    --bootsize 64M \
+    --boottype vfat \
+    --log-level debug \
+    --verbose \
+    --no-kernel \
+    --no-extlinux \
+    --root-password raspberry \
+    --hostname raspberrypi \
+    --foreign /usr/bin/qemu-arm-static \
+    --customize `pwd`/customize \
+    --package netbase \
+    --package git-core \
+    --package binutils \
+    --package ca-certificates \
+    --package wget \
+    --package kmod
+

+ +

The list of packages being installed are the ones needed by +rpi-update to make the image bootable on the Raspberry Pi, with the +exception of netbase, which is needed by debootstrap to find +/etc/hosts with the minbase variant. I really wish there was a way to +set up an Raspberry Pi using only packages in the Debian archive, but +that is not possible as far as I know, because it boots from the GPU +using a non-free binary blob.

+ +

The build host need debootstrap, kpartx and qemu-user-static and +probably a few others installed. I have not checked the complete +build dependency list.

+ +

The resulting image will not use the hardware floating point unit +on the Raspberry PI, because the armel architecture in Debian is not +optimized for that use. So the images created will be a bit slower +than Raspbian based images.

+ +
+
+ + + Tags: debian, english, freedombox, mesh network. + + +
+
+
+
Det er jo makta som er mest sårbar ved massiv overvåkning av Internett @@ -40,7 +167,7 @@ påvirke dem.

For å ta et lite eksempel: Stortingets nettsted, www.stortinget.no (og forsåvidt også -data.stortinget.no), +data.stortinget.no), inneholder informasjon om det som foregår på Stortinget, og jeg antar de største brukerne av informasjonen der er representanter og rådgivere på Stortinget. Intet overraskende med det. Det som derimot @@ -49,17 +176,18 @@ er mer skjult er at Stortingets nettsted bruker Analytics, hvilket gjør at enhver som besøker nettsidene der også rapporterer om besøket via Internett-linjer som passerer Sverige, England og videre til USA. Det betyr at informasjon om ethvert besøk -på stortingets nettsider kan snappes opp av Svensk, britisk og USAs +på stortingets nettsider kan snappes opp av svensk, britisk og USAs etterretningsvesen. De kan dermed holde et øye med hvilke Stortingssaker stortingsrepresentantene synes er interessante å sjekke ut, og hvilke sider rådgivere og andre på stortinget synes er -interessant å besøke. Stortingets bruk av Google Analytics gjør det -dermed enkelt for utenlands etteretning å spore representantenes -aktivitet og interesse. Hvis noen av representantene bruker Google -Mail eller noen andre tjenestene som krever innlogging, så vil det -være enda enklere å finne ut nøyaktig hvilke personer som bruker -hvilke nettlesere og dermed knytte informasjonen opp til -enkeltpersoner på Stortinget.

+interessant å besøke, når de gjør det og hvilke andre representanter +som sjekker de samme sidene omtrent samtidig. Stortingets bruk av +Google Analytics gjør det dermed enkelt for utenlands etteretning å +spore representantenes aktivitet og interesse. Hvis noen av +representantene bruker Google Mail eller noen andre tjenestene som +krever innlogging, så vil det være enda enklere å finne ut nøyaktig +hvilke personer som bruker hvilke nettlesere og dermed knytte +informasjonen opp til enkeltpersoner på Stortinget.

Og jo flere nettsteder som bruker Google Analytics, jo bedre oversikt over stortingsrepresentantenes lesevaner og interesse blir @@ -88,7 +216,7 @@ over.

The last few days I have been experimenting with the -batman-adv mech technology. I want to gain some experience to see +batman-adv mesh technology. I want to gain some experience to see if it will fit the Freedombox project, and together with my neighbors try to build a mesh network around the park where I live. Batman-adv is a layer 2 @@ -452,6 +580,50 @@ me know. :)

Archive