Debian 10 netinst has been tested and confirmed to work, both on the Model B and Model B+, including installation in either wired or wireless mode.
Below are steps you can follow to install Debian 10 onto an SD card:
- Partition the media as MBR and create a ~300 MB partition on it with MBR type
0x0e
. Note: Make sure that the partition scheme is MBR (not GPT) and the type0x0e
(not0xef
for instance), as the on-CPU Broadcom bootloader supports neither the GPT scheme nor the ESP MBR type. - Set the partition as active/bootable. This is needed as the Debian partition manager can
not detect it as ESP otherwise, which we need for GRUB installation. If using
fdisk
on Linux, you can use thea
command to set a partition as active. On Windows, you can usediskpart
and then typeactive
after selecting the relevant disk and partition. - Format the partition as FAT. Here you should make sure that you use FAT16 over FAT32 else
the Debian partition manager may not automatically detect the partition as ESP. If you
are using Windows
diskpart
thenformat fs=fat quick
will format a drive to FAT16. On Linux, the equivalent command would bemkfs.vfat -F 16 /dev/<your_device>
. As long as the partition is smaller than 2 GB, the use of FAT16 over FAT32 should not be a problem. Note that it is also possible to use FAT32, but you will probably have to invokefdisk
before rebooting, as shown in the Additional Notes below, to reset the partition type. - Copy the UEFI firmware files (
RPI_EFI.fd
,bootcode.bin
,fixup.dat
andstart.elf
) as well as an appropriateconfig.txt
onto the FAT partition. If needed you can download the non UEFI binary files from https://github.com/raspberrypi/firmware/tree/master/boot. - (Optional) If you plan to install through WiFi, you will need to download relevant
non-free WLAN firmware binaries from your WLAN interface (
brcmfmac43430-sdio.txt
andbrcmfmac43430-sdio.bin
for a Raspberry Pi 3 Model B,brcmfmac43455-sdio.txt
andbrcmfmac43455-sdio.bin
for a Raspberry Pi 3 Model B+). You may also want to obtain the relevant.clm_blob
(brcmfmac43430-sdio.clm_blob
orbrcmfmac43455-sdio.clm_blob
), though wireless networking should work even if you do not provide these files. Copy these files either at the root of your FAT partition or into afirmware/
directory there. - Download the latest
debian-##.#.#-arm64-netinst.iso
from https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/ - Extract the full content of the ISO onto the FAT partition you created.
- Insert the media and power up the Raspberry Pi device.
- On the GRUB menu select
Install
and let the Debian Installer process start. Note: In case anything goes wrong during the install process, you can use Alt-F4 to check the installation log. - Select your Language, Country and Keyboard and let the installer proceed until it reports
that
No Common CD-ROM drive was detected.
- On
Load CD-ROM drivers from removable media
selectNo
. - On
Manually select a CD-ROM module and device
selectYes
. - On
Module needed for accessing the CD-ROM
selectnone
. - On
Device file for accessing the CD-ROM
type the following exactly:-t vfat -o rw /dev/mmcblk0p1
- (Optional) If you have copied the non-free WLAN firmware binaries, and plan to install through wireless, you can let the installer select the firmware files. Please be mindful that you may be asked multiple times as there are multiple files to provide.
- If requested by the installer, set up your network by choosing the network interface you want to use for installation and (optionally) your access point and credentials.
- Go through the hostname, user/password set up and customize those as you see fit.
- Let the installer continue until you get to the
Partition disks
screen. There, forPartitioning method
selectManual
. You should see something like this:In other words, the partition manager should already detect your existing partition asMMC/SD card #1 (mmcblk0) - 16.0 GB SD 2WCGO #1 primary 314.6 MB B K ESP pri/log FREE SPACE
ESP
, with theB
(bootable) andK
(keep data) flags. If that is not the case, (e.g. if it saysfat16
orfat32
instead ofESP
) then it probably means you either didn't format the partition to FAT16 or you forgot to set the bootable flag. In that case, please refer to the Additional Notes below. - Select
FREE SPACE
→Create a new partition
and create a1 GB
primaryswap
partition. - Select
FREE SPACE
→Create a new partition
and allocate the rest to a primaryext4
root partition (mountpoint =/
) - After doing the above, your partition report should look like this:
MMC/SD card #1 (mmcblk0) - 16.0 GB SD 2WCGO #1 primary 314.6 MB B K ESP #2 primary 1.0 GB f swap swap #3 primary 14.7 GB f ext4 /
- Select
Finish partitioning and write changes to disk
and thenYes
and let the installer continue with the base system installation. - After a while, the installer should produce a message that states:
This is a benign message that you can safely ignore by selecting
[!!] Configure the package manager apt-configuration problem An attempt to configure apt to install additional packages from the CD failed.
Continue
(The reason it is benign is we are running a net install and won't need to access the "CD-ROM" files post install). - Once you have dimissed the message above, pick the mirror closest to your geographical location and let the installer proceed with some more software installation.
- Finally, at the
Software selection
screen, choose any additional software package you wish to install.Debian desktop environment
should work out of the box if you choose to install it. - Let the process finalize the software and GRUB bootloader installation and, provided you
didn't run into the partition manager issue described above (installation partition not
seen as
ESP
) you can reboot your machine when prompted, which, once completed, should bring you to your newly installed Debian environment.
The reason we use -t vfat -o rw /dev/mmcblk0p1
for the source media (i.e. "CD-ROM" device)
is because, whereas the first partition on the SD card is indeed /dev/mmcblk0p1
, we also
need to provide additional parameters for the mount
command that the installer invokes
behind the scenes. For instance, if we don't use -t vfat
, then ISO-9660 is forced as the
file system, and if we don't use -o rw
then the partition will be mounted as read-only
which then prevents the same partition from being remounted when locating the non-free
firmware files or when setting up /efi/boot
.
With regards to fixing the partitioning if you don't see B K ESP
when entering the
partition manager, what you need to do is:
- Before you create the additional partitions, select the first partition and change its
type to
ESP
. Note however that doing this changes the type of the partition to0xef
which is precisely what we're trying to avoid by having the partition manager already detect it as ESP, as type0xef
is unbootable by the Broadcom CPU. - To fix this then, before you choose
Continue
on theInstallation complete
prompt you should open a new console with Alt-F2 and type:Then press t, 1, e w, to reset the partition to typechroot /target fdisk /dev/mmcblk0
0x0e
(FAT16 LBA).
Ubuntu 18.04 LTS has been tested and confirmed to work,
on a Raspberry 3 Model B, including the installation process. Note however that network
installation and networking may not work on the Model B+, due to the lan78xx
Linux driver
still requiring some support.
Below are the steps you can follow to install Ubuntu LTS onto SD/USB:
- Download the latest Ubuntu LTS ARM64
mini.iso
. - Partition the media as MBR and create a ~200 MB FAT32 partition on it with MBR type
0x0c
. Note: Do not be tempted to use GPT partition scheme or0xef
(EFI System Partition) for the type, as none of these are supported by the Raspberry Pi's internal boot rom. - Extract the full content of the ISO onto the partition you created.
- Also extract the GRUB EFI bootloader
bootaa64.efi
from/boot/grub/efi.img
to/boot/grub/
. Note: Do not be tempted to copy this file to another directory (such as/efi/boot/
) as GRUB looks for its modules and configuration data in the same directory as the EFI loader and also, the installation process will create abootaa64.efi
into/efi/boot/
. - If needed, copy the UEFI firmware files (
RPI_EFI.fd
,bootcode.bin
,fixup.dat
andstart.elf
) onto the FAT partition. - Boot the pi and let it go into the UEFI shell.
- Navigate to
fs0:
then/boot/grub/
and launch the GRUB efi loader. - Follow the Ubuntu installation process.
Note: Because Ubuntu operates in quiet mode by default (no boot messages), you may think the system is frozen on first reboot after installation. However, if you wait long enough you will get to a login prompt.
Once Linux is running, if desired, you can disable quiet boot, as well as force the display
of the GRUB selector, by editing /etc/default/grub
and changing:
GRUB_TIMEOUT_STYLE=hidden
→GRUB_TIMEOUT_STYLE=menu
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
→GRUB_CMDLINE_LINUX_DEFAULT=""
Then, to have your changes applied run update-grub
and reboot.
-
OpenSUSE Leap 42.3 has been reported to work on Raspberry 3 Model B.
-
Other ARM64 Linux releases, that support UEFI boot and have the required hardware support for Pi hardware are expected to run, though their installation process might require some cajoling.
Windows 10 1809 for ARM64 (build 17763) has been tested and confirmed to work (after replacing
C:\Windows\System32\Drivers\WppRecorder.sys
with an older version, since the one from 1809
appears to be buggy across all archs, and results in a similar BSOD when trying to run Windows
To Go on x64 with native drivers for instance).
Windows 10 1803 for ARM64 and earlier do not work due to the presence of a hardware ASSERT check in the Windows kernel, that was removed in later versions.
You probably want to look at https://www.worproject.ml/ as well as the Windows thread in the original RaspberryPiPkg for installation details.
Details you may need to run other platforms, including FreeBSD, is provided in the Readme from the original RaspberryPiPkg.