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