forked from openSUSE/Leap
45 lines
1.0 KiB
Bash
45 lines
1.0 KiB
Bash
|
#!/bin/bash
|
||
|
set -euxo pipefail
|
||
|
|
||
|
diskname=$1
|
||
|
devname="$2"
|
||
|
loopname="${devname%*p?}"
|
||
|
loopdev=/dev/${loopname#/dev/*}
|
||
|
|
||
|
#==========================================
|
||
|
# copy Raspberry Pi firmware to EFI partition
|
||
|
#------------------------------------------
|
||
|
echo "RPi EFI system, installing firmware on ESP"
|
||
|
mkdir -p ./mnt-pi
|
||
|
mount ${loopname}p1 ./mnt-pi
|
||
|
( cd boot/vc; tar c . ) | ( cd ./mnt-pi/; tar x )
|
||
|
umount ./mnt-pi
|
||
|
rmdir ./mnt-pi
|
||
|
|
||
|
#==========================================
|
||
|
# Change partition label type to MBR
|
||
|
#------------------------------------------
|
||
|
#
|
||
|
# The target system doesn't support GPT, so let's move it to
|
||
|
# MBR partition layout instead.
|
||
|
#
|
||
|
# Also make sure to set the ESP partition to type 0xc so that
|
||
|
# broken firmware (Rpi) detects it as FAT.
|
||
|
#
|
||
|
# Use tabs, "<<-" strips tabs, but no other whitespace!
|
||
|
cat > gdisk.tmp <<-'EOF'
|
||
|
x
|
||
|
r
|
||
|
g
|
||
|
t
|
||
|
1
|
||
|
c
|
||
|
w
|
||
|
y
|
||
|
EOF
|
||
|
dd if=$loopdev of=mbrid.bin bs=1 skip=440 count=4
|
||
|
gdisk $loopdev < gdisk.tmp
|
||
|
dd of=$loopdev if=mbrid.bin bs=1 seek=440 count=4
|
||
|
rm -f mbrid.bin
|
||
|
rm -f gdisk.tmp
|