]> git.zerfleddert.de Git - m1-debian/blob - m1n1_uboot_kernel.sh
30f5853759626f0a7e2ee8292fb67a575af7fc08
[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.2
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-12
28 cat ../../config.txt > .config
29 make LLVM=${CLANG_VERSION} rustavailable
30 make LLVM=${CLANG_VERSION} olddefconfig
31 make -j `nproc` LLVM=${CLANG_VERSION} V=0 bindeb-pkg > /dev/null
32 )
33 }
34
35 build_m1n1()
36 {
37 (
38 test -d m1n1 || git clone --recursive https://github.com/AsahiLinux/m1n1
39 cd m1n1
40 git fetch -a -t
41 git reset --hard v{M1N1_VERSION};
42 make -j `nproc`
43 )
44 }
45
46 build_uboot()
47 {
48 (
49 test -d u-boot || git clone https://github.com/AsahiLinux/u-boot
50 cd u-boot
51 git fetch -a -t
52 git reset --hard asahi-v2023.07.02-2;
53
54 make apple_m1_defconfig
55 make -j `nproc`
56 )
57 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
58 }
59
60 package_boot_bin()
61 {
62 (
63 rm -rf m1n1_${M1N1_VERSION}_arm64
64 mkdir -p m1n1_${M1N1_VERSION}_arm64/DEBIAN m1n1_${M1N1_VERSION}_arm64/usr/lib/m1n1/
65 cp u-boot.bin m1n1_${M1N1_VERSION}_arm64/usr/lib/m1n1/boot.bin
66 cat <<EOF > m1n1_${M1N1_VERSION}_arm64/DEBIAN/control
67 Package: m1n1
68 Version: $M1N1_VERSION
69 Section: base
70 Priority: optional
71 Architecture: arm64
72 Maintainer: Thomas Glanzmann <thomas@glanzmann.de>
73 Description: Apple silicon boot loader
74 Next to m1n1 this also contains the device trees and u-boot.
75 EOF
76
77 cat > m1n1_${M1N1_VERSION}_arm64/DEBIAN/postinst <<'EOF'
78 #!/bin/bash
79
80 export PATH=/bin
81 if [ -f /boot/efi/m1n1/boot.bin ]; then
82 cp /boot/efi/m1n1/boot.bin /boot/efi/m1n1/`date +%Y%m%d%H%M`.bin
83 fi
84 mkdir -p /boot/efi/m1n1/
85 cp /usr/lib/m1n1/boot.bin /boot/efi/m1n1/
86 EOF
87
88 chmod 755 m1n1_${M1N1_VERSION}_arm64/DEBIAN/postinst
89 dpkg-deb --build m1n1_${M1N1_VERSION}_arm64
90 )
91 }
92
93 if type clang-15; then
94 export CLANG_VERSION=-15
95 elif type clang-11; then
96 export CLANG_VERSION=-11
97 fi
98
99 mkdir -p build
100 cd build
101
102 build_linux
103 build_m1n1
104 build_uboot
105 package_boot_bin
Impressum, Datenschutz