]> git.zerfleddert.de Git - m1-debian/blob - m1n1_uboot_kernel.sh
3129b1b3338c54e105139c8218af1d13db3a5eea
[m1-debian] / m1n1_uboot_kernel.sh
1 #!/usr/bin/env bash
2
3 # SPDX-License-Identifier: MIT
4
5 set -o errexit
6 set -o nounset
7 set -o pipefail
8 set -o xtrace
9
10 cd "$(dirname "$0")"
11
12 export CARGO_HOME="$(pwd)/build/cargo"
13 export RUSTUP_HOME="$(pwd)/build/rust"
14 source "$(pwd)/build/cargo/env"
15
16 unset LC_CTYPE
17 unset LANG
18
19 export M1N1_VERSION=1.4.3
20
21 build_linux()
22 {
23 (
24 test -d linux || git clone https://github.com/AsahiLinux/linux
25 cd linux
26 git fetch -a -t
27 git reset --hard asahi-6.5-15
28 git clean -f -x -d > /dev/null
29 cat ../../config.txt > .config
30 make LLVM=-15 rustavailable
31 make LLVM=-15 olddefconfig
32 make -j `nproc` LLVM=-15 V=0 bindeb-pkg > /dev/null
33 )
34 }
35
36 build_m1n1()
37 {
38 (
39 test -d m1n1 || git clone --recursive https://github.com/AsahiLinux/m1n1
40 cd m1n1
41 git fetch -a -t
42 git reset --hard v${M1N1_VERSION};
43 git clean -f -x -d > /dev/null
44 make -j `nproc`
45 )
46 }
47
48 build_uboot()
49 {
50 (
51 test -d u-boot || git clone https://github.com/AsahiLinux/u-boot
52 cd u-boot
53 git fetch -a -t
54 git reset --hard asahi-v2023.07.02-3
55 git clean -f -x -d > /dev/null
56
57 make apple_m1_defconfig
58 make -j `nproc`
59 )
60 cat m1n1/build/m1n1.bin `find linux/arch/arm64/boot/dts/apple/ -name \*.dtb` <(gzip -c u-boot/u-boot-nodtb.bin) > u-boot.bin
61 }
62
63 package_boot_bin()
64 {
65 (
66 rm -rf m1n1_${M1N1_VERSION}_arm64
67 mkdir -p m1n1_${M1N1_VERSION}_arm64/DEBIAN m1n1_${M1N1_VERSION}_arm64/usr/lib/m1n1/
68 cp u-boot.bin m1n1_${M1N1_VERSION}_arm64/usr/lib/m1n1/boot.bin
69 cat <<EOF > m1n1_${M1N1_VERSION}_arm64/DEBIAN/control
70 Package: m1n1
71 Version: $M1N1_VERSION
72 Section: base
73 Priority: optional
74 Architecture: arm64
75 Maintainer: Thomas Glanzmann <thomas@glanzmann.de>
76 Description: Apple silicon boot loader
77 Next to m1n1 this also contains the device trees and u-boot.
78 EOF
79
80 cat > m1n1_${M1N1_VERSION}_arm64/DEBIAN/postinst <<'EOF'
81 #!/bin/bash
82
83 export PATH=/bin
84 if [ -f /boot/efi/m1n1/boot.bin ]; then
85 cp /boot/efi/m1n1/boot.bin /boot/efi/m1n1/`date +%Y%m%d%H%M`.bin
86 fi
87 mkdir -p /boot/efi/m1n1/
88 cp /usr/lib/m1n1/boot.bin /boot/efi/m1n1/
89 EOF
90
91 chmod 755 m1n1_${M1N1_VERSION}_arm64/DEBIAN/postinst
92 dpkg-deb --build m1n1_${M1N1_VERSION}_arm64
93 )
94 }
95
96 mkdir -p build
97 cd build
98
99 build_linux
100 build_m1n1
101 build_uboot
102 package_boot_bin
Impressum, Datenschutz