No description
Find a file
Hector Martin 7dfe24ee2c Rework kboot/chainload flow to shut down before calling the next stage
Next stage boots now exit back to main() after replying to the proxy
command, allowing shutdown functions to be called. Introduces a new
P_VECTOR proxy op, distinct from P_CALL. The Python side is reworked
to remain compatible with older versions that do not support this.

Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-17 18:12:59 +09:00
.github/workflows ci: add clang-format check to the CI 2021-04-08 20:30:41 +09:00
3rdparty_licenses usb: add drivers/usb/dwc3/core.h from linux 2021-04-15 18:39:33 +09:00
artwork@35626c31f5 Initial commit 2021-01-15 04:03:35 +09:00
data Initial commit 2021-01-15 04:03:35 +09:00
dts dts: Update with current kernel devicetree, improve build 2021-03-15 02:26:31 +09:00
font fb console: add Source Code Pro font 2021-04-14 18:11:37 +09:00
proxyclient Rework kboot/chainload flow to shut down before calling the next stage 2021-04-17 18:12:59 +09:00
src Rework kboot/chainload flow to shut down before calling the next stage 2021-04-17 18:12:59 +09:00
sysinc malloc.h: include stddef to ensure size_t is defined 2021-04-11 05:26:29 +09:00
.clang-format clang-format: Add include block configs, reformat 2021-02-06 16:44:10 +09:00
.editorconfig .editorconfig: trim trailing whitespace 2021-01-15 04:04:12 +09:00
.gitignore proxyclient: initial files 2021-01-15 04:04:12 +09:00
.gitmodules Initial commit 2021-01-15 04:03:35 +09:00
config.h Add config.h for build-time config options 2021-01-25 17:24:29 +09:00
docker-compose.yml tooling: Add container setup for build environment 2021-02-18 16:14:15 +09:00
Dockerfile tooling: Add container setup for build environment 2021-02-18 16:14:15 +09:00
LICENSE LICENSE: fix typo 2021-01-15 12:55:21 +09:00
m1n1.ld startup: clear bss section 2021-01-30 03:03:03 +09:00
Makefile iodev: Add new framework for I/O and console devices 2021-04-15 23:18:57 +09:00
README.md usb: add drivers/usb/dwc3/core.h from linux 2021-04-15 18:39:33 +09:00

m1n1: an experimentation playground for Apple Silicon

(And to some extent a Linux bootloader)

Building

You need an aarch64-linux-gnu-gcc cross-compiler toolchain (or a native one, if running on ARM64). You also need dtc (the devicetree compiler) and convert (from ImageMagick) for the boot logos.

$ git clone --recursive https://github.com/AsahiLinux/m1n1.git
$ cd m1n1
$ make

The output will be in build/m1n1.macho.

To build on a native arm64 machine, use make ARCH=.

Building using the container setup

If you have a container runtime installed, like Podman or Docker, you can make use of the compose setup, which contains all build dependencies.

$ git clone --recursive https://github.com/AsahiLinux/m1n1.git
$ cd m1n1
$ podman-compose run m1n1 make
$ # or
$ docker-compose run m1n1 make

Usage

Our developer quickstart guide has more information on how to use m1n1.

Payloads

m1n1 supports running payloads by simple concatenation:

$ cat build/m1n1.macho Image.gz build/dtb/apple-j274.dtb initramfs.cpio.gz > m1n1-payload.macho

Supported payload file formats:

  • Kernel images (or compatible). Must be compressed or last payload.
  • Devicetree blobs (FDT). May be uncompressed or compressed.
  • Initramfs cpio images. Must be compressed.

Supported compression formats:

  • gzip
  • xz

License

m1n1 is licensed under the MIT license, as included in the LICENSE file.

  • Copyright (C) 2021 The Asahi Linux contributors

Please see the Git history for authorship information.

Portions of m1n1 are based on mini:

m1n1 embeds libfdt, which is dual BSD and GPL-2 licensed and copyright:

  • Copyright (C) 2014 David Gibson david@gibson.dropbear.id.au
  • Copyright (C) 2018 embedded brains GmbH
  • Copyright (C) 2006-2012 David Gibson, IBM Corporation.
  • Copyright (C) 2012 David Gibson, IBM Corporation.
  • Copyright 2012 Kim Phillips, Freescale Semiconductor.
  • Copyright (C) 2016 Free Electrons
  • Copyright (C) 2016 NextThing Co.

The ADT code in mini is also based on libfdt and subject to the same license.

m1n1 embeds minlzma, which is MIT licensed and copyright:

  • Copyright (c) 2020 Alex Ionescu

m1n1 embeds a slightly modified version of tinf, which is ZLIB licensed and copyright:

  • Copyright (c) 2003-2019 Joergen Ibsen

m1n1 embeds portions taken from arm-trusted-firwmare, which is BSD licensed and copyright:

  • Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved.

m1n1 embeds Doug Lea's malloc (dlmalloc), which is in the public domain (CC0).

m1n1 embeds portions of PDCLib, which is in the public domain (CC0).

m1n1 embeds the Source Code Pro font, which is licensed under the OFL-1.1 license and copyright:

  • Copyright 2010-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
  • This Font Software is licensed under the SIL Open Font License, Version 1.1.

m1n1 embeds portions of the dwc3 usb linux driver, which was BSD-or-GPLv2 dual-licensed and copyright