History log of /freebsd-10-stable/usr.sbin/bsdinstall/scripts/zfsboot
Revision Date Author Comments
# 321202 19-Jul-2017 emaste

MFC r302145: bsdinstall: increase EFI partition size to 200MB

A larger EFI file system size will facilitate multi-boot configurations
and the installation other EFI applications like firmware update tools.
200MB matches OS X.

Note that this changes only the partition size, not the file system that
bsdinstall places there. We need to do both, but as the partition size
is difficult to adjust later make this change for now so that at least
systems installed with FreeBSD 11.0 have a partition layout with room
to grow.

Also merge part of r320007:

- use EFI_BOOTPART_SIZE and EFI_BOOTPART_PATH macros on x86
- increase ZFS EFI partition to 200M

PR: 201898
Relnotes: Yes
Sponsored by: The FreeBSD Foundation


# 296996 17-Mar-2016 allanjude

MFC: r296988
Remove 50% ZFS conditional from bsdinstall/zfsboot

Approved by: re (marius)


# 295264 04-Feb-2016 allanjude

MFC: r295074
The zfsboot (zfs auto mode) part of bsdinstall now supports UEFI

Approved by: re (marius)
Relnotes: yes
Sponsored by: ScaleEngine Inc.


# 294479 20-Jan-2016 allanjude

MFC: r294191
Never 4k align the MBR bootpool because zfsldr can not deal with a gap

Sponsored by: ScaleEngine Inc.


# 290287 02-Nov-2015 dteske

MFC r287695: Replace `return' outside of function with exit

Pointy hat to: me


# 285769 21-Jul-2015 allanjude

MFC: r285679
Add auto-detecting workaround for Lenovo GPT boot issue
Add auto-detecting workaround for "GPT Active" boot issue
Allow user to select partitioning scheme in the ufs wizard

PR: 184910
PR: 194359
Approved by: re (gjb), marcel
Relnotes: yes
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D3144


# 285721 20-Jul-2015 allanjude

MFC: r285482
A variable was misspelled resulting in chmod executing on the installer instead of on the target chroot

PR: 191402

MFC: r285553
make /var/audit its own dataset so it is not part of the OS boot environment

PR: 199864

MFC: r285554
Set a mountpoint on the root of the pool so user-created datasets have a mountpoint to inherit

MFC: r285557
Make bsdinstall's zfsboot script align partitions to 4k/1m when the user requests it

PR: 195174

Approved by: re (gjb), brueffer
Relnotes: yes
Sponsored by: ScaleEngine Inc.


# 283861 01-Jun-2015 dteske

MFC SVN revisions 280310-280311,281160,281167,282443,283023,283288:
r280310: Whitespace cleanup(s)
r280311: Update copyright(s)
r281160: [mergeinfo only] Fix root encryption key permissions (see r281230)
r281167: [mergeinfo only] Unbreak ZFS+GELI install option (see r281230)
r282443: Add swap size sanity check (allanjude)
r283023: Skip adding swap to fstab(5) if unused (allanjude)
r283288: Fix a syntax error (allanjude)


# 281843 21-Apr-2015 dteske

MFC revisions 277693,278335,280382-280385,280923-280926,280931,
280933-280939,280974-280976,281002,281009,281081,281176-281180,
281271,281275,281616 (described in-breif below):
r277693: Font fix (des)
r278335: Revert that
r280382: Whitespace, comments, and copyright update
r280383: Prevent inadvertent bootlock condition
r280384: Increase max passowrd length from 16 to 255 chars
r280385: Add missing variable hints to loader.conf(5) defaults
r280923: Whitespace
r280924: Comments
r280925: Optimize bootmsg to use fg/bg/me from screen.4th
r280926: Whitespace and cleanup
r280931: Comments
r280933: Move beastie to logo-*.4th; brands to brand-*.4th
r280934: Add remainder of supported ANSI escape sequences
r280935: Securely overwrite (zero) user input after password checks
r280936: Use equals for ASCII double frames
r280937: Solve dreaded "dictionary full" issue
r280938: Add "GELI Passphrase:" prompt to boot loader
r280939: Revert that (premature commit)
r280974: Use fg/b/me from screen.4th instead of literals
r280975: Eliminate literal escape sequences from *.4th
r280976: Use ^[[m mode-ending versus ^[[37m
r281002: Install newly added brand-*.4th and logo-*.4th files (jkim)
r281009: Revert .PATH changes to fix mips build (jkim)
r281081: Make sure forth manpages are only installed once (bapt)
r281176: Back to previous mode-endings based on feedback
r281177: Back to previous mode-endings based on feedback
r281178: Back to previous mode-endings based on feedback
r281179: Back to previous mode-endings based on feedback
r281180: Eliminate literal escape sequences from *.rc
r281271: Fix a bootlock condition if loader_version is set
NB: Commit message of r281271 has a typo, s/_logo/_version/
r281275: Re-do proper mode-endings
r281616: Add "GELI Passphrase:" prompt to boot loader

Relnotes: Added "GELI Passphrase:" prompt to boot loader


# 281230 07-Apr-2015 delphij

Improve patch for SA-15:04.igmp to solve a potential buffer overflow.

Fix multiple vulnerabilities of ntp. [SA-15:07]

Fix bsdinstall(8) insecure default GELI keyfile permissions. [SA-15:08]

Fix Denial of Service with IPv6 Router Advertisements. [SA-15:09]


# 278027 01-Feb-2015 smh

MFC r276027:
Switch zfsboot installer force 4K option to use vfs.zfs.min_auto_ashift=12

MFC r277333:
Fix bsdinstall when working with geli boot disks

Sponsored by: Multiplay


# 273831 29-Oct-2014 nwhitehorn

MFC r271539,273003,273005:

Add ZFS support to the bsdinstall partition editor and sade

Submitted by: Kurt Lidl (original version)


# 272424 02-Oct-2014 allanjude

MFC r272274:
Change the /var dataset in the default ZFS layout to have the
ZFS property canmount=off, making /var/db/pkg part of the / dataset, so
installed package files are consistent with the package database when
using ZFS boot environments (beadm).

PR: 193971
Reviewed by: Shawn Webb, bcr
Approved by: re (gjb), jmg
Relnotes: yes
Sponsored by: ScaleEngine Inc.


# 271790 18-Sep-2014 allanjude

MFC r271563:
Make the root-on-zfs part of the installer warn a user who booted the
installer via UEFI that we do not support booting ZFS via UEFI yet

PR: 193595
Approved by: re (gjb), nwhitehorn
Sponsored by: ScaleEngine Inc.


# 267061 04-Jun-2014 roberto

Fix syntax error thrown at the point of creating the root pool, caused by
an embedded newline appearing within the options string surrounded by
double-quotes. Rework the logic that goes into setting dataset options on
the root pool dataset while we're here -- added two new variables (which
can be altered via scripting) ZFSBOOT_POOL_CREATE_OPTIONS and also
ZFSBOOT_BOOT_POOL_CREATE_OPTIONS for setting pool/dataset attributes at
the time of pool creation. The former is for setting options on the root
pool (zroot) and the latter is for setting options on the optional separate
boot pool (bootpool) implicitly enabled when using either GELI or MBR. The
default value for the root pool variable (ZFSBOOT_POOL_CREATE_OPTIONS) is
"-O compress=lz4 -O atime=off" and the default value for separate boot pool
variable (ZFSBOOT_BOOT_POOL_CREATE_OPTIONS) is NULL (no additional options
for the separate boot pool dataset).

Reviewed by: allanjude


# 267056 04-Jun-2014 roberto

MFC r266107,r266108,r266109:

Here is a patch for the bsdinstall root-on-zfs stuff that adds optional
encryption for swap, and optional gmirror for swap (which can be combined)

Updates to the datasets created by zfsboot.

Set compress=lz4 for the entire pool, removing it from the individual
datasets

Remove exec=no from /usr/src, breaks the test suite.

Fix the "disks" variable reuse.

It starts off being used to track the grammar for the number of disks
(singular vs plural) and then it is reused as the list of available disks.

Replace the variable with disks_grammar and move 'disk' and 'disks' to
msg_ vars so they can be translated in the future.

Submitted by: Allan Jude <freebsd@allanjude.com>
Reviewed by: roberto
Sponsored by: ScaleEngine Inc.


# 266294 17-May-2014 dteske

MFC r264841: Update zfsboot to coincide with MFC of r264840
adding GEOM support.


# 264632 17-Apr-2014 dteske

MFC r264488:

When merging docsinstall and zfsboot updates to stable/9 it was discovered
that the slightly older dialog(1) requires --separate-output when using the
--checklist widget to force response to produce unquoted values (whereas in
stable/10 --checklist widget without --separate-output will only quote the
checklist labels in the response if the label is multi-word (contains any
whitespace).

Since these enhancements (see revisions 263956 and 264437) were developed
originally on 10, the --separate-output option was omitted. When merged to
stable/9, we (Allan Jude) and I found during testing that the "always-
quoting" of the response was causing things like struct interpolation to
fail (`f_struct device_$dev' would produce `f_struct device_\"da0\"' for
example -- literal quotes inherited from dialog(1) --checklist response).

