guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#48314] Patches to install guix system on Raspberry Pi


From: Stefan
Subject: [bug#48314] Patches to install guix system on Raspberry Pi
Date: Sun, 9 May 2021 17:32:04 +0200

Hi!

This patch series adds support for the Raspberry Pi. It allows to use ‘sudo -E 
guix system init … /mnt’ with the root partition mounted at /mnt and the boot 
partition mounted at /mnt/boot/efi, as you would expect it for a PC with UEFI. 
Installing for netboot is possible as well.

It is currently not possible to build an image with this patch series, because 
of the intercepting handling for efi system image creation.

Some of these patches are generic and not related to the Raspberry Pi. I hope 
they will be a useful contribution for everyone.

Here is a quick overview of the single patches:

01: Disable the tests on aarch64 for qemu-minimal, because it is 
non-deterministic but needed to build grub.

02: Rework the grub-efi-netboot-bootloader and add a 
grub-efi-netboot-removable-bootloader which then are pre-installed. This allows 
a simplification of the efi-bootloader-chain, as these pre-installed 
bootloaders just need to be copied and can therefore easily be collected in a 
bootloader-profile.

03: A new build-side module to modify a defconfig. It is used to customize 
U-Boot and Linux packages.

04: Customized and pre-installed U-Boot packages for the Raspberry Pi.

05: Fixed the EXTRAVERSION variable used to build Linux, so that the 
extra-version argument will be visible with uname. 

06: New function to modify a Linux package by using another defconfig and/or 
adding or removing configurations.

07: Raspberry Pi specific defconfig objects.

08: Some helpers to construct config.txt files for the Raspberry Pi firmware.

09: A function to create a package with device-tree files from a Linux package 
for the Raspberry Pi.

10: A bootloader for the Raspberry Pi. Additionally two examples of 
operating-system definitions to boot from local storage or over network, the 
latter is making necessary configuration changes to Linux.

The firmware topic is excluded. In the same way that guix assumes that some 
UEFI firmware is already present on a PC, this patch series assumes that a 
firmware to start U-Boot is already present.

The grub bootloaders are usable on PCs as well. In contrast to the normal 
grub-efi, all grub files are copied to the EFI system partition, instead of the 
root partition. This is a side effect of the netboot capability. Maybe this is 
helpful for some spacial cases. I realized for example that the normal grub-efi 
locates the partition containing the grub.cfg by a device name like (hd0,gpt1), 
this may be problematic when adding disks to a system. The new grub bootloaders 
determine the partition by UUID.

The new possibility to customize Linux with (modify-linux) will be useful for 
anyone in need to do small configuration changes. There is also the possibility 
to pass an own defconfig file to this function. It can either be the name of a 
defconfig file from the Linux sources, or it can be a file-like object, like 
produced by (local-file) or possibly downloaded with the new (make-defconfig) 
function.


Bye

Stefan

Attachment: 01-gnu-qemu-disable-tests-on.patch
Description: Binary data

Attachment: 02-gnu-bootloader-rework-chaining.patch
Description: Binary data

Attachment: 03-build-kconfig-add-new-module.patch
Description: Binary data

Attachment: 04-gnu-bootloader-add-u-boot.patch
Description: Binary data

Attachment: 05-gnu-linux-correct-name-of.patch
Description: Binary data

Attachment: 06-gnu-linux-new-function-to.patch
Description: Binary data

Attachment: 07-gnu-raspberry-pi-add-defconfig.patch
Description: Binary data

Attachment: 08-gnu-raspberry-pi-add-helpers.patch
Description: Binary data

Attachment: 09-gnu-raspberry-pi-new-function.patch
Description: Binary data

Attachment: 10-gnu-raspberry-pi-add-a.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]