* Update buildroot-patches for 2020.11-rc1 buildroot * Update buildroot to 2020.11-rc1 Signed-off-by: Stefan Agner <stefan@agner.ch> * Don't rely on sfdisk --list-free output The --list-free (-F) argument does not allow machine readable mode. And it seems that the output format changes over time (different spacing, using size postfixes instead of raw blocks). Use sfdisk json output and calculate free partition space ourselfs. This works for 2.35 and 2.36 and is more robust since we rely on output which is meant for scripts to parse. * Migrate defconfigs for Buildroot 2020.11-rc1 In particular, rename BR2_TARGET_UBOOT_BOOT_SCRIPT(_SOURCE) to BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT(_SOURCE). * Rebase/remove systemd patches for systemd 246 * Drop apparmor/libapparmor from buildroot-external * hassos-persists: use /run as directory for lockfiles The U-Boot tools use /var/lock by default which is not created any more by systemd by default (it is under tmpfiles legacy.conf, which we no longer install). * Disable systemd-update-done.service The service is not suited for pure read-only systems. In particular the service needs to be able to write a file in /etc and /var. Remove the service. Note: This is a static service and cannot be removed using systemd-preset. * Disable apparmor.service for now The service loads all default profiles. Some might actually cause problems. E.g. the profile for ping seems not to match our setup for /etc/resolv.conf: [85503.634653] audit: type=1400 audit(1605286002.684:236): apparmor="DENIED" operation="open" profile="ping" name="/run/resolv.conf" pid=27585 comm="ping" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
70 lines
2.4 KiB
Bash
Executable File
70 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This scripts makes a minimal bootable SD card image for the Chromebook.
|
|
# The resulting file is called bootsd.img. It should be written directly
|
|
# to the card:
|
|
#
|
|
# SD=/dev/mmcblk1 # check your device name!
|
|
# dd if=output/images/bootsd.img of=$SD
|
|
#
|
|
# The partitions are created just large enough to hold the kernel and
|
|
# the rootfs image. Most of the card will be empty, and the secondary
|
|
# GPT will not be in its proper location.
|
|
|
|
# cgpt does not create protective MBR, and the kernel refuses to read
|
|
# GPT unless there's some kind of MBR in sector 0. So we need parted
|
|
# to write that single sector before doing anything with the GPT.
|
|
cgpt=$HOST_DIR/bin/cgpt
|
|
parted=$HOST_DIR/sbin/parted
|
|
kernel=$BINARIES_DIR/uImage.kpart
|
|
rootfs=$BINARIES_DIR/rootfs.ext2
|
|
|
|
run() { echo "$@"; "$@"; }
|
|
die() { echo "$@" >&2; exit 1; }
|
|
test -f $kernel || die "No kernel image found"
|
|
test -f $rootfs || die "No rootfs image found"
|
|
test -x $cgpt || die "cgpt not found (host-vboot-utils have not been built?)"
|
|
|
|
# True file sizes in bytes
|
|
kernelsize=`stat -t $kernel | cut -d\ -f2`
|
|
rootfssize=`stat -t $rootfs | cut -d\ -f2`
|
|
|
|
# The card is partitioned in sectors of 8KB.
|
|
# 4 sectors are reserved for MBR+GPT. Their actual size turns out
|
|
# to be 33 512-blocks which is just over 2 sectors, but we align
|
|
# it to a nice round number.
|
|
sec=8192
|
|
kernelsec=$(((kernelsize+8191)>>13))
|
|
rootfssec=$(((rootfssize+8191)>>13))
|
|
headersec=4
|
|
|
|
# There is also a copy of MBR+GPT at the end of the image.
|
|
# It's going to be useless but both tools assume it's there.
|
|
imagesec=$((2*headersec+kernelsec+rootfssec))
|
|
bootsd="$BINARIES_DIR/bootsd.img"
|
|
run dd bs=$sec count=$imagesec if=/dev/zero of=$bootsd
|
|
|
|
# cgpt needs offsets and sizes in 512-blocks.
|
|
block=512
|
|
kernelstart=$((headersec<<4))
|
|
kernelblocks=$((kernelsec<<4))
|
|
rootfsblocks=$((rootfssec<<4))
|
|
rootfsstart=$((kernelstart+kernelblocks))
|
|
|
|
# This command initializes both GPT and MBR
|
|
run $parted -s $bootsd mklabel gpt
|
|
|
|
# The kernel partition must be marked as bootable, that's why -S -T -P
|
|
run $cgpt add -i 1 -b $kernelstart -s $kernelblocks \
|
|
-t kernel -l kernel \
|
|
-S 1 -T 1 -P 10 $bootsd
|
|
|
|
# It does not really matter where the rootfs partition is located as long
|
|
# as the kernel can find it.
|
|
# However, if anything is changed here, kernel.args must be updated as well.
|
|
run $cgpt add -i 2 -b $rootfsstart -s $rootfsblocks \
|
|
-t data -l rootfs $bootsd
|
|
|
|
run dd bs=$block if=$kernel of=$bootsd seek=$kernelstart
|
|
run dd bs=$block if=$rootfs of=$bootsd seek=$rootfsstart
|