#!/bin/sh # # 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 . set -e set -x enable_eatmydata_override() { chroot $rootdir apt-get install --no-install-recommends -y eatmydata if [ -x $rootdir/usr/bin/eatmydata ] && \ [ ! -f $rootdir/etc/apt/apt.conf.d/95debian-edu-install-dpkg-eatmydata ]; then echo "info: Adding apt config to call dpkg via eatmydata" printf "#!/bin/sh\nexec eatmydata dpkg \"\$@\"\n" \ > $rootdir/var/tmp/dpkg-eatmydata chmod 755 $rootdir/var/tmp/dpkg-eatmydata cat > $rootdir/etc/apt/apt.conf.d/95debian-edu-install-dpkg-eatmydata < etc/apt/sources.list deb $NEW_MIRROR $SUITE $COMPONENTS deb-src $NEW_MIRROR $SUITE $COMPONENTS #deb http://security.debian.org/ $SUITE/updates main #deb-src http://security.debian.org/ $SUITE/updates main EOF } # Set to true/false to control if eatmydata is used during build use_eatmydata=true rootdir="$1" image=$(pwd)/"$2" cd "$rootdir" echo info: building $MACHINE for $ARCHITECTURE to $DESTINATION export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true export LC_ALL=C LANGUAGE=C LANG=C # Override libpam-tmpdir setting during build, as the directories # are not created yet. export TMP=/tmp/ TMPDIR=/tmp/ # set this to 'true' to disable source fetching while debugging export SOURCE=false username=fbx echo "warning: creating initial user $username with well known password!" password=frdm chroot $rootdir adduser --gecos $username --disabled-password $username echo $username:$password | chroot $rootdir /usr/sbin/chpasswd chroot $rootdir adduser $username sudo case "$MACHINE" in virtualbox) # hide irrelevant console keyboard messages. echo "echo \"4 4 1 7\" > /proc/sys/kernel/printk" \ >> /etc/init.d/rc.local ;; esac set_apt_sources $BUILD_MIRROR chroot $rootdir apt-get update cat > $rootdir/usr/sbin/policy-rc.d <&1 | \ tee $rootdir/var/log/freedombox-setup.log # copy u-boot to beginning of image case "$MACHINE" in beaglebone) dd if=$rootdir/usr/lib/u-boot/am335x_boneblack/MLO of="$image" \ count=1 seek=1 conv=notrunc bs=128k dd if=$rootdir/usr/lib/u-boot/am335x_boneblack/u-boot.img of="$image" \ count=2 seek=1 conv=notrunc bs=384k ;; cubietruck) dd if=$rootdir/usr/lib/u-boot/Cubietruck/u-boot-sunxi-with-spl.bin of="$image" \ seek=8 conv=notrunc bs=1k ;; esac if $use_eatmydata ; then disable_eatmydata_override fi set_apt_sources $MIRROR chroot $rootdir apt-get update cd / echo "info: killing leftover processes in chroot" # 2014-11-04 this killed /usr/lib/erlang/erts-6.2/bin/epmd, see # to learn more. fuser -mvk $rootdir/. || true