]> cvs.zerfleddert.de Git - m1-debian/blob - README.md
0544e1838fd9d1750f3cf55b6e26cb90c183f589
[m1-debian] / README.md
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 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 ## If I install Debian, will it be easy to update the Asahi work as it develops?
124
125 Yes, long answer below.
126
127 To update the kernel to the lastest "stable" asahi branch you need to run
128 as root:
129
130 apt update
131 apt upgrade
132
133 For installations before 2022-12-12, see <https://thomas.glanzmann.de/asahi/README.txt>
134
135 Later it might be necessary to upgrade the stub parition in order to
136 support the GPU code. As soon as that happens, I'll add the
137 instructions and a video in order to do so, but short version is:
138
139 - Backup /boot/efi/EFI
140 - Delete the old stub and efi/esp partition
141 - Rerun the asahi installer with m1n1+u-boot option
142 - Put the /boot/efi/EFI back
143
144 So, you never need to reinstall Debian. Kernel updates are easy, stub
145 updates are a little bit more cumbersome but also seldom.
146
147 ## How do I compile zfs on apple silicon debian?
148
149 - In order to build zfs you need the rust environment. So from the m1-debian
150 repository you have to run these scripts:
151
152 ./dependencies.sh
153 ./prepare_rust.sh
154
155 - Build a kernel that is not cross compiled. Because the cross compiled header
156 package does contain the fixtool for the wrong architecture at the moment and
157 install the resulting kernel deb and headers and boot into it:
158
159 ./m1n1_uboot_kernel.sh
160
161 - Prepare your zfs build environment. You need to replace
162 /home/sithglan/work/m1-debian with your path to
163 your m1-debian checkout:
164
165 export CARGO_HOME="/home/sithglan/work/m1-debian/build/cargo"
166 export RUSTUP_HOME="/home/sithglan/work/m1-debian/build/rust"
167 source "/home/sithglan/work/m1-debian/build/cargo/env"
168
169 - You have to specify the default rust version:
170
171 rustup default 1.68.2
172
173 - Tell zfs which version of clang you use to compile the kernel:
174
175 export KERNEL_LLVM=-15
176
177 - Checkout ZFS:
178
179 git clone https://github.com/openzfs/zfs
180 cd ./zfs
181 git checkout master
182
183 - Apply the following patch:
184
185 diff --git a/META b/META
186 index 3919b0d..67c9f7d 100644
187 --- a/META
188 +++ b/META
189 @@ -4,7 +4,7 @@ Branch: 1.0
190 Version: 2.2.99
191 Release: 1
192 Release-Tags: relext
193 -License: CDDL
194 +License: GPL
195 Author: OpenZFS
196 Linux-Maximum: 6.4
197 Linux-Minimum: 3.10
198
199 - Build ZFS:
200
201 sh autogen.sh
202 ./configure
203 make -s -j$(nproc)
204
205 - Follow the instructions on <https://openzfs.github.io/openzfs-docs/Developer%20Resources/Building%20ZFS.html> how to install it.
Impressum, Datenschutz