- Mar 23, 2023
-
-
Antoine R. Dumont authored
Refs. sysadm-environment#4759
-
Nicolas Dandrimont authored
-
- Mar 16, 2023
-
-
Nicolas Dandrimont authored
This should fix a warning on boot and the wait-online.service on all hosts.
-
- Mar 15, 2023
-
-
Nicolas Dandrimont authored
-
- Mar 14, 2023
-
-
Antoine R. Dumont authored
Refs. sysadm-environment#4808
-
Antoine R. Dumont authored
Refs. sysadm-environment#4808
-
Antoine R. Dumont authored
Refs. sysadm-environment#4808
-
Antoine R. Dumont authored
Refs. sysadm-environment#4808
-
- Mar 10, 2023
-
-
Nicolas Dandrimont authored
(mam doesn't have a boot disk as we had run out of pci-express for all the NVMe)
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
- Mar 09, 2023
-
-
Vincent Sellier authored
-
Vincent Sellier authored
-
- Mar 08, 2023
-
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
-
Nicolas Dandrimont authored
Use with j2cli: j2 -f yaml configs/template.ipxe.j2 configs/cassandra07.yaml > configs/cassandra07.ipxe
-
Nicolas Dandrimont authored
-
- Mar 01, 2023
-
-
Michael Brown authored
Extend the request parameter mechanism to allow for arbitrary HTTP headers to be specified via e.g.: params param --header Referer http://www.example.com imgfetch http://192.168.0.1/script.ipxe##params Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Prepare for the parameter mechanism to be generalised to specifying request parameters that are passed via mechanisms other than an application/x-www-form-urlencoded form. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
An attempt to use an existent but empty form parameter list will currently result in an invalid POST request since the Content-Length header will be missing. Fix by using GET instead of POST if the form parameter list is empty. This is a non-breaking change (since the current behaviour produces an invalid request), and simplifies the imminent generalisation of the parameter list concept to handle both header and form parameters. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 28, 2023
-
-
Michael Brown authored
When the Linux kernel is being used with no initrd, iPXE will still provide a zero-length initrd.magic file within the virtual filesystem. As of commit 6a004be0 ("[efi] Support the initrd autodetection mechanism in newer Linux kernels"), this zero-length file will also be exposed via an EFI_LOAD_FILE2_PROTOCOL instance on a handle with a fixed device path. The correct handling of zero-length files via EFI_LOAD_FILE2_PROTOCOL is unfortunately not well defined. Linux expects the first call to LoadFile() to always fail with EFI_BUFFER_TOO_SMALL. When the initrd is genuinely zero-length, iPXE will return success since the buffer is not too small to hold the (zero-length) file. This causes Linux to immediately report a spurious EFI_LOAD_ERROR boot failure. We could change the logic in iPXE's efi_file_load() to always return EFI_BUFFER_TOO_SMALL if Buffer is NULL on entry. Since the correct behaviour of LoadFile() in the corner case of a zero-length file is left undefined by the UEFI specification, this would be permissible. Unfortunately this approach would not fix the problem. If we return EFI_BUFFER_TOO_SMALL and set the file length to zero, then Linux will call the boot services AllocatePages() method with a zero length. In at least the EDK2 implementation, this combination of parameters will cause AllocatePages() to return EFI_OUT_OF_RESOURCES, and Linux will again report a boot failure. Another approach would be to install the initrd device path handle only if we have a non-empty initrd to offer. Unfortunately this would lead to a failure in yet another corner case: if a previous bootloader has installed an initrd device path handle (e.g. to pass a boot script to iPXE) then we must not leave that initrd in place, since then our loaded kernel would end up seeing the wrong initrd content. The cleanest fix seems to be to ensure that the initrd device path handle is installed with the EFI_DEVICE_PATH_PROTOCOL instance present but with the EFI_LOAD_FILE2_PROTOCOL instance absent (and forcibly uninstalled if necessary), matching the state in which we leave the handle after uninstalling our virtual filesystem. Linux will then not find any handle that supports EFI_LOAD_FILE2_PROTOCOL within the fixed device path, and so will fall through to trying other mechanisms to locate the initrd. Reported-by:
Chris Bradshaw <cwbshaw@gmail.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 20, 2023
-
-
Michael Brown authored
Commit 7ca801d6 ("[efi] Use the EFI_RNG_PROTOCOL as an entropy source if available") added EFI_RNG_PROTOCOL as an alternative entropy source via an ad-hoc mechanism specific to efi_entropy.c. Split out EFI_RNG_PROTOCOL to a separate entropy source, and allow the entropy core to handle the selection of RDRAND, EFI_RNG_PROTOCOL, or timer ticks as the active source. The fault detection logic added in commit a87537d4 ("[efi] Detect and disable seriously broken EFI_RNG_PROTOCOL implementations") may be removed completely, since the failure will already be detected by the generic ANS X9.82-mandated repetition count test and will now be handled gracefully by the entropy core. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Provide per-source state variables for the repetition count test and adaptive proportion test, to allow for the situation in which an entropy source can be enabled but then fails during the startup tests, thereby requiring an alternative entropy source to be used. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 17, 2023
-
-
Michael Brown authored
As noted in commit 3c83843e ("[rng] Check for several functioning RTC interrupts"), experimentation shows that Hyper-V cannot be trusted to reliably generate RTC interrupts. (As noted in commit f3ba0fb5 ("[hyperv] Provide timer based on the 10MHz time reference count MSR"), Hyper-V appears to suffer from a general problem in reliably generating any legacy interrupts.) An alternative entropy source is therefore required for an image that may be used in a Hyper-V Gen1 virtual machine. The x86 RDRAND instruction provides a suitable alternative entropy source, but may not be supported by all CPUs. We must therefore allow for multiple entropy sources to be compiled in, with the single active entropy source selected only at runtime. Restructure the internal entropy API to allow a working entropy source to be detected and chosen at runtime. Enable the RDRAND entropy source for all x86 builds, since it is likely to be substantially faster than any other source. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 16, 2023
-
-
Michael Brown authored
We currently specify only the iSCSI default value for MaxBurstLength and ignore any negotiated value, since our internal block device API allows only for receiving directly into caller-allocated buffers and so we have no intrinsic limit on burst length. A conscientious target may however refuse to attempt a transfer that we request for a number of blocks that would exceed the negotiated maximum burst length. Fix by recording the negotiated maximum burst length and using it to limit the maximum number of blocks per transfer as reported by the SCSI layer. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 15, 2023
-
-
Michael Brown authored
Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Linux 5.7 added the ability to autodetect an initrd by searching for a handle via a fixed vendor-specific "Linux initrd device path" and then locating and using the EFI_LOAD_FILE2_PROTOCOL instance on that handle. This maps quite naturally onto our existing concept of a "magic initrd" as introduced for EFI in commit e5f02551 ("[efi] Provide an "initrd.magic" file for use by UEFI kernels"). Add an EFI_LOAD_FILE2_PROTOCOL instance to our EFI virtual files (backed by simply calling the existing EFI_SIMPLE_FILE_SYSTEM_PROTOCOL method to read from the file), and install the protocol instance for the "initrd.magic" virtual file onto a new device handle that also provides the Linux initrd device path. The design choice in Linux of using a single fixed device path makes this unfortunately messy to support, since device paths must be unique within a system. When multiple bootloaders are used (e.g. GRUB loading iPXE loading Linux) then only one bootloader can ever install the device path onto a handle. Subsequent bootloaders must locate the existing handle and replace the load file protocol instance with their own. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
Michael Brown authored
Show the requested range when a caller reads from a virtual file via the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL interface. Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 14, 2023
-
-
Michael Brown authored
The Linux kernel bzImage image format and the CPIO archive constructor will parse the image command line for certain arguments of the form "key=value". This parsing is currently implemented using strstr() in a way that can cause a false positive suffix match. For example, a command line containing "highmem=<n>" would erroneously be treated as containing a value for "mem=<n>". Fix by centralising the logic used for parsing such arguments, and including a check that the argument immediately follows a whitespace delimiter (or is at the start of the string). Reported-by:
Filippo Giunchedi <filippo@esaurito.net> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 11, 2023
-
-
Michael Brown authored
Commit 74222cd2 ("[rng] Check for functioning RTC interrupt") added a check that the RTC is capable of generating interrupts via the legacy PIC, since this mechanism appears to be broken in some Hyper-V virtual machines. Experimentation shows that the RTC is sometimes capable of generating a single interrupt, but will then generate no subsequent interrupts. This currently causes rtc_entropy_check() to falsely detect that the entropy gathering mechanism is functional. Fix by checking for several RTC interrupts before declaring that it is a functional entropy source. Reported-by:
Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 10, 2023
-
-
Michael Brown authored
EISA expansion slot I/O port addresses overlap space that may be assigned to PCI devices, which can lead to register reads and writes with unwanted side effects during EISA probing. Reduce the chances of performing EISA probing on PCI devices by probing EISA slot vendor and product ID registers only if the EISA system board vendor ID register indicates that the motherboard supports EISA. Debugged-by:
Václav Ovsík <vaclav.ovsik@gmail.com> Tested-by:
Václav Ovsík <vaclav.ovsik@gmail.com> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-
- Feb 06, 2023
-
-
Xiaotian Wu authored
Add support for building a LoongArch64 Linux userspace binary. Signed-off-by:
Xiaotian Wu <wuxiaotian@loongson.cn> Modified-by:
Michael Brown <mcb30@ipxe.org> Signed-off-by:
Michael Brown <mcb30@ipxe.org>
-