To see the behavior, execute the following on stable/9 versus stable/10:

dialog --checklist disks: 0 0 0 da0 "" off da1 "" off

Check both items and hit enter. On stable/10, the response is:

da0 da1

On stable/9 the response is:

"da0" "da1"

If you use the --separate-output option, the response is the same for both:

da0
da1

So applying --separate-output on every platform until either one of two
things occurs 1) dialog(1,3) gets synchronized between stable/9, higher or
2) we drop support for stable/9.

Reviewed by: Allan Jude


# 259621 19-Dec-2013 dteske

MFC r259276,259468-259470,259472,259474,259476-259478,259480-259481,259570,
259572, and 259597-259598...

r259276: Fix bug in `services' script in adding dumpdev comment to rc.conf
r259468: Ignore spurious escape generated by VMware's Ctrl-Cmd combination
r259469: Mask errors in `config' script from newaliases(1) about non-FQHN
r259470: Set atime=on for /var/mail zfsboot dataset to support mail server
r259472: Accept NULL input for zfsboot SWAP to indicate SWAP of zero bytes
r259474: Multiple changes, including bug-fixes and debugging improvements
r259476: Change default ZFS disk layout, making it easier to resize
r259477: fletcher4 is now the default (zfsboot related)
r259478: De-uglify the geli(8)-setup infobox (zfsboot related)
r259480: Fix ghosted zroot issue by always performing labelclear on swap
r259481: Auto-enable 4k sector alignmet when geli(8) is enabled (zfsboot)
r259570: Fix numerical comparison error (zfsboot)
r259572: Mask spurious rm error in bsdinstall_log from `auto' script
r259597: Fix zfsboot regression when installing to 3+ disks
r259598: Set cachefile property of bootpool so it imports to new system


# 259396 14-Dec-2013 gjb

MFC r259113, r259115, r259144, r259148:

r259113 (dteske):
Fix failed attempt to send pkg(8) stderr to /dev/null

r259115 (dteske):
Prevent truncating /tmp/bsdinstall_log each time we
exec a module.

r259144 (dteske):
Fix a regression after successfully installing to encrypted
ZFS root, the passphrase is not accepted and a message about
"incorrect key" is displayed.

r259148 (dteske):
Fix a regression resulting in mountroot prompt after attempting
to install to encrypted ZFS root (caused by a typo in a
variable name -- ZFSBOOT_BOOT_FSNAME -> ZFSBOOT_BOOTFS_NAME).

Sponsored by: The FreeBSD Foundation


# 259055 06-Dec-2013 dteske

MFC r258927: Fix a regression introduced by SVN r257842 that prevents
Encryption from being enabled.

Approved by: re (gjb)


# 258421 21-Nov-2013 dteske

MFC Revisions:
256549: man-page updates
256551: .Dd bump in manpage
256553: bootenv -> ROOT fix
257842: monster list of fixes
257843: minor touchup
257844: copy install log
257845: fixup to last
257872: mdoc fixup
257939: debug check
258021: MBR bootcode fixup

Reviewed by: many
Discussed on: -current
Approved by: re (hrs)


# 257507 01-Nov-2013 gjb

MFC r256540, r256544:

r256540 (dteske):
Add loader.conf(5) entries to import bootpool after boot when
using full-disk encryption and ZFS.

r256544 (dteske):
Fix loader.conf(5) entries from r256540.

Approved by: re (hrs)
Sponsored by: The FreeBSD Foundation


# 256361 11-Oct-2013 dteske

MFC revisions 256321-256323,256331,256333,256335,256343:
Bring in a new zfsboot auto script for performing automatic setup of a boot
pool (optionally encrypted) with many other options, validations, features.
Originally submitted by Allan Jude; modified in collaboration.

MFC revisions 256325,256330,256345:
Rewrite the keymap selection menu to display keymaps and provide a test
mechanism. Test mechanism originally submitted by Warren Block; modified.

MFC r256347:
Prominently display "Wireless" for each wireless network interface. Part
of PR bin/161547; submitted by Warren Block; slightly modified.

MFC r256348:
Remove the dumpdev configuration dialog, merge it into the regular
services configuration and enable it by default. Originally submitted by
Allan Jude; slightly modified.

PR: bin/161547
Submitted by: Allan Jude, Warren Block <wblock@wonkity.com>
In collaboration with: Allan Jude <freebsd@allanjude.com>
Approved by: re (glebius)


# 285769 21-Jul-2015 allanjude

MFC: r285679
Add auto-detecting workaround for Lenovo GPT boot issue
Add auto-detecting workaround for "GPT Active" boot issue
Allow user to select partitioning scheme in the ufs wizard

PR: 184910
PR: 194359
Approved by: re (gjb), marcel
Relnotes: yes
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D3144


# 285721 20-Jul-2015 allanjude

MFC: r285482
A variable was misspelled resulting in chmod executing on the installer instead of on the target chroot

PR: 191402

MFC: r285553
make /var/audit its own dataset so it is not part of the OS boot environment

PR: 199864

MFC: r285554
Set a mountpoint on the root of the pool so user-created datasets have a mountpoint to inherit

MFC: r285557
Make bsdinstall's zfsboot script align partitions to 4k/1m when the user requests it

PR: 195174

Approved by: re (gjb), brueffer
Relnotes: yes
Sponsored by: ScaleEngine Inc.


# 283861 01-Jun-2015 dteske

MFC SVN revisions 280310-280311,281160,281167,282443,283023,283288:
r280310: Whitespace cleanup(s)
r280311: Update copyright(s)
r281160: [mergeinfo only] Fix root encryption key permissions (see r281230)
r281167: [mergeinfo only] Unbreak ZFS+GELI install option (see r281230)
r282443: Add swap size sanity check (allanjude)
r283023: Skip adding swap to fstab(5) if unused (allanjude)
r283288: Fix a syntax error (allanjude)


# 281843 21-Apr-2015 dteske

MFC revisions 277693,278335,280382-280385,280923-280926,280931,
280933-280939,280974-280976,281002,281009,281081,281176-281180,
281271,281275,281616 (described in-breif below):
r277693: Font fix (des)
r278335: Revert that
r280382: Whitespace, comments, and copyright update
r280383: Prevent inadvertent bootlock condition
r280384: Increase max passowrd length from 16 to 255 chars
r280385: Add missing variable hints to loader.conf(5) defaults
r280923: Whitespace
r280924: Comments
r280925: Optimize bootmsg to use fg/bg/me from screen.4th
r280926: Whitespace and cleanup
r280931: Comments
r280933: Move beastie to logo-*.4th; brands to brand-*.4th
r280934: Add remainder of supported ANSI escape sequences
r280935: Securely overwrite (zero) user input after password checks
r280936: Use equals for ASCII double frames
r280937: Solve dreaded "dictionary full" issue
r280938: Add "GELI Passphrase:" prompt to boot loader
r280939: Revert that (premature commit)
r280974: Use fg/b/me from screen.4th instead of literals
r280975: Eliminate literal escape sequences from *.4th
r280976: Use ^[[m mode-ending versus ^[[37m
r281002: Install newly added brand-*.4th and logo-*.4th files (jkim)
r281009: Revert .PATH changes to fix mips build (jkim)
r281081: Make sure forth manpages are only installed once (bapt)
r281176: Back to previous mode-endings based on feedback
r281177: Back to previous mode-endings based on feedback
r281178: Back to previous mode-endings based on feedback
r281179: Back to previous mode-endings based on feedback
r281180: Eliminate literal escape sequences from *.rc
r281271: Fix a bootlock condition if loader_version is set
NB: Commit message of r281271 has a typo, s/_logo/_version/
r281275: Re-do proper mode-endings
r281616: Add "GELI Passphrase:" prompt to boot loader

Relnotes: Added "GELI Passphrase:" prompt to boot loader


# 281230 07-Apr-2015 delphij

Improve patch for SA-15:04.igmp to solve a potential buffer overflow.

Fix multiple vulnerabilities of ntp. [SA-15:07]

Fix bsdinstall(8) insecure default GELI keyfile permissions. [SA-15:08]

Fix Denial of Service with IPv6 Router Advertisements. [SA-15:09]


# 278027 01-Feb-2015 smh

MFC r276027:
Switch zfsboot installer force 4K option to use vfs.zfs.min_auto_ashift=12

MFC r277333:
Fix bsdinstall when working with geli boot disks

Sponsored by: Multiplay


# 273831 29-Oct-2014 nwhitehorn

MFC r271539,273003,273005:

Add ZFS support to the bsdinstall partition editor and sade

Submitted by: Kurt Lidl (original version)


# 272424 02-Oct-2014 allanjude

MFC r272274:
Change the /var dataset in the default ZFS layout to have the
ZFS property canmount=off, making /var/db/pkg part of the / dataset, so
installed package files are consistent with the package database when
using ZFS boot environments (beadm).

PR: 193971
Reviewed by: Shawn Webb, bcr
Approved by: re (gjb), jmg
Relnotes: yes
Sponsored by: ScaleEngine Inc.


# 271790 18-Sep-2014 allanjude

MFC r271563:
Make the root-on-zfs part of the installer warn a user who booted the
installer via UEFI that we do not support booting ZFS via UEFI yet

PR: 193595
Approved by: re (gjb), nwhitehorn
Sponsored by: ScaleEngine Inc.


# 267061 04-Jun-2014 roberto

Fix syntax error thrown at the point of creating the root pool, caused by
an embedded newline appearing within the options string surrounded by
double-quotes. Rework the logic that goes into setting dataset options on
the root pool dataset while we're here -- added two new variables (which
can be altered via scripting) ZFSBOOT_POOL_CREATE_OPTIONS and also
ZFSBOOT_BOOT_POOL_CREATE_OPTIONS for setting pool/dataset attributes at
the time of pool creation. The former is for setting options on the root
pool (zroot) and the latter is for setting options on the optional separate
boot pool (bootpool) implicitly enabled when using either GELI or MBR. The
default value for the root pool variable (ZFSBOOT_POOL_CREATE_OPTIONS) is
"-O compress=lz4 -O atime=off" and the default value for separate boot pool
variable (ZFSBOOT_BOOT_POOL_CREATE_OPTIONS) is NULL (no additional options
for the separate boot pool dataset).

Reviewed by: allanjude


# 267056 04-Jun-2014 roberto

MFC r266107,r266108,r266109:

Here is a patch for the bsdinstall root-on-zfs stuff that adds optional
encryption for swap, and optional gmirror for swap (which can be combined)

Updates to the datasets created by zfsboot.

Set compress=lz4 for the entire pool, removing it from the individual
datasets

Remove exec=no from /usr/src, breaks the test suite.

Fix the "disks" variable reuse.

It starts off being used to track the grammar for the number of disks
(singular vs plural) and then it is reused as the list of available disks.

Replace the variable with disks_grammar and move 'disk' and 'disks' to
msg_ vars so they can be translated in the future.

Submitted by: Allan Jude <freebsd@allanjude.com>
Reviewed by: roberto
Sponsored by: ScaleEngine Inc.


# 266294 17-May-2014 dteske

MFC r264841: Update zfsboot to coincide with MFC of r264840
adding GEOM support.


# 264632 17-Apr-2014 dteske

MFC r264488:

When merging docsinstall and zfsboot updates to stable/9 it was discovered
that the slightly older dialog(1) requires --separate-output when using the
--checklist widget to force response to produce unquoted values (whereas in
stable/10 --checklist widget without --separate-output will only quote the
checklist labels in the response if the label is multi-word (contains any
whitespace).

Since these enhancements (see revisions 263956 and 264437) were developed
originally on 10, the --separate-output option was omitted. When merged to
stable/9, we (Allan Jude) and I found during testing that the "always-
quoting" of the response was causing things like struct interpolation to
fail (`f_struct device_$dev' would produce `f_struct device_\"da0\"' for
example -- literal quotes inherited from dialog(1) --checklist response).

To see the behavior, execute the following on stable/9 versus stable/10:

dialog --checklist disks: 0 0 0 da0 "" off da1 "" off

Check both items and hit enter. On stable/10, the response is:

da0 da1

On stable/9 the response is:

"da0" "da1"

If you use the --separate-output option, the response is the same for both:

da0
da1

So applying --separate-output on every platform until either one of two
things occurs 1) dialog(1,3) gets synchronized between stable/9, higher or
2) we drop support for stable/9.

Reviewed by: Allan Jude


# 259621 19-Dec-2013 dteske

MFC r259276,259468-259470,259472,259474,259476-259478,259480-259481,259570,
259572, and 259597-259598...

r259276: Fix bug in `services' script in adding dumpdev comment to rc.conf
r259468: Ignore spurious escape generated by VMware's Ctrl-Cmd combination
r259469: Mask errors in `config' script from newaliases(1) about non-FQHN
r259470: Set atime=on for /var/mail zfsboot dataset to support mail server
r259472: Accept NULL input for zfsboot SWAP to indicate SWAP of zero bytes
r259474: Multiple changes, including bug-fixes and debugging improvements
r259476: Change default ZFS disk layout, making it easier to resize
r259477: fletcher4 is now the default (zfsboot related)
r259478: De-uglify the geli(8)-setup infobox (zfsboot related)
r259480: Fix ghosted zroot issue by always performing labelclear on swap
r259481: Auto-enable 4k sector alignmet when geli(8) is enabled (zfsboot)
r259570: Fix numerical comparison error (zfsboot)
r259572: Mask spurious rm error in bsdinstall_log from `auto' script
r259597: Fix zfsboot regression when installing to 3+ disks
r259598: Set cachefile property of bootpool so it imports to new system


# 259396 14-Dec-2013 gjb

MFC r259113, r259115, r259144, r259148:

r259113 (dteske):
Fix failed attempt to send pkg(8) stderr to /dev/null

r259115 (dteske):
Prevent truncating /tmp/bsdinstall_log each time we
exec a module.

r259144 (dteske):
Fix a regression after successfully installing to encrypted
ZFS root, the passphrase is not accepted and a message about
"incorrect key" is displayed.

r259148 (dteske):
Fix a regression resulting in mountroot prompt after attempting
to install to encrypted ZFS root (caused by a typo in a
variable name -- ZFSBOOT_BOOT_FSNAME -> ZFSBOOT_BOOTFS_NAME).

Sponsored by: The FreeBSD Foundation


# 259055 06-Dec-2013 dteske

MFC r258927: Fix a regression introduced by SVN r257842 that prevents
Encryption from being enabled.

Approved by: re (gjb)


# 258421 21-Nov-2013 dteske

MFC Revisions:
256549: man-page updates
256551: .Dd bump in manpage
256553: bootenv -> ROOT fix
257842: monster list of fixes
257843: minor touchup
257844: copy install log
257845: fixup to last
257872: mdoc fixup
257939: debug check
258021: MBR bootcode fixup

Reviewed by: many
Discussed on: -current
Approved by: re (hrs)


# 257507 01-Nov-2013 gjb

MFC r256540, r256544:

r256540 (dteske):
Add loader.conf(5) entries to import bootpool after boot when
using full-disk encryption and ZFS.

r256544 (dteske):
Fix loader.conf(5) entries from r256540.

Approved by: re (hrs)
Sponsored by: The FreeBSD Foundation


# 256361 11-Oct-2013 dteske

MFC revisions 256321-256323,256331,256333,256335,256343:
Bring in a new zfsboot auto script for performing automatic setup of a boot
pool (optionally encrypted) with many other options, validations, features.
Originally submitted by Allan Jude; modified in collaboration.

MFC revisions 256325,256330,256345:
Rewrite the keymap selection menu to display keymaps and provide a test
mechanism. Test mechanism originally submitted by Warren Block; modified.

MFC r256347:
Prominently display "Wireless" for each wireless network interface. Part
of PR bin/161547; submitted by Warren Block; slightly modified.

MFC r256348:
Remove the dumpdev configuration dialog, merge it into the regular
services configuration and enable it by default. Originally submitted by
Allan Jude; slightly modified.

PR: bin/161547
Submitted by: Allan Jude, Warren Block <wblock@wonkity.com>
In collaboration with: Allan Jude <freebsd@allanjude.com>
Approved by: re (glebius)