* [edk2-platforms: PATCH v3 0/1] Platform/RPi3: Add Debian 10 installation in Systems.md @ 2019-08-08 12:39 Pete Batard 2019-08-08 12:39 ` [edk2-platforms: PATCH v3 1/1] " Pete Batard 0 siblings, 1 reply; 3+ messages in thread From: Pete Batard @ 2019-08-08 12:39 UTC (permalink / raw) To: devel; +Cc: ard.biesheuvel, leif.lindholm Changes from v2: - Use "on-CPU" rather than "ondie". - Make sure the options to force FAT16 are provided for both Windows and Linux. - Provide a maximum size for FAT16 and add a forward references to the additional notes and the `fdisk` fixup, for people who might still choose FAT32. Pete Batard (1): Platform/RPi3: Add Debian 10 installation in Systems.md 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(-) -- 2.21.0.windows.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [edk2-platforms: PATCH v3 1/1] Platform/RPi3: Add Debian 10 installation in Systems.md 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 ` Pete Batard 2019-08-08 13:51 ` Leif Lindholm 0 siblings, 1 reply; 3+ messages in thread From: Pete Batard @ 2019-08-08 12:39 UTC (permalink / raw) To: devel; +Cc: ard.biesheuvel, leif.lindholm 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. 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` → `Create a new partition` and create a `1 GB` primary `swap` + partition. +* Select `FREE SPACE` → `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 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [edk2-platforms: PATCH v3 1/1] Platform/RPi3: Add Debian 10 installation in Systems.md 2019-08-08 12:39 ` [edk2-platforms: PATCH v3 1/1] " Pete Batard @ 2019-08-08 13:51 ` Leif Lindholm 0 siblings, 0 replies; 3+ messages in thread From: Leif Lindholm @ 2019-08-08 13:51 UTC (permalink / raw) To: Pete Batard; +Cc: devel, ard.biesheuvel 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` → `Create a new partition` and create a `1 GB` primary `swap` > + partition. > +* Select `FREE SPACE` → `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 > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-08-08 13:51 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox