]>
Commit | Line | Data |
---|---|---|
1 | This pages explains how to install Debian on Apple Silicon machines. | |
2 | ||
3 | # Tripwires | |
4 | The USB-A Port on the Mac Mini will not work in u-boot and grub. The two | |
5 | additional USB-3 ports on the iMac 4 port model don't work in u-boot, grub | |
6 | and Linux. In order to install Linux on a FileVault-enabled Mac run the | |
7 | installer from Recovery open Disk Utility > Expanding "Macintosh HD" > | |
8 | Selecting locked volume > click "Mount". Debian does not include the choosen | |
9 | EFI patch. As a result it will always pick the first ESP partition. This can be | |
10 | problematic if you're using multiple ESP partitions for example when having | |
11 | multiple Linux and BSD installations. | |
12 | ||
13 | # Artefacts | |
14 | If you don't want to use the prebuild artefacts, you can build them yourself | |
15 | using the following scripts: | |
16 | ||
17 | - prepare_rust.sh - Prepares a rust installation suitable for kernel compilation | |
18 | - m1n1_uboot_kernel.sh - Builds m1n1, u-boot and the kernel including gpu support. | |
19 | - mesa.sh - Creates mesa packages | |
20 | - bootstrap.sh - Creates Debian root and live filesystem | |
21 | - meta.sh - Meta package which makes sure that we always get latest and greatest kernel. | |
22 | ||
23 | # Asahi installer | |
24 | ||
25 | [Video Recording](https://tg.st/u/debian_asahi_installer.mp4) | |
26 | ||
27 | * Poweroff your Mac. Hold and press the power button until you see a wheel chain and Options written below. Approx 20 seconds. | |
28 | ||
29 | * In the boot picker, choose Options. Once loaded, open a Terminal under Utilities > Terminal | |
30 | ||
31 | * Run the asahi installer and select Debian: | |
32 | ||
33 | curl -sL https://tg.st/d | sh | |
34 | ||
35 | * Follow the installer instructions. | |
36 | ||
37 | * Once Debian is booted log in as root without password and set a root password | |
38 | ||
39 | passwd | |
40 | pwconv | |
41 | ||
42 | * Configure wifi by editing the wpa_supplicant.conf, enabling the interface and remove the # before allow-hotplug to enable it during boot. | |
43 | ||
44 | vi /etc/wpa_supplicant/wpa_supplicant.conf | |
45 | ifup wlan0 | |
46 | vi /etc/network/interfaces | |
47 | ||
48 | * Reboot to see if grub was correctly installed | |
49 | ||
50 | reboot | |
51 | ||
52 | * Install a desktop environment for example blackbox | |
53 | ||
54 | apt-get update | |
55 | apt-get install -y xinit blackbox xterm firefox-esr lightdm | |
56 | ||
57 | * Create yourself an unprivileged user | |
58 | ||
59 | useradd -m -c 'Firstname Lastname' -s /bin/bash <username> | |
60 | passwd <username> | |
61 | ||
62 | * Optional install sshd. You can not log in as root, but only with your unprivileged user | |
63 | ||
64 | apt update | |
65 | apt install -y openssh-server | |
66 | ||
67 | * Consult the **[/root/quickstart.txt](https://git.zerfleddert.de/cgi-bin/gitweb.cgi/m1-debian/blob_plain/refs/heads/master:/files/quickstart.txt)** file to find out how to do other interesting things. | |
68 | ||
69 | # Livesystem | |
70 | ||
71 | [Video Recording](https://tg.st/u/live.mp4) | |
72 | ||
73 | * Prerequisites | |
74 | ||
75 | - USB Stick. this is what this guide assumes, but it is also possible | |
76 | to run the Debian livesystem from another PC using m1n1 chainloading. | |
77 | But if you know how to do that, you probably don't need this guide. | |
78 | - If possible use an Ethernet Dongle, less typing. | |
79 | ||
80 | * Create USB Stick with a single vfat partition on it and untar the modified Debian installer on it. Instructions for Linux: | |
81 | ||
82 | # Identify the usb stick device | |
83 | lsblk | |
84 | ||
85 | DEVICE=/dev/sdX | |
86 | parted -a optimal $DEVICE mklabel msdos | |
87 | parted -a optimal $DEVICE mkpart primary fat32 2048s 100% | |
88 | mkfs.vfat ${DEVICE}1 | |
89 | mount ${DEVICE}1 /mnt | |
90 | curl -sL https://tg.st/u/asahi-debian-live.tar | tar -C /mnt -xf - | |
91 | umount /mnt | |
92 | ||
93 | In order to format the usb stick under Macos, open the disk utility, right-click on the usb stick (usually the lowest device in the list) and select erase. Choose the following options: | |
94 | ||
95 | Name: LIVE | |
96 | Format: MS-DOS (FAT) | |
97 | Scheme: Master Boot Record | |
98 | ||
99 | Than open a terminal, and run the following commands: | |
100 | ||
101 | sudo su - | |
102 | cd /Volumes/LIVE | |
103 | curl -sL https://tg.st/u/asahi-debian-live.tar | tar -xf - | |
104 | ||
105 | * You need to run the asahi installer and have either an OS installed or m1n1+UEFI. | |
106 | ||
107 | * If you have a EFI binary on the NVMe and want to boot from the usb stick, you need to interrupt u-boot on the countdown by pressing any key and run the following comamnd to boot from usb: | |
108 | ||
109 | env set boot_efi_bootmgr; run bootcmd_usb0 | |
110 | ||
111 | * Reboot with the USB stick connected, the Debian livesystem should automatically start, if it doesn't load the kernel and initrd manually, you can use tab. For x try 0,1,2,... | |
112 | ||
113 | linux (hdX,msdos1)/vmlinuz | |
114 | initrd (hdX,msdos1)/initrd.gz | |
115 | boot | |
116 | ||
117 | * Log in as **root** without password. | |
118 | ||
119 | * Consult the **[/root/quickstart.txt](https://git.zerfleddert.de/cgi-bin/gitweb.cgi/m1-debian/blob_plain/refs/heads/master:/files/quickstart.txt)** file to find out how to get the networking up, etc. | |
120 | ||
121 | # FAQ | |
122 | ||
123 | ## Why has there been no kernel update? | |
124 | ||
125 | For Debian stable I'm currently unable to update the kernel due to the fact | |
126 | that the kernel requires new mesa packages and the new mesa package needs too | |
127 | many dependencies which are not in Debian stable and I'm not willing to add | |
128 | that many new packages. So I recommend that if you want the latest asahi | |
129 | kernel, mesa, sound and other packages, switch to testing and use Thomas | |
130 | Renards packages for testing. <https://wiki.debian.org/Teams/Bananas> | |
131 | ||
132 | ## How to enable spakers? | |
133 | ||
134 | Currently speakers are only supported on M1 air. Install the necessary packages: | |
135 | ||
136 | apt update | |
137 | apt upgrade -y | |
138 | apt dist-upgrade -y | |
139 | apt install -y alsa-ucm-conf-asahi speakersafetyd | |
140 | reboot | |
141 | ||
142 | After the reboot I need to restart the speakersafetyd in order to hear sound out of the speakers: | |
143 | ||
144 | sudo systemctl restart speakersafetyd | |
145 | ||
146 | ## Does it work on M2? | |
147 | ||
148 | Yes, M3 is not yet supported. | |
149 | ||
150 | ## Are you still maintaining this? | |
151 | ||
152 | Yes, I do and will continue doing this until there is an official Debian installer. | |
153 | ||
154 | ## If I install Debian, will it be easy to update the Asahi work as it develops? | |
155 | ||
156 | Yes, long answer below. | |
157 | ||
158 | To update the kernel to the lastest "stable" asahi branch you need to run | |
159 | as root: | |
160 | ||
161 | apt update | |
162 | apt upgrade | |
163 | ||
164 | For installations before 2022-12-12, see <https://thomas.glanzmann.de/asahi/README.txt> | |
165 | ||
166 | Later it might be necessary to upgrade the stub partion in order to | |
167 | support the GPU code. As soon as that happens, I'll add the | |
168 | instructions and a video in order to do so, but short version is: | |
169 | ||
170 | - Backup /boot/efi/EFI | |
171 | - Delete the old stub and efi/esp partition | |
172 | - Rerun the asahi installer with m1n1+u-boot option | |
173 | - Put the /boot/efi/EFI back | |
174 | ||
175 | So, you never need to reinstall Debian. Kernel updates are easy, stub | |
176 | updates are a little bit more cumbersome but also seldom. | |
177 | ||
178 | ## How do I compile zfs on apple silicon debian? | |
179 | ||
180 | - In order to build zfs you need the rust environment. So from the m1-debian | |
181 | repository you have to run these scripts: | |
182 | ||
183 | ./dependencies.sh | |
184 | ./prepare_rust.sh | |
185 | ||
186 | - Prepare your zfs build environment. You need to replace | |
187 | /home/sithglan/work/m1-debian with your path to | |
188 | your m1-debian checkout: | |
189 | ||
190 | export CARGO_HOME="/home/sithglan/work/m1-debian/build/cargo" | |
191 | export RUSTUP_HOME="/home/sithglan/work/m1-debian/build/rust" | |
192 | source "/home/sithglan/work/m1-debian/build/cargo/env" | |
193 | ||
194 | - Tell zfs which version of clang you use to compile the kernel: | |
195 | ||
196 | export KERNEL_LLVM=-15 | |
197 | ||
198 | - Checkout ZFS: | |
199 | ||
200 | git clone https://github.com/openzfs/zfs | |
201 | cd ./zfs | |
202 | git checkout master | |
203 | ||
204 | - Apply the following patch: | |
205 | ||
206 | diff --git a/META b/META | |
207 | index 3919b0d..67c9f7d 100644 | |
208 | --- a/META | |
209 | +++ b/META | |
210 | @@ -4,7 +4,7 @@ Branch: 1.0 | |
211 | Version: 2.2.99 | |
212 | Release: 1 | |
213 | Release-Tags: relext | |
214 | -License: CDDL | |
215 | +License: GPL | |
216 | Author: OpenZFS | |
217 | Linux-Maximum: 6.4 | |
218 | Linux-Minimum: 3.10 | |
219 | ||
220 | - Build ZFS: | |
221 | ||
222 | sh autogen.sh | |
223 | ./configure | |
224 | make -s -j$(nproc) | |
225 | ||
226 | - Follow the instructions on <https://openzfs.github.io/openzfs-docs/Developer%20Resources/Building%20ZFS.html> how to install it. | |
227 | ||
228 | ## What about gnome? | |
229 | ||
230 | You need an unpriviledged user to log in. You should delete /etc/network/interfaces in order to manage the network under gnome. If you don't have an US keyboard, you can change the settings in Gnome > Settings > Keyboard. | |
231 |