Valuable News – 2021/04/19

The Valuable News weekly series is dedicated to provide summary about news, articles and other interesting stuff mostly but not always related to the UNIX or BSD systems. Whenever I stumble upon something worth mentioning on the Internet I just put it here.

Today the amount information that we get using various information streams is at massive overload. Thus one needs to focus only on what is important without the need to grep(1) the Internet everyday. Hence the idea of providing such information ‘bulk’ as I already do that grep(1).

UNIX

FreeBSD 13.0-RELEASE Now Available.
https://www.freebsd.org/releases/13.0R/announce/
https://www.freebsd.org/releases/13.0R/relnotes/

Enter The Matrix with FreeBSD.
https://dev.to/darkain/enter-the-matrix-with-freebsd-4dbj

FreeBSD smartmontools Quick Setup.
https://www.youtube.com/watch?v=vRI4-WcUJis

FreeBSD 13 Released – Here is How to Upgrade FreeBSD 12 to 13.
https://www.cyberciti.biz/open-source/freebsd-13-released-how-to-update-upgrade-freebsd-12-to-13/

Home Network Monitoring Using Prometheus.
https://linux-bsd.github.io/post/monitoring/

TrueNAS 12.0-U3 Reaches Prime Time.
https://www.ixsystems.com/blog/truenas-12-0-reaches-prime-time/
https://www.truenas.com/docs/releasenotes/core/12.0u3/

FreeBSD iostat – Understanding Storage Subsystem and Disk I/O.
https://klarasystems.com/articles/freebsd-iostat-a-quick-glance/

FreeBSD 13.0 Release Highlights.
https://freebsdfoundation.org/blog/freebsd-release-13-0-highlights/

Docker Hub Repository with Images of FreeBSD Releases.
https://hub.docker.com/r/kwiat/freebsd/tags

FreeBSD Magnet Links.
https://people.freebsd.org/~jmg/FreeBSD-13.0-R-magnet.txt

FreeBSD 13.0 on Raspberry Pi 400 – Quick Look.
https://www.youtube.com/watch?v=m6kyOHsvrsg

My Dog Garage Runs OpenBSD.
https://undeadly.org/cgi?action=article;sid=20210415055717

Lightweight Web Browers on FreeBSD – Tutorial.
https://www.reddit.com/r/freebsd/comments/mqsact/need_lightweight_web_browers_heres_the_tutorial/

FreeBSD 13 Has Been Released – Kudos to All Involved!
https://www.unixsheikh.com/articles/freebsd-13-has-been-released-kudos-to-all-involved.html

FreeBSD 13.0 Brings Better Performance with Clang/LLVM 11 and Obsolete GNU Bits Removed.
https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-13.0-RELEASE

FreeBSD Gives ARM64 Green Light for Production.
https://www.theregister.com/2021/04/12/freebsd_promotes_arm64_to_be/

FreeBSD 13 Released with OpenZFS Support and Performance Boost.
https://news.itsfoss.com/freebsd-13-release/

OmniOS Community Edition r151030cx/r151034ax/r151036x Available.
https://omnios.org/article/release-r36x-r34ax-r30cx

ZFS dRAID Finally – Sneak Peak into Latest and Long Awaited Feature of OpenZFS.
https://klarasystems.com/articles/openzfs-draid-finally/

BSD Now 398 – Coordinated Mars Time.
https://www.bsdnow.tv/398

Next Level – FreeBSD on arm64 in Cloud.
https://klarasystems.com/articles/the-next-level-freebsd-on-arm64-in-the-cloud/

Configure DNS over TLS (DoT) Using Unbound DNS in OPNsense.
https://homenetworkguy.com/how-to/configure-dns-over-tls-unbound-opnsense/

FTP is 50 Years Old. Older then TCP/IP.
https://www.filestash.app/2021/04/16/ftp-is-50-years-old/

Learning Notes on FreeBSD Jails. [2020]
https://genneko.github.io/playing-with-bsd/system/learning-notes-on-jails/

From Linux to BSD.
https://www.youtube.com/watch?v=HfQLsBPTwbU

Install FreeBSD 13.0 Plus XFCE Desktop and Basic Applications.
https://www.youtube.com/watch?v=Ch_ZN6BlChA

FreeBSD 13.0 BIOS Minimal Installation.
https://www.youtube.com/watch?v=1VG4Vr6Q-sg

FreeBSD 13.0 UEFI Minimal Installation.
https://www.youtube.com/watch?v=NfGoQJ8XMWw

Install Urxvt on FreeBSD.
https://danschmid.de/en/blog/install-urxvt-on-freebsd

Use dynamic-colors Tool for Changing Terminal Colors on the Fly.
https://github.com/sos4nt/dynamic-colors

In Other BSDs for 2021/04/17.
https://www.dragonflydigest.com/2021/04/17/25634.html

GhostBSD Review.
https://www.youtube.com/watch?v=hKEBzBLmBOk

FreeBSD Upgrade Bootloader.
https://meka.rs/blog/2021/04/16/freebsd-upgrade-bootloader/

Light X11 herbe Notifications w/o D-Bus.
https://github.com/dudik/herbe

The mkcert is Simple Tool for Making Locally Trusted Development Certificates.
https://github.com/FiloSottile/mkcert

Easy Text Transmission from Computer to Smartphone.
https://dataswamp.org/~solene/2021-03-25-computer-to-phone-text.html

Additional Extensions to FreeBSD Ports Tree.
https://jmos.net/software/freebsd.rvt

FreeBSD 13.0 Released.
https://dev.to/darkain/freebsd-13-0-released-2p0c

New zrepl 0.4 Published with Parallel Replication and More.
https://github.com/zrepl/zrepl/releases/tag/v0.4.0

Tale of Two BSDs – Upgrading AND Installing FreeBSD 13.
https://www.youtube.com/watch?v=tYENDHam2lg

FreeBSD Desktop – Part 23 – Configuration – Herbe Notifications.
https://vermaden.wordpress.com/2021/04/18/freebsd-desktop-part-23-configuration-herbe-notifications/

Hardware

AMD Ryzen 5000G APUs – OEM Only for Now.
https://www.anandtech.com/show/16616/amd-ryzen-5000g-apus-oem-only-for-now-full-release-later-this-year

AMD Ryzen 5000G/5000GE APUs Launched.
https://www.servethehome.com/amd-ryzen-5000g-and-5000ge-apus-launched-pro-not-yet/

Allwinner D1 RISC-V SBC and Processor.
https://www.cnx-software.com/2021/04/13/allwinner-d1-linux-risc-v-sbc-processor/

SiFive Tapes Out First 5nm TSMC RISC-V Chip With 7.2 Gbps HBM3.
https://www.tomshardware.com/news/openfive-tapes-out-5nm-risc-v-soc

Backblaze Hard Drive Stats for 2020.
https://www.backblaze.com/blog/backblaze-hard-drive-stats-for-2020/

ASRock Rack ROMED6U-2L2T Review AMD EPYC in mATX.
https://www.servethehome.com/asrock-rack-romed6u-2l2t-review-amd-epyc-in-matx/

China Loongson Technology Develops Own CPU ISA (Instruction Set Architecture).
https://www.tomshardware.com/news/loongson-technology-develops-its-own-cpu-instruction-set-architecture

World Tiniest NVMe RAID Array with Raspberry Pi Compute Module 4.
https://www.jeffgeerling.com/blog/2021/building-worlds-tiniest-nvme-raid-array

Samsung 980 1TB w/o DRAM NVMe SSD Review.
https://www.servethehome.com/samsung-980-1tb-dram-less-nvme-ssd-review/

Lenovo ThinkCentre M90q Tiny Review – 10 Cores in 1L PC.
https://www.servethehome.com/lenovo-thinkcentre-m90q-tiny-review-10-cores-in-a-1l-pc/

PiDP-11: Recreating PDP-11/70 with Raspberry Pi.
https://retroviator.com/2020/03/01/pidp-11/

RARE Commercial Commodore AMIGA A500 Computer.
https://www.ebay.com/itm/RARE-Commercial-Commodore-Amiga-500-A500-Computer-/154414855525

Biostar B550T-Silver Mini-ITX Motherboard for AMD Ryzen 5000 Family.
https://www.anandtech.com/show/16622/biostar-announces-b550t-silver-mini-itx-motherboard-for-ryzen-5000

Other

Vivaldi Will Not Use Google FLoC.
https://vivaldi.com/blog/no-google-vivaldi-users-will-not-get-floced/

Google Testing Its Controversial New Ad Targeting Tech in Millions of Browsers.
https://www.eff.org/deeplinks/2021/03/google-testing-its-controversial-new-ad-targeting-tech-millions-browsers-heres

Use DuckDuckGo Extension to Block Google FLoC Tracking Method.
https://spreadprivacy.com/block-floc-with-duckduckgo/

Opting Your Website Out of Google FLoC Network.
https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network

FLoC Away from Chrome.
https://www.floc-away-from-chrome.com/

Firefox Disables FTP Support.
https://blog.mozilla.org/addons/2021/04/15/built-in-ftp-implementation-to-be-removed-in-firefox-90/

EOF

FreeBSD Desktop – Part 23 – Configuration – Herbe Notifications

I do not use notifications. Dunno really why – seems I just did not needed them. The idea of Do Not Disturb Mode on the desktop/laptop is very strange to me as I ALWAYS work in the Do Not Disturb Mode since I do not use any notifications. Today I came across very small and compact solution for notifications on X11 desktop – herbe – as its author describes it – its daemon-less notifications without D-Bus. Minimal and lightweight.

I was curious if it works on FreeBSD and apparently it is πŸ™‚

