Package: installation-reports
Severity: normal
Tags: d-i
Boot method: network
Image version: [2023-04-28] Bookworm Release Candidate 2 Installer
Date: 2023-05-02
Machine: Raspberry Pi 400
Partitions:
Filesystem Type 1K-blocksUsed Available Use% Mounted on
udev devtmpfs 1871816 0 1871816 0% /dev
tmpfs tmpfs 386544 704385840 1% /run
/dev/mmcblk1p2 ext4 14689724 4192988 9728736 31% /
tmpfs tmpfs 1932704 0 1932704 0% /dev/shm
tmpfs tmpfs 5120 0 5120 0% /run/lock
/dev/mmcblk1p1 vfat524008 119424404584 23% /boot/efi
tmpfs tmpfs 386540 44386496 1% /run/user/1000
Base System Installation Checklist:
[O] = OK, [E] = Error (please elaborate below), [ ] = didn't try it
Initial boot: [O]
Detect network card:[E]
Configure network: [O]
Detect media: [E]
Load installer modules: [E]
Clock/timezone setup: [O]
User/password setup:[O]
Detect hard drives: [E]
Partition hard drives: [O]
Install base system:[O]
Install tasks: [O]
Install boot loader:[E]
Overall install:[O]
Comments:
Although the list of problems in this report might seem lengthy and
arcane, I enjoyed the installation process and think that with a few
small fixes, the rough edges can be removed. I am writing this report
from an LXDE environment on the installed system.
This was largely an experiment to determine how feasible it is to bring
up a Raspberry Pi 400 over the network and to install Debian Bookworm
from there using the standard Debian Installer process.
The TFTP server was dnsmasq with a fairly minimal configuration based on
Debian's PXE-boot wiki page[1]. In addition to Debian Bookworm's
netboot.tar.gz[2] file (for RC2 at the time of download), the EDK2 UEFI
firmware[3] v1.34 was extracted to the /srv/tftp directory.
The only customized dnsmasq setting required was:
pxe-service=0, "Raspberry Pi Boot"
Additional firmware for use during the install session was provided by
unpacking a firmware.tar.gz[3] file onto a FAT32-formatted USB drive.
Problems:
* Firmware for the brcmfmac kernel module was not found on the USB
drive (but is present). This may be related to #1029843
* Workaround: extracted the .deb contents on another system, placed
them onto the USB drive, and then used one of the available virtual
consoles (ctrl-alt-F1 or ctrl-alt-F2) on the install host to mount
the USB drive and copy the firmware files to /lib/firmware/brcm
before rmmod'ing and modprobe'ing the kernel module.
* [minor] The hw-detect/load_firmware dialog box included an
extraneous newline within the displayed filename(s) for which
loading failed.
* The microSD card intended as the installation disk did not appear
under /dev/mmc* when the install began.
* Workaround: rmmod'd and modprobe'd the sdhci* kernel modules;
after doing that, the disk was detected and available under /dev
* After completing the installation and rebooting, the first boot from
the install disk failed. The Raspberry Pi's diagnostics console
showed a 'Firmware not found' message.
* Fix: this seemed to be due to a lack of Pi-compatible firmware on
the ESP (EFI System Partition) of the install disk. To resolve
the problem, the same EDK2 UEFI firmware used on the dnsmasq
ntboot server was unpacked into the ESP partition from another
system (by removing the SD card from the Pi and placing it into
the other machine).
* After successfully reaching the EDK2 UEFI boot manager, the system
appeared to pause without reaching the expected next-stage GRUB
bootloader.
* Fix: this appears to be due to the default unpacked EDK2 UEFI
bootmanager being unaware of the GRUB install on the same ESP
partition. That's understandable, because GRUB was installed
before the EDK2 UEFI.
The problem was solved by using the built-in boot menu management
in the EDK2 UEFI to add an entry to boot into Debian. In
particular, this involved creating a file-boot entry that runs
'shimaa64.efi'.
That concludes the installer-related issues; with those problems
worked-around / resolved, the system booted correctly.
There was one more problem that may not be installer-related:
* The 'raspi-firmware' package failed to configure correctly during
'apt install', with an exit code 1 and asking whether the
/boot/firmware path had been mounted.
[1] -
https://wiki.debian.org/PXEBootInstall?action=show=DebianInstaller%2FNetbootPXE#Another_Way_-_use_Dnsmasq
[2] -
https://deb.debian.org/debian/dists/testing/main/installer-arm64/current/images/netboot/netboot.tar.gz
[2] - https://github.com/pftf/RPi4/releases/tag/v1.34
[3] -
https://cdimage.debian.org/cdimage/firmware/bookworm/20230424/firmware.tar.gz
-- Package-specific