Index: head/en_US.ISO8859-1/htdocs/news/status/report-2014-07-2014-09.xml
===================================================================
--- head/en_US.ISO8859-1/htdocs/news/status/report-2014-07-2014-09.xml (revision 45797)
+++ head/en_US.ISO8859-1/htdocs/news/status/report-2014-07-2014-09.xml (revision 45798)
@@ -1,2226 +1,2226 @@
This is a draft of the July-September 2014 status
report. Please check back after it is finalized, and an
announcement email is sent to the &os;-Announce mailing
list. This report covers &os;-related projects between July and
September 2014. This is the third of four reports planned for
2014. The third quarter of 2014 was another productive quarter for the
FreeBSD project. A lot of work has been done on various ARM
platforms, with the goal of bringing them to Tier 1 status in &os;
11 and the various ports teams have worked hard to improve the
state of &os; as a desktop operating system. As usual,
performance improvements feature in several places in this report
and many of these can benefit from user benchmarking to validate
our results. Thanks to all the reporters for the excellent work! This
report contains 0 entries and we hope you enjoy reading it. The deadline for submissions covering the period from October
to December 2014 is January 7th, 2015. Limitations of the current automounter, amd(8), are
a recurring problem reported by many &os; users. A new
automounter is being developed to address these concerns. The automounter is a cleanroom implementation of
functionality available in most other Unix systems, using
proper kernel support implemented via an autofs filesystem.
The automounter supports a standard map format, and will
integrate with the Lightweight Directory Access Protocol
(LDAP) service. The &os; Foundation worked with enterprise and university users
to test the new automounter in existing LDAP-based environments,
including some with thousands of map entries. The code is now ready to use. It has been committed to
11-CURRENT and 10-STABLE, and will ship as part of
10.1-RELEASE. There is ongoing work on improving performance
and fixing possible bugs.
Building on the new in-kernel iSCSI target and initiator stack
released in &os; 10.0, Chelsio Communications has begun
developing an offload interface to take advantage of the
hardware offload capabilities of Chelsio T4 and T5 10 and 40
gigabit Ethernet adapters. The code implements hardware PDU offload for both target and
initiator. The iSCSI stack has been modified to provide
hardware-independent offload API, allowing offload drivers to
be loaded as kernel modules, and to provide mechanisms for the
system administrator to configure this feature. The project
is entering a testing phase. The code will be released under
the BSD license and is expected to be completed later in the
year and ship in &os; 10.2-RELEASE. Complete testing Lucas is working on a series of small &os; books. The
first one, FreeBSD Mastery: Storage Essentials, is underway,
and covers GEOM, gpart, MBR, UFS, GELI, GBDE, disk sector
alignment, and more. You can pre-order the book at a discount
from his web site, or wait for it to hit print and all major
ebook retailers. Get status updates on his blog, or check @mwlauthor on
Twitter. Lucas needs to write faster. Xfce is a free software desktop environment for Unix and
Unix-like platforms including &os;. It aims to be fast and
lightweight while still being visually appealing and easy to
use. The Xfce team continues to keep each piece of the Xfce
Desktop up to date. That is why we are working on the next
stable release (no date scheduled). There were no major updates
in the ports tree except for cosmetic changes this quarter. Major upcoming changes include: Below is a list of current ports in the devel repository (see
link). There are also two new ports For more details, please see our wiki page in the Links
section. Finish patching the ACPI helper (xfce4-power-manager). Continue to work on documentation, especially the Porter's
Handbook, and creata a FAQ). ZFS is one of the premier features of &os; and the quality
of the documentation should match that of other important
features. Much of the original documentation from Sun and
Oracle has disappeared, moved, or is about the proprietary
version of ZFS. The OpenZFS project does not provide much
documentation and instead provides users with a few links,
including the &os; Handbook. New users have many questions
about ZFS and yet there exists a great deal more bad advice
about ZFS than proper documentation. After over a year of work, a new ZFS chapter has been added
to the &os; Handbook. Over 20,000 words describing the
basics of creating, managing and maintaining a ZFS pool, as
well as using some of the advanced features like compression,
deduplication, and delegation. The chapter also contains a
glossary of terms, explaining a number of the concepts unique
to ZFS. The chapter also includes documentation of some of
the many sysctl variables that can be used to tune ZFS. The remaining work is the FAQ section, which aims to help users
address the most common questions or problems they might face with ZFS.
It would be useful to hear experiences, questions, misconceptions,
gotchas, stumbling blocks and suggestions for the FAQ section from
other users. A use cases section that highlights some of the
cases where ZFS provides advantages over traditional file systems
is also planned. Please send suggestions to the docs mailing list. Technical review by Matt Ahrens (co-creator of
ZFS) Improve delegation section Improve tuning section, add recently added sysctls Add section on jails and the jailed property Add FAQ section Add Use Cases section General editing and review In May, &a.rodrigc; led a working group Continuous
Integration and Testing with Jenkins for &os; at the
&os; Devsummit in Ottawa. &a.rodrigc; also gave a Jenkins
presentation at BSDCan. At BSDCan, &a.rodrigc; had some discussions with &a.jmmv;
about how to better integrate &os; testing efforts with
Jenkins and kyua. As a result of this discussion, &a.jmmv;
enhanced the kyua testing framework with a
kyua report-junit command. This command takes kyua
test results and outputs a test report in JUnit XML format.
Jenkins can directly import JUnit XML test results and display
them nicely. In June, &a.rodrigc; was interviewed for episode 44 of BSD
Now. The interview covered Jenkins and Continuous Integration
in the &os; project. In July, &a.rodrigc; gave a presentation to the Bay Area &os;
Users Group (BAFUG), Libvirt and bhyve, based on
experience he had with those technologies when used with
Jenkins. &a.lwhsu; set up a Jenkins job to run the LLVM scan-build
tool to perform static analysis of the &os; code, and make the
results availalble at scan.freebsd.org. &a.swills; modified the Jenkins job which builds
pkg(8) to use the kyua report-junit command
to integrate pkg(8) test results in Jenkins. Anthony Williams reported that the version of the Java
Native Access (JNA) library bundled with Jenkins has problems
on &os;. This causes problems with Jenkins using libpam and
other plugins that use JNA. Craig filed JENKINS-24521
against Jenkins. Craig submitted patches to Jenkins to update
Jenkins to use JNA 4.1.0, which has fixes for &os;. &a.rodrigc; worked on automatically running the tests in the
&os; /usr/tests directory under Jenkins using the
kyua test framework. &a.rodrigc; provided feedback
to &a.jmmv; about kyua and &a.jmmv; incorporated some
of the feedback as bugfixes and feature enhancements to
kyua. &a.rodrigc; committed some fixes to &os; to
eliminate some test failures. One of the tests still results
in a crash in byacc. This is being tracked in PR 193499.
Thomas E. Dickey (byacc maintainer) submitted a patch to fix
the problem, and this has been committed to &os;. &a.rodrigc; analyzed the cause of some startup errors in
Jenkins when opening a multicast socket. He had some
discussion with &a.bms; captured in PR 193246. The Java JDK
depends on functionality in Solaris where it is possible to
open an IPv4 multicast socket, but with an IPv4 multicast
address mapped to an IPv6 address. On Linux, there are
modifications to the JDK itself to work around this. &a.bms;
said that the work to make the &os; IPv6 stack behave like
Solaris would require some work. &a.rodrigc; started writing a Kyua Quickstart Guide. This
guide is meant to help new kyua users who want to write tests
and run them under kyua. &a.rodrigc; is seeking feedback to
help improve this guide. Upstream more fixes to Jenkins for &os;, such as JNA
fixes. Automate the build of /usr/tests. Set up more builds based on examples from the existing &os;
Tinderbox. Get feedback for improving the Kyua Quickstart Guide. We need more people to join us on
freebsd-testing@FreeBSD.org and help out. We especially
need people with devops and scripting experience to help us
set up more builds and tests. We would also like to
integrate with other parts of the project, such as
Phabricator. The LLVM address sanitizer (Asan) is a fast memory error
detector that can detect use-after-free errors and buffer
overflows. It has been ported to &os;. The mainline version of
LLVM is known to pass all of the tests in the LLVM and Asan test
suites without unexpected failures on &os; 10.0. A buildbot running sanitizers tests under &os; stable/10
has been established. See the Links section. To make it possible to run programs with sanitizers
checks enabled on &os; a new kernel state named
kern.proc_vmmap_skip_resident_count has been added.
See the Links section. Note that running Asan tests on stable/10 requires that state
to be set to 1. A similar work dedicated to add &os; support to the thread
sanitizer (Tsan), which detects data races in parallel programs, is in
progress. This is a Google Summer of code project that aims to provide
a noninteractive &os; installation from the network. In
the first part, an implementation was added for scripted
bsdinstall(8). It supports variables such as KEYMAP,
HOSTNAME, MIRROR, RELEASE, TIMEZONE, DAEMONS, ROOTPWHASH, and
USERS. Network configuration, ZFS options, and others are
also included. Second part of project is about booting the fai (Fully
Automatic Installer) from the network by PXE. Made installer
distro based on mfsbsd. After boot, fai looks for the
"bootfile-name" parameter from the DHCP server. This parameter
instructs fai where the bsdinstall script is located. Fai
supports mac-based config or a default, if a mac-based
configuration file does not exist. Documentation, including a HOWTO and handbook More tests in different configurations Support for more than one network interface is planned GNOME is a desktop environment and graphical user interface
that runs on top of a computer operating system. GNOME is
part of the GNU Project and can be used with various Unix-like
operating systems, including &os;. MATE is a fork of GNOME 2. The MATE ports were updated to the
1.8 versions. Now that cairo, the vector graphics library used by GNOME, has
been updated to 1.12 the merge of GNOME 3 has started.
Currently we are doing test builds to find ports broken by the
update and pruning ports that do not build any more because of
incompatible updates. Gustau Perez started preliminary work on the next development
version of GNOME in MC, to be ready for GNOME 3.15. We will
skip 3.14 entirely. Finish GNOME 3.12 merge, and start tracking GNOME 3.15
(development series). The newest graphics stack (that is, ports behind the
WITH_NEW_XORG knob) was enabled on all architectures. The
only regression is for users of Intel GPUs and &os; 8.X or
9.0. Those releases lack the required kernel driver and
therefore xf86-video-intel will not work (the last
UMS-aware version does not work with xserver 1.12). Users can
still use xf86-video-vesa if they cannot or do not
want to update their &os; workstation. Owners of Radeon GPUs
can use xf86-video-ati-ums 6.14.6 with
xserver 1.12 if the KMS driver is not available (that
is, before &os; 9.3). The old graphics stack will be removed with the next update
to these ports. See the announcement in the Links
section. Hardware context support was added to the i915 driver in both
HEAD and 10.1-RELEASE. This will allow us to update libglapi,
libGL, dri, libEGL and libglesv2 ports to a newer version of
Mesa. The latest version is already available from our
development ports tree (see the links section). Cairo was updated to 1.12. This will allow the &os; GNOME
team to upgrade pango and Gtk+ 3. Unfortunately, the update
also revealed that xf86-video-intel 2.7.1 was in a much worse
state than previously assumed. We will attend XDC 2014 (X.Org Developer's Conference) from
October 8th through 10th in Bordeaux, France. The goal is to
reconnect with graphics stack developers, mostly working with
Linux these days. We will give a presentation on the current
state of this stack on &os;. See the XDC website in the Links
section for the program and live streaming. See the "Graphics" wiki page for up-to-date
information. ZFSguru is a multifunctional server appliance with a strong
emphasis on storage. ZFSguru began as simple web-interface
frontend to ZFS, but has since grown into a &os; derivative
with its own infrastructure. The scope of the project has
also grown with the inclusion of add-on packages that add
functionality beyond the traditional NAS functionality found
in similar product like FreeNAS and NAS4Free. ZFSguru aims to
be a true multifunctional server appliance that is extremely
easy to set up and can unite both novice and more experienced
users in a single user interface. The modular nature of the
project combats the danger of bloat, whilst still allowing
extended functionality to be easily deployed. The development work in Q3 focused heavily on the new build
infrastructure. This allows the ZFSguru project to release
new system images together with addon services at much higher
frequency and with much less manual intervention. This should
free up a lot of development time to be spent on the core of
the project: the web-interface. Furthermore, a new website and forum is being worked at,
replacing the old-fashioned website that offers only limited
functionality. The new website will be linked to the server
database, providing real-time updates about the project. In addition, a new platform for collaborated development is
in the works. A service addon has been created for the GitLab
project, which is a drop-in replacement of the popular GitHub
website. The choice was made to host our own solution and not
rely on GitHub itself. In retrospect this appears to have
been a good decision. The recent development where GitHub
removed projects after DCMA-takedowns being sent is
incompatible with the philosophy of free-flow-of-information,
of which the ZFSguru project is a strong proponent. By
hosting our own solution, we have avoided any dependency on
third party projects. The next task will be to introduce a new remote database
structure, dubbed GuruDB. This will speed up the
web-interface as well as introduce Service Bulletins which
address important notifications to our users, as well as
announce new releases. After GuruDB, the Migration Manager is one of the last
remaining features still missing in the web-interface. This
functionality provides an easy way to upgrade the current
system by performing a new clean installation, but migrate all
relevant configuration to the new installation. It also
allows users to 'backup' all system configuration in a single
file to be stored on a different machine should things go
awry. A longer version of the 2014 development progress of the
ZFSguru project and information specific to the newly-released
10.1-002 system image can be found in the Links section. The &os; Python team continued to improve the overall
experience with Python-based software on &os;. During the last quarter, the bsd.python.mk bits of
the ports infrastructure were converted to the more modern
USES format. Several options, such as support for
easy_install, were deprecated or removed to make the
infrastructure easier to maintain and less complex for
maintainers. The Python ports were refactored and simplified to improve
maintenance and to get rid of long-standing issues due to the
previously complex and error-prone build process. The Python 2 branch was updated to Python 2.7.8 and
setuptools to 5.5.1. With the availability of pkg 1.3, installing Python packages
and modules for different Python versions is now supported in
the package management infrastructure. This allows us to
remove the previously required port duplicates for Python 2
and Python 3. Retire the Python 3 specific port duplicates Convert ports to the new USES syntax More tasks can be found on the team's wiki page (see
Links). To get involved, interested people can say hello on IRC
and let us know their areas of interest! The project adds support for the AES-GCM and AES-CTR cryptography
modes to the OpenCrypto framework.
Both software and AES-NI accelerated versions are now functional and
working.
Ermal Luçi (eri@) is working on adding support for these additional
modes to IPsec. Create test suite for the most common modes. Work on initial support of the IFC6410 board, which was
stopped due to bricked bootloader, has been started again.
This board has the Qualcomm Snapdragon S4 SoC, featuring the
Krait CPU. This CPU is considered a "platform" for use in
smartphones, tablets, and smartbook devices. Krait has many
similarities with the ARM Cortex-A15 CPU and is also based on
the ARMv7 instruction set. These peripherals are working: Get the MMC driver working. May need more help from
experts. The &os; Core Team constitutes the project's "Board of
Directors", responsible for deciding the project's overall
goals and direction as well as managing specific areas of the
&os; project landscape. Notable items dealt with by core during this period: During this period, three commit bits were granted, and two
commit bits were taken in for safe keeping. I have written SSE/AVX-optimized versions of a few
libc routines for amd64. So far the list includes
memcpy, memset, and strlen. For
each routine I have written a simple regression test as well
as performed some simple microbenchmarks on various AMD and
Intel CPUs. The simplest routine is strlen which appears to be a
general win in microbenchmarks. memcpy and
memset have proven trickier as different variants can
behave quite differently on different CPUs. At present, I do not yet have a patch relative to
libc. Once I do, this will be suitable for more
testing. I would like to see some real-world benchmarks that show
measurable improvement before pushing any of this up into the
tree. Create a branch that holds a modified libc and is
suitable for testing As of the end of Q3, the ports tree holds a bit more than
24,000 ports, and the PR count is below 1,400. Despite the
summer holidays the tree saw sustained activity with more than
9,000 commits and almost 2,000 ports PRs closed! In Q3, five new developers were granted a ports commit bit.
None were taken in for safekeeping. On the management side, tabthorpe@ decided to step down from
his portmgr duties in July. No other changes were made to the
team during Q3. This quarter also saw the release of the third quarterly
branch, namely 2014Q3. On the QA side, 34 exp-runs were performed to validate
sensitive updates or cleanups. Last, the 20th anniversary of the ports tree was commemorated
during Q3 and a video was published for this event. Tremendous work was done on the PR front in Q3 and we would
be very pleased to see committers dedicate themselves to
closing as many as possible in Q4 as well. SDIO is an interface designed as an extension of the existing
SD card standard, allowing connection of different peripherals
to the host with the standard SD controller. Peripherals
currently sold in the general market include WLAN/BT modules,
cameras, fingerprint readers, and barcode scanners. SDIO is
also used to connect some peripherals in products like
Chromebooks and Wandboard. The current main focus of the project is to reimplement the
existing MMC/SD stack using the CAM framework. This will
allow utilizing the well-tested CAM locking model and debug
features. The first version of the code was uploaded on Phabricator for
review. The new stack is able to attach to the SD card and
bring it to an operational state. The only supported SD
controller driver is ti_sdhci which is used by the
BeagleBone Black. Modifying other SDHCI-compliant drivers
should not be a hard task. At this point, feedback from kernel developers is really
needed. This may be done in the form of code review. If
the chosen way of implementing the CAM-aware MMC stack is
considered correct, then adding code for interacting with SD
cards (for example, setting the optimal transfer rates) will
be the next task. Write a CAM peripheral driver that implements an interface
to the FreeBSD disk(9). It will send MMC I/O
commands using the MMC XPT layer. Extending camcontrol(8) to make it possible to
send MMC-specific commands directly to the MMC/SD card using
pass(4) will greatly assist in developing new features for
the stack. Modify the sdhci(4) driver to work with the new
stack. This is required to work on the new stack using PC
hardware, not only the BeagleBone Black. &os; packages for the Tier-1 i386 and amd64 CPU architectures
are built by a single very high-performance machine. Other
architectures lack equivalent hardware, and we began
experimenting with QEMU's user-mode emulation to cross-build
packages from an amd64 builder. We have moved from just being able to produce packages to
providing a stable repo of packages for ARMv6. ports-mgmt/poudriere-devel is still the current
method for building packages. See previous status report for
explanations and details on methods. bhyve is a hypervisor that runs on the FreeBSD/amd64
platform. At present, it runs FreeBSD (8.x or later), Linux
i386/x64, OpenBSD i386/amd64, and NetBSD/amd64 guests.
Current development is focused on enabling additional guest
operating systems, and implementing features found in other
hypervisors. A significant amount of progress has been made since the last
status report. Most importantly, all of this work has been
MFCed to the 10-STABLE branch and will be included in the 10.1
release. Support for AMD processors is being developed in the
bhyve_svm SVN project branch. The branch is almost
at feature-parity with mainline Intel VT-x support, and will
be committed into -CURRENT in the near future. New features added this quarter: Improve documentation CSM BIOS boot support for non UEFI-aware guests Add support for virtio-scsi Improve virtio-net, add offload features, support multiple
queues Implement Intel 82580 and e1000 NIC emulation Netmap support Flexible networking backend: wanproxy, vhost-net Move to a single process model, instead of
bhyveload and bhyve Support running bhyve as non-root Add filters for popular VM file formats (VMDK, VHD,
QCOW2) Implement an abstraction layer for video (no X11 or SDL in
base system) Support for VNC as a video output Suspend/resume support Live Migration Nested VT-x support (bhyve in bhyve) Support for other architectures (ARM, MIPS, PPC) The KDE on &os; team focuses on packaging and making sure the
experience of KDE and Qt on &os; is as good as possible. First of all, we are happy to announce that Alonso Schaich,
longtime contributor to our experimental area51 repositories,
has become a ports committer, mentored by KDE on &os; members
Raphael Kubo da Costa (rakuco@) and Max Brazhnikov
(makc@). During this quarter, the team has kept most of the KDE and Qt
ports up-to-date, working on the following releases: Additionally, work on updating the Qt5 ports to the 5.3
series has begun, and we intend to commit the updated ports in
our experimental area51 repository to the ports tree in
Q4. Updating out-of-date ports, see the Links Portscout entry
for a list. Committing all the updated ports we have been accumulating
in our experimental repositories into the ports tree. Until recently, all ARM CPU designs were 32-bit only. With the
introduction of the ARMv8 architecture, ARM has added a new
64-bit mode. This new mode has been named AArch64. Arm64 is
the name of the in-progress port of &os; to ARMv8 CPUs when in
AArch64 mode.
Since the last status report, &os; has started to execute
userland instructions. This includes implementing more of the
needed kernel functions to handle creation of processes.
Using clang to compile userland has found a few issues with
the version in the base system. These issues are expected to
be resolved when clang 3.5 is imported. Initial support for device drivers has been added. This
includes the start of the bus_space functions and
interrupt handling. This allowed the existing timer and
interrupt controller drivers from armv6 to be used as these
devices are similar. The FDT data is now being passed from
the loader to the kernel using the standard mechanism. The pmap implementation has been changed to be based on the
amd64 code. This fixes a number of issues with the old
implementation. Boot to multi-user mode Get dynamic libraries working Test on real hardware The Unified Extensible Firmware Interface, or UEFI, provides
boot- and run-time services for x86 and other computers. For
the x86 architecture it replaces the legacy BIOS. This
project will adapt the &os; loader and kernel boot process for
compatibility with UEFI firmware, found on contemporary
servers, desktops, and laptops. Over the last three months Ed and others refined the existing
UEFI support and merged it to the stable/10 branch for the
upcoming &os; 10.1 release. To avoid the risk of a regression, the standard &os; 10.1
install images continue to use the existing partitioning
scheme and support only legacy BIOS boot. Separate
UEFI-enabled installer images will be included with 10.1. Document manual installation, including dual-boot
configurations. Implement boot1.efi for ZFS file systems. Add support for UEFI variables stored in non-volatile
memory (NVRAM). Debug boot failures with certain UEFI firmware
implementations. Support secure boot. LLDB is the debugger project associated with Clang/LLVM. It
supports the Mac OS X, Linux, and &os; platforms, with Windows
support under development. It builds on existing components
in the larger LLVM project, for example using Clang's
expression parser and LLVM's disassembler. Work over the last three months consisted mainly of
maintenance, ensuring that the upstream &os; port continues to
build and that testsuite failures are promptly addressed. I plan to import a new LLDB snapshot after the base system
Clang is updated to 3.5. Some upstream improvements that will
be in that import include: A proof-of-concept implementation of kernel debugging support
for amd64 was completed as part of Google Summer of Code. It
is not ready to be committed, but will form the basis for
upcoming kernel debugging support. Port remote debug stub (lldb-gdbserver) from Linux to
&os;. Add support for local and core file kernel debugging. Implement, fix or test support on all non-amd64
architectures. Verify cross-debugging. Investigate and fix test suite failures. Package LLDB as a port. Enable by default in the base system for working
architectures. The vt(4) (aka Newcons) project provides
a replacement for the legacy syscons system console.
It brings a number of improvements, including better
integration with graphics modes and broader character set
support. A large number of improvements were committed to
vt(4) over the last three months.
Jean-Sébastien Pédron fixed significant
performance regressions observed with vt_vga,
particularly noticeable on virtual machines. Stefan Esser
converted and cleaned up all of the keyboard map files for use
with vt(4). The EFI framebuffer driver and the ofwfb driver now works
with the xf86-video-scfb X11 video driver, supporting
native-resolution (albeit unaccelerated) X. The fixes and improvements have all been merged and will be
available in the upcoming &os; 10.1 release. Implement the remaining features supported by
vidcontrol(1). Write manual pages for vt(4) drivers and kernel
interfaces. Support direct handling of keyboard by the kbd
device (without kbdmux(4)). CJK fonts. This is in progress. Switch to vt(4) by default. Implement compatibility mode to be able to use single-byte
charsets/key-codes in vt(4).
The project to update the Intel graphics chipset driver
(i915kms) to a recent snapshot of the Linux upstream code
continues. A patch with a large chunk of updates has been
made available to check for regressions against current
functionality, but is not yet expected to provide fully
functional new functionality. The GEM I/O ioctl code path
has been modified to more closely resemble the Linux code
structure (easing future imports).
Debian GNU/kFreeBSD is a software distribution produced by
Debian, based on the kernel of &os; (instead of Linux) and GNU
libc. Around 90% of Debian's software archive has now been
ported to it, for amd64 and i386 architectures. It was first
released with Debian "squeeze" as a development preview in
2011, featured again in the "wheezy" release, and hopes to be
part of the official Debian "jessie" release early 2015. In 2003 there were several attempts to bootstrap a minimal
Debian system upon &os; or NetBSD kernels, some also trying to
use the native BSD libc. The most successful and
longest-lived of these was a "GNU/FreeBSD" chroot bootstrapped
by Robert Millan with the GNU libc that most of Debian's core
packages were designed to work with. The "k" was later added
to the name to reflect that it takes just the kernel from
&os;, with most everything else from the Debian archive. We
do also package some &os; utilities as needed to boot it
and take advantage of certain features. &os; support within GNU libc is now mostly maintained by Petr
Salinger, who recently converted it from an older threading
implementation based on LinuxThreads to NPTL which is much
more compatible with the software we run. We have the GNU
compiler toolchain as well as Clang 3.4; Perl, Python and
Ruby; and OpenJDK 7, based the on work done in &os;'s own
ports collection. We use linprocfs for /proc because
much of Debian GNU software expects this. The Linuxulator
is not needed at all, but could make for interesting future
uses. Porting work mostly focuses now on individual packages'
build systems, on preprocessor #ifdefs that do not clearly
distinguish between kernel and libc, or fixing testsuites'
presumptions of Linux-specific behaviour. In the course of
this, we even found the odd &os; kernel bug, including
EN-14:06 / CVE-2014-3880. GNU/kFreeBSD has already seen production use, mostly on
webservers, email servers and file servers; one such machine
has 475 days' uptime receiving around 10,000 emails per day.
It has become increasingly practical for desktop/laptop uses
thanks largely to new features coming in from &os; 10.1. KMS graphics mean that 3D gaming and high-definition video
playback perform brilliantly. We have great support for Intel
graphics chipsets, but only an older nvidia Xorg driver. For
radeonkms, Robert Millan was able to add firmware-loading
support so that non-free binary blobs can be packaged
separately, outside of Debian's main archive. Proprietary
drivers are not useful to us as they would need to be rebuilt
from source to port them. vt(4) was necessary for KMS to not break VT
switching. But it has also improved the console's handling of
non-ASCII character sets and we do look forward to having
console fonts for non-Latin script. We have supported ZFS for some time, even as a root/boot
filesystem (using GRUB 2; Robert Millan added the ZFS support
which now &os; itself is able to benefit from). Enhancements
coming from OpenZFS, especially LZ4 compression, in
combination with better memory management and GEOM
improvements, mean that "jessie" should see a noticeable
performance boost. debian-installer already allows for pre-seeded, unattended
installs and there are PXE-bootable install images
available. virtio drivers are new to the "jessie" release, enabling
support for some public clouds. We are now compiling Xen domU
and PVHVM support into our standard kernel builds. We already have userland tools to configure the PF firewall.
As an experimenting, we are compiling in IPSEC support by
default for the upcoming release, and would like to see it put
to good use against present-day privacy and security
threats. We try to support uses of Debian GNU/kFreeBSD inside a jail
on a &os; host system, and hopefully vice-versa. Some of the
jail utilities are not yet packaged, but we have documentation
on the Debian Wiki on how to set up jails on "wheezy", which
are fully functional. The init system we currently use is a parallel System V-style
init, although Debian GNU/Linux will be switching away from
that to systemd. For the next release we may switch to
OpenRC, which is mostly ported already. Not having systemd or udev, means that we will be unable to
support GNOME 3.14 in the upcoming release. We have very good
support for XFCE, also have KDE, LXDE and the
recently-packaged MATE desktop environment. The Debian
software archive provides many alternative window managers for
Xorg such as IceWM, dozens of terminal emulators, and so
on. As we approach the freeze of the Debian "jessie" release,
we would love for anyone to test GNU/kFreeBSD, try to use it
for whatever would be useful to you, and let us know what
issues you run into. Ask for help on our project mailing list
or IRC channel, and let us know of any bugs you find. We
still have time to fix problems before release, and we would
be happy to improve our documentation any time. CAM Target Layer (CTL), used as base for the kernel iSCSI
server, got support for VMWare VAAI and Microsoft ODX
storage acceleration. It permits avoiding network
bottlenecks and improved storage efficiency on sets of large
operations, such as virtual machine (or large file) creation,
initialization to zeros, copy, delete, etc.. VMWare VAAI includes support for these primitives/SCSI
commands: Atomic Test and Set (ATS) — COMPARE AND
WRITE command; Extended Copy (Clone) — SPC-3 subset
of XCOPY commands; Write Same (Zero) — set of WRITE
SAME commands; Dead Space Reclamation (Delete) — UNMAP
command. Microsoft ODX includes support for these SCSI commands:
POPULATE TOKEN/WRITE USING TOKEN (SPC-4 extensions of
XCOPY), WRITE SAME and UNMAP. All XCOPY operations are currently limited to one storage host.
ODX operations are currently limited only to iSCSI disks.
Accelerated inter-host copying or copying to/from files on
Samba shares is not implemented and handled by initiators in
the legacy way. The code is committed to &os; head and stable/10 branches,
and will be present in &os; 10.1 and FreeNAS 9.2.1.8 /
9.3 releases. Full support for thin provisioning, including capacity
usage reporting and thresholds notifications. Inter-host XCOPY operations. This project aims to add support to the &os; kernel for running
in Xen Paravirtualised mode on amd64 systems.
This project has finally reached a "Proof of Concept" stage
on the branch
projects/amd64_xen_pv Testing and bug reports on various configurations is
encouraged! The author is also seeking bounties to help
complete the effort and assess potential interest. Please
send email if interested. PV kernels are still supported by most cloud providers for a
range of configurations, although they are expected to be
phased out in the future. Large page support SMP support Debug and cleanup Security vetting Performance tweaks Address Space Layout Randomization (ASLR) is a computer
security technique that aids in mitigating low-level
vulnerabilities such as buffer overflows. ASLR randomizes the
memory layout of running applications, to prevent an attacker
from knowing where a given exploitable vulnerability lies in
memory. A lot has happened in the last few months. Shawn Webb gave
presentations at both BSDCan 2014 and EuroBSDCon 2014. The
presentations were met with a lot of support and backing.
At the end of EuroBSDCon Ilya Bakulin fixed the known ARM bug.
Shawn Webb and Oliver Pinter have submitted our patch to
the Phabricator code review system. Shawn Webb added
an API for allowing a debugger to disable ASLR to
support deterministic debugging. Oliver Pinter enhanced the
performance of our ASLR implementation. A package building
exp-run was ran and came out favorably in terms of performance.
Shawn Webb bumped up the maximum number of bits allowed to be
randomized to 20 and set the default to 14. Shawn Webb and Oliver Pinter founded The HardenedBSD project to
serve as a staging area for their work on security-related
- projects for &os.
Get more people testing and reviewing our patch
Run more performance tests
Figure out why the two ports failed in the EXP-RUN. Involve the port maintainers.
Test on different architectures (we need help with this)
ezjail is a very popular jails management utility, but was only mentioned in passing in the Handbook. This new section describes basic setup and usage. An in-depth example shows how to create and configure a jail. It also serves as an example of how to run a simple caching-only BIND in a jail.