Go to file
Denis 'GNUtoo' Carikli 55ec388b69
guix: gnuboot-trisquel-preseed.img: add missing inputs.
The bug #66224 (https://savannah.gnu.org/bugs/?66224) was spoted
because the checksum check failed in the gnuboot-trisquel-preseed.img
package.

We only observed the following with diffoscope:
    $ diffoscope preseed.img.old preseed.img.new
    --- preseed.img.old
    +++ preseed.img.new
    [...]
     00000a20: 5052 4553 4545 4420 4346 4720 1800 0000  PRESEED CFG ....
    -00000a30: 21ec 21ec 0000 0000 21ec 0200 f50d 0000  !.!.....!.......
    +00000a30: 21ec 2859 0000 0000 21ec 0200 f50d 0000  !.(Y....!.......
     00000a40: 4365 0000 00ff ffff ffff ff0f 0000 ffff  Ce..............
    [...]
     00000aa0: 5348 5554 444f 7e31 5345 5220 0000 0000  SHUTDO~1SER ....
    -00000ab0: 21ec 21ec 0000 0000 21ec 0400 3002 0000  !.!.....!...0...
    +00000ab0: 21ec 2859 0000 0000 21ec 0400 3002 0000  !.(Y....!...0...
     00000ac0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
    [...]

instead of having observed something like that as well:
    +00005a10: 7061 7274 206f 6620 474e 5520 426f 6f74  part of GNU Boot
    +00005a20: 2e0a 230a 2320 2043 6f70 7972 6967 6874  ..#.#  Copyright
    +00005a30: 2028 4329 2032 3032 3420 4465 6e69 7320   (C) 2024 Denis
    +00005a40: 2747 4e55 746f 6f27 2043 6172 696b 6c69  'GNUtoo' Carikli
    +00005a50: 203c 474e 5574 6f6f 4063 7962 6572 6469   <GNUtoo@cyberdi
    +00005a60: 6d65 6e73 696f 6e2e 6f72 673e 0a23 0a23  mension.org>.#.#
    +00005a70: 2020 5468 6973 2066 696c 6520 6973 2066    This file is f
    +00005a80: 7265 6520 736f 6674 7761 7265 3b20 796f  ree software; yo
    +00005a90: 7520 6361 6e20 7265 6469 7374 7269 6275  u can redistribu
    +00005aa0: 7465 2069 7420 616e 642f 6f72 206d 6f64  te it and/or mod
    +00005ab0: 6966 7920 6974 0a23 2020 756e 6465 7220  ify it.#  under
    +00005ac0: 7468 6520 7465 726d 7320 6f66 2074 6865  the terms of the
    +00005ad0: 2047 4e55 204c 6573 7365 7220 4765 6e65   GNU Lesser Gene
    +00005ae0: 7261 6c20 5075 626c 6963 204c 6963 656e  ral Public Licen
    +00005af0: 7365 2061 7320 7075 626c 6973 6865 6420  se as published
    +00005b00: 6279 0a23 2020 7468 6520 4672 6565 2053  by.#  the Free S
    +00005b10: 6f66 7477 6172 6520 466f 756e 6461 7469  oftware Foundati
    +00005b20: 6f6e 3b20 6569 7468 6572 2076 6572 7369  on; either versi
    +00005b30: 6f6e 2032 2e31 206f 6620 7468 6520 4c69  on 2.1 of the Li
    +00005b40: 6365 6e73 652c 206f 720a 2320 2028 6174  cense, or.#  (at
    +00005b50: 2079 6f75 7220 6f70 7469 6f6e 2920 616e   your option) an
    +00005b60: 7920 6c61 7465 7220 7665 7273 696f 6e2e  y later version.
    +00005b70: 0a0a 5b55 6e69 745d 0a44 6573 6372 6970  ..[Unit].Descrip
    +00005b80: 7469 6f6e 3d53 6875 7420 646f 776e 2074  tion=Shut down t
    +00005b90: 6865 2056 4d20 746f 206d 616b 6520 7468  he VM to make th
    +00005ba0: 6520 626f 6f74 2074 6573 7420 636f 6e63  e boot test conc
    +00005bb0: 6c75 6465 2e0a 4465 6661 756c 7444 6570  lude..DefaultDep
    +00005bc0: 656e 6465 6e63 6965 733d 6e6f 0a57 616e  endencies=no.Wan
    +00005bd0: 7473 3d64 6973 706c 6179 2d6d 616e 6167  ts=display-manag
    +00005be0: 6572 2e73 6572 7669 6365 0a41 6674 6572  er.service.After
    +00005bf0: 3d64 6973 706c 6179 2d6d 616e 6167 6572  =display-manager
    +00005c00: 2e73 6572 7669 6365 0a0a 5b53 6572 7669  .service..[Servi
    +00005c10: 6365 5d0a 5479 7065 3d6f 6e65 7368 6f74  ce].Type=oneshot
    +00005c20: 0a52 656d 6169 6e41 6674 6572 4578 6974  .RemainAfterExit
    +00005c30: 3d79 6573 0a45 7865 6353 7461 7274 3d2f  =yes.ExecStart=/
    +00005c40: 7573 722f 7362 696e 2f70 6f77 6572 6f66  usr/sbin/powerof
    +00005c50: 660a 0a5b 496e 7374 616c 6c5d 0a57 616e  f..[Install].Wan
    +00005c60: 7465 6442 793d 6d75 6c74 692d 7573 6572  tedBy=multi-user
    +00005c70: 2e74 6172 6765 740a 0000 0000 0000 0000  .target.........

To my understanding, this is because shutdown-after-boot.service was
modified without touching the package definition at all, so Guix
didn't see any changes.

Adding the missing files in either source or inputs should normally
fix this issue. My interpretation has also been confirmed by
discussing with Simon Tournier during a local event (though he was in
a hurry as he had to leave).

The change was introduced during the review of the patch that became
the commit 9cc02ddde1 ("packages: roms:
Start adding automatic tests.") where an issue was fixed in
shutdown-after-boot.service but the two GNU Boot maintainers forget to
update the checksum of the resulting preseed.img file.

I didn't manage to reproduce the problem after that, but given the
discussion with Simon Tournier, it's a good idea to still add
local-files as inputs. Some packages in Guix also add source code
inside inputs like in the musl-cross package.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:18:20 +02:00
contrib Add contrib script to start the guix-daemon in chroots of systemd distros. 2024-09-08 17:28:22 +02:00
resources guix: gnuboot-trisquel-preseed.img: add missing inputs. 2024-10-05 11:18:20 +02:00
tests packages: roms: Start adding automatic tests. 2024-09-08 17:11:04 +02:00
website website/docs/build: mark the Trisquel bug as solved and clarify the Guix one 2024-09-09 17:04:53 +02:00
.gitignore website: Remove news generation. 2024-09-08 17:37:11 +02:00
COPYING libreboot! 2021-05-18 13:56:12 +01:00
Makefile.am packages: roms: Start adding automatic tests. 2024-09-08 17:11:04 +02:00
README.md README.md: fix typo, add linebreak 2023-12-06 17:33:03 +01:00
autogen.sh Add topdir ./configure. 2024-05-12 22:56:04 +02:00
build build system: wrap git commands. 2024-09-08 17:18:53 +02:00
configure.ac Fix 'Git error: unable to parse OID - contains invalid characters' issue. 2024-09-08 17:17:15 +02:00
download build system: wrap git commands. 2024-09-08 17:18:53 +02:00
modify ./modify: enable to mask tasks. 2023-12-09 15:59:04 +01:00
projectname Continue Libreboot under the GNU project 2023-08-22 21:13:26 +02:00
update ./update: enable to mask tasks. 2023-12-09 15:59:37 +01:00

README.md

GNU Boot

This software is part of the GNU Project.

To load an operating system, computers need to be able to access storage devices (like an HDD or SSD) where the operating system is installed. They need RAM to work to load part of the operating system in RAM. Users also expect the display and keyboard to work before the operating system is loaded.

But on most computers, software is needed to initialize the RAM, the storage devices, the graphic card, to load the operating system, and give some information to the operating system on what hardware it is running on.

Because of that computers usually require boot software that is bundled in the computer. It is usually found on a very small storage chip that is inside the mainboard. That software is specific to a given computer.

Unfortunately that software is usually nonfree and GNU boot aims to replace that with 100% free software.

Like with other type of software, the fact that it is nonfree has real impacts. For instance this software often continues to run once the operating system is loaded and as it loads the operating system it can also modify it.

So having a nonfree boot software make it impossible for users to really trust their computers. Another common issue is that some BIOS/UEFI add restrictions to prevent users from replacing the WiFi card for instance. There are many more issues but listing them all here would make this description too long.

To replace nonfree boot software, GNU boot reuses various software projects (like Coreboot, U-boot, GRUB, SeaBIOS, etc), configure and build them to produce an image that can be installed to replace the nonfree boot software for specific computers.

Users can also do all that without GNU Boot but that tend to be complicated. Having a free software project that does all that enable people to collaborate on making sure that computers boot fine regardless of the upstream project status, for instance by making binary releases and collaborating to test them.

In addition GNU boot also comes with extensive documentation to make it as easy as possible to install GNU Boot and to empower users to modify the way their computer boot.

Since not all the project it reuses are 100% free software it also removes all the nonfree software found in them along the way and will also make the scripts and/or data that does that reusable for distributions or users that want to build their own free boot software without reusing the GNU Boot configuration or build system.

Not a coreboot fork!

GNU Boot is not a fork of coreboot, but more a boot firmware distribution including a modified version of coreboot, and other software like SeaBIOS, GRUB or u-boot.

Coreboot is not entirely free software as it includes binary blobs in it for some platforms. What GNU Boot does is download several revisions of coreboot, for different boards, and de-blob those coreboot revisions. This is done using the linux-libre deblob scripts, to find binary blobs in coreboot.

All new coreboot development should be done in coreboot (upstream), not GNU Boot. For example, if you wanted to add a new board to GNU Boot, you should add it to coreboot first. GNU Boot would then receive your code at a later date, when it updates itself.

The deblobbed coreboot tree used in GNU Boot is referred to as coreboot-libre, to distinguish it as a component of GNU Boot.

How this project came to exist

We believe computer users deserve to control all the software they run. This belief is the key principle of the Free Software Movement, and was the motive for developing the GNU operating system and starting the Free Software Foundation. We believe computer user freedom is a crucial human rights.

Unfortunately, such a muddle happened last year with a boot program that was free software and was called Libreboot: the development team added nonfree code to it, but continued to refer to it misleadingly as “Libreboot”.

Libreboot was first released in 2013. It has been widely recommended in the free software community for the last nine years. In November 2022, “Libreboot” began to include non-libre code. We have made repeated efforts to continue collaboration with those developers to help their version of Libreboot remain libre, but that was not successful.

Now weve stepped forward to stand up for freedom, ours and that of the wider community, by maintaining our own version a genuinely libre boot distribution: GNU Boot.

LICENSE FOR THIS README: GNU Free Documentation License 1.3 as published by the Free Software Foundation, with no invariant sections, no front cover texts and no back cover texts. If you wish it, you may use a later version of the GNU Free Documentation License as published by the Free Software Foundation.

Copy of the GNU Free Documentation License v1.3 here: https://www.gnu.org/licenses/fdl-1.3.en.html

Info about Free Software Foundation: https://www.fsf.org/