]> pere.pagekite.me Git - homepage.git/blobdiff - blog/archive/2013/10/10.rss
Generated.
[homepage.git] / blog / archive / 2013 / 10 / 10.rss
index a5cb85ee8fa367caecd1bbf0e11433c9d7f783bb..472d8c7ce73fcc553213a9661c1c3fb93982ab77 100644 (file)
@@ -6,6 +6,121 @@
                 <link>http://people.skolelinux.org/pere/blog/</link>
 
        
+       <item>
+               <title>Teaching vmdebootstrap to create Raspberry Pi SD card images</title>
+               <link>http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</link>        
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Teaching_vmdebootstrap_to_create_Raspberry_Pi_SD_card_images.html</guid>
+                <pubDate>Sun, 27 Oct 2013 17:00:00 +0100</pubDate>
+               <description>&lt;p&gt;The
+&lt;a href=&quot;http://packages.qa.debian.org/v/vmdebootstrap.html&quot;&gt;vmdebootstrap&lt;/a&gt;
+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
+&lt;a href=&quot;https://wiki.debian.org/RaspberryPi&quot;&gt;Raspberry Pi&lt;/a&gt;, as part
+of a plan to simplify the build system for
+&lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the FreedomBox
+project&lt;/a&gt;.  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.&lt;/p&gt;
+
+&lt;p&gt;Armed with the knowledge on how to build &quot;foreign&quot; (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
+&lt;a href=&quot;http://people.skolelinux.org/pere/blog/A_Raspberry_Pi_based_batman_adv_Mesh_network_node.html&quot;&gt;Debian
+Jessie based mesh node images for the Raspberry Pi&lt;/a&gt;.  First, the
+&lt;tt&gt;--foreign /path/to/binfm_handler&lt;/tt&gt; 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 &lt;tt&gt;--bootsize size&lt;/tt&gt; and &lt;tt&gt;--boottype
+fstype&lt;/tt&gt; 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 &lt;tt&gt;--variant
+variant&lt;/tt&gt; option to allow me to create smaller images without the
+Debian base system packages installed.  Finally, I added an option
+&lt;tt&gt;--no-extlinux&lt;/tt&gt; 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
+&lt;a href=&quot;http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap/&quot;&gt;the
+upstream project page&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;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:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+#!/bin/sh
+set -e # Exit on first error
+rootdir=&quot;$1&quot;
+cd &quot;$rootdir&quot;
+cat &amp;lt;&amp;lt;EOF &gt; 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
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;Next, fetch the latest vmdebootstrap script and call it like this
+to build the image:&lt;/p&gt;
+
+&lt;pre&gt;
+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
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;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 &lt;a href=&quot;http://www.raspbian.org/&quot;&gt;Raspbian&lt;/a&gt; based images.&lt;/p&gt;
+</description>
+       </item>
+       
        <item>
                <title>Det er jo makta som er mest sårbar ved massiv overvåkning av Internett</title>
                <link>http://people.skolelinux.org/pere/blog/Det_er_jo_makta_som_er_mest_s_rbar_ved_massiv_overv_kning_av_Internett.html</link>        
@@ -22,7 +137,7 @@ påvirke dem.&lt;/p&gt;
 &lt;p&gt;For å ta et lite eksempel: Stortingets nettsted,
 &lt;a href=&quot;http://www.stortinget.no/&quot;&gt;www.stortinget.no&lt;/a&gt; (og
 forsåvidt også
-&lt;a href=&quot;&gt;http://data.stortinget.no/&quot;&gt;data.stortinget.no&lt;/a&gt;),
+&lt;a href=&quot;http://data.stortinget.no/&quot;&gt;data.stortinget.no&lt;/a&gt;),
 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
@@ -59,7 +174,7 @@ over.&lt;/p&gt;
                 <pubDate>Mon, 21 Oct 2013 11:40:00 +0200</pubDate>
                <description>&lt;p&gt;The last few days I have been experimenting with
 &lt;a href=&quot;http://www.open-mesh.org/projects/batman-adv/wiki&quot;&gt;the
-batman-adv mech technology&lt;/a&gt;.  I want to gain some experience to see
+batman-adv mesh technology&lt;/a&gt;.  I want to gain some experience to see
 if it will fit &lt;a href=&quot;https://wiki.debian.org/FreedomBox&quot;&gt;the
 Freedombox project&lt;/a&gt;, and together with my neighbors try to build a
 mesh network around the park where I live.  Batman-adv is a layer 2