aboutsummaryrefslogtreecommitdiffstats
path: root/freedom-maker/bin
diff options
context:
space:
mode:
authorficus <ficus@robocracy.org>2012-09-23 04:22:14 +0200
committerficus <ficus@robocracy.org>2012-09-23 04:22:14 +0200
commitb1aec80110e822d835f6c97a2320b7dfc5fba039 (patch)
tree3f88cf6ec6a8e2836c91705baf2bfc31ab51d0dd /freedom-maker/bin
parente2973e8ea5c57bfa6ed41293e0250c68d29cfed9 (diff)
downloadtorouter-b1aec80110e822d835f6c97a2320b7dfc5fba039.tar.gz
torouter-b1aec80110e822d835f6c97a2320b7dfc5fba039.zip
possibly functional image builder
Diffstat (limited to 'freedom-maker/bin')
-rwxr-xr-xfreedom-maker/bin/finalize6
-rw-r--r--freedom-maker/bin/install.sh85
-rwxr-xr-xfreedom-maker/bin/projects33
-rwxr-xr-xfreedom-maker/bin/projects-chroot1
4 files changed, 89 insertions, 36 deletions
diff --git a/freedom-maker/bin/finalize b/freedom-maker/bin/finalize
index a6cb7da..a530380 100755
--- a/freedom-maker/bin/finalize
+++ b/freedom-maker/bin/finalize
@@ -49,6 +49,10 @@ echo $hostname > $target/etc/hostname
chown root:root $target/sbin/copy2dream
chmod 744 $target/sbin/copy2dream
+# copy over install script
+cp bin/install.sh $target/
+chmod 744 $target/install.sh
+
# prepare chroot package finalization
cp bin/packages-chroot $target/
@@ -57,8 +61,6 @@ chmod 755 $target/install.sh
cp /usr/bin/qemu-arm-static $target/usr/bin
echo "Running install script from source/install.sh"
chroot $target /install.sh
-echo "Running install script from bin/projects-chroot"
-chroot $target /packages-chroot
# clean up.
rm "${target}/packages-chroot"
diff --git a/freedom-maker/bin/install.sh b/freedom-maker/bin/install.sh
new file mode 100644
index 0000000..01b063b
--- /dev/null
+++ b/freedom-maker/bin/install.sh
@@ -0,0 +1,85 @@
+echo "Preconfiguring dash - else dash and bash will be left in a broken state"
+/var/lib/dpkg/info/dash.preinst install
+
+# don't leave target image containing apt config of the build host
+echo "Configuring all packages"
+export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
+export LC_ALL=C LANGUAGE=C LANG=C
+
+# allow flash-kernel to work without valid /proc contents
+# ** this doesn't *really* work, since there are too many checks that fail
+# in an emulated environment! We'll have to do it by hand below anyway...
+export FK_MACHINE="Globalscale Technologies Dreamplug"
+
+# configure all packages unpacked earlier by multistrap
+dpkg --configure -a
+
+echo "Adding source packages to filesystem"
+dpkg --get-selections > /tmp/selections
+mkdir -p /sourcecode
+cd sourcecode
+cut -f 1 < /tmp/selections | cut -d ':' -f 1 > /tmp/packages
+# TODO: torouter
+#apt-get source --download-only `cat /tmp/packages`
+
+# sshd may be left running by the postinst, clean that up
+/etc/init.d/ssh stop
+
+echo "Running install script from bin/projects-chroot"
+/packages-chroot
+
+# torouter setup
+echo "Running torouter_preboot.sh..."
+/usr/bin/torouter_preboot.sh
+
+# process installed kernel to create uImage, uInitrd, dtb
+# using flash-kernel would be a good approach, except it fails in the cross
+# build environment due to too many environment checks...
+#FK_MACHINE="Globalscale Technologies Dreamplug" flash-kernel
+# so, let's do it manually...
+
+# flash-kernel's hook-functions provided to mkinitramfs have the unfortunate
+# side-effect of creating /conf/param.conf in the initrd when run from our
+# emulated chroot environment, which means our root= on the kernel command
+# line is completely ignored! repack the initrd to remove this evil...
+
+echo "Mangling kernel..."
+mkdir /tmp/initrd-repack
+(cd /tmp/initrd-repack ; \
+ zcat /boot/initrd.img-3.2.0-3-kirkwood | cpio -i ; \
+ rm -f conf/param.conf ; \
+ find . | cpio --quiet -o -H newc | \
+ gzip -9 > /boot/initrd.img-3.2.0-3-kirkwood )
+rm -rf /tmp/initrd-repack
+
+(cd /boot ; \
+ cp /usr/lib/linux-image-3.2.0-3-kirkwood/kirkwood-dreamplug.dtb dtb ; \
+ cat vmlinuz-3.2.0-3-kirkwood dtb >> temp-kernel ; \
+ mkimage -A arm -O linux -T kernel -n 'Debian kernel 3.2.0-3-kirkwood' \
+ -C none -a 0x8000 -e 0x8000 -d temp-kernel uImage ; \
+ rm -f temp-kernel ; \
+ mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 \
+ -n 'Debian ramdisk 3.2.0-3-kirkwood' \
+ -d initrd.img-3.2.0-3-kirkwood uInitrd )
+
+# Establish an initial root password
+echo "Set root password to "$rootpassword
+echo root:$rootpassword | /usr/sbin/chpasswd
+
+# Create a default user
+echo "Creating $user user, password: $userpassword"
+useradd $user
+echo $user:$userpassword | /usr/sbin/chpasswd
+
+# By default, spawn a console on the serial port
+echo "Adding a getty on the serial port"
+echo "T0:12345:respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab
+
+echo "Deleting this very same script"
+rm -f /install.sh
+
+echo "Syncing filesystem just in case something didn't get written"
+sync
+
+echo "End configuration progress by exiting from the chroot"
+exit
diff --git a/freedom-maker/bin/projects b/freedom-maker/bin/projects
deleted file mode 100755
index 2b5ed3c..0000000
--- a/freedom-maker/bin/projects
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/bash
-#
-# Copyright 2012 by Nick Daly <nick.m.daly@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-
-# projects
-#
-# Installs external projects to the system.
-
-# We don't tolerate errors.
-set -e
-
-
-echo "Adding a few FreedomBox projects to the image."
-
-git clone git://github.com/NickDaly/Plinth.git $homedir/plinth
-git clone git://github.com/jvasile/freedombox-privoxy $homedir/freedombox-privoxy
-git clone git://github.com/jvasile/withsqlite.git $homedir/withsqlite
-# hg clone https://hg@bitbucket.org/nickdaly/plugserver $homedir/plugserver
-chown -R 1000:1000 $homedir
diff --git a/freedom-maker/bin/projects-chroot b/freedom-maker/bin/projects-chroot
deleted file mode 100755
index 50d4884..0000000
--- a/freedom-maker/bin/projects-chroot
+++ /dev/null
@@ -1 +0,0 @@
-#! /bin/sh