Skip to content

Instantly share code, notes, and snippets.

@ajeddeloh
Last active April 13, 2018 18:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ajeddeloh/09e745b25038876359881c68f9c7df50 to your computer and use it in GitHub Desktop.
Save ajeddeloh/09e745b25038876359881c68f9c7df50 to your computer and use it in GitHub Desktop.
#!/bin/bash
set +x
versions="1618.0.0 1688.4.0 1632.3.0"
versions="$(curl https://coreos.com/releases/releases.json 2>/dev/null | jq keys | jq .[] | tr -d '\"' | tr '\n' ' ')"
mkdir -p ~/grub-info/
LINUX_MOD='usr/lib/grub/i386-pc/linux.module'
LINUX_DEBUG="/usr/lib/debug/${LINUX_MOD}.debug"
function download_release() {
local major=$(cut -d. -f1 <<< $1)
if [[ $major -lt 926 ]]; then
return
fi
if [[ $major -gt 1722 ]]; then
return
fi
if [[ -d grub-info/$1 ]]; then
return
fi
echo "version $1"
mkdir grub-info/$1
pushd grub-info/$1
gsutil -q cp "gs://builds.developer.core-os.net/sdk/amd64/$1/pkgs/sys-boot/grub-*tbz2" .
for i in grub-*
do
mkdir $(basename -s .tbz2 $i)
mv $i $(basename -s .tbz2 $i)
pushd $(basename -s .tbz2 $i)
qtbz2 -s $i
tar xf ${i/.tbz2/.tar.bz2}
popd
done
popd
}
for i in $versions
do
download_release "$i"
done
for rel in grub-info/*
do
for grubver in $rel/*
do
if [[ $(basename $grubver) == 'grub-*' ]]; then
continue
fi
mod="$grubver/$LINUX_MOD"
if [[ -e $grubver/$LINUX_DEBUG ]]; then
eu-unstrip $mod $grubver/$LINUX_DEBUG -o /tmp/abcde
mod=/tmp/abcde
fi
offset="$(objdump -t $mod | grep linux_params | cut -d ' ' -f1)"
if [[ -z $offset ]]; then
echo $grubver asdfasdf
continue
fi
value="b8 $(python -c "import re; print((' '.join(re.findall('..', format((0x${offset} + (616*0x3fc)), '08x'))[::-1])))")"
echo $(objdump -d $mod | grep "$value") $rel
# print what it should be
echo "b8 $(python -c "import re; print((' '.join(re.findall('..', format(0x${offset} + 616, '08x'))[::-1])))")"
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment