#!/bin/sh # needed packages: debootstrap qemu-user-static cgpt u-boot-tools vboot-kernel-utils IMAGELENGTH=$(echo '1 * 1024 * 1024 * 1024' | bc) SDCARDDEVICE=/dev/mmcblk1 TGT_HOSTNAME="preila" read -p "Username: " TGT_USERNAME # 1234 TGT_PASSWORD='$6$2b3uuej5$fIOp13FK5BnkDo5hX7hP8bmsGeKk9cXl.FAtZ6Ti/3W4dZp4GAY1ZbD2D8jygK5Z7mCnsjGp9uzsIEBRITvO50' BASEDIR=$(mktemp -d -p .) IMAGEFILE="${BASEDIR}/image-$(date +'%y-%m-%d_%H_%M').raw" MOUNTDIR="${BASEDIR}/mnt" KERNELDIR="${BASEDIR}/kernel" KERNELVERSION="4.11.0-1-armmp" mkdir ${MOUNTDIR} ${KERNELDIR} PART_SECTOR_FIRST=34 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=$(echo $IMAGELENGTH / 512 - 34 | bc) # LBA - 34 PART_SECTOR_SECOND_SIZE=$(echo $PART_SECTOR_SECOND_END - $PART_SECTOR_SECOND | bc) fallocate -l ${IMAGELENGTH} ${IMAGEFILE} echo "Partitionning the image file ..." /sbin/parted --script ${IMAGEFILE} mklabel gpt cgpt create ${IMAGEFILE} cgpt add -t kernel -l kernel -b ${PART_SECTOR_FIRST} -s ${PART_SECTOR_FIRST_SIZE} ${IMAGEFILE} cgpt add -t data -l / -b ${PART_SECTOR_SECOND} -s ${PART_SECTOR_SECOND_SIZE} ${IMAGEFILE} echo "Formatting the root partition ..." LOOPDEVICE=$(sudo losetup --partscan --show --find $IMAGEFILE) sudo mkfs.ext4 ${LOOPDEVICE}p2 sudo mount ${LOOPDEVICE}p2 ${MOUNTDIR} 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,locales \ buster \ $MOUNTDIR \ http://http.debian.net/debian sudo cp /usr/bin/qemu-arm-static ${MOUNTDIR}/usr/bin/ sudo chroot ${MOUNTDIR} /debootstrap/debootstrap --second-stage sudo cp /etc/locale.gen ${MOUNTDIR}/etc/locale.gen sudo chroot ${MOUNTDIR} locale-gen sudo tee -a ${MOUNTDIR}/etc/apt/sources.list >/dev/null </dev/null </dev/null sudo chroot ${MOUNTDIR} passwd -l root sudo chroot ${MOUNTDIR} useradd -p ${TGT_PASSWORD} -m ${TGT_USERNAME} sudo chroot ${MOUNTDIR} addgroup ${TGT_USERNAME} sudo sudo tee ${MOUNTDIR}/etc/fstab >/dev/null < ${KERNELDIR}/kernel.flags <