public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <leif.lindholm@linaro.org>
To: Pete Batard <pete@akeo.ie>
Cc: devel@edk2.groups.io, ard.biesheuvel@linaro.org
Subject: Re: [edk2-platforms: PATCH v3 1/1] Platform/RPi3: Add Debian 10 installation in Systems.md
Date: Thu, 8 Aug 2019 14:51:16 +0100	[thread overview]
Message-ID: <20190808135116.GZ25813@bivouac.eciton.net> (raw)
In-Reply-To: <20190808123951.11548-2-pete@akeo.ie>

On Thu, Aug 08, 2019 at 01:39:51PM +0100, Pete Batard wrote:
> This documents the installation of vanilla Debian 10.0 ARM64 (netinst),
> which we validated for both Model B and Model B+.
> Also fix an erroneous reference in an RPi3.fdf comment.

If it happens again that I get an unrelated .fdf comment update in a
documentation patch, I'm probably going to object. But I'll let this
one slip :)

Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Pushed as 86ef5b3e5d88.

Thanks!

> Signed-off-by: Pete Batard <pete@akeo.ie>
> ---
>  Platform/RaspberryPi/RPi3/RPi3.fdf   |   2 +-
>  Platform/RaspberryPi/RPi3/Readme.md  |   4 +-
>  Platform/RaspberryPi/RPi3/Systems.md | 127 +++++++++++++++++++-
>  3 files changed, 126 insertions(+), 7 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/RPi3/RPi3.fdf b/Platform/RaspberryPi/RPi3/RPi3.fdf
> index c7c3f7a2ab8c..c62d649834c7 100644
> --- a/Platform/RaspberryPi/RPi3/RPi3.fdf
> +++ b/Platform/RaspberryPi/RPi3/RPi3.fdf
> @@ -300,7 +300,7 @@ [FV.FvMain]
>    INF Platform/RaspberryPi/$(PLATFORM_NAME)/Drivers/LogoDxe/LogoDxe.inf
>  
>    #
> -  # FDT (GUID matches mRaspberryPiFfsFileGuid in RaspberryPiPlatformDxe)
> +  # FDT (GUID matches gRaspberryPiFdtFileGuid in FdtDxe)
>    #
>    FILE FREEFORM = DF5DA223-1D27-47C3-8D1B-9A41B55A18BC {
>      SECTION RAW = Platform/RaspberryPi/$(PLATFORM_NAME)/DeviceTree/bcm2710-rpi-3-b.dtb
> diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
> index 624f3a8d287a..797da1bab4a9 100644
> --- a/Platform/RaspberryPi/RPi3/Readme.md
> +++ b/Platform/RaspberryPi/RPi3/Readme.md
> @@ -18,8 +18,8 @@ Raspberry Pi is a trademark of the [Raspberry Pi Foundation](http://www.raspberr
>  
>  This firmware, that has been validated to compile against the current
>  [edk2](https://github.com/tianocore/edk2)/[edk2-platforms](https://github.com/tianocore/edk2-platforms),
> -should be able to boot Linux (SUSE, Ubuntu), NetBSD, FreeBSD as well as Windows 10 ARM64
> -(full GUI version).
> +should be able to boot Linux (Debian, Ubuntu, SUSE), NetBSD, FreeBSD as well as Windows
> +10 ARM64 (full GUI version).
>  
>  It also provides support for ATF ([Arm Trusted Platform](https://github.com/ARM-software/arm-trusted-firmware)).
>  
> diff --git a/Platform/RaspberryPi/RPi3/Systems.md b/Platform/RaspberryPi/RPi3/Systems.md
> index f6410eb25f0d..3a313c29cbdc 100644
> --- a/Platform/RaspberryPi/RPi3/Systems.md
> +++ b/Platform/RaspberryPi/RPi3/Systems.md
> @@ -1,5 +1,128 @@
>  # Tested Operating Systems
>  
> +## Debian
> +
> +[Debian 10](https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/) 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 type `0x0e` (not
> +  `0xef` 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 the `a` command to set a partition as active. On Windows, you can use
> +  `diskpart` and then type `active` 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` then `format fs=fat quick` will format a drive to FAT16. On
> +  Linux, the equivalent command would be `mkfs.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 invoke `fdisk`
> +  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` and `start.elf`)
> +  as well as an appropriate `config.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` and
> +  `brcmfmac43430-sdio.bin` for a Raspberry Pi 3 Model B, `brcmfmac43455-sdio.txt` and
> +  `brcmfmac43455-sdio.bin` for a Raspberry Pi 3 Model B+). You may also want to obtain the
> +  relevant `.clm_blob` (`brcmfmac43430-sdio.clm_blob` or `brcmfmac43455-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 a `firmware/` 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
> +  <kbd>Alt</kbd>-<kbd>F4</kbd> 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` select `No`.
> +* On `Manually select a CD-ROM module and device` select `Yes`.
> +* On `Module needed for accessing the CD-ROM` select `none`.
> +* 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, for
> +  `Partitioning method` select `Manual`. You __should__ see something like this:
> +  ```
> +  MMC/SD card #1 (mmcblk0) - 16.0 GB SD 2WCGO
> +       #1  primary  314.6 MB  B  K  ESP
> +           pri/log                  FREE SPACE
> +  ```
> +  In other words, the partition manager should already detect your existing partition as
> +  `ESP`, with the `B` (bootable) and `K` (keep data) flags. If that is not the case, (e.g.
> +  if it says `fat16` or `fat32` instead of `ESP`) 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` &rarr; `Create a new partition` and create a `1 GB` primary `swap`
> +  partition.
> +* Select `FREE SPACE` &rarr; `Create a new partition` and allocate the rest to a primary
> + `ext4` 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 then `Yes` and let the
> +  installer continue with the base system installation.
> +* After a while, the installer should produce a message that states:
> +  ```
> +  [!!] Configure the package manager
> +
> +  apt-configuration problem
> +  An attempt to configure apt to install additional packages from the CD failed.
> +  ```
> +  This is a __benign__ message that you can safely ignore by selecting `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.
> +
> +### Additional Notes for Debian
> +
> +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 to `0xef`
> +  which is precisely what we're trying to avoid by having the partition manager already
> +  detect it as ESP, as type `0xef` is __unbootable__ by the Broadcom CPU.
> +* To fix this then, before you choose `Continue` on the `Installation complete` prompt you
> +  should open a new console with <kbd>Alt</kbd>-<kbd>F2</kbd> and type:
> +  ```
> +  chroot /target fdisk /dev/mmcblk0
> +  ```
> +  Then press <kbd>t</kbd>, <kbd>1</kbd>, <kbd>e</kbd> <kbd>w</kbd>, to reset the partition
> +  to type `0x0e` (FAT16 LBA).
> +
>  ## Ubuntu
>  
>  [Ubuntu 18.04 LTS](http://releases.ubuntu.com/18.04/) has been tested and confirmed to work,
> @@ -35,10 +158,6 @@ Then, to have your changes applied run `update-grub` and reboot.
>  
>  ## Other Linux distributions
>  
> -* Debian ARM64 does not currently work, most likely due to missing required module support
> -  in its kernel. However its installation process works, so it may be possible to get it
> -  running with a custom kernel.
> -
>  * 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
> -- 
> 2.21.0.windows.1
> 

      reply	other threads:[~2019-08-08 13:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-08 12:39 [edk2-platforms: PATCH v3 0/1] Platform/RPi3: Add Debian 10 installation in Systems.md Pete Batard
2019-08-08 12:39 ` [edk2-platforms: PATCH v3 1/1] " Pete Batard
2019-08-08 13:51   ` Leif Lindholm [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190808135116.GZ25813@bivouac.eciton.net \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox