If, like me, you want to follow Nick's instructions for building a fresh image, here's the 18 step procedure I followed.
I have a little sysadmin skill but I've never used multistrap or other esoteric build tools. I boooted the new image and got as far as the console login. I stopped there and thought I'd send these instructions on in case anyone wants a crack at the procedure over the weekend, before the hackfest. What do you think? Nick Hardiman [email protected] @intmachines Get ready 1. Start your workstation. 2. Use a Debian Wheezy OS (my host is called cms01). A virtual image, such as a VirtualBox image, is fine. Usually. 3. Use the root account. Prepare an SD card. 4. Find a microSD card with SD card holder. It must be at least 2GB in size. 5. Insert the card into your workstation. 6. Install a partition editor. Install parted if you are a masochist. apt-get install parted 7. Create 2 partitions. Use cfdisk, parted, gparted or similar. cfdisk /dev/sdb a. First partition: 128meg (no smaller or the kernel copy will run out of room and make - see below - will end with an error). b. Second partition: 2GB (more or less, it doesn't matter). 8. Make a note of the SD card’s device name. Mine is /dev/sdb (my workstation’s layout is simple: one disk called /dev/sda and nothing else defined). 9. Format the two partitions. a. First partition: FAT mkdosfs /dev/sdb1 b. Second partition: ext3 mkfs.ext3 /dev/sdb2 10. Create a mountpoint on your workstation. mkdir /media/freedom 11. Mount the second partition. mount /dev/sdb2 /media/freedom/ 12. Mount the first partition. mount /dev/sdb1 /media/freedom/boot/ 13. Check your work. root@cms01:/media/freedom# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) … /dev/sdb2 on /media/freedom type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered) /dev/sdb1 on /media/freedom/boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,shortname=mixed,errors=remount-ro) root@cms01:/media/freedom# Clone the git repository. 14. Install git. root@cms01:~# apt-get install git Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: git-man liberror-perl rsync Suggested packages: git-daemon-run git-daemon-sysvinit git-doc git-el git-arch git-cvs git-svn git-email git-gui gitk gitweb The following NEW packages will be installed: git git-man liberror-perl rsync 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 8,086 kB of archives. After this operation, 15.3 MB of additional disk space will be used. Do you want to continue [Y/n]? Get:1 http://ftp.uk.debian.org/debian/ wheezy/main liberror-perl all 0.17-1 [23.6 kB] … root@cms01:~# 15. Clone Nick Daly’s repository. root@cms01:~# git clone https://github.com/NickDaly/freedom-maker.git Cloning into 'freedom-maker'... remote: Counting objects: 377, done. remote: Compressing objects: 100% (174/174), done. remote: Total 377 (delta 193), reused 366 (delta 182) Receiving objects: 100% (377/377), 46.40 MiB | 175 KiB/s, done. Resolving deltas: 100% (193/193), done. root@cms01:~# Create the Debian OS. 16. Install tools. apt-get install multistrap qemu-user-static u-boot-tools git mercurial Even though this is mentioned in the Makefile, I had to manually install to avoid the error ./mk_dreamplug_rootfs: line 72: multistrap: command not found 17. Change to the new directory. root@cms01:~# cd /root/freedom-maker/ root@cms01:~/freedom-maker# 18. Kick off. make weekly-card The next part took about an hour, but required no input from me. Packages were downloaded. Commands like this were run. ... apt-get -o Apt::Architecture=armel -o Dir::Etc::TrustedParts=/root/freedom-maker/build/dreamplug/etc/apt/trusted.gpg.d -o Dir::Etc::Trusted=/root/freedom-maker/build/dreamplug/etc/apt/trusted.gpg.d/trusted.gpg -o Apt::Get::Download-Only=true -o Apt::Install-Recommends=false -o Dir=/root/freedom-maker/build/dreamplug/ -o Dir::Etc=/root/freedom-maker/build/dreamplug/etc/apt/ -o APT::Default-Release=* -o Dir::State=/root/freedom-maker/build/dreamplug/var/lib/apt/ -o Dir::State::Status=/root/freedom-maker/build/dreamplug/var/lib/dpkg/status -o Dir::Cache=/root/freedom-maker/build/dreamplug/var/cache/apt/ update ... What does that mean? I don’t know. Errors like this occurred. ... Setting up sysvinit (2.88dsf-22.1) ... sysvinit: creating /run/initctl sysvinit: restarting...init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl .init: timeout opening/writing control channel /run/initctl failed. ... What does that mean? I still don’t know. There was good news like this. ... Multistrap system installed successfully in /root/freedom-maker/build/dreamplug/. Copying the source directory to the FreedomBox root. ... There was an enormous amount of this. ... bin/bash 818092 100% 7.07MB/s 0:00:00 (xfer#1, to-check=1102/1123) bin/cat 42736 100% 362.91kB/s 0:00:00 (xfer#2, to-check=1101/1123) bin/chgrp 54996 100% 383.62kB/s 0:00:00 (xfer#3, to-check=1100/1123) ... This stuff runs on and on for thousands of lines, until … var/log/prosody/prosody.err 402 100% 0.90kB/s 0:00:00 (xfer#31612, to-check=4/40089) var/log/prosody/prosody.log 859 100% 1.92kB/s 0:00:00 (xfer#31613, to-check=3/40089) var/mail/ var/opt/ var/spool/ var/spool/mail -> ../mail var/spool/rsyslog/ var/tmp/ var/www/ var/www/index.html 177 100% 0.40kB/s 0:00:00 (xfer#31614, to-check=0/40089) sent 295603363 bytes received 632817 bytes 1145981.35 bytes/sec total size is 593183522 speedup is 2.00 ... File copying seems to have finished. Then it’s onto the kernel. ... cp kernel/* /media/freedom/boot/ cp build/dreamplug/boot/* /media/freedom/boot/ sudo rm /media/freedom/sbin/copy2dream This won’t work. My SD card is device sdb, not sdc. ... sudo sh -c "sed -e 's/sdc1/sda1/g' < source/etc/fstab > /media/freedom/etc/fstab" sync sleep 1 umount /media/freedom/boot umount /media/freedom Build complete. ... Finally an image is copied and zipped up. ... dd if=/dev/sdb of="freedombox-unstable_`date +%Y.%m%d`.img" bs=1M 3781+1 records in 3781+1 records out 3965190144 bytes (4.0 GB) copied, 266.174 s, 14.9 MB/s Image copied. The microSD card may now be removed. tar -cjvf "freedombox-unstable_`date +%Y.%m%d`.tar.bz2" "freedombox-unstable_`date +%Y.%m%d`.img" freedombox-unstable_2012.0705.img root@cms01:~/freedom-maker# The end. Hooray! The SD card is ready for the DreamPlug. _______________________________________________ Freedombox-discuss mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/freedombox-discuss
