diff --git a/website/content/en/status/report-2023-04-2023-06/kboot.adoc b/website/content/en/status/report-2023-04-2023-06/kboot.adoc index c6a199cfa1..4c7243d6c6 100644 --- a/website/content/en/status/report-2023-04-2023-06/kboot.adoc +++ b/website/content/en/status/report-2023-04-2023-06/kboot.adoc @@ -1,56 +1,56 @@ === LinuxBoot FreeBSD on aarch64 Contact: Warner Losh Links: + link:https://www.linuxboot.org/[LinuxBoot Project] URL: link:https://www.linuxboot.org/[]+ link:https://docs.google.com/presentation/d/1N5Jp6XzYWv9Z9RhhETC-e6tFkqRHvp-ldRDW_9h2JCw/edit?usp=sharing[BSDCan 2023 kboot talk slides] URL: link:https://docs.google.com/presentation/d/1N5Jp6XzYWv9Z9RhhETC-e6tFkqRHvp-ldRDW_9h2JCw/edit?usp=sharing[] LinuxBoot is an effort to create a clean, robust, auditable and repeatable boot firmware. What originally started as a specific project at Google has grown to encompass any boot environment that uses Linux to launch the final operating system. Many platforms now support this environment, and in some cases it is the only available boot environment. In addition, some embedded boxes have a LinuxBoot environment hard-coded that is quite hard to change, and being able to reboot into FreeBSD is desirable. The old Sony PlayStation 3 port used a boot loader called 'kboot' to boot the FreeBSD port from its Linux kernel (all predating the LinuxBoot project). That code has been greatly expanded, made generic with easily replaceable per-architecture plug ins. The normal FreeBSD [.filename]#/boot/loader# is built as a Linux binary that reads in the FreeBSD kernel, modules and tunables. It places them into memory as if it were running in a pre-boot environment, then loads that image into the Linux kernel with man:kexec_load[2] and does a special reboot to that image. For UEFI-enabled systems, it passes the UEFI memory table and pointer to UEFI runtime services to the new kernel. It supports loading files from the host's filesystem, from any man:loader[8]-supported filesystem on the host's block devices (including pools that span multiple devices), from ram disk images and from files downloaded over the network. Any mix of these is available. So, for example, configuration overrides can be loaded from the host's filesystem whilst the kernel loads from dedicated storage (say NVME) or a ram disk image. It supports a host console running over stdin/stdout. It supports explicit locations such as `/dev/nvme0ns1:/boot/loader/gerbil.conf` for where to load filesystems from. It supports ZFS boot environments, including the boot-once feature. Additional details about kboot, what it supports and some general background can be found in Warner's BSDcan talk (slides linked above). FreeBSD/aarch64 now can boot from Linux in a LinuxBoot environment, with support and functionality comparable to man:loader.efi[8]. Memory layout passed in for GICv3 workarounds. Need patch for aarch64 kernel for the GICv3 workaround (link:https://reviews.freebsd.org/D40902[]). -FreBSD/amd64 support is in progress and is maybe 80% done. +FreeBSD/amd64 support is in progress and is maybe 80% done. The amd64 boot environment places more requirements on the boot loader to provide data for the kernel than aarch64, due to amd64 being an older port. -All sources for data in the BIOS enviornment had to be provided by the boot loader since the kernel had no access to them from long mode. +All sources for data in the BIOS environment had to be provided by the boot loader since the kernel had no access to them from long mode. While UEFI and ACPI provide ways for the kernel to get this data, much of the data must still be provided by the boot loader. The kernel panics during initialization since all these prerequisites have not been discovered and implemented. PowerPC builds, but nothing more of its state is known. Attempts to acquire a suitable Playstation 3 proved to be too time consuming for the author. ==== Help Needed 1. man:loader.kboot[8] needs to be written. It should document how to use [.filename]#loader.kboot#, how to create images, and the use cases that work today. 1. Finish amd64 support. 1. The current elf arch-specific metadata code is copied from efi. Unifying the kboot and efi copies is needed. While they are mostly the same, sharing is complicated by remaining compile-time differences. In addition, the build infrastructure makes sharing awkward. 1. It would be nice to add riscv64 support. 1. PowerPC testing (it has been untested since the refactoring started). 1. Creating a script to repackage EDK-II image (say, from QEMU) as a linux-boot image with a Linux kernel built on FreeBSD for CI testing. 1. Testing it from the coreboot LinuxBoot. Sponsored by: Netflix, Inc diff --git a/website/content/en/status/report-2023-04-2023-06/lldb-kmod.adoc b/website/content/en/status/report-2023-04-2023-06/lldb-kmod.adoc index 56a6cb3e7f..af10d04ffe 100644 --- a/website/content/en/status/report-2023-04-2023-06/lldb-kmod.adoc +++ b/website/content/en/status/report-2023-04-2023-06/lldb-kmod.adoc @@ -1,20 +1,20 @@ -=== LLDB Kernel Module Imporvement +=== LLDB Kernel Module Improvement Links: + link:https://wiki.freebsd.org/SummerOfCode2023Projects/LLDBKernelModuleImprovement[GSoC Wiki Project] URL: link:https://wiki.freebsd.org/SummerOfCode2023Projects/LLDBKernelModuleImprovement[] + link:https://github.com/aokblast/freebsd-src/tree/lldb_dynamicloader_freebsd_kernel[Project Codebase] URL: link:https://github.com/aokblast/freebsd-src/tree/lldb_dynamicloader_freebsd_kernel[] Contact: Sheng-Yi Hong FreeBSD project uses LLVM as its toolchain. The LLVM project has bundled with a debugger called LLDB. In LLDB, the userspace debugging facilities has been well implemented. However, in the kernel space, there are still some works have to be done. -One of the work is the kernel module debug facility for LLDB - that is, prase the loaded module data provided by the kernel core dump and loading the module objects. +One of the work is the kernel module debug facility for LLDB - that is, parse the loaded module data provided by the kernel core dump and loading the module objects. The goal is to implement such plugin for LLDB, and this is an ongoing GSoC Project for now. https://github.com/aokblast/freebsd-src/tree/lldb_dynamicloader_freebsd_kernel[Project Codebase] is the whole code of my work. Currently, this is still a work in progress and I am still debugging on it. Sponsor: The Google Summer of Code '23 program diff --git a/website/content/en/status/report-2023-04-2023-06/pf.adoc b/website/content/en/status/report-2023-04-2023-06/pf.adoc index 58b1168186..a0fb75257f 100644 --- a/website/content/en/status/report-2023-04-2023-06/pf.adoc +++ b/website/content/en/status/report-2023-04-2023-06/pf.adoc @@ -1,45 +1,45 @@ === Pf Improvements Links: + link:https://reviews.freebsd.org/D40911[D40911] URL: link:https://reviews.freebsd.org/D40911[] + link:https://reviews.freebsd.org/D40861[D40861] URL: link:https://reviews.freebsd.org/D40861[] + link:https://reviews.freebsd.org/D40862[D40862] URL: link:https://reviews.freebsd.org/D40862[] + link:https://reviews.freebsd.org/D40863[D40863] URL: link:https://reviews.freebsd.org/D40863[] + link:https://reviews.freebsd.org/D40864[D40864] URL: link:https://reviews.freebsd.org/D40864[] + link:https://reviews.freebsd.org/D40865[D40865] URL: link:https://reviews.freebsd.org/D40865[] + link:https://reviews.freebsd.org/D40866[D40866] URL: link:https://reviews.freebsd.org/D40866[] + link:https://reviews.freebsd.org/D40867[D40867] URL: link:https://reviews.freebsd.org/D40867[] + link:https://reviews.freebsd.org/D40868[D40868] URL: link:https://reviews.freebsd.org/D40868[] + link:https://reviews.freebsd.org/D40869[D40869] URL: link:https://reviews.freebsd.org/D40869[] + link:https://reviews.freebsd.org/D40870[D40870] URL: link:https://reviews.freebsd.org/D40870[] Contact: Kajetan Staszkiewicz + Contact: Naman Sood + Contact: Kristof Provost man:pf[4] is one of the firewalls included in FreeBSD, and is probably the most popular. pf was created by the OpenBSD project and subsequently ported to FreeBSD. ==== Backport OpenBSD Syntax Kajetan introduced the OpenBSD syntax of "scrub" operations in "match" and "pass" rules. Existing rules remain supported, but now OpenBSD style "scrub" configuration is also supported. ==== pfsync Protocol Versioning The man:pfsync[4] protocol version can now be configured, allowing for protocol changes while still supporting state synchronisation between disparate kernel versions. The primary benefit is to allow protocol changes enabling new functionality. ==== pfsync: Transport over IPv6 pfsync traffic can now be carried over IPv6 as well. Naman finished the work started by Luiz Amaral. ==== SCTP -There is work in progres to support SCTP in pf. +There is work in progress to support SCTP in pf. That support includes filtering on port numbers, state tracking, pfsync failover and returning ABORT chunks for rejected connections. Sponsor: InnoGames GmbH Sponsor: Orange Business Services Sponsor: The FreeBSD Foundation