Today I will show you how to build, configure and use herbe as part of FreeBSD Desktop series.

You may want to check other articles in the FreeBSD Desktop series on the FreeBSD Desktop – Global Page where you will find links to all episodes of the series along with table of contents for each episode’s contents.

Fetch

We will use the compact git-lite package from FreeBSD which has less dependencies then the default git package. Then we will clone the herbe repository.

# pkg install git-lite
% git clone https://github.com/dudik/herbe
Cloning into 'herbe'...
remote: Enumerating objects: 228, done.
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 228 (delta 21), reused 11 (delta 4), pack-reused 186
Receiving objects: 100% (228/228), 152.95 KiB | 272.00 KiB/s, done.
Resolving deltas: 100% (118/118), done.
$ cd herbe
% ls -l
total 23K
-rw-r--r-- 1 vermaden vermaden  650 2021-04-18 19:18 config.def.h
-rw-r--r-- 1 vermaden vermaden 5268 2021-04-18 19:18 herbe.c
-rw-r--r-- 1 vermaden vermaden 1070 2021-04-18 19:18 LICENSE
-rw-r--r-- 1 vermaden vermaden  425 2021-04-18 19:18 Makefile
-rw-r--r-- 1 vermaden vermaden 5578 2021-04-18 19:18 README.md

Patch

We will need a tiny one line patch to make it build on FreeBSD.

This FreeBSD patch for Makefile file is available here:
https://github.com/dudik/herbe/pull/16

… or diff(1) directly here:
https://patch-diff.githubusercontent.com/raw/dudik/herbe/pull/16.diff

We will now apply that patch.

% fetch https://patch-diff.githubusercontent.com/raw/dudik/herbe/pull/16.diff
% patch < 16.diff 
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/Makefile b/Makefile
|index 3225e36..69c8efc 100644
|--- a/Makefile
|+++ b/Makefile
--------------------------
Patching file Makefile using Plan A...
Hunk #1 succeeded at 1.
done

The herbe is now buildable on FreeBSD.

There are also other available patches – herbe patches – available here.

From all of them I find Vertical Stacking patch the most interesting. We will also apply it.

% fetch https://patch-diff.githubusercontent.com/raw/dudik/herbe/pull/19.diff
% patch < 19.diff 
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/herbe.c b/herbe.c
|index 51d3990..8bfdbc1 100644
|--- a/herbe.c
|+++ b/herbe.c
--------------------------
Patching file herbe.c using Plan A...
Hunk #1 succeeded at 7.
Hunk #2 succeeded at 80.
Hunk #3 succeeded at 162.
Hunk #4 succeeded at 188.
Hunk #5 succeeded at 218.
Hunk #6 succeeded at 230.
done


Config

You can additionally patch herbe so it will be configurable by using ~/.Xresources or ~/.Xdefaults files. IMHO its so small and compiles in second that its not needed but if you would like to also apply it then its available here – Xresources – in the patches section.

I have chosen to configure it using the config.def.h file. Here are my values.

% cat config.def.h
static const char *background_color    = "#222222";
static const char *border_color        = "#666666";
static const char *font_color          = "#eeeeee";
static const char *font_pattern        = "Ubuntu Mono:size=10";
static const unsigned line_spacing     = 5;
static const unsigned int padding      = 15;

static const unsigned int width       = 550;
static const unsigned int border_size = 4;
static const unsigned int pos_x       = 15;
static const unsigned int pos_y       = 45;

enum corners { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT };
enum corners corner = TOP_RIGHT;

static const unsigned int duration = 5; /* in seconds */

#define DISMISS_BUTTON Button1
#define ACTION_BUTTON Button3

Build

The build process could not be simpler. Just type make and you are done.

% make 
cp config.def.h config.h
cc herbe.c -Wall -Wextra -pedantic -I/usr/local/include -L/usr/local/lib -lX11 -lXft -I/usr/local/include/freetype2 -pthread -o herbe

% file -s herbe | tr ',' '\n'
herbe: ELF 64-bit LSB executable
 x86-64
 version 1 (FreeBSD)
 dynamically linked
 interpreter /libexec/ld-elf.so.1
 for FreeBSD 13.0 (1300139)
 FreeBSD-style
 with debug_info
 not stripped

% ./herbe 
Usage: ./herbe body

Test

I did not yet implemented herbe anywhere on my scripts so I will use this simple ‘mockup’ to show you what to expect.

% \
  herbe "Wifi connection 'wireless' is not connected." \
& herbe "Removable storage /dev/da0 automounted at /media/da0 with exFAT filesystem." \
&

Here is how it looks in real life X11 session.

As you can see it works very well and its ultra fast. Its also very light on system resources.

% ps aux | grep -e RSS -e herbe -e sshd
USER       PID  %CPU %MEM      VSZ     RSS TT  STAT STARTED        TIME COMMAND
vermaden 41909   0.0  0.1    19568    9128  3  S+   20:22       0:00.02 herbe Message.
root        38   0.0  0.1    20948    8340  -  Is   Thu23       0:00.00 /usr/sbin/sshd

As you can see its RAM usage is very little – as little as sshd daemon.

EOF

Valuable News – 2021/04/11

The Valuable News weekly series is dedicated to provide summary about news, articles and other interesting stuff mostly but not always related to the UNIX or BSD systems. Whenever I stumble upon something worth mentioning on the Internet I just put it here.

Today the amount information that we get using various information streams is at massive overload. Thus one needs to focus only on what is important without the need to grep(1) the Internet everyday. Hence the idea of providing such information ‘bulk’ as I already do that grep(1).

UNIX

Running Tribblix on Digital Ocean.
https://ptribble.blogspot.com/2021/04/running-tribblix-on-digital-ocean.html

Multi Master Replication Solutions for PostgreSQL.
https://www.percona.com/blog/2020/06/09/multi-master-replication-solutions-for-postgresql/

Customizing FreeBSD Ports and Packages.
https://klarasystems.com/articles/customizing-freebsd-ports-and-packages/

FreeBSD DEFAULT_VERSIONS is Mechanism to Override Software Versions You Want to Use.
https://wiki.freebsd.org/Ports/DEFAULT_VERSIONS

Support for CPU Frequency and Temperature on FreeBSD Added to htop.
https://github.com/htop-dev/htop/pull/436

Install Graylog on FreeBSD.
https://www.youtube.com/watch?v=scnsp3fMHJY

VideoLAN libbluray Updated to 1.3.0 with Improvements for FreeBSD Support and Numerous Bug Fixed.
https://twitter.com/videolan/status/1379396750306328578

Meet bsddialog(1) – BSD Licensed dialog(1) Reimplementation.
https://gitlab.com/alfix/bsddialog

FreeBSD Ports Migration to git(1) and Its Impact on HardenedBSD.
https://hardenedbsd.org/article/shawn-webb/2021-04-06/freebsds-ports-migration-git-and-its-impact-hardenedbsd

FreeBSD Well Prepared for AMD EPYC 7003 Series Processors.
https://freebsdfoundation.org/news-and-events/latest-news/freebsd-well-prepared-for-amd-epyc-7003-series-processors/

Illumos Adds NVMe Hotplug Support.
https://github.com/illumos/illumos-gate/commit/ffb6483089015eb90be1f5e7fc2a96c9929546a6

BSD Weekly – Issue 63.
https://bsdweekly.com/issues/63

Mount Webdav Share with Rclone on FreeBSD.
https://blog.socruel.nu/freebsd/mount-webdav-with-rclone-on-freebsd.html

Discovering Bastille on FreeBSD.
https://www.youtube.com/watch?v=FHblWnMQS50

Windows Hosted x86_64 FreeBSD GCC Cross Compiler.
https://github.com/expnkx/Windows-Hosted-x86_64-freebsd-GCC-Cross-Compiler

Bit of XENIX History. [2014]
http://seefigure1.com/2014/04/15/xenixtime.html

Steam on FreeBSD.
https://euroquis.nl//freebsd/2021/04/06/steam-freebsd

Install Airsonic on FreeBSD.
https://danschmid.de/en/blog/install-airsonic-on-freebsd

Install NGINX on FreeBSD.
https://danschmid.de/en/blog/install-nginx-on-freebsd

FreeBSD Adds Support for kvmclock Timecounter.
https://reviews.freebsd.org/D29531

OpenZFS 2.1.0-rc2 Released with Bug Fixes.
https://www.phoronix.com/scan.php?page=news_item&px=OpenZFS-2.1.0-rc2

BSD Now 397 – Fresh BSD 2021.
https://www.bsdnow.tv/397

History of UTF-8 as Told by Rob Pike. [2003]
http://doc.cat-v.org/bell_labs/utf-8_history

UNIX Magic Poster by Gary Overcare.
https://archive.org/details/unix-magic-poster-gary-overcare-1

FreeBSD/arm64 Becoming TIER 1 in FreeBSD 13.
https://lists.freebsd.org/pipermail/freebsd-arm/2021-April/023602.html

UFS Boot Environments for ARM.
https://vermaden.wordpress.com/2021/04/05/ufs-boot-environments-for-arm/

State of Toolchains in NetBSD.
https://www.cambus.net/the-state-of-toolchains-in-netbsd/

Update on FreeBSD Foundation Investment in Linuxulator.
https://freebsdfoundation.org/blog/update-on-freebsd-foundation-investment-in-linuxulator/

Statement for NetBSD Foundation Position on GPLv3.
http://cvsweb.netbsd.org/bsdweb.cgi/src/external/gpl3/README?rev=1.1

In Other BSDs for 2021/04/10.
https://www.dragonflydigest.com/2021/04/10/25616.html

Firewall on FreeBSD.
https://danschmid.de/en/blog/firewall-on-freebsd

TwinCAT/BSD – Operating System for Industrial PCs.
https://www.youtube.com/watch?v=az9vSr1GxE4

Hardware

Engineers Upgrade Apple M1 Mac Mini with More Storage and RAM.
https://www.tomshardware.com/news/mac-m1-mod

Security Analysis of AMD Predictive Store Forwarding.
https://www.amd.com/system/files/documents/security-analysis-predictive-store-forwarding.pdf

ARMv9 and Corellium – Why We Chose ARM vs X86.
https://corellium.com/blog/armv9-and-corellium

AMD Rolls Out Patches to Disable Predictive Store Forwarding on ZEN 3 CPUs.
https://www.tomshardware.com/news/amd-linux-patches-disable-predictive-store-forwarding-zen-3-cpus

Screw It – I Will Host It Myself.
https://www.markozivanovic.com/screw-it-ill-host-it-myself/

ASUS PN51 Announced with AMD Ryzen 5000U Family CPUs.
https://www.fanlesstech.com/2021/04/asus-pn51-announced.html

Surprisingly Slow.
https://gregoryszorc.com/blog/2021/04/06/surprisingly-slow/

The vgpu_unlock Unlocks vGPU Functionality for Consumer Grade GPUs.
https://github.com/DualCoder/vgpu_unlock

Intel Videos Explain Basics of Modern CPU Architectures.
https://www.tomshardware.com/news/intel-videos-explain-cpu-architectures

Getting AMIGA A1200 Online – Part 1 – Adding Network Card.
https://lyonsden.net/getting-an-amiga-a1200-online-part-1-adding-a-network-card/

Getting AMIGA A1200 Online – Part 2 – Adding Amiga TCP/IP Stack.
https://lyonsden.net/getting-an-a1200-online-part-2-adding-an-amiga-tcp-ip-stack/

Getting AMIGA A1200 Online – Part 3 – Installing Amiga Web Browser.
https://lyonsden.net/getting-an-a1200-online-part-3-installing-an-amiga-web-browser/

Getting AMIGA A1200 Online – Part 4 – Installing Amiga Email Client.
https://lyonsden.net/getting-an-a1200-online-part-4-installing-an-amiga-email-client/

Best Network Switches 2021 – Add Ports/Speed/Versatility to Your Network.
https://www.tomshardware.com/best-picks/best-network-switches

Life

Leaked Mark Zuckerberg Phone Number Reveals He is on Signal.
https://www.indiatoday.in/technology/news/story/leaked-phone-number-of-mark-zuckerberg-reveals-he-is-on-signal-1787396-2021-04-05

Instagram Shares 79% of Your Personal Data with Third Parties.
https://cybernews.com/privacy/instagram-is-sharing-79-of-your-personal-data-with-third-parties/

Post Pandemic World – 34% of Remote Workers Would Rather Quit than Return to Office Work.
https://www.psychnewsdaily.com/a-third-of-wfh-employees-say-theyd-rather-quit-than-return-to-full-time-office-work/

Other

Signal Adds Payments Feature – With Privacy Focused MobileCoin Cryptocurrency.
https://www.wired.com/story/signal-mobilecoin-payments-messaging-cryptocurrency/

Lotus Esprit Turbo Challenge – AMIGA – Easy Mode.
https://www.youtube.com/watch?v=CXDz3uEIJOI

Number Sets in Math.
https://thinkzone.wlonk.com/Numbers/NumberSets.htm

uBlock Origin Works Best on Firefox.
https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox

EOF

UFS Boot Environments for ARM

Several days ago I introduced UFS Boot Environments that work great on AMD64 (or 64-bit PC if you prefer). I was interested it it will also work on less powerful devices that ZFS is not always the best idea – ARM based devices. After some testing I found out that after one simple modification the UFS Boot Environments work like a charm on ARM devices.

The Table of Contents is as follows.

  • ARM Testing
  • Setup UFS Boot Environments
  • Needed Fix to Make FreeBSD bootme Flags Work
  • Reboot into Other Boot Environment Test

There is not suitable TL;DR here – you will have to read it all or not at all this time πŸ™‚

ARM Testing

I currently do not own 64-bit ARM device … so I thought I will try the qemu(1) emulator and ready to download and use ARM images provided by the FreeBSD project.

First we will install needed packages and fetch the ARM64 (also known as aarch64) images.

host # pkg install -y qemu u-boot-qemu-arm64

host % fetch https://download.freebsd.org/ftp/releases/VM-IMAGES/13.0-RC4/aarch64/Latest/FreeBSD-13.0-RC4-arm64-aarch64.raw.xz

host % xz -d FreeBSD-13.0-RC4-arm64-aarch64.raw.xz

We will now increase the image size to add additional boot environment partition.

host % ls -lh FreeBSD-13.0-RC4-arm64-aarch64.raw 
-rw-r--r-- 1 vermaden vermaden 5.1G 2021-04-04 12:37 FreeBSD-13.0-RC4-arm64-aarch64.raw

host % truncate -s +9G FreeBSD-13.0-RC4-arm64-aarch64.raw

host % ls -lh FreeBSD-13.0-RC4-arm64-aarch64.raw
-rw-r--r-- 1 vermaden vermaden 15G 2021-04-04 12:38 FreeBSD-13.0-RC4-arm64-aarch64.raw

Using qemu(1) emulator we can boot using either UEFI or U-BOOT option. We will test both as some ARM devices use UEFI and some (like Raspberry Pi devices) use U-BOOT mode.

host % export VMDISK=FreeBSD-13.0-RC4-arm64-aarch64.raw

// UEFI
host % qemu-system-aarch64 \
         -m 4096M \
         -cpu cortex-a57 \
         -M virt \
         -bios edk2-aarch64-code.fd \
         -serial telnet::4444,server \
         -nographic \
         -drive if=none,file=${VMDISK},format=raw,id=hd0 \
         -device virtio-blk-device,drive=hd0 \
         -device virtio-net-device,netdev=net0 \
         -netdev user,id=net0

// U-BOOT
host % qemu-system-aarch64 \
         -m 4096M \
         -cpu cortex-a57 \
         -M virt \
         -bios /usr/local/share/u-boot/u-boot-qemu-arm64/u-boot.bin \
         -serial telnet::4444,server \
         -nographic \
         -drive if=none,file=${VMDISK},format=raw,id=hd0 \
         -device virtio-blk-device,drive=hd0 \
         -device virtio-net-device,netdev=net0 \
         -netdev user,id=net0

After starting the qemu(1) process it will display the following information.

(...)
QEMU 5.0.1 monitor - type 'help' for more information
(qemu) qemu-system-aarch64: -serial telnet::4444,server: info: QEMU waiting for connection on: disconnected:telnet::::4444,server

We can now use telnet(1) to connect to our serial console on emulated ARM64 system. We will add additional freebsd-ufs partition for our second boot environment.

host % telnet localhost 4444
(...)

login: root

ARM # pkg install -y lsblk

ARM # lsblk
DEVICE         MAJ:MIN SIZE TYPE                              LABEL MOUNT
vtbd0            0:62   14G GPT                                   - -
  vtbd0p1        0:63   33M efi                          gpt/efiesp /boot/efi
  vtbd0p2        0:64  1.0G freebsd-swap                 gpt/swapfs -
  vtbd0p3        0:65  4.0G freebsd-ufs                  ufs/rootfs /

ARM # gpart show
=>       3  10552344  vtbd0  GPT  (14G) [CORRUPT]
         3     66584      1  efi  (33M)
     66587   2097152      2  freebsd-swap  (1.0G)
   2163739   8388608      3  freebsd-ufs  (4.0G)

ARM # gpart recover vtbd0
vtbd0 recovered

ARM # gpart add -s 4G -t freebsd-ufs vtbd0
vtbd0p4 added

ARM # gpart show
=>       3  29426709  vtbd0  GPT  (14G)
         3     66584      1  efi  (33M)
     66587   2097152      2  freebsd-swap  (1.0G)
   2163739   8388608      3  freebsd-ufs  (4.0G)
  10552347   8388608      4  freebsd-ufs  (4.0G)
  18940955  10485757         - free -  (5.0G)

We will now make some manual preparations for ufsbe.sh to work.

For example the FreeBSD images come with GPT labels used in /etc/fstab file which are currently not supported by UFS Boot Environments so we will modify the /etc/fstab file to mount root filesystem from raw devices and partitions.

ARM # mkdir -p /ufsbe/3 /ufsbe/4

ARM # cat /etc/fstab
# Custom /etc/fstab for FreeBSD VM images
/dev/gpt/rootfs  /          ufs      rw  1 1
/dev/gpt/efiesp  /boot/efi  msdosfs  rw  2 2
/dev/gpt/swapfs  none       swap     sw  0 0

ARM # vi /etc/fstab

ARM # cat /etc/fstab
# Custom /etc/fstab for FreeBSD VM images
/dev/vtbd0p3     /          ufs      rw  1 1
/dev/vtbd0p4     /ufsbe/4   ufs      rw  1 1
/dev/gpt/efiesp  /boot/efi  msdosfs  rw  2 2
/dev/gpt/swapfs  none       swap     sw  0 0

ARM # newfs /dev/vtbd0p4
/dev/vtbd0p4: 4096.0MB (8388608 sectors) block size 32768, fragment size 4096
        using 7 cylinder groups of 625.22MB, 20007 blks, 80128 inodes.
super-block backups (for fsck_ffs -b #) at:
 192, 1280640, 2561088, 3841536, 5121984, 6402432, 7682880

We now have second boot environment ready and /etc/fstab file modified to boot from raw devices instead of GPT labels. We will now reboot(8) to make these changes apply.

ARM # reboot

Setup UFS Boot Environments

We will not fetch the ufsbe.sh command and finish the setup process.

ARM # fetch https://raw.githubusercontent.com/vermaden/ufsbe/main/ufsbe.sh

ARM # chmod +x ./ufsbe.sh

ARM # ./ufsbe.sh

NOPE: did not found boot environment setup with 'ufsbe' label

INFO: setup each boot environment partition with appropriate label

HELP: list all 'freebsd-ufs' partitions type:

  # gpart show -p | grep freebsd-ufs
      2098216   33554432  ada0p3  freebsd-ufs  [bootme]  (16G)
     35652648   33554432  ada0p4  freebsd-ufs  (16G)
     69207080   33554432  ada0p5  freebsd-ufs  (16G)

HELP: to setup partitions 3/4/5 as boot environments type:

  # gpart modify -i 3 -l ufsbe/3 ada0
  # gpart modify -i 4 -l ufsbe/4 ada0
  # gpart modify -i 5 -l ufsbe/5 ada0

ARM # gpart show
=>       3  29426709  vtbd0  GPT  (14G)
         3     66584      1  efi  (33M)
     66587   2097152      2  freebsd-swap  (1.0G)
   2163739   8388608      3  freebsd-ufs  (4.0G)
  10552347   8388608      4  freebsd-ufs  (4.0G)
  18940955  10485757         - free -  (5.0G)

ARM # gpart modify -i 3 -l ufsbe/3 vtbd0
vtbd0p3 modified

ARM # gpart modify -i 4 -l ufsbe/4 vtbd0
vtbd0p4 modified

ARM # ./ufsbe.sh 
INFO: flag 'bootme' successfully set on / filesystem
usage:
  ufsbe.sh (l)ist
  ufsbe.sh (a)ctivate
  ufsbe.sh (s)ync

The UFS Boot Environments are now properly deployed on this ARM64 test system.

Needed Fix to Make FreeBSD bootme Flags Work

At the first try I was not able to use UFS Boot Environments as the bootme flag was ignored.

I then submitted a FreeBSD bug – 254764 – GPT ‘bootme’ flag is not respected on AARCH64 – to make sure I am doing everything well on my side. As it turns out the bootme flag is a FreeBSD specific extension and nobody else uses it. The needed fix is to copy /boot/gptboot.efi in place of bootaa64.efi file.

Lets now make that fix.

ARM # cp /boot/gptboot.efi /boot/efi/EFI/BOOT/bootaa64.efi

Reboot into Other Boot Environment Test

We will now synchronize boot environments 3 and 4 and then reboot into the 4 boot environments.

ARM # ./ufsbe.sh list
PROVIDER LABEL        ACTIVE
vtbd0p3  ufsbe/3      NR  
vtbd0p4  ufsbe/4      -  

ARM # ./ufsbe.sh sync 3 4
INFO: syncing '3' (source) => '4' (target) boot environments ...
INFO: boot environments '3' (source) => '4' (target) synced

ARM # ./ufsbe.sh activate 4
INFO: boot environment '4' now activated

ARM # reboot

After the reboot the currently active boot environment is 4. It means that UFS Boot Environments work properly on ARM devices.

ARM # ./ufsbe.sh list
PROVIDER LABEL        ACTIVE
vtbd0p3  ufsbe/3      -   
vtbd0p4  ufsbe/4      NR  

ARM # df -h
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/vtbd0p4       3.9G    2.6G    935M    74%    /
devfs              1.0K    1.0K      0B   100%    /dev
/dev/vtbd0p3       3.9G    2.6G    932M    74%    /ufsbe/3
/dev/gpt/efiesp     32M    1.3M     31M     4%    /boot/efi

I have tested both U-BOOT and UEFI boot modes and they both allow to use UFS Boot Environments.

EOF

Valuable News – 2021/04/05

The Valuable News weekly series is dedicated to provide summary about news, articles and other interesting stuff mostly but not always related to the UNIX or BSD systems. Whenever I stumble upon something worth mentioning on the Internet I just put it here.

Today the amount information that we get using various information streams is at massive overload. Thus one needs to focus only on what is important without the need to grep(1) the Internet everyday. Hence the idea of providing such information ‘bulk’ as I already do that grep(1).

UNIX

Wireguard Bounces Off FreeBSD – For Now.
https://lwn.net/SubscriberLink/850098/3daef578513bff15/

Expanding FreeBSD Root Filesystem (UFS).
https://fluca1978.github.io/2021/02/11/FreeBSDExpandingRootFilesystem.html

OpenZFS 2.1-rc1 Released with dRAID.
https://www.phoronix.com/scan.php?page=news_item&px=OpenZFS-2.1-rc1-Released

FreeBSD Reworks sh(1) to Autocomplete Commands.
https://cgit.freebsd.org/src/commit/?id=b315a729

Observations About FreeBSD/AIO.
https://wiki.postgresql.org/wiki/FreeBSD/AIO

Compiling MariaDB from Source on FreeBSD.
https://dev.to/darkain/compiling-mariadb-from-source-on-freebsd-5ank

FreeBSD 13.0-RC4 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2021-March/093374.html

FreeBSD at Google Summer of Code.
https://summerofcode.withgoogle.com/organizations/4733549204209664/

The pkgsrc 2021Q1 Branch Announced.
https://mail-index.netbsd.org/pkgsrc-users/2021/03/29/msg033502.html

New XigmaNAS 11.4.0.4.8282 Available.
https://sourceforge.net/projects/xigmanas/files/XigmaNAS-11.4.0.4/11.4.0.4.8282/

FreeBSD 13.0-RC4 Released with POWER Fixes and Other Bugs Addressed.
https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-13.0-RC4-Released

NetBSD GSoC Reports: Make system(3)/popen(3)/popenve(3) Use posix_spawn(3).
https://blog.netbsd.org/tnf/entry/gsoc_reports_make_system_31

Bootstrap OPNsense Plugin Development Environment in Vagrant.
https://github.com/punktDe/vagrant-opnsense

TrueNAS Core Active Directory Integration in 10 Minutes.
https://sheridancomputers.co.uk/blog/view/videos/truenas-core-active-directory-integration-in-10-minutes

BSD Weekly – Issue 62.
https://bsdweekly.com/issues/62

GSoC Reports – Benchmarking NetBSD – 3rd Evaluation Report.
https://blog.netbsd.org/tnf/entry/gsoc_reports_benchmarking_netbsd_third

Open Source Licenses in 2021 – Trends and Predictions.
https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-trends-and-predictions

HardenedBSD 2021/03 Status Report.
https://hardenedbsd.org/article/shawn-webb/2021-03-31/hardenedbsd-march-2021-status-report

BSD Now 396 – License to Thrill.
https://www.bsdnow.tv/396

Manjaro Migrates to FreeBSD as New Base. [April Fool Joke]
https://www.youtube.com/watch?v=RTTVNO56LNE

Xinuos Sues IBM and Red Hat for Antitrust Violations and Copyright Infringement.
https://www.xinuos.com/xinuos-sues-ibm-and-red-hat/

Colorized Output for FreeBSD CLI Programs.
https://gist.github.com/Linux-BSD/e84e309ee4a4966bc81d97a5b75eb282

Thunar from XFCE Gets Safely Remove Drive Option.
https://twitter.com/XfceNation/status/1377531183697952769
https://gitlab.xfce.org/xfce/thunar/-/issues/153

FreeBSD Utility ufsbe(8) to Manage Boot Environments on UFS Filesystems.
https://github.com/vermaden/ufsbe

April Fool Pranks in Sun Microsystems Over the Years.
https://tech.gaeatimes.com/index.php/archive/april-fool-pranks-in-sun-microsystems-over-the-years/

OpenBSD Adds Coordinated Mars Time (MTC) – Mars Equivalent of Earth Universal Time (UTC).
https://marc.info/?l=openbsd-cvs&m=161730046519995&w=2

The tmux Lets You Select/Copy Text with Keyboard.
https://ianthehenry.com/posts/tmux-psa/

Turing Award Goes to Jeffrey Ullman and Alfred Aho (Man from A in awk(1) Name).
https://www.theregister.com/2021/04/01/turing_award/

Release Notes for OmniOS v11 r151036.
https://github.com/omniosorg/omnios-build/blob/r151036/doc/ReleaseNotes.md

Upgrading GhostBSD to 13-STABLE.
https://forums.ghostbsd.org/viewtopic.php?f=54&t=1921

In Other BSDs for 2021/04/03.
https://www.dragonflydigest.com/2021/04/03/25604.html

FreeBSD Heads Up – mergemaster(8) Deprecated – Use etcupdate(8) Instead.
https://forums.freebsd.org/threads/heads-up-deprecation-of-mergemaster.79641/
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252417
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252132

Hikari 2.2.3 Wayland Compositor 2.2.3 for FreeBSD and Linux is Released.
https://hikari.acmelabs.space/

FreeBSD 13.0-RC5 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2021-April/093429.html

FreeBSD 13.0-RC5 Released Due to Lingering Bugs.
https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-13.0-RC5

XigmaNAS 12.2.0.4.8291 Available.
https://sourceforge.net/projects/xigmanas/files/XigmaNAS-12.2.0.4/12.2.0.4.8291/

Installing Tribblix in Bhyve on Tribblix.
https://ptribble.blogspot.com/2021/04/installing-tribblix-in-bhyve-on-tribblix.html

I got GNU Modula-2 Compiler Working on OpenBSD.
https://briancallahan.net/blog/20210403.html

Hardware

ARMv9 Introduced at ARM Vision Day 2021.
https://www.servethehome.com/armv9-introduced-at-arm-vision-day-2021/

Akasa Maze Themed Raspberry Pi 4 Case.
https://www.tomshardware.com/news/akasa-raspberry-pi-4-akasa-maze-pro

AMD Ryzen Embedded V2000 COM Express Module Supports up to 1TB NVMe SSD and 64GB DDR4.
https://www.cnx-software.com/2021/04/01/ryzen-embedded-v2000-com-express-module-supports-up-to-1tb-nvme-ssd-64gb-ddr4/

AMD EPYC 7763 Review.
https://www.servethehome.com/amd-epyc-7763-review-top-for-this-generation/

MINISFORUM DeskMini HM50 with AMD Ryzen 5 4500U and Triple 4K Display and 2.5GbE Ethernet.
https://www.cnx-software.com/2021/04/02/amd-ryzen-5-4500u-mini-pc-offers-triple-4k-display-support-2-5gbe/

Best Way to Learn – Build Full Home Laboratory.
https://cybernews.com/editorial/best-way-to-learn-building-a-full-home-laboratory-of-course/

China First 7nm GPU Nears Mass Production.
https://www.tomshardware.com/news/china-first-7nm-gpu-heads-to-production

Life

Google Collects 20 Times More Telemetry from Android than Apple from iOS.
https://therecord.media/google-collects-20-times-more-telemetry-from-android-devices-than-apple-from-ios/

Splinternet: End of Internet as We Know It.
https://cybernews.com/editorial/the-splinternet-the-end-of-the-internet-as-we-know-it/

Astonishing Math Knowledge of Honeybees.
https://medium.com/however-mathematics/the-astonishing-math-knowledge-of-honeybees-d17c95491c66

Other

Is Canada Most Expensive Wireless Market in World?
http://research.rewheel.fi/downloads/Canada_most_expensive_wireless_market_world_PUBLIC_VERSION.pdf

Font Size is Useless – Let’s Fix It.
https://tonsky.me/blog/font-size/

QRSAY – CLI QR Code Generator for MS-DOS.
https://github.com/gonzoua/DOS

Terms of Service – Did Not Read.
https://tosdr.org/en/frontpage

EOF

UFS Boot Environments

Yes you read it correctly. The fabulous ZFS Boot Environments – more about them here – https://is.gd/BECTL – if you are not familiar with this concept – are now also possible on UFS filesystems on FreeBSD. Of course in little different form and without using snapshots and clones but the idea and solution remains. You can now have bootable backups of your system before major changes and/or upgrades. This solution does not use UFS snapshots. All bootable UFS variants are supported with and without Soft Updates or Soft Updates Journaling. The idea behind UFS Boot Environments lays in several additional root (/) partitions that will be used as alternate boot environments.

Concept is similar to Solaris Live Upgrade mechanism which used lucreate/luupgrade/lustatus commands and also to AIX Alternate Disk Cloning and Install with alt_disk_copy/alt_disk_install commands.

In this article I will show you how to setup new FreeBSD system with 3 of such partitions. In my honest opinion its more then enough for most purposes. On my desktop/workstation I have more then 1000 packages installed. With FreeBSD Base System it takes about 11 GB of space with ZFS compression and 15 GB without it. Thus I propose 16 GB partitions. Your needs may of course be different. You may as well create 4 GB or 64 GB partitions.

The UFS Boot Environments would not exist without the inspiration from FreeBSD Upgrade Procedure Using GPT blog post by Mariusz Zaborski (also known as oshogbo) who describes the concept of bootme flags for GPT partitions. That is the heart of this solution. By selecting activate for boot environment the bootme flag is removed from all existing boot environments and set for the new desired one. The ufsbe(8) tool was tested on FreeBSD 12.x and 13.x currently.

FreeBSD Install for UFS Boot Environments

Generally only GPT partitioning is needed to use UFS Boot Environments. Below I will show example install process with 3 root partitions of 16 GB each.

In the FreeBSD Installer select Install.

The select Auto (UFS) option.

Then use Entire Disk option.

Then select GPT partition table.

The FreeBSD Installer will propose the following solution.

Change it into 3 partitions 16 GB each to make it look like that one below and hit Finish.

Then Commit your choice.

… and then the install process will continue as usual.

Besides these option you may select whatever you choose in the install process.

After the system reboots its gpart(8) will look like that one below.

root@fbsd13:~ # gpart show
=>       40  134217648  ada0  GPT  (64G)
         40       1024     1  freebsd-boot  (512K)
       1064    2097152     2  freebsd-swap  (1.0G)
    2098216   33554432     3  freebsd-ufs  (16G)
   35652648   33554432     4  freebsd-ufs  (16G)
   69207080   33554432     5  freebsd-ufs  (16G)
  102761512   31456176        - free -  (15G)

Now fetch(1) the ufsbe.sh script from its GitHub page.

# fetch https://raw.githubusercontent.com/vermaden/ufsbe/main/ufsbe.sh
# chmod +x ./ufsbe.sh
# ./ufsbe.sh

NOPE: did not found boot environment setup with 'ufsbe' label

INFO: setup each boot environment partition with appropriate label

HELP: list all 'freebsd-ufs' partitions type:

  # gpart show -p | grep freebsd-ufs
      2098216   33554432  ada0p3  freebsd-ufs  [bootme]  (16G)
     35652648   33554432  ada0p4  freebsd-ufs  (16G)
     69207080   33554432  ada0p5  freebsd-ufs  (16G)

HELP: to setup partitions 3/4/5 as boot environments type:

  # gpart modify -i 3 -l ufsbe/3 ada0
  # gpart modify -i 4 -l ufsbe/4 ada0
  # gpart modify -i 5 -l ufsbe/5 ada0

It will welcome you with information about needed setup steps.

We will now make these steps marking all boot environment partitions with appropriate ufsbe labels.

# gpart modify -i 3 -l ufsbe/3 ada0
ada0p3 modified
# gpart modify -i 4 -l ufsbe/4 ada0
ada0p4 modified
# gpart modify -i 5 -l ufsbe/5 ada0
ada0p5 modified

Now ufsbe.sh will setup bootme flag for currently used root (/) partition.

# ./ufsbe.sh
INFO: flag 'bootme' successfully set on / filesystem
usage:
  ufsbe.sh list
  ufsbe.sh activate
  ufsbe.sh sync  

Setup is complete.

All three root partitions have the ufsbe label. To make it more simple the /dev/ada0p3 device gets the ufsbe/3 label and /dev/ada0p4 device gets the ufsbe/4 … you see the pattern.

# gpart show -p -l
=>       40  134217648    ada0  GPT  (64G)
         40       1024  ada0p1  (null)  (512K)
       1064    2097152  ada0p2  swap  (1.0G)
    2098216   33554432  ada0p3  ufsbe/3  [bootme]  (16G)
   35652648   33554432  ada0p4  ufsbe/4  (16G)
   69207080   33554432  ada0p5  ufsbe/5  (16G)
  102761512   31456176          - free -  (15G)

You can now use our UFS Boot Environments on this system.

Using UFS Boot Environments

Lets list our boot environments with list command. The short ‘l‘ option also works.

# ./ufsbe.sh list
PROVIDER LABEL        ACTIVE
ada0p3   ufsbe/3      NR  
ada0p4   ufsbe/4      -   
ada0p5   ufsbe/5      -  

Its output is similar to mine ZFS Boot Environments tools beadm(8). The N flag shows that this is the boot environments we are using NOW. The R flag shows which one we will use after the reboot(8).

Currently only the 3 boot environments is populated (by FreeBSD Installer that is). The 4 and 5 boot environments are empty filesystems.

You can either extract your own FreeBSD version there with base.txz and kernel.txz or use the sync option of ufsbe.sh which will use rsync(1) for the process. Below is an example of syncing boot environment 3 (the one we installed) with currently empty boot environment 4.

# ./ufsbe.sh sync 3 4
NOPE: rsync(1) is not available in ${PATH}
INFO: install 'net/rsync' package or port

# pkg install net/rsync

# ./ufsbe.sh sync 3 4
INFO: syncing '3' (source) => '4' (target) boot environments ...
INFO: boot environments '3' (source) => '4' (target) synced

You can now see that boot environment 3 and 4 have same size.

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p3     15G    1.3G     13G     9%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4     15G    1.2G     13G     9%    /ufsbe/4
/dev/ada0p5     15G     32M     14G     0%    /ufsbe/5

If we would like to activate an empty boot environment 5 then ufsbe.sh will not let us do that because that will make our system unbootable. Of course is quote fast/naive check but at least makes sure some files exists on the soon to be active boot environment. Currently these files are checked but this list may be increased in the future:

  • /boot/kernel/kernel
  • /boot/loader.conf
  • /etc/rc.conf
  • /rescue/ls
  • /bin/ls
  • /sbin/fsck
  • /usr/bin/su
  • /usr/sbin/chroot
  • /lib/libc.so.*
  • /usr/lib/libpam.so.*

Below this ‘protection’ in action.

# ./ufsbe.sh activate 5
NOPE: boot environment '5' is not complete
INFO: critical file '/ufsbe/5/boot/kernel/kernel' is missing
INFO: use 'sync' option or copy file manually

The boot environment 4 activation process works as desired as we populated it with files from boot environment 3 first.

# ./ufsbe.sh activate 4
INFO: boot environment '4' now activated

Same as with beadm(8) the ufsbe.sh also checks if boot environment is already activated.

# ./ufsbe.sh activate 4
INFO: boot environment '4' is already active

The list of our boot environments looks like that now.

# ./ufsbe.sh list
PROVIDER LABEL        ACTIVE
ada0p3   ufsbe/3      N   
ada0p4   ufsbe/4      R   
ada0p5   ufsbe/5      -   

… and that is how output of gpart(8) looks like.

# gpart show -p -l
=>       40  134217648    ada0  GPT  (64G)
         40       1024  ada0p1  (null)  (512K)
       1064    2097152  ada0p2  swap  (1.0G)
    2098216   33554432  ada0p3  ufsbe/3  (16G)
   35652648   33554432  ada0p4  ufsbe/4  [bootme]  (16G)
   69207080   33554432  ada0p5  ufsbe/5  (16G)
  102761512   31456176          - free -  (15G)

We will now reboot into the activated boot environment 4.

# shutdown -r now

After the reboot(8) we see that we are now booted from the 4 boot environment.

# ./ufsbe.sh list
PROVIDER LABEL        ACTIVE
ada0p3   ufsbe/3      -   
ada0p4   ufsbe/4      NR  
ada0p5   ufsbe/5      -   

Closing Notes

Keep in mind that this is only first 0.1 version of ufsbe.sh. Do not use it in production or important systems and make sure you have restorable backups. Like with beadm(8) in the past I plan to improve it with more useful options and also add it to the Ports tree in the future.

Feel free to share your thoughts about this tool.

I must wait till midnight to make it shown as posted on 2nd of April because if I would post it on 1st of April it would be taken as April Fool Joke which is definitely not.

Enjoy.

Updating or Upgrading

You may use the Upgrade FreeBSD with ZFS Boot Environments method with these UFS Boot Environments as well but now you will chroot(8) into /ufsbe/4 for example.

EOF

Valuable News – 2021/03/29

The Valuable News weekly series is dedicated to provide summary about news, articles and other interesting stuff mostly but not always related to the UNIX or BSD systems. Whenever I stumble upon something worth mentioning on the Internet I just put it here.

Today the amount information that we get using various information streams is at massive overload. Thus one needs to focus only on what is important without the need to grep(1) the Internet everyday. Hence the idea of providing such information ‘bulk’ as I already do that grep(1).

UNIX

FreeNAS Compression Tale.
http://storagegaga.com/a-freenas-compression-tale/

Really Leaving Linux Desktop Behind.
https://catfox.life/2021/03/21/really-leaving-the-linux-desktop-behind/

Managing Multiple PostgreSQL Instances on FreeBSD.
https://fluca1978.github.io/2021/03/22/PostgreSQLFreeBSDMultiInstance.html

Wireguard Controversy Statement from FreeBSD Core Team.
https://lists.freebsd.org/pipermail/freebsd-hackers/2021-March/057102.html

Plan 9 from Bell Labs in Cyberspace.
https://www.bell-labs.com/institute/blog/plan-9-bell-labs-cyberspace/

FreeBSD 13.0 Supports ARM64/aarch64 with freebsd-update(8) Binary Updates.
https://twitter.com/ed_maste/status/1374542204505632770

Build OpenSSL on OmniOS.
https://nanxiao.me/en/build-openssl-on-omnios/

FreeBSD 13.0-RELEASE Schedule Update.
https://lists.freebsd.org/pipermail/freebsd-stable/2021-March/093357.html

Next Level – FreeBSD on ARM64 in Cloud.
https://klarasystems.com/articles/the-next-level-freebsd-on-arm64-in-the-cloud/

Cheap Wireless Keyboard for FreeBSD.
https://www.youtube.com/watch?v=dZtB003eGKI

Script that Automates ZFS Datasets Backup to AWS S3.
https://github.com/agurk/zfs-to-aws

BSD Now 395 – Tracing ARM History.
https://www.bsdnow.tv/395

Release Notes for OmniOS v11 r151036.
https://github.com/omniosorg/omnios-build/blob/r151036/doc/ReleaseNotes.md

SQLite is Not a Toy Database.
https://antonz.org/sqlite-is-not-a-toy-database/

New Bareos Plugin Enables File Based Qumulo Backups.
https://www.bareos.com/new-bareos-plugin-enables-file-based-qumulo-backups/

Vinum Deprecation for FreeBSD 14.
https://lists.freebsd.org/pipermail/freebsd-stable/2021-March/093358.html

UDisks2 Service Implementation for OpenBSD as sysutils/openbsdisks2 Port.
https://marc.info/?l=openbsd-ports&m=161683379228293&w=2

In Other BSDs for 2021/03/27.
https://www.dragonflydigest.com/2021/03/27/25585.html

Buffer Overruns/License Violations/Bad Code – FreeBSD 13 Close Call.
https://arstechnica.com/gadgets/2021/03/buffer-overruns-license-violations-and-bad-code-freebsd-13s-close-call/

FreeBSD Core Team Statement on FreeBSD Development Processes.
https://lists.freebsd.org/pipermail/freebsd-hackers/2021-March/057127.html

Backups with Plakar.
https://poolp.org/posts/2021-03-26/march-2021-backups-with-plakar/

NetBSD Bounties for xhci Features: Scatter-Gather and Suspend/Resume.
https://mail-index.netbsd.org/tech-kern/2021/03/25/msg027170.html

Port of Duke Nukem 3D to SerenityOS.
https://www.youtube.com/watch?v=xy1uynuUyPo

KDE on FreeBSD 2021 O2.
https://euroquis.nl/kde/2021/03/26/freebsd2021o2.html

Interview with Abhinav Upadhyay – NetBSD Contributor.
https://www.cyberciti.biz/interview/interview-with-abhinav-upadhyay-netbsd-contributor-and-machine-learning-software-developer/

NetBSD Hitting Donation Milestone – 2020 Financial Report.
https://blog.netbsd.org/tnf/entry/hitting_donation_milestone_financial_report

Hardware

AMIGA Powered VR.
https://twitter.com/amigamagazine/status/1374093036985196552/

Bootstrapping AMIGA Without Bootable Floppy.
https://www.rvalles.net/bootstrapping-an-amiga-without-a-bootable-amiga-floppy.html

How Does Fanless Cooling Work?
https://www.onlogic.com/company/io-hub/how-does-fanless-cooling-work/

Axiomtek Introduces Fanless Palm Sized eBOX560-52R-FL IPC.
https://www.techpowerup.com/280189/axiomtek-introduces-palm-sized-and-fanless-ebox560-52r-fl-ipc

How Tech War is Driving US and EU Together.
https://geopoliticalfutures.com/how-the-tech-war-is-driving-the-us-and-eu-together/

Minisforum AMD PC with Ryzen 5 3450U and Radeon Vega 8.
https://www.tomshardware.com/news/minisforum-um340-upgraded-sff

Other

Fallout 2 – Mutants Rising – Game Sized Total Conversion Mod.
https://nma-fallout.com/threads/mutants-rising.220268/

Little Things That Made AMIGA Great.
https://datagubbe.se/ltmag/

Demoscene AMIGA Years – Volume 1.
https://www.editions64k.fr/

EOF

Valuable News – 2021/03/22

The Valuable News weekly series is dedicated to provide summary about news, articles and other interesting stuff mostly but not always related to the UNIX or BSD systems. Whenever I stumble upon something worth mentioning on the Internet I just put it here.

Today the amount information that we get using various information streams is at massive overload. Thus one needs to focus only on what is important without the need to grep(1) the Internet everyday. Hence the idea of providing such information ‘bulk’ as I already do that grep(1).

UNIX

New and Much Improved WireGuard Implementation Comes to FreeBSD.
https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-New-WireGuard

WireGuard for FreeBSD in Development for 13.1+ and Note How We Got Here.
https://lists.zx2c4.com/pipermail/wireguard/2021-March/006494.html

The sysctlview Graphical sysctl(8) MIB Explorer Version 2.1 for FreeBSD is Out.
https://alfonsosiciliano.gitlab.io/posts/2021-03-14-sysctlview-2-1.html

Performance Comparison – Counting Words in Python/Go/C++/C/AWK/Forth/Rust.
https://benhoyt.com/writings/count-words/

FreeBSD 13.0 – Full Desktop Experience.
https://www.tubsta.com/2021/03/freebsd-13-0-full-desktop-experience/

Plan for Potabi – FreeBSD Based Mobile Operating System.
https://blog.fivnex.co/2021/03/the-plan-for-potabi.html

The sd – My Script Directory.
https://ianthehenry.com/posts/sd-my-script-directory/

Why We Do Not Use Docker.
https://launchyourapp.meezeeworkouts.com/2021/03/why-we-dont-use-docker-we-dont-need-it.html

The fwupd BSD Packages and CI/CD.
https://blog.3mdeb.com/2021/2021-03-15-fwupd-bsd-packages-and-ci/

In Kernel WireGuard is On Its Way to FreeBSD and pfSense Router.
https://arstechnica.com/gadgets/2021/03/in-kernel-wireguard-is-on-its-way-to-freebsd-and-the-pfsense-router/

The runj is Experimental Proof of Concept OCI Compatible Runtime for FreeBSD Jails.
https://github.com/samuelkarp/runj

Meet frawk – Implementation of AWK Language with CSV/TSV Support Written in Rust.
https://github.com/ezrosent/frawk
https://github.com/ezrosent/frawk/blob/master/info/overview.md

BSD Weekly – Issue 60.
https://bsdweekly.com/issues/60

Install FreeBSD with KDE Plasma 5.
https://leonardcucos.com/how-to-install-freebsd-with-kde-plasma-5-2021/

runj – New OCI Runtime for FreeBSD Jails.
https://samuel.karp.dev/blog/2021/03/runj-a-new-oci-runtime-for-freebsd-jails/

History of ZFS – Part 1 – Birth of ZFS and How It All Started.
https://klarasystems.com/articles/history-of-zfs-part-1-the-birth-of-zfs/

Audacity 3.0.0 Released.
https://www.audacityteam.org/audacity-3-0-0-released/

Tailscale for Illumos.
https://blog.shalman.org/tailscale-for-illumos/

FreeBSD Refactors Configuration Management in Bhyve.
https://cgit.freebsd.org/src/commit/?id=621b5090487de9fed1b503769702a9a2a27cc7bb

BSD Now 394 – FreeBSD on Mars.
https://www.bsdnow.tv/394

FreeBSD All Access – 5 Accessibility Tools.
https://www.youtube.com/watch?v=–nKaFC-k_k

In Other BSDs for 2021/03/20.
https://www.dragonflydigest.com/2021/03/20/25565.html

The ohmyksh is Framework for Expanding OpenBSD ksh.
https://github.com/qbit/ohmyksh

FreeBSD 13.0-RC3 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2021-March/093340.html

Working D Compiler on OpenBSD.
https://briancallahan.net/blog/20210320.html

The freebsd-update 13.0 Caveats.
https://www.tubsta.com/2021/03/freebsd-update-13-0-caveats/

Welcome z3 – ZFS to S3 Backup/Restore Tool.
https://github.com/presslabs/z3

WireGuard Kernel Module for FreeBSD is Available as (Experimental) net/wireguard-kmod Port.
https://freshports.org/net/wireguard-kmod

FreeBSD – Sway Compositor Runs While KDE Plasma on Wayland is Still a Work in Progress.
https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-Wayland-Sway-2021

Wayland on FreeBSD.
https://euroquis.nl//freebsd/2021/03/16/wayland

Hardware

One Tough Pi. Coming 2021.
https://www.onlogic.com/industrial-raspberry-pi/

UP Squared Pro SBC Gets More I/Os with 3 x M.2 Sockets.
https://www.cnx-software.com/2021/03/16/up-squared-pro-sbc-gets-more-i-os-3x-m-2-socket-tpm-2-0-security-chip/

Going Longer on Intel Ad Spat with Mac.
https://daringfireball.net/2021/03/going_longer

Tyan Adds AMD EPYC 7003 Support.
https://www.servethehome.com/tyan-adds-amd-epyc-7003-support/

Cheap TP-Link 10GbE Switches Now Available (5 Port/8 Port).
https://www.tomshardware.com/news/tp-link-cheap-10gbe-switch

Life

Why There is No Way Back for Religion in West – David Voas.
https://www.youtube.com/watch?v=YtAR_OGzlcg

See How River Totally Changes Over Time.
https://www.gizmodo.com.au/2016/04/see-how-a-river-totally-changes-over-time-in-this-gif/

Spotify Censoring Song Lyrics That Contain ‘Misinformation’. Socialism is Back.
https://summit.news/2021/03/16/spotify-now-censoring-lyrics-that-contain-misinformation/

Other

Adobe Goes After 27 Year Old ‘Pirated’ Copy of Acrobat Reader 1.0 for MS-DOS.
https://torrentfreak.com/adobe-goes-after-27-year-old-pirated-copy-of-acrobat-reader-1-0-for-ms-dos-210315/

GitHub F*ck Your Name Change.
https://mooseyanon.medium.com/github-f-ck-your-name-change-de599033bbbe

Art of Warez Documents Lost ANSI Art Scene.
https://www.juxtapoz.com/news/film/the-art-of-warez-documents-the-lost-ansi-art-scene/

Firefox 87 Trims HTTP Referrers by Default to Protect User Privacy.
https://blog.mozilla.org/security/2021/03/22/firefox-87-trims-http-referrers-by-default-to-protect-user-privacy/

EOF

Valuable News – 2021/03/15

The Valuable News weekly series is dedicated to provide summary about news, articles and other interesting stuff mostly but not always related to the UNIX or BSD systems. Whenever I stumble upon something worth mentioning on the Internet I just put it here.

Today the amount information that we get using various information streams is at massive overload. Thus one needs to focus only on what is important without the need to grep(1) the Internet everyday. Hence the idea of providing such information ‘bulk’ as I already do that grep(1).

UNIX

Docker vs Solaris Containers.
https://blog.karmacomputing.co.uk/docker-vs-solaris-containers-tldr-its-a-question-of-kernel-not-application-2/

Porting OpenBSD to RISC-V Final Report.
https://github.com/MengshiLi/openbsd-riscv-notes/raw/master/Porting_OpenBSD_to_RISCV_FinalReport.pdf

Change IP Address in FreeBSD.
https://www.youtube.com/watch?v=oaCOrsXSUG0

Quick Publishing of FreeBSD Poudriere Packages.
https://euroquis.nl/freebsd/2021/03/08/poudriere.html

Restic for Fast Backups and Restores.
https://people.freebsd.org/~dch/posts/2021-03-05-restic-backups.html

License to Thrill: Ahead of FreeBSD 13.0 Team Talks About Linux and Completed Toolchain Project.
https://www.theregister.com/2021/03/10/the_state_of_freebsd/

OpenZFS 2.0.4 Released.
https://github.com/openzfs/zfs/releases/tag/zfs-2.0.4

Customizing the FreeBSD Kernel.
https://klarasystems.com/articles/customizing-the-freebsd-kernel/

Implement ‘Command not found‘ Handler in OpenBSD.
https://dataswamp.org/~solene/2021-03-09-openbsd-command-not-found.html

LPAR2RRD 7.10 Available.
https://lpar2rrd.com/announcements.php

STOR2RRD 7.10 Available.
https://stor2rrd.com/announcements.php

Easy SpamAssassin with OpenSMTPD on OpenBSD.
https://dataswamp.org/~solene/2021-03-10-smtpd-spamassassin.html

Dennis Ritchie First C Compiler (1972).
https://github.com/mortdeus/legacy-cc

BSD Now 393 – ZFS dRAID.
https://www.bsdnow.tv/393

Try bastille-autocomplete for Oldschool TCSH Shell – Autocompletion for BastilleBSD.
https://github.com/ddowse/bastille-autocomplete

Lessons Learned from 27 Years Old UNIX Book – Sun Performance and Tuning (1994).
https://www.linux.it/%7Eema/posts/porsche-book/

LibreOffice 7.0.5 Has Been Released.
https://blog.documentfoundation.org/blog/2021/03/12/libreoffice-705/

Haiku 2021/02 Activity Report.
https://www.haiku-os.org/blog/pulkomandy/2021-03-08-haiku_activity_report_february_2021/

What is New in SQLite 3.35.
https://nalgeon.github.io/sqlite-3-35/

FreeBSD 13.0-RC2 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2021-March/093294.html

The bectl(8) and beadm(8) – FreeBSD Gold.
https://www.youtube.com/watch?v=SwevVfinBUs

What is New in FreeBSD 13.0.
https://www.youtube.com/watch?v=2ZDD-ENdJgg

In Other BSDs for 2021/03/13.
https://www.dragonflydigest.com/2021/03/13/25541.html

Install ModSecurity 3 on FreeBSD.
https://www.adminbyaccident.com/freebsd/how-to-freebsd/how-to-install-modsecurity-3-on-freebsd/

Jailing Rust Tests with Procedural Macros on FreeBSD.
https://akhramov.github.io/posts/2021-03-08-jailed-tests.html

FreeBSD Poudriere Guide.
https://danschmid.de/en/blog/poudriere-guide

Czkawka is Simple/Fast/Easy App to Find/Remove Unnecessary Files.
https://github.com/qarmin/czkawka/releases/
https://twitter.com/vermaden/status/1370682524767248386

TEOS – Character Based C64 GUI Inspired by GEOS.
http://gamingretro.co.uk/teos-a-character-based-c64-gui-inspired-by-geos/

FreeBSD Software Collection Installer.
https://gitlab.com/alfix/softwaresets

FreeBSD Switches to git.
https://euroquis.nl//freebsd/2021/03/12/fbsd-git.html

Hardware

Thin Mini-ITX Motherboards from ASUS.
https://www.fanlesstech.com/2021/03/thin-mini-itx-motherboards-from-asus.html

I Want Computer that I Own.
http://misc-stuff.terraaeon.com/articles/computer-i-own.html

MIPS Becomes RISC-V.
https://www.eejournal.com/article/wait-what-mips-becomes-risc-v/

Pico-ITX Motherboard with Intel Tiger Lake UP3 and M.2/SATA/1GE/2.5GE/RAM32GB.
http://www.commell.com.tw/Product/SBC/LP-179.HTM

Is the AMIGA Computer Manufactured Today?
https://www.quora.com/Is-the-Amiga-computer-manufactured-today

VirtualBox OSE 6.1.18 on FreeBSD. Older 5.2.44 Preserved as Legacy Version.
https://github.com/freebsd/freebsd-ports/commit/8651db19e5d968c39441cfd3b3f67b712ecbf89e

Chinese Loongson 16-Core MIPS 12nm CPU for 256-Core Servers to Launch Shortly.
https://www.tomshardware.com/news/loongson-3a5000-3c-5000-to-launch-in-2021

ARMs Race – Ampere Altra Takes on AWS Graviton 2.
https://blog.cloudflare.com/arms-race-ampere-altra-takes-on-aws-graviton2/

Burn In Test – OLED vs LCD VA vs LCD IPS.
https://www.rtings.com/tv/learn/permanent-image-retention-burn-in-lcd-oled?

AMD 3rd Generation EPYC Milan Review.
https://www.anandtech.com/show/16529/amd-epyc-milan-review/

Seagate Roadmap: Path to 120 TB Hard Drives.
https://www.anandtech.com/show/16544/seagates-roadmap-120-tb-hdds

Life

Hackers Breach Thousands of Security Cameras Exposing Tesla/Jails/Hospitals.
https://www.bloomberg.com/news/articles/2021-03-09/hackers-expose-tesla-jails-in-breach-of-150-000-security-cams?sref=ylv224K8

Other

Israel/Cyprus/Greece Agree to Link Power Grids via Subsea Cable.
https://www.reuters.com/article/idUSKBN2B015M

RFC3339 Addresses ISO 8601 Standard for Representation of Dates and Times.
https://tools.ietf.org/html/rfc3339

I Guess I Have to Watch Ads Everywhere on My $1500 LG TV Now.
https://www.theverge.com/tldr/2021/3/10/22323790/lg-oled-tv-commercials-content-store

Researchers Design Website that Can Steal Data Ffrom Intel and Apple M1 CPUs Using Web Browsers.
https://www.hardwaretimes.com/researchers-design-website-that-can-steal-data-from-intel-and-apple-m1-cpus-using-web-browsers/

EOF

GlusterFS 8 on FreeBSD 13

About two years ago I have made a guide for really old GlusterFS 3.11 version that was available back then on FreeBSD 12.0. Recently I noticed that GlusterFS version in FreeBSD Ports (and packages) is not finally up-to-date with upstream GlusterFS versions.

gluster-logo

This guide will show you how to create GlusterFS 8 distributed filesystem on latest FreeBSD 13. At the moment of writing this article FreeBSD 13 is at RC1 state but it will be released within a month.

While in the earlier guide I created dispersed volume with redundancy comparably to RAID6 but between 6 nodes not disks. This means that 2 of 6 nodes can crash and that GlusterFS would still work without a problem. Today I will show you more minimalistic approach with 3 node setup and a volume that takes space only on nodes node0 and node1 while node2 will be used as an arbiter only and does not hold any data. The arbiter greatly improves split brain problems because instead of vulnerable two node cluster we have a three nodes in the cluster so even if any of them fails we still have 2 of 3 votes.

I will not repeat all ‘initial’ steps needed to prepare these three FreeBSD hosts as it was already described here – GlusterFS Cluster on FreeBSD with Ansible and GNU Parallel – in the older article about that topic. I will focus on the GlusterFS commands that need to be executed to achieve our goal.

We will use several prompts in this guide to show which commands will be executed on which nodes.

  [ALL] # command that will be executed on all node0/node1/node2 nodes
[node0] # command that will be executed on node0 only

GlusterFS

We have three nodes on our lab.

  • node0 - 10.0.10.200 - DATA NODE 'A'
  • node1 - 10.0.10.201 - DATA NODE 'B'
  • node2 - 10.0.10.202 - ARBITER NODE

Install and then enable and start the GlusterFS.

[ALL] # pkg install glusterfs

[ALL] # sysrc glusterd_enable=YES
glusterd_enable:  -> YES

[ALL] # service glusterd start
Starting glusterd.

Enable and mount the /proc filesystem and create needed directories for GlusterFS bricks.

[ALL] # grep procfs /etc/fstab
proc  /proc  procfs  rw  0 0

[ALL] # mount /proc

[ALL] # mkdir -p /bricks/data/{01,02,03,04}

Now connect all these nodes into one cluster and create GlusterFS volume.

[node0] # gluster peer status
Number of Peers: 0

[node0] # gluster peer probe node1
peer probe: success

[node0] # gluster peer probe node2
peer probe: success

[node0] # gluster peer status
Number of Peers: 2

Hostname: node1
Uuid: b5bc1602-a7bb-4f62-8149-98ca97be1784
State: Peer in Cluster (Connected)

Hostname: node2
Uuid: 2bfa0c71-04b4-4660-8a5c-373efc5da15c
State: Peer in Cluster (Connected)

[node0] # gluster volume create data \
  replica 2 \
  arbiter 1 \
  node0:/bricks/data/01 \
  node1:/bricks/data/01 \
  node2:/bricks/data/01 \
  node0:/bricks/data/02 \
  node1:/bricks/data/02 \
  node2:/bricks/data/02 \
  node0:/bricks/data/03 \
  node1:/bricks/data/03 \
  node2:/bricks/data/03 \
  node0:/bricks/data/04 \
  node1:/bricks/data/04 \
  node2:/bricks/data/04 \
  force
volume create: data: success: please start the volume to access data

[node0] # gluster volume start data
volume start: data: success

[node0] # gluster volume info
 
Volume Name: data
Type: Distributed-Replicate
Volume ID: f73d57ea-6f10-4840-86e7-f8178540e948
Status: Started
Snapshot Count: 0
Number of Bricks: 4 x (2 + 1) = 12
Transport-type: tcp
Bricks:
Brick1: node0:/bricks/data/01
Brick2: node1:/bricks/data/01
Brick3: node2:/bricks/data/01 (arbiter)
Brick4: node0:/bricks/data/02
Brick5: node1:/bricks/data/02
Brick6: node2:/bricks/data/02 (arbiter)
Brick7: node0:/bricks/data/03
Brick8: node1:/bricks/data/03
Brick9: node2:/bricks/data/03 (arbiter)
Brick10: node0:/bricks/data/04
Brick11: node1:/bricks/data/04
Brick12: node2:/bricks/data/04 (arbiter)
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

[node0] # gluster volume status
Status of volume: data
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node0:/bricks/data/01                 49152     0          Y       4595 
Brick node1:/bricks/data/01                 49152     0          Y       1022 
Brick node2:/bricks/data/01                 49152     0          Y       3356 
Brick node0:/bricks/data/02                 49153     0          Y       4597 
Brick node1:/bricks/data/02                 49153     0          Y       1024 
Brick node2:/bricks/data/02                 49153     0          Y       3358 
Brick node0:/bricks/data/03                 49154     0          Y       4599 
Brick node1:/bricks/data/03                 49154     0          Y       1026 
Brick node2:/bricks/data/03                 49154     0          Y       3360 
Brick node0:/bricks/data/04                 49155     0          Y       4601 
Brick node1:/bricks/data/04                 49155     0          Y       1028 
Brick node2:/bricks/data/04                 49155     0          Y       3362 
Self-heal Daemon on localhost               N/A       N/A        Y       4604 
Self-heal Daemon on node1                   N/A       N/A        Y       1031 
Self-heal Daemon on node2                   N/A       N/A        Y       3365 
 
Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks
 
[node0] # ps aux | grep -e gluster -e RSS | cut -d ' ' -f 1-27
USER   PID %CPU %MEM   VSZ   RSS TT  STAT STARTED       TIME COMMAND
root  4604  4.0  0.7 64364 22520  -  Rs   21:15     53:50.30 /usr/local/sbin/glusterfs -s localhost --volfile-id shd/data -p
root  4585  3.0  0.7 48264 21296  -  Rs   21:14     56:13.25 /usr/local/sbin/glusterd --pid-file=/var/run/glusterd.pid (glusterfsd)
root  4597  3.0  0.7 66472 22484  -  Rs   21:15     48:54.63 /usr/local/sbin/glusterfsd -s node0 --volfile-id data.node0.bricks-data-02 -p
root  4599  3.0  0.7 62376 22464  -  Rs   21:15     48:23.41 /usr/local/sbin/glusterfsd -s node0 --volfile-id data.node0.bricks-data-03 -p
root  4595  2.0  0.8 66864 23724  -  Rs   21:15     49:03.23 /usr/local/sbin/glusterfsd -s node0 --volfile-id data.node0.bricks-data-01 -p
root  4601  2.0  0.7 62376 22444  -  Rs   21:15     49:17.01 /usr/local/sbin/glusterfsd -s node0 --volfile-id data.node0.bricks-data-04 -p
root  6748  0.0  0.1 12868  2560  2  S+   19:59      0:00.00 grep -e gluster -e

The GlusterFS data volume is now created and started. You can mount it and use it the way you like.

[node2] # mkdir /data

[node2] # kldload fusefs

[node2] # mount_glusterfs node0:/data /data

[node2] # echo $?
0

[node2] # df -h /data
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/fuse     123G    2.5G    121G     2%    /data

Voila! Mounted and ready to serve.

Tuning

GlusterFS comes without any tuning applied so I suggest something to start with.

[node0] # gluster volume set data client.event-threads 8
[node0] # gluster volume set data cluster.lookup-optimize on
[node0] # gluster volume set data cluster.readdir-optimize on
[node0] # gluster volume set data features.cache-invalidation on
[node0] # gluster volume set data group metadata-cache
[node0] # gluster volume set data network.inode-lru-limit 200000
[node0] # gluster volume set data performance.cache-invalidation on
[node0] # gluster volume set data performance.cache-refresh-timeout 10
[node0] # gluster volume set data performance.cache-size 1GB
[node0] # gluster volume set data performance.io-thread-count 16
[node0] # gluster volume set data performance.parallel-readdir on
[node0] # gluster volume set data performance.stat-prefetch on
[node0] # gluster volume set data performance.write-behind-trickling-writes on
[node0] # gluster volume set data performance.write-behind-window-size 100MB
[node0] # gluster volume set data server.event-threads 8
[node0] # gluster volume set data server.outstanding-rpc-limit 256

That is all in this rather short guide.

Treat it as an addendum to the original GlusterFS article linked earlier.

EOF