Update of build script and FIT config

- Use a root.tar.gz file if existing instead of debootstrap (quicker)
- Copy FIT from InstallingDebianOn/Asus/C201
- Fixed various path errors
- Dated image filename
- Improved cleanup
This commit is contained in:
Thomas Schwery 2016-11-09 08:04:40 +01:00
parent 5546814bae
commit 35421cdd13
2 changed files with 76 additions and 29 deletions

View file

@ -6,14 +6,18 @@ SDCARDDEVICE=/dev/mmcblk1
TGT_HOSTNAME="preila"
read -p "Username: " TGT_USERNAME
read -p "Password: " TGT_PASSWORD
# 1234
TGT_PASSWORD='$6$2b3uuej5$fIOp13FK5BnkDo5hX7hP8bmsGeKk9cXl.FAtZ6Ti/3W4dZp4GAY1ZbD2D8jygK5Z7mCnsjGp9uzsIEBRITvO50'
IMAGEFILE=$(mktemp -p .)
MOUNTDIR=mount-$(basename $IMAGEFILE)
mkdir $MOUNTDIR
BASEDIR=$(mktemp -d -p .)
IMAGEFILE="${BASEDIR}/image-$(date +'%y-%m-%d_%H:%M').raw"
MOUNTDIR="${BASEDIR}/mnt"
KERNELDIR="${BASEDIR}/kernel"
mkdir ${MOUNTDIR} ${KERNELDIR}
PART_SECTOR_FIRST=34
PART_SECTOR_FIRST_SIZE=32768 # 16MiB = (16 * 1024 * 1024) / 512
PART_SECTOR_FIRST_SIZE=49152 # 24MiB = (24 * 1024 * 1024) / 512
PART_SECTOR_SECOND=$(echo $PART_SECTOR_FIRST + $PART_SECTOR_FIRST_SIZE + 1 | bc)
PART_SECTOR_SECOND_END=4194270 # Given by gdisk on a 2GiB image file
PART_SECTOR_SECOND_SIZE=$(echo $PART_SECTOR_SECOND_END - $PART_SECTOR_SECOND | bc)
@ -28,41 +32,69 @@ cgpt add -t data -l / -b ${PART_SECTOR_SECOND} -s ${PART_SECTOR_SECOND_SIZE} ${I
echo "Formatting the root partition ..."
LOOPDEVICE=$(sudo losetup --partscan --show --find $IMAGEFILE)
sudo mkfs.ext4 ${LOOPDEVICE}p2
sudo mkfs.ext2 ${LOOPDEVICE}p2
sudo mount ${LOOPDEVICE}p2 ${MOUNTDIR}
echo "Bootstrapping a Debian install ..."
sudo debootstrap \
--arch=armel \
--foreign stretch \
--include sudo cgpt vboot-utils vboot-kernel-utils \
$MOUNTDIR \
http://http.debian.net/debian
sudo cp /usr/bin/qemu-arm-static ${MOUNTDIR}/usr/bin/
CURRENTDIR=$(pwd)
if [ -f root.tar.gz ]; then
echo "Extracting provided root image"
cd ${MOUNTDIR} && sudo tar xvf ${CURRENTDIR}/root.tar.gz
cd ${CURRENTDIR}
else
echo "Bootstrapping a Debian install ..."
sudo debootstrap \
--arch=armhf \
--foreign \
--include=sudo,cgpt,vboot-utils,vboot-kernel-utils \
stretch \
$MOUNTDIR \
http://http.debian.net/debian
sudo cp /usr/bin/qemu-arm-static ${MOUNTDIR}/usr/bin/
sudo chroot ${MOUNTDIR} /debootstrap/debootstrap --second-stage
fi
echo ${TGT_HOSTNAME} | sudo tee ${MOUNTDIR}/etc/hostname >/dev/null
echo "Completing the bootstrap process ..."
sudo chroot ${MOUNTDIR} /debootstrap/debootstrap --second-stage
sudo chroot ${MOUNTDIR} apt install sudo
sudo chroot ${MOUNTDIR} passwd -l root
sudo chroot ${MOUNTDIR} adduser ${TGT_USERNAME}
sudo chroot ${MOUNTDIR} useradd -p ${TGT_PASSWORD} -m ${TGT_USERNAME}
sudo chroot ${MOUNTDIR} addgroup ${TGT_USERNAME} sudo
sudo tee -a ${MOUNTDIR}/etc/apt/sources.list >/dev/null <<EOF
deb http://deb.debian.org/debian sid main
EOF
sudo tee ${MOUNTDIR}/etc/apt/preferences.d/pinning >/dev/null <<EOF
Package: *
Pin: release a=testing
Pin-Priority: 500
Package: *
Pin: release a=unstable
Pin-Priority: 250
EOF
sudo chroot ${MOUNTDIR} apt-get update
sudo chroot ${MOUNTDIR} apt-get --assume-yes install linux-image-4.8.0-1-armmp-unsigned
sudo tee ${MOUNTDIR}/etc/fstab >/dev/null <<EOF
${SDCARDDEVICE}p2 / ext4 errors=remount-ro 0 1
EOF
sudo umount ${MOUNTDIR}
echo "Signing and copying the kernel ..."
KERNELDIR=$(mktemp -d -p .)
cp ${MOUNTDIR}/boot/vmlinuz-4.8.0-1-armmp ${MOUNTDIR}/boot/initrd.img-4.8.0-1-armmp ${KERNELDIR}
cp ${MOUNTDIR}/usr/lib/linux-image-4.8.0-1-armmp/rk3288-veyron-speedy.dtb ${KERNELDIR}
cat > ${KERNELDIR}/kernel.flags <<EOF
console=tty1 printk.time=1 nosplash rootwait root=${SDCARDDEVICE}p2 ro rootfstype=ext4 lsm.module_locking=0
console=tty1 printk.time=1 nosplash rootwait root=/dev/mmcblk1p2 rw rootfstype=ext4 lsm.module_locking=0
EOF
cp kernel_c201.its ${KERNELDIR}
cd ${KERNELDIR}
mkimage -f kernel_c201.its kernel_c201.itb
cd ${CURRENTDIR}
futility --debug vbutil_kernel \
--arch arm \
--version 1 \
@ -70,16 +102,19 @@ futility --debug vbutil_kernel \
--signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
--bootloader ${KERNELDIR}/kernel.flags \
--config ${KERNELDIR}/kernel.flags \
--vmlinuz kernel_c201.itb \
--vmlinuz ${KERNELDIR}/kernel_c201.itb \
--pack ${KERNELDIR}/kernel_c201.signed
sudo dd if=${KERNELDIR}/kernel_c201.signed of=${LOOPDEVICE}p1 status=progress
rm -r ${KERNELDIR}
cgpt add -i 1 -P 15 -S 0 -T 1 ${IMAGEFILE}
echo "Cleaning up ..."
sudo umount ${MOUNTDIR}
sudo losetup -d ${LOOPDEVICE}
rm -r ${KERNELDIR}
rmdir ${MOUNTDIR}
mv ${IMAGEFILE} $(basename ${IMAGEFILE})
rmdir ${BASEDIR}

View file

@ -6,7 +6,7 @@
images {
kernel@1{
description = "vmlinuz";
data = /incbin/("arch/arm/boot/zImage");
data = /incbin/("vmlinuz-4.8.0-1-armmp");
type = "kernel_noload";
arch = "arm";
os = "linux";
@ -17,7 +17,7 @@
};
fdt@1{
description = "dtb";
data = /incbin/("arch/arm/boot/dts/rk3288-veyron-speedy.dtb");
data = /incbin/("rk3288-veyron-speedy.dtb");
type = "flat_dt";
arch = "arm";
compression = "none";
@ -25,12 +25,24 @@
algo = "sha1";
};
};
ramdisk@1{
description = "initrd.img";
data = /incbin/("initrd.img-4.8.0-1-armmp");
type = "ramdisk";
arch = "arm";
os = "linux";
compression = "none";
hash@1{
algo = "sha1";
};
};
};
configurations {
default = "conf@1";
conf@1{
kernel = "kernel@1";
fdt = "fdt@1";
ramdisk = "ramdisk@1";
};
};
};