First commit
This commit is contained in:
commit
67e6371084
2 changed files with 86 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
tmp.*
|
85
build.sh
Executable file
85
build.sh
Executable file
|
@ -0,0 +1,85 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
IMAGELENGTH=$(echo '2 * 1024 * 1024 * 1024' | bc)
|
||||||
|
SDCARDDEVICE=/dev/mmcblk1
|
||||||
|
|
||||||
|
TGT_HOSTNAME="preila"
|
||||||
|
|
||||||
|
read -p "Username: " TGT_USERNAME
|
||||||
|
read -p "Password: " TGT_PASSWORD
|
||||||
|
|
||||||
|
IMAGEFILE=$(mktemp -p .)
|
||||||
|
MOUNTDIR=mount-$(basename $IMAGEFILE)
|
||||||
|
mkdir $MOUNTDIR
|
||||||
|
|
||||||
|
PART_SECTOR_FIRST=34
|
||||||
|
PART_SECTOR_FIRST_SIZE=32768 # 16MiB = (16 * 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)
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
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/
|
||||||
|
|
||||||
|
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} addgroup ${TGT_USERNAME} sudo
|
||||||
|
|
||||||
|
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 .)
|
||||||
|
|
||||||
|
cat > ${KERNELDIR}/kernel.flags <<EOF
|
||||||
|
console=tty1 printk.time=1 nosplash rootwait root=${SDCARDDEVICE}p2 ro rootfstype=ext4 lsm.module_locking=0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
futility --debug vbutil_kernel \
|
||||||
|
--arch arm \
|
||||||
|
--version 1 \
|
||||||
|
--keyblock /usr/share/vboot/devkeys/kernel.keyblock \
|
||||||
|
--signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
|
||||||
|
--bootloader ${KERNELDIR}/kernel.flags \
|
||||||
|
--config ${KERNELDIR}/kernel.flags \
|
||||||
|
--vmlinuz 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 losetup -d ${LOOPDEVICE}
|
||||||
|
|
||||||
|
rmdir ${MOUNTDIR}
|
Reference in a new issue