summaryrefslogtreecommitdiff
path: root/distrib/notes/arm64/prep
blob: 354866ccd8f579107e513459b4ee1b2f0645b954 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
dnl	$OpenBSD: prep,v 1.19 2023/10/18 06:45:45 kevlo Exp $
To perform an installation you must be able to interact with the
console of the machine.  In some cases this can be done by an attached
monitor and keyboard.  In others a serial console is required.
USB OTG ports such as the one found on the BeagleBone will not
function as a console.  You need to be able to interact with the
firmware on the console.  Often this requires a 3.3V TTL level
adapter connected to pins or a header on the board.

Firmware which provides an UEFI interface with a Device Tree Blob
(DTB) file or ACPI support is required to boot.  In most cases this is
provided by images of U-Boot 2016.07 or newer on SD/MMC devices or in
SPI flash.  If the miniroot or install images are used, U-Boot and
DTB files are distributed as part of the images.

OpenBSD can be installed onto a disk by copying the miniroot or install
image for your board ("miniroot{:--:}OSrev.img" or "install{:--:}OSrev.img")
to an SD card.

Booting from an SD card:

  To use a miniroot/install image you will need another machine to plug the
  SD card in to. Any machine type will do, as long as it supports SD card
  storage devices.  Under OpenBSD, it will appear as a ``sd'' device, for
  example sd1.

  Use the dd(1) utility to copy the image to the SD card.
  The command would likely be, under OpenBSD:
	dd if=miniroot{:--:}OSrev.img of=/dev/rsd1c bs=1m

  When you have connected the serial to your computer, a command such
  as "cu -l cuaU0 -s 115200" (assuming cuaU0 is your serial port device)
  should connect you to the board's console.

Running EFI payloads with U-Boot:

If the U-Boot target supports "distro_bootcmd" efiboot will automatically
be loaded by placing bootaa64.efi into /efi/boot/bootaa64.efi on a FAT
filesystem.  With dtb files placed in /vendor/, /dtbs/vendor/, or
/dtb/current/vendor/.

If the U-Boot target supports bootefi but not automatically finding it with
"distro_bootcmd" then it must be loaded manually or by U-Boot commands or
script.
	=> run findfdt
	=> load mmc 0:1 ${fdt_addr_r} ${fdtfile}
	=> load mmc 0:1 ${kernel_addr_r} efi/boot/bootaa64.efi
	=> bootefi ${kernel_addr_r} ${fdt_addr_r}
The bootloader will then run and try to load sd0a:/bsd off an FFS
filesystem after a timeout.

Install on Apple Silicon:

  These machines do not come with UEFI firmware by default.  In order
  to install OpenBSD on these machine you need to run the Asahi Linux
  installer first in macOS or the macOS recovery environment.
  Instructions on how to download and run the Asahi Linux installer
  can be found at https://asahilinux.org/.  Run it in macOS or the
  macOS recovery environment.

  Note that while running the suggested:
  	curl https://alx.sh | sh
  is probably safe, it is teaching a bad habit.  It is better to
  download the installer:
	curl -o alx.sh https://alx.sh
  and inspect the alx.sh script before running it:
	sh alx.sh

  You will have to create some free space for your OpenBSD install by
  choosing the
	"Resize an existing partition to make space for a new OS"
  option first.  Once that is done, pick the
	"Install an OS into free space"
  option, choose
	"UEFI environment only (m1n1 + U-Boot + ESP)"
  and follow the steps presented to you.  

  Now you can copy the miniroot or install image
  ("miniroot{:--:}OSrev.img" or "install{:--:}OSrev.img") to a USB
  drive, plug it into one of the type-C ports on the machine and reset
  the machine to boot into the OpenBSD installer.

Install on Raspberry Pi:

  The standard miniroot supports at least the Raspberry Pi 3 and 4 with
  no additional firmware.  Some devices may not be functional with Pi 3+.
  It is recommended that you install to a USB storage device.

  The default system console is on the TTL serial interface on the
  TXD/RXD/GND pins of the https://pinout.xyz/ header on the board.
  It will be helpful to obtain an adapter (e.g. CP2102 USB-UART).
  If you have one, attach it to the pins and a computer; a command
  such as "cu -l cuaU0 -s 115200" (assuming cuaU0 is your serial
  port device) should connect you to the board's console.

  If not, note that once the kernel has started running, by default you
  will only see output on the serial console.  To switch to displaying on
  the monitor instead, watch for the OpenBSD BOOTAA64 "boot>" prompt,
  and type "set tty fb0".

  Alternatively the system can be booted using UEFI firmware found at
  https://github.com/pftf/RPi4. Follow their instructions to install to an
  SD card and run the OpenBSD installer from USB. v1.21 is known to work;
  some newer versions may have problems.

Install on systems without a supported miniroot:

  If a miniroot is not available for your system you will have to modify
  an existing image before booting it.

  To do so first install the u-boot-aarch64 and dtb packages.  Write the
  provided miniroot image to an SD card:

 	dd if=miniroot{:--:}OSrev.img of=/dev/rsdXc bs=1m

  Add a board specific DTB file (Allwinner and Rockchip U-Boot images
  come with a default DTB):

 	mount /dev/sdXi /mnt
	mkdir /mnt/vendor
 	cp /usr/local/share/dtb/arm64/vendor/board.dtb /mnt/vendor/
 	umount /mnt

  For systems based on Allwinner Axx SoCs:

 	dd if=/usr/local/share/u-boot/board/u-boot-sunxi-with-spl.bin \
 	    of=/dev/sdXc bs=1024 seek=8

  For systems based on Rockchip RK33xx SoCs:

 	dd if=/usr/local/share/u-boot/board/idbloader.img \
 	    of=/dev/sdXc seek=64
 	dd if=/usr/local/share/u-boot/board/u-boot.itb \
 	    of=/dev/sdXc seek=16384

  For systems based on Rockchip RK356x SoCs:

 	dd if=/usr/local/share/u-boot/board/u-boot-rockchip.bin \
 	    of=/dev/sdXc seek=64