Category Archives: Uncategorized

Valuable News – 2020/10/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 Adds zstd Support to Boot Loader.
https://svnweb.freebsd.org/base?view=revision&revision=366657

FreeBSD Torrents.
https://wiki.freebsd.org/Torrents

MinIO Introduces Continuous Availability and Active-Active Bucket Replication.
https://blog.min.io/active-active-replication/

OpenZFS Developers Summit 2020 – Morning Overview.
https://klarasystems.com/articles/openzfs-developer-summit-part-1/

OpenZFS Developers Summit 2020 – Afternoon Overview.
https://klarasystems.com/articles/openzfs-developer-summit-part-2/

KDE Plasma 5.20 – New and Improved Inside and Out.
https://kde.org/announcements/plasma-5.20.0

Modelling Basic Architectures of Data Storage Systems – FreeBSD BeaST.
https://mezzantrop.wordpress.com/2020/10/14/modelling-basic-architectures-of-data-storage-systems/
https://mezzantrop.files.wordpress.com/2020/10/modelling_basic_architectures_of_data_storage_systems.pdf

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

Open Letter to Apache OpenOffice.
https://blog.documentfoundation.org/blog/2020/10/12/open-letter-to-apache-openoffice/

RoboNuggie – 10 Questions I Often Get Asked About FreeBSD.
https://www.youtube.com/watch?v=Asp-37IWmyY

BSD Now 372 – Slow SSD Scrubs.
https://www.bsdnow.tv/372

OpenBSD Laptop.
https://functionallyparanoid.com/2020/10/14/openbsd-laptop/

TrueNAS 11.3-U5 Available.
https://www.ixsystems.com/blog/library/truenas-11-3-U5/

Cryptographic Signing Using ssh-keygen(1) with FIDO Authenticator.
https://undeadly.org/cgi?action=article;sid=20201016053038

OpenBSD vmm(8) Vulnerabilities.
https://marc.info/?l=openbsd-tech&m=158176939604512&w=2

OpenBSD 6.8 Release Notes.
https://www.openbsd.org/68.html

OpenBSD 6.8 Song – Hacker People.
https://www.openbsd.org/lyrics.html#68

UDisks2 Service Implementation for FreeBSD.
https://foss.heptapod.net/bsdutils/bsdisks

NomadBSD 1.3.2 Errata.
https://nomadbsd.org/errata-1.3.2.html

OpenBSD on Dell Inspiron 1000 Laptop.
https://cromwell-intl.com/open-source/openbsd-dell.html

Dive Into FreeBSD Foundation on Its 20th Anniversary with Deb Goodkin.
https://www.buzzsprout.com/673192/5589187

FreeBSD 12.2-RC3 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2020-October/092786.html

In Other BSDs for 2020/10/17.
https://www.dragonflydigest.com/2020/10/17/25063.html

Switching Xorg Keyboard Layout on OpenBSD.
https://www.tumfatig.net/20201017/switching-xorg-keyboard-layout-on-openbsd/

The open-vm-tools on FreeBSD under VMware ESXi ARM Fling.
https://vincerants.com/open-vm-tools-on-freebsd-under-vmware-esxi-arm-fling/

LibreSSL 3.2.2 Released.
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.2.2-relnotes.txt

Visual Studio Code Running on HardenedBSD.
https://twitter.com/lattera/status/1317868272293974017

JuliaMono – Monospaced Font for Scientific and Technical Computing.
https://cormullion.github.io/pages/2020-07-26-JuliaMono/

FreeBSD Chromium Alternative.
https://www.youtube.com/watch?v=ww8Co5IxNrg

State of Tribblix in 2020.
https://ptribble.blogspot.com/2020/10/the-state-of-tribblix-2020.html

OpenZFS 2.0 Exciting New Future.
http://storagegaga.com/openzfs-2-0-exciting-new-future/

Hardware

Imagination Announces B-Series GPU IP – Scale Up with Multi GPU.
https://www.anandtech.com/show/16155/imagination-announces-bseries-gpu-ip-scaling-up-with-multigpu/

AMD ZEN 3 – AnandTech Interview with AMD CTO Mark Papermaster.
https://www.anandtech.com/show/16176/amd-zen-3-an-anandtech-interview-with-cto-mark-papermaster

Crucial P5 1TB NVMe SSD Review.
https://www.servethehome.com/crucial-p5-1tb-nvme-ssd-review/

Best 4TB SSD for 2020 (M.2/NVMe/2.5/SATA/External).
https://premiumbuilds.com/storage/best-4tb-ssd/

Life

NSA Surveillance Program Was Illegal and It Did Not Stop Single Terrorist Attack.
https://tutanota.com/blog/posts/nsa-phone-surveillance-illegal-expensive/

New Mind Control – How Internet Flips Elections and Alters our Thoughts.
https://aeon.co/essays/how-the-internet-flips-elections-and-alters-our-thoughts

Reading Too Much Political News is Bad for Your Well Being.
https://www.theatlantic.com/family/archive/2020/10/reading-too-much-political-news-bad-happiness/616651/

Other

2.1 Million of Oldest USENET Internet Posts Are Now Online for Anyone to Read.
https://www.vice.com/en/article/pky7km/usenet-archive-utzoo-online

Which Programming Languages Use Least Electricity?
https://thenewstack.io/which-programming-languages-use-the-least-electricity/

LPAR2RRD 7.00 Available.
https://lpar2rrd.com/AWS-Azure-GCloud.php

STOR2RRD 7.00 Available.
https://stor2rrd.com/Ceph-Synology-Qumulo-RAIDIX-Inspur.php

EOF

FreeBSD GNOME 3 Fast Track

This article is dedicated to Abraham Joseph who recently asked me if I could make an article on how to configure GNOME 3 on FreeBSD 12.2. At the moment 12.2-RC3 version is available so that is what I used but it will be the same on FreeBSD 12.2-RELEASE (or 12-STABLE). All commands here are executed as root user.

Here is the Table of Contents for this article.

  • Install
  • Connection to Internet
    • LAN with DHCP
    • LAN with Static IP Address
    • WIFI
    • DNS
  • Packages
  • Settings
  • GNOME 3
  • Fix the Icons
  • Rest of the Setup

Install

First you will have to install FreeBSD. You may use FreeBSD Handbook or one of my guides – Install FreeBSD 12 – available here.

Connection to Internet

Then after booting to new system you need to get connectivity to the Internet. If its LAN connection then its pretty fast. Its for em0 interface.

LAN with DHCP

# ifconfig em0 up
# dhclient em0

… assuming that you are on the LAN network with DHCP enabled.

To make it permanent put below line to the /etc/rc.conf file.

ifconfig_em0="DHCP"

LAN with Static IP Address

If not then execute these for static IPv4 connection on your em0 interface.

First add these two lines to the /etc/rc.conf file.

ifconfig_em0="inet 10.0.10.80/24 up"
defaultrouter="10.0.10.1"

This is how you /etc/rc.conf file should look like now assuming that you want 10.0.10.80/24 IP address and 10.0.10.1 gateway.

# grep -A 1 ifconfig /etc/rc.conf
ifconfig_em0="inet 10.0.10.80/24 up"
defaultrouter="10.0.10.1"

Then restart the netif and routing services.

# /etc/rc.d/netif restart
# /etc/rc.d/routing restart

WIFI

If you want to use WiFi to connect to the Internet then its slightly more typing. On my system I have iwn0 wireless card so that is what I will use here. The SSID is the name of your WiFi network and PSK is password for that network.

# sysctl -n net.wlan.devices
iwn0
# ifconfig wlan0 create wlandev iwn0
# wpa_passphrase SSID PSK >> /etc/wpa_supplicant.conf
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
// wait for CONNECTED state and hit [CTRL]-[Z]
# bg
# dhclient wlan0

To make it permanent across reboots add these to /etc/rc.conf file. I assume that information about your network is already in the /etc/wpa_supplicant.conf file generated by the wpa_passphrase(8) command above.

wlans_iwn0=wlan0
ifconfig_wlan0="WPA SYNCDHCP"

DNS

Last but not least you also need DNS. Put your favorite here or just paste the one below.

# echo nameserver 1.1.1.1 > /etc/resolv.conf

Packages

We will now switch to the latest branch or pkg(8) repository and install needed gnome3 and xorg packages.

# sed -i '' s/quarterly/latest/g /etc/pkg/FreeBSD.conf

# grep /latest /etc/pkg/FreeBSD.conf
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",

# pkg install -y gnome3 xorg

# pkg stats | head -3
Local package database:
        Installed packages: 523
        Disk space occupied: 3 GiB

Settings

Now you need to add ‘yourself’ to wheel and video groups.

# pw groupmod video -m yourself

# pw groupmod wheel -m yourself

GNOME 3 can not live without the /proc filesystem.

# cat << EOF >> /etc/fstab
proc  /proc  procfs  rw  0  0
EOF

Enable needed services.

# sysrc dbus_enable=YES

# sysrc hald_enable=YES

# sysrc gdm_enable=YES

# sysrc gnome_enable=YES

Enable EVDEV support.

# cat << EOF >> /etc/sysctl.conf
kern.evdev.rcpt_mask=6
EOF

Make the boot process faster and more clean.

# cat << EOF >> /boot/loader.conf
autoboot_delay=2
boot_mute=YES
EOF

Done. Now you can reboot into your new GNOME 3 system on FreeBSD.

# reboot

GNOME 3

Your GNOME 3 desktop is now ready and you can login. For the purpose of this article I used asd user.

gnome-0-gdm

gnome-1-gdm

gnome-2-desktop

gnome-3-menu

gnome-4-apps

The default font sizes on GNOME 3 are way too big for me so I tweaked them to 0.8 scale as shown on last screenshot. I also set the font in Terminal app to Monospaced.

Fix the Icons

As you probably saw on the screenshots above the buttons on the windows are broken. There is very simple fix for that. Like shown below on the screenshots first open the Tweak Tool. Then go to Appearance page. The 3rd item from top on the right panel (under the Themes sign) is Icons – please set it to Gnome.

gnome-5-tweak

gnome-6-appearance

gnome-7-icons

gnome-8-fixed

Viola! Now all icons look properly now.

Rest of the Setup

Now there are some things that will need be addressed.

Like with the drawing below, you have just drawn the circles ๐Ÿ™‚

owl

Just kidding ๐Ÿ™‚

Add your favorite applications with pkg(8) like LibreOffice or Firefox for example.

If you run GNOME 3 on a laptop, then I would suggest adding net-mgmt/networkmgr package to get Networkmgr networking manager from GhostBSD.

I would also suggest using some of the FreeBSD Desktop series articles for the completeness of your GNOME 3 setup. If you need to tweak X11 then check X11 Window System part. I would also suggest visiting Configuration – Fonts & Frameworks for fonts fine tuning. If you want to have automatic mounting of removable media (and you probably do) then check Configuration – Automount Media part. If its laptop then tuning the power management will give you extra battery time. Check the details at The Power to Serve – FreeBSD Power Management part. As you are using GNOME 3 you may want to check Dash to Dock plugin or use Plank described in the Configuration – Plank – Skippy-XD part. If you did not liked the net-mgmt/networkmgr package (Networkmgr from GhostBSD) you may want to try my network.sh solution – FreeBSD Network Management with network.sh – described here.

Not sure what else I can add here as I do not use GNOME 3 daily.

EOF

Oldschool Gaming on FreeBSD

When was the last time you played a computer game? I really like one of Benjamin Franklin quotes – “We do not stop playing because we grow old, we grow old because we stop playing.” – he lived in times where computer games did not existed yet but the quote remains current. I do not play games a lot, but when I do I make sure that they are the right and best ones. They are often games from the past and some of these games just do not age … they are timeless actually. Today I will show you some oldschool gaming on FreeBSD system.

Here is the Table of Contents for the article.

  • Native Games
    • Native Console/Terminal Games
      • Interactive
      • Passive
    • Native X11 Games
  • AMIGA Games
  • DOS Games
    • Fourteen Years Later
  • Windows Games
  • Flash/SWF Games
  • Web Browser Games
  • Last Resort
  • Closing Thoughts

Here is my Openbox ‘games’ menu.

openbox-games-menu

Discussions and comments from ‘external’ sources are available here:

Native Games

First we will start with ‘native’ games on FreeBSD – as of today there are more then thousand games available in the FreeBSD Ports collection.

% ls /usr/ports/games | wc -l
    1130

You can get nice description for each of these games (from the pkg-descr file) by using the below command. I assume that your FreeBSD Ports tree is under /usr/ports directory.

% for I in /usr/ports/games/*/pkg-descr
> do
>   echo ${I}
>   echo
>   cat ${I}
>   echo
>   echo
>   echo
> done \
>   | grep \
>       --color=always \
>       -A 100 \
>       -E "^/usr/ports/games/.*/pkg-descr" \
>   | less -R

Here is the one-liner that you can actually copy and paste into your terminal.

% for I in /usr/ports/games/*/pkg-descr; do echo ${I}; echo; cat ${I}; echo; echo; echo; done | grep --color=always -A 100 -E "^/usr/ports/games/.*/pkg-descr" | less -R

Here is how it looks.

native-ports-list

This way you can browse (and search in less(1) command) for interesting titles.

Native Console/Terminal Games

Interactive

Lets start with the most simple games – the text games played in terminal. I play only two of these and they are 2048 and ctris games.

The 2048 is generally a single C file – 2048.c – from here – https://github.com/mevdschee/2048.c/blob/master/2048.c – you need to compile it with the cc(1) command – like that.

% cc -o 2048 2048.c
% ./2048

game-2048

The other one ctris is available in the FreeBSD Ports or you can add it by package with pkg(8) command.

# pkg install -y ctris

game-ctris

There are also several other terminal games like Tetris in the FreeBSD Ports – they are bsdtris or vitetris ones for example.

Passive

The are also terminal ‘non-interactive’ games (or maybe I should call them terminal screensavers alternatively).

My favorite two are cmatrix and pipes. The first one is available from FreeBSD Ports.

IMHO it looks best when launched this way.

% cmatrix -a -b -u 6 -C blue

game-cmatrix

Some time ago I ‘ported’ or should I say modified the pipes so it will work properly on FreeBSD and its available from – https://github.com/vermaden/pipes/blob/master/pipes.sh – here.

game-pipes

Native X11 Games

Time to move to some more graphically appealing games – the X11 games.

One of the better open source games it the Battle for Wesnoth which is also available in the FreeBSD Ports so adding package it easy.

# pkg install -y wesnoth

game-wesnoth

AMIGA Games

Most AMIGA games have been ported to DOS and its generally more convenient and a lot faster to play the DOS ‘ports’ using dosbox(1) instead of playing their original AMIGA versions under fs-uae(1) emulator. Some games like Sensible World of Soccer are better in original AMIGA version (little larger field view for example in the AMIGA version – but that only makes the DOS game little harder as you see less) then in DOS port but still the difference is not that huge to wait for each game start roughly 60 seconds with fs-uae(1) and manually switching virtual floppies.

swos-amiga-dos-xbla

As you can see on the far right the Sensible World of Soccer game has been even ported to the Microsoft XBOX console – SWOS – available here ๐Ÿ™‚

There is however (at least) one AMIGA game that has not been ported to DOS and its made by the legendary TEAM17 studio. Its the All Terrain Racing game. When you check its reviews back when it was released it did not get that high scores as Sensible World of Soccer for example but its one of the better looking and fun racing games made for AMIGA. But Sensible World of Soccer was named one of The 10 Most Important Video Games of All Time on 2007 so it really hard to beat that. Even Sensible Gold got a lot worse reviews.

game-atr

Originally it came in two floppies version so everytime you will launch this game in fs-uae(1) you will need to change the virtual floppy … which is real PITA I must say … not to mention 60 seconds of waiting for it to start. But there is other possibility. The All Terrain Racing game was also created for the AMIGA CD32 variant which used CD-ROM discs instead of floppies. That way by loading single ISO file you do not need to switch floppies anymore each time the game starts. Yay!

Fortunately the fs-uae(1) config for All Terrain Racing game is not long or complicated either.

fs-uae

The fs-uae(1) is also easily installable on FreeBSD by using packages.

# pkg install -y fs-uae

As the All Terrain Racing game is started/loaded from ISO file the save/load game state is not made ‘natively’ in the game but level up above – in the fs-uae(1) itself with SAVE STATE and LOAD STATE options as shown below.

game-atr-save-load

Not all AMIGA games are available as CD32 version but one may also use virtual Hard Disk option on the fs-uae(1) emulator to avoid switching floppies.

DOS Games

The DOS games can be very conveniently played by using the DOSBox which is available on FreeBSD as dosbox packages (or port).

# pkg install -y dosbox

Games in DOSBox start very quickly which is very nice. They also run very smoothly.

dosbox

Like you see I prefer to keep my games outside of the ~/.doxbox directory while keeping only configuration files there. But that is just ‘organizational’ choice. Make your own choices how and where to keep the games that suits you best.

Its also very convenient to redefine all keyboard shortcuts with DOSBox builtin keyboard remapper. For example instead of default [CTRL] for ‘FIRE’ button in Sensible World of Soccer I prefer to use [Z] key instead and that is my only mapping currently.

dosbox-keys

Keep in mind that as the DOSBox main config file is kept as ~/.dosbox/dosbox-${VERSION}.conf file (its ~/.dosbox/dosbox-0.74-3.conf as of time of writing the article) the remapped keyboard shortcuts as kept in the ~/.dosbox/mapper-${VERSION}.map file (its ~/.dosbox/mapper-0.74-3.map as of time of writing the article). Also keep in mind that if you will start dosbox in ~ (home) dir and not in ~/.dosbox~dir then dosbox will creates ~/mapper-0.74-3.map file (in your home dir) instead of proper ~/.dosbox/mapper-0.74-3.map place.

I also made script wrappers for each game so I can launch them quickly both from command line or by using dmenu.

scripts-games

You will find them all as games-* scripts in my GitHub repository – https://github.com/vermaden/scripts – available here. The DOSBox configuration files are in the dosbox dir on the same repo – https://github.com/vermaden/scripts/tree/master/dosbox – here.

My favorite DOS (originally from AMIGA) game is Sensible World of Soccer. I also like to play first Settlers game and Theme Hospital occasionally.

The DOSBox also allows you to easily record both audio (into WAV files) and video (into AVI files) with keyboard shortcuts.

For example I have recorded replay of my Sensible World of Soccer goals this way (then converted it to GIF using ffmpeg(1) for this).

SWOS Goals.

This is the ffmpeg(1) spell that I used to convert the DOSBox made AVI file to GIF file.

% ffmpeg -i ~/.dosbox/capture/sws_eng_001.avi -vf "fps=30" -loop 0 swos.goals.gif

Keep in mind that some games – and Sensible World of Soccer is one of these games – have more then one graphical mode to run them. When you start the game without any switches then it starts in low graphics mode which is easy to spot on by looking at pixelated/dotted ‘S‘ logo on the top right corner. The lines on the field are also not antialiased.

game-swos-not-full

When you add /f flag to the Sensible World of Soccer binary then it starts in full graphics mode and the ‘S‘ letter has now solid grey color on the back and lines on the field are also antialiased now.

game-swos-full
Here is how it looks in the DOSBox config file.

[autoexec]
@echo off
mount C: ~/.dosbox
C:
cd swos-SFX
sws_eng.exe /f

The Sensible World of Soccer has a special place in my private games ‘Hall of Fame’. Its the only game that I was able to play straight for 26 hours with breaks only for meals and pee … but that was in the old AMIGA times in the 90s.

Fourteen Years Later

One of the very old but also very nice logic games I played two decades ago was Swing game. I was not able to start this game in ‘normal’ mode as it started in ‘network’ mode each time. While searching for a possible solution I found … my own bug on DOSBox created 14 years agohttps://www.dosbox.com/comp_list.php?showID=2499 – here. I was not able to force the Swing game to start in ‘normal’ mode back then so I ‘marked’ it as ‘non working’ and moved on.

Now when I checked the bug report I see useful solutions to the problem. Pity I am not able to login and ‘thank’ as I do not remember my password and DOSBox page does not offer password reset service.

Seems that Swing needs to have its game directory mounted again as CD-ROM device. That way Swing starts in ‘normal’ mode and local Single and Multi Player games are now possible.

game-swing

The most important part of DOSBox config is here:

[autoexec]
@echo off
mount C ~/.dosbox
mount D ~/.dosbox/swing -t cdrom -usecd 0
C:
cd swing
swing.bat

Windows Games

Good old WINE. On FreeBSD there are two WINE versions. There is 64bit version as emulators/wine package and 32bit version names emulators/i386-wine. You want to use the latter because most games are 32bit and the 64bit version of WINE is not able to run them 32bit games. The installation on FreeBSD is typical as shown below.

# pkg install i386-wine

Old/classic Windows games usually keep your saved games directly in their installation folders under dirs named ‘SAVE’ or ‘SAVEDGAMES’ but in some time between 2005 and now the game developers started to think that its a ‘great’ idea to store them in your ‘My Documents’ directory … I do not have to tell you how I fell about that ‘decision’ but on FreeBSD it means that you will have saved games directories created directly in your ~ home directory (its /home/vermaden in my case) directory. What a mess.

winecfg

That is probably the only thing I configure in WINE on FreeBSD with winecfg – I set ‘My Documents’ location to ~/games.EXTRACT/profile directory instead.

The DOSBox is also better for gaming then WINE because it allows convenient [ALT]+[ENTER] shortcut to switch between fullscreen and windowed modes. With WINE I need to keep two game ‘startup’ scripts. Separate ones for windowed mode and for fullscreen mode.

wine-window-fullscreen

Below is an example of Colin McRae Rally 2.0 game under WINE on FreeBSD.

game-colin

My best time for Stage 1 on Italy was ‘only’ 2:09.84 so I was not fast enough to beat the all time best with 2:05:75 immortalized here – https://youtu.be/iLLMIJzpoVk – on YouTube.

Other classic – original Baldur’s Gate game below. It was possible to dual class into specialist mage – not possible now in Enhanced Edition.

game-baldurs-bg1

More up to date Baldur’s Gate: Enhanced Edition also works well.

game-baldurs-play

Less popular titles like Lionheart: Legacy of the Crusader also work well under WINE on FreeBSD. Very unusual game as it used the S.P.E.C.I.A.L system from Fallout instead of ‘typical’ choice like Advanced Dungeons and Dragons like in other Black Isle games.

game-lionheart-play

If for some reason your game does not work under WINE on FreeBSD then you should try Project Homura solution. Its also available as games/homura package (or port) on FreeBSD.

Flash/SWF Games

As I really hate Adobe Flash technology when browsing the web pages but I quite like the compact SWF files as simple flash games using WINE and Flash Player Projector from Adobe. I also use WINE to start the Windows version of that Flash Player Projector program. Its available here – https://www.adobe.com/support/flashplayer/debug_downloads.html – in the debug downloads.

You can pick one of these two but I use the first one.

An example of Governor of Poker 2 game running in the Flash Player Projector under WINE.

game-poker

All of these games can be found on various sites Flash games by looking in the View Page Source in your browser and looking for the link to the SWF file. I can not post these games here for download but if you will have problem finding them then let me know ๐Ÿ™‚

Web Browser Games

A class of games that are played directly in the web browser. Examples of such games can be Krunker

game-krunker

… or Spelunky for example.

game-spelunky

If you are VERY bored then you can also try the Chrome Dinosaur Game built into the Chromium browser. To access it try to open the page that does not exists like http://non-existing-site.com for example.

game-chromium

The Chromium browser will then display No Internet error message. Press [UP] arrow now and start to play.

game-chromium-end

If you liked the 2048 game and you DO have Internet connection you may also play 2048 directly at DuckDuckGo page.

game-duck-2048

Last Resort

Sometimes WINE does not work and the game is available only for Windows or Linux. The solution is to use the Virtualbox here. Remember to select/enable the 3D acceleration and install Virtualbox Guest Additions for good performance.

virtualbox

Closing Thoughts

All of these games were played smoothly on oldschool Intel HD Graphics 3000 card from 2011 Sandy Bridge CPU model i7-2820QM as this is with what my ThinkPad W520 came.

If I forgot to post something or its not obvious then feel free to let me know. This post as usual grow more then it should ๐Ÿ™‚ Also if you think that I missed some important dosbox(1)/wine(1)/fs-uae(1) options then let me know please.

EOF

Valuable News – 2020/10/12

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 Implements Sparse Core Dumps – Reduces Size of Some Programs by Factor 10.
https://reviews.freebsd.org/rS366368

Back to the Future – Unix Wildcards Gone Wild.
https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt

Nextcloud Now Has Unified Search.
https://nextcloud.com/unified-search/

FreeBSD Case Study – Netflix.
https://freebsdfoundation.org/blog/freebsd-case-study-netflix/

20 Years of FreeBSD Foundation – Interview with Deb Goodkin (Executive Director).
https://fossbytes.com/deb-goodkin-executive-director-freebsd-foundation-interview/

SoloBSD is Back Now Based on FuryBSD with XFCE and MATE Flavours.
https://twitter.com/DarkMuon/status/1313586474613432320

Recover FreeBSD Loader from UEFI/BIOS Upgrade.
https://bsdimp.blogspot.com/2020/10/how-to-recover-from-bios-upgrade.html

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

Unix Wars.
https://www.livinginternet.com/i/iw_unix_war.htm

Datacenter of Future – Powered by ARM and FreeBSD.
https://klarasystems.com/arm-development/

FreeBSD ARM64 Desktop Running Inside VMware ESXi ARM on Raspberry Pi 4.
https://twitter.com/DarkainMX/status/1313986285292249088

BSD Now 371 – Wildcards Running Wild.
https://www.bsdnow.tv/371

GNU GDB Debugger and NetBSD – Part 5.
https://blog.netbsd.org/tnf/entry/the_gnu_gdb_debugger_and4

Introduction of New FreeBSD Remote Process Plugin in LLDB.
https://www.moritz.systems/blog/introduction-of-a-new-freebsd-remote-process-plugin-in-lldb/

BastilleBSD – Native Container Management for FreeBSD.
https://fibric.hashnode.dev/bastillebsd-native-container-management-for-freebsd

FreeBSD Fridays – Introduction to Jails.
https://www.youtube.com/watch?v=hQmOc0egcl4

Bye Bye Apple.
http://blog.cretaria.com/posts/bye-bye-apple.html

Towards Oblivious Sandboxing with Capsicum. (2017)
https://www.engr.mun.ca/~anderson/publications/2017/towards-oblivious-sandboxing.pdf

Comparison of Unix (Linux/FreeBSD/OpenBSD) Sandboxing Techniques. (2017)
https://www.engr.mun.ca/~anderson/publications/2017/sandbox-comparison.pdf

Memory Safe curl for More Secure Internet.
https://www.abetterinternet.org/post/memory-safe-curl/

FreeBSD 12.2-RC2 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2020-October/092761.html

In Other BSDs for 2020/10/10.
https://www.dragonflydigest.com/2020/10/10/25026.html

SerenityOS – Second Year of Graphical Unix Like OS for Desktop Computers.
http://serenityos.org/happy/2nd/

FreeBSD on ESXi ARM Fling – Fixing Virtual Hardware.
https://vincerants.com/freebsd-on-esxi-arm-fling-fixing-virtual-hardware/

The pkgsrc 2020Q3 Released.
https://bsdsec.net/articles/pkgsrc-2020q3-released

How to Open Source – Going from NetBSD to Linux.
https://www.geeklan.co.uk/?p=2542

OpenSMTPD and Dovecot with Shared PostgreSQL/Sieve/RSpamd on OpenBSD 6.6.
https://uberblo.gs/2020/04/opensmtpd-dovecot-with-a-shared-postgresql-sieve-and-rspamd-on-openbsd

HELLO for Creators with Focus on Simplicity/Elegance/Usability Based on FreeBSD.
https://github.com/helloSystem/hello

Hardware

Building Silent Mini ITX PC.
https://www.fanlesstech.com/2020/10/building-silent-mini-itx-pc.html

AMD Ryzen 5000 and ZEN 3 with +19% IPC – Best Gaming CPU.
https://www.anandtech.com/show/16148/amd-ryzen-5000-and-zen-3-on-nov-5th-19-ipc-claims-best-gaming-cpu

OnLogic N3350 Pico ITX Motherboard.
https://www.fanlesstech.com/2020/10/onlogics-n3350-pico-itx-motherboard-now.html

Life

Mental Disorders as Typography.
https://www.boredpanda.com/mental-disorders-in-typography/

Good Sleep – Good Learning – Good Life – Piotr Wozniak. (2018)
https://supermemo.guru/wiki/Good_sleep,_good_learning,_good_life

Bring Back the Ease of 80s and 90s Personal Computing.
https://medium.com/@probonopd/bring-back-the-ease-of-80s-and-90s-personal-computing-393738c5e2a1

Other

I Built Lay Down Desk.
https://blog.luap.info/drafts/i-built-a-lay-down-desk.html

VMware – Offensive Terminology Effort.
https://www.theregister.com/2020/07/23/vmware_offensive_terminology_style_guide/

Google Sues Me for Using Word droid in My Company Name Orpheusdroid.
https://www.team-bhp.com/forum/shifting-gears/227923-google-sues-me-using-word-droid-my-company-name-orpheusdroid.html

AMD Radeon Graphics Driver Takes 10.5% of Linux Kernel.
https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.9-AMDGPU-Stats

EOF

Valuable News – 2020/10/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

Setup relayd on OpenBSD.
https://puffy.nolink.ch/posts/relayd/

Wayland on NetBSD – Trials and Tribulations.
https://blog.netbsd.org/tnf/entry/wayland_on_netbsd_trials_and

Looking at IceWM 1.8.3 on FreeBSD.
https://www.youtube.com/watch?v=x7aFbaag-OQ

FreeNAS 11.3-U5 Available.
https://www.ixsystems.com/blog/library/freenas-11-3-u5/

TrueNAS Core 12 Install and Basic Setup.
https://www.youtube.com/watch?v=WjLaK8yQAag

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

In Defense of XML.
https://blog.frankel.ch/defense-xml/

New Features in FISH Shell.
https://lwn.net/SubscriberLink/832429/5a786cc0fed26353/

Tribblix 0m23.1 Prerelease.
https://tribblix.blogspot.com/2020/09/changes-in-0m231-prerelease.html

Meet present – Terminal Based Presentation Tool.
https://present.readthedocs.io/en/latest/

Check pmenu (ฯ€menu) – Pie Menu Utility for X11.
https://github.com/phillbush/pmenu

BSD Now 370 – Testing Shutdown.
https://www.bsdnow.tv/370

FreeBSD Subversion to Git Migration – Part 2 – Primer for Users.
https://bsdimp.blogspot.com/2020/10/freebsd-git-primer-for-users.html

OpenZFS 2.0-RC3 Released.
https://www.phoronix.com/scan.php?page=news_item&px=OpenZFS-2.0-RC3-Released

Using zadm Utility on OmniOS to Create Sparse Zone from Template.
https://omniosce.org/article/zadm-sparse

Test of Linux ABI on FreeBSD.
https://www.youtube.com/watch?v=ejnjae4Veb4

Making QR Codes Using FreeBSD.
https://www.youtube.com/watch?v=XjHxMlOSi60

LLDB Debugger Improvements for FreeBSD.
https://www.moritz.systems/blog/lldb-debugger-improvements-for-freebsd/

Illumos OpenIndiana Vagrant Boxes Updated.
https://app.vagrantup.com/openindiana/boxes/hipster

FreeBSD 12.2-RC1 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2020-October/092740.html

In Other BSDs for 2020/10/03.
https://www.dragonflydigest.com/2020/10/03/25013.html

KARL Aware Rootkit for OpenBSD 6.7.
https://github.com/linuxthor/kark

Bacula Configuration – Part I – Director – FreeBSD.
https://www.pbdigital.org/freebsd/bacula/2019/05/13/bacula-config-part-I-freebsd.html

Bacula Configuration – Part II – Storage – FreeBSD.
https://www.pbdigital.org/freebsd/bacula/2019/05/27/bacula-config-part-II-freebsd.html

Bacula Configuration – Part III – Clients – FreeBSD.
https://www.pbdigital.org/freebsd/bacula/2019/06/10/bacula-config-part-III-freebsd.html

Bacula Configuration – Part IV – Backups – FreeBSD.
https://www.pbdigital.org/freebsd/bacula/2019/06/24/bacula-config-part-IV-freebsd.html

Bacula Configuration – Part V – Media – FreeBSD.
https://www.pbdigital.org/freebsd/bacula/2019/07/08/bacula-config-part-V-freebsd.html

Bacula Data Encryption.
https://www.pbdigital.org/bacula/ssl/2020/05/25/bacula-data-encryption.html

Bacula TLS Encryption.
https://www.pbdigital.org/bacula/tls/2020/05/11/bacula-tls-encryption.html

Bacula 9.4 Installation with PostgreSQL 11.5 – FreeBSD 12.0.
https://www.pbdigital.org/freebsd/bacula/2019/12/23/bacula9-freebsd120.html

Simple DNS Administration with NSD and Unbound – OmniOS.
https://www.pbdigital.org/omniosce/dns/nlnetlabs/2020/08/31/nlnetlabs-nsd-unbound-omnios.html

IPS Packaging – Part I – OmniOS.
https://www.pbdigital.org/omniosce/packaging/2020/03/02/apache-compile-omniosce.html

IPS Packaging – Part II – OmniOS.
https://www.pbdigital.org/omniosce/packaging/2020/03/16/apache-packaging-omniosce.html

The omnios-extra Build System – Part III – OmniOS.
https://www.pbdigital.org/omniosce/packaging/2020/03/30/extra-builds-omniosce.html

ShellWeb Minimalistic HTTP Server Based on OpenBSD ksh(1) and nc(1).
https://github.com/grayed/shellweb

Hardware

Best SSDs – 2020/09.
https://www.anandtech.com/show/9799/best-ssds

ASRock Rack 1U10E-ROME/2T – AMD EPYC 1U 10x NVMe Server.
https://www.servethehome.com/asrock-rack-1u10e-rome-2t-review-amd-epyc-1u-10x-nvme-server/

ARM Announces Cortex-A78AE CPU – Mali-G78AE GPU – Mali-C71AE ISP.
https://www.cnx-software.com/2020/09/30/arm-announces-cortex-a78ae-cpu-mali-g78ae-gpu-mali-c71ae-isp-for-autonomous-automotive-industrial-applications/

Discovery – User Manual of Oldest Surviving Computer (Zuse Z4) in World.
https://www.osnews.com/story/132400/discovery-user-manual-of-the-oldest-surviving-computer-in-the-world/

What is Best Dumb TV without Smart Features?
https://pointerclicker.com/best-dumb-tv/

Life

Won’t Subscribe.
https://www.tbray.org/ongoing/When/202x/2020/09/25/Subscription-Overload

My Wife Recently Passed Away. I Build Her Giant Bookshelf She Always Wanted.
https://imgur.com/a/rL5Z6Sd

We Learn Faster When We Are Not Told What Choices to Make.
https://www.scientificamerican.com/article/we-learn-faster-when-we-arent-told-what-choices-to-make/

French Bar Owners Arrested for Offering Free WiFi without Keeping Logs.
https://www.cozyit.com/french-bar-owners-arrested-for-offering-free-wifi-but-not-keeping-logs/

Other

Hackers Jailbreak Apple T2 Security Chip.
https://reportcybercrime.com/hackers-jailbreak-apples-t2-security-chip-powered-by-bridgeos/

Windows XP and Windows Server 2003 Compiled from Leaked Source Code.
https://www.bleepingcomputer.com/news/microsoft/windows-xp-and-server-2003-compiled-from-leaked-source-code/

European Union Wants to Force OEMs to Let Users Uninstall Bloatware from Android Smartphones.
https://www.osnews.com/story/132398/the-european-union-wants-to-force-oems-to-let-users-uninstall-bloatware/

Video – C Programming on MacOS System 6 – Intro.
https://jcs.org/2020/10/01/system_6_c

EOF

Valuable News – 2020/09/28

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 Channel on Discord.
https://discord.gg/J4GPTGz

6cord in FreeBSD – Terminal Discord.
https://www.youtube.com/watch?v=BiI5MNIhyy4

Lessons Learned from Running Postgres 13 – Better Performance/Monitoring/More.
https://pganalyze.com/blog/postgres13-better-performance-monitoring-usability

Using zadm Utility to Create LX Zone on OmniOS.
https://omniosce.org/article/zadm-lx-ubuntu-nginx-fw

Simple Shell Status Bar for OpenBSD and cwm(1) Window Manager.
https://www.tumfatig.net/20200923/a-simple-shell-status-bar-for-cwm/

OpenBSD got Availavle in FreeBSD Ports Tree.
https://www.freshports.org/devel/got/

FreeBSD Instant Workstation 2020.
https://euroquis.nl//freebsd/2020/09/17/instant-workstation.html

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

Deploy New OpenIndiana Zone with This Ansible Role.
https://github.com/olbohlen/oi-zone

DragonFly BSD 5.8.3 Released.
https://www.dragonflybsd.org/release58/?updated

PostgreSQL 13 Released.
https://www.postgresql.org/about/news/2077/
https://www.postgresql.org/docs/13/release-13.html

OpenBSD on Desktop (Part I).
https://paedubucher.ch/articles/2020-09-05-openbsd-on-the-desktop-part-i.html

OpenBSD on Desktop (Part II).
https://paedubucher.ch/articles/2020-09-12-openbsd-on-the-desktop-part-ii.html

FreeBSD Journal 2020/07-08 – Benchmarking/Tuning.
https://freebsdfoundation.org/past-issues/benchmarking-tuning/
https://cdn.coverstand.com/33057/673890/188e0c1ee96c20466f7b0e4a2fcb03efa00a9af4.pdf

BSD Now 369 – Where rc.d Belongs.
https://www.bsdnow.tv/369

Meet kb – Minimalist Knowledge Base Manager.
https://github.com/gnebbia/kb

Dualboot Windows 10 and FreeBSD UFS – Non UEFI.
https://www.youtube.com/watch?v=WxSxIQXvBME

Nix Package Manager is in FreeBSD Ports Now.
https://twitter.com/FreeBSDHelp/status/1309479039489290240
https://svnweb.freebsd.org/ports?view=revision&revision=550026

In Other BSDs for 2020/09/26.
https://www.dragonflydigest.com/2020/09/26/24985.html

NetBSD on GSoC 2020 – Curses Library Automated Testing.
https://blog.netbsd.org/tnf/entry/google_summer_of_code_2020

NetBSD on GSoC 2020 – Rump Kernel Syscall Fuzzing.
https://blog.netbsd.org/tnf/entry/google_summer_of_code_20201

OpenSSH 8.4/8.4p1 Released.
https://www.openssh.com/releasenotes.html#8.4

OmniOS Create Private Virtual Network with Zone Inside It.
https://gist.github.com/pbdigital-dot-org/966a680b79a547133bba9495a60720dc

Configure Small Mail Server on OpenBSD.
https://www.bsdhowto.ch/mxpop3.html

Default Window Manager Switched to CTWM in NetBSD.
https://blog.netbsd.org/tnf/entry/default_window_manager_switched_to

Hardware

Fungible F1 DPU for Distributed Compute.
https://www.servethehome.com/fungible-f1-dpu-for-distributed-compute/

ARM Announces Neoverse V1 and N2 Infrastructure CPUs.
https://www.anandtech.com/show/16073/arm-announces-neoverse-v1-n2

Nimbus Unveils World Highest Capacity SSD – Record Breaking 64TB.
https://www.tweaktown.com/news/74851/nimbus-unveils-worlds-highest-capacity-ssd-record-breaking-64tb/index.html

Nimbus Adds Cheaper 64 TB QLC SSDs to Complement 100 TB SSD.
https://searchstorage.techtarget.com/news/252488218/Nimbus-adds-cheaper-64-TB-QLC-SSDs-to-complement-100-TB-SSD

GemPro Enclosure for Raspberry Pi.
https://diyodemag.com/reviews/hands_on_review_gempro_enclosure_for_raspberry_pi

External Portable SSDs Review.
https://www.anandtech.com/show/16101/adata-external-and-hp-portable-ssds-2020-family-review-featuring-the-adata-se800-and-hp-p700/

MonsterLabo Beast Announced – Fanless 150W CPU and 250W GPU Power.
https://www.fanlesstech.com/2020/09/monsterlabos-beast-announced.html
https://www.monsterlabo.com/the-beast

Argon ONE M.2 Case for Raspberry Pi 4.
https://www.argon40.com/argon-one-m-2-case-for-raspberry-pi-4.html

ASRock Industrial 4X4 BOX-V1000M AMD Ryzen Mini-PC Review.
https://www.anandtech.com/show/16111/asrock-industrial-4×4-boxv1000m-ryzen-minipc-review

Life

How to Say ‘No’ for People Pleaser Who Always Says ‘Yes’.
https://www.npr.org/2020/09/15/913207918/how-to-say-no-for-the-people-pleaser-who-always-says-yes

600 Physicians Say Lockdowns Are Mass Casualty Incident.
https://www.forbes.com/sites/gracemarieturner/2020/05/22/600-physicians-say-lockdowns-are-a-mass-casualty-incident/

Open Letter from Medical Doctors and Health Professionals to Belgian Authorities and Belgian Media.
https://www.aier.org/article/open-letter-from-medical-doctors-and-health-professionals-to-all-belgian-authorities-and-all-belgian-media/

Meet Least and Most Happy People in America.
https://www.psychologytoday.com/ca/blog/high-octane-women/201109/meet-the-least-happy-people-in-america

Money Well Spent – Short Story for Engineers.
https://userweb.cs.txstate.edu/~br02/cs1428/ShortStoryForEngineers.htm

Other

Firefox 81.0 Released.
https://www.mozilla.org/en-US/firefox/81.0/releasenotes/

Firefox Nightly Adds JIT Warp Code for Greater (13-20%) JavaScript Performance.
https://www.phoronix.com/scan.php?page=news_item&px=Firefox-Nightly-JS-Warp

Wikipedia is Getting New Look for First Time in 10 Years.
https://diff.wikimedia.org/2020/09/23/wikipedia-is-getting-a-new-look-for-the-first-time-in-10-years-heres-why/

Microsoft Windows XP and 2003 Source Code Leaked Online.
https://www.osnews.com/story/132376/microsofts-windows-xp-and-windows-server-2003-source-code-leaked-online/

Universal Split Screen.
https://universalsplitscreen.github.io/

EOF

Valuable News – 2020/09/21

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 Jails Using VNETs (subscribe to download).
https://rderik.com/guides/

High Availability Router/Firewall Using OpenBSD/CARP/pfsync/ifstated.
https://dzone.com/articles/high-availability-routerfirewall-using-openbsd-car

FreeBSD 12.2-BETA1 – Solid.
https://www.youtube.com/watch?v=oa3o1qAQ1jE

NOVA – Newest Linux Filesystem Designed for Persistent Memory.
https://www.phoronix.com/scan.php?page=news_item&px=NOVA-File-System
https://people.redhat.com/~mpatocka/nvfs/INTERNALS

TrueNAS 12.0-RC1 Announced.
https://www.truenas.com/docs/hub/intro/release-notes/tn-12_0-rc1/

OmniOSce 11 r151034 – Release Notes.
https://github.com/omniosorg/omnios-build/blob/r151034/doc/ReleaseNotes.md

KDEnLive with ffplay in FreeBSD.
https://www.youtube.com/watch?v=hB6vQyH4nyE

The Power to Serve – Setting Up FreeBSD.
https://www.nxfury.com/the-power-to-serve-setting-up-freebsd

The Power to Serve – Custom Kernel Goodness on FreeBSD.
https://www.nxfury.com/the-power-to-serve-custom-kernel-goodness-on-freebsd

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

Building Web Site on Google Compute Engine with FreeBSD.
https://cromwell-intl.com/open-source/google-freebsd-tls/

FreeBSD on Google Compute Engine.
https://cromwell-intl.com/open-source/google-freebsd-tls/freebsd.html

Apache on FreeBSD – Getting Started.
https://cromwell-intl.com/open-source/google-freebsd-tls/apache-log-cache.html

HTTP/2 and PHP with Apache on FreeBSD.
https://cromwell-intl.com/open-source/google-freebsd-tls/apache-http2-php.html

Installing Dual TLS Certificates and Running TLS on Apache on FreeBSD.
https://cromwell-intl.com/open-source/google-freebsd-tls/tls-certificate.html

Best Practice for HTTP Headers for Apache on FreeBSD.
https://cromwell-intl.com/open-source/google-freebsd-tls/https-headers.html

GOT (Game of Trees) – Work in Progress Easier/Simpler GIT Replacement from OpenBSD.
https://gameoftrees.org/

In Other BSDs for 2020/09/19.
https://www.dragonflydigest.com/2020/09/19/24969.html

OpenZFS 2.0-rc2 Merged Into FreeBSD HEAD.
https://github.com/openzfs/zfs/releases/tag/zfs-2.0.0-rc2

FreeBSD Moving to Git – Why?
https://bsdimp.blogspot.com/2020/09/freebsd-subversion-to-git-migration.html

Mail Server (smtpd/dovecot/rspamd) on OpenBSD.
https://karchnu.fr/posts/2020-09-17-certificate-smtp-imap-antispam.html

FreeBSD Subversion to Git Migration – Overview.
https://www.youtube.com/watch?v=Lx9lKr_M-DI

Hardware

Microsoft Underwater Data Centre Resurfaces After Two Years.
https://www.bbc.com/news/technology-54146718

Chuwi GemiBook 13 – Gemini Lake Refresh Laptop for $299.
https://www.cnx-software.com/2020/09/15/chuwi-gemibook-13-2k-gemini-lake-refresh-laptop-sold-for-299-promo/
https://www.aliexpress.com/item/4001359557503.html

IBM Open Sources POWER A2O Core.
https://openpowerfoundation.org/openpower-foundation-introduces-ibm-hardware-and-software-contributions-at-openpower-summit-2020/

Lenovo ThinkPad X301 – Ultimate Rebuild (2019).
http://panacek.net/post/x301-rebuild/

Frankenpad X225 – ThinkPad X220 with X230 Motherboard (2019).
http://panacek.net/post/frankenpad_x225/

ARM Officially Supports Panfrost Open Source Mali GPU Driver Development
https://www.cnx-software.com/2020/09/18/arm-officially-supports-panfrost-open-source-mali-gpu-driver-development/

Precursor – Mobile Open Hardware RISC-V System on Chip (SoC) Development Kit.
https://www.crowdsupply.com/sutajio-kosagi/precursor

Why Apple II Did Not Support Lowercase Letters.
https://www.vintagecomputing.com/index.php/archives/2833/why-the-apple-ii-didnt-support-lowercase-letters

Avoid Anything from Netgear at All Costs- Requires Online Registration to Unlock Access to Local Browser UI.
https://kb.netgear.com/000062364/GC108P-GC108PP-Firmware-Version-1-0-5-8
https://twitter.com/FlorianHeigl1/status/1307682636916232192

Life

Sweden World Record in Cashlessness Reveals Hidden Risks.
https://www.bloomberg.com/news/articles/2020-09-12/sweden-s-cashless-future-reveals-a-whole-world-of-hidden-risks

Why Do So Many People Want Us Back In Office?
https://paulitaylor.com/2020/09/12/why-do-so-many-people-want-us-back-in-the-office/

Fasting Mimicking Diet Helps Chemotherapy for Breast Cancer.
https://www.nature.com/articles/s41467-020-16138-3

On the Use of Life.
http://www.daemonology.net/blog/2020-09-20-On-the-use-of-a-life.html

Other

Raspberry Pi as Local Server for Self Hosting Applications.
https://cri.dev/posts/2020-09-12-Raspberry-Pi-as-a-local-server-for-self-hosting-applications/

Cloudflare and Wayback Machine Join Forces for More Reliable Web.
https://blog.archive.org/2020/09/17/internet-archive-partners-with-cloudflare-to-help-make-the-web-more-useful-and-reliable/

Making of Sensible Soccer.
https://readonlymemory.vg/the-making-of-sensible-soccer/

RG3D – 3D Game Engine Written in Rust.
https://github.com/mrDIMAS/rg3d

EOF

Valuable News – 2020/09/14

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 Adds Intel GVT-d Support for Bhyve.
https://reviews.freebsd.org/D26209

Find Which Package Provides Given File in OpenBSD.
https://dataswamp.org/~solene/2020-09-04-pkglocate-openbsd.html

FreeBSD DRM (Graphics Stack) Report 2020/08/31.
https://lists.freebsd.org/pipermail/freebsd-x11/2020-September/026584.html

DragonflyBSD HAMMER2 Now Supports Autoexpand.
http://lists.dragonflybsd.org/pipermail/commits/2020-September/769675.html

FreeBSD Makes net.fibs in Each VNET Growable.
https://svnweb.freebsd.org/base?view=revision&revision=364465

The pkgsrc Developer Monotony.
https://bentsukun.ch/posts/pkgsrc-toil/

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

Browsable Snapshots with ZFS.
https://theorangeone.net/posts/zfs-browsable-snapshots/

Sync Your Files Over P2P Network with Resilio Sync.
https://www.maketecheasier.com/sync-files-over-p2p-network-with-resilio-sync/

OpenBSD DNS Server with unbound and nsd (2019).
https://jamsek.dev/posts/2019/Jul/28/openbsd-dns-server-with-unbound-and-nsd/

Figure Out OpenBSD Packages Dependencies with pkg_depts Tool.
https://github.com/mpfr/pkg_depts

BSD Now 367 – Changing Jail Datasets.
https://www.bsdnow.tv/367

Tarsnap – Cleaning Up Old Backups.
https://dan.langille.org/2020/09/10/tarsnap-cleaning-up-old-backups/

GNU GDB Debugger and NetBSD – Part 4.
https://blog.netbsd.org/tnf/entry/the_gnu_gdb_debugger_and3

Shell Tutorial for Absolute Beginners.
https://kamila.is/teaching/shell/

Install FreeBSD GUI by Compilation from Ports.
https://www.youtube.com/watch?v=RYZtDq8PYqQ

Introduction to Hardware Hacking on FreeBSD with Raspberry Pi.
https://www.youtube.com/watch?v=OZKImUtlGl0
https://adventurist.me/presentations/freebsdandraspberrypi-ffstream/freebsdandraspberrypi-ffstream.html

In Other BSDs for 2020/09/12.
https://www.dragonflydigest.com/2020/09/12/24939.html

Update to FreeBSD ure(4) Realtek RTL8152/RTL8153 Driver from ~90Mbps to 950Mbps.
https://svnweb.freebsd.org/base?view=revision&revision=365648

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

FreeBSD 12.2-BETA1 Now Available.
https://lists.freebsd.org/pipermail/freebsd-stable/2020-September/092680.html

Aggressive pf(4) Configuration for SSH Protection.
https://blog.thechases.com/posts/bsd/aggressive-pf-config-for-ssh-protection/

New Oshogbo Project – zedfs.com – News and Tutorials about ZFS.
https://oshogbo.vexillium.org/blog/80/
https://zedfs.com

New XigmaNAS 12.1.0.4.7743 Release Available.
http://sourceforge.net/projects/xigmanas/files/XigmaNAS-12.1.0.4/12.1.0.4.7743/

Install OpenBSD on Raspberry Pi 4.
https://www.sudopigeon.com/raspberry-pi/os-install-installing-openbsd-on-a-raspberry-pi-4/

Tuning PostgreSQL on ZFS.
https://pg.uptrace.dev/zfs/

Interprocess Communication in FreeBSD 11 – Performance Analysis.
https://arxiv.org/abs/2008.02145
https://arxiv.org/pdf/2008.02145.pdf

MidnightBSD Developer Journal – webcam.
https://www.justjournal.com/users/mbsd/entry/33807

Hardware

AMD PSB Vendor Locks EPYC CPUs for ‘Enhanced Security’ at Cost.
https://www.servethehome.com/amd-psb-vendor-locks-epyc-cpus-for-enhanced-security-at-a-cost/

LTO9 Specs Released with 18 TB Raw and 45 TB Compressed.
https://www.lto.org/2020/09/a_the-lto-program-releases-specifications-for-upcoming-generation-9/

Armari Magnetar X64T Workstation – 64 Cores of AMD EPYC All Sustained at 4.0 GHz.
https://www.anandtech.com/show/16070/a-rendering-powerhouse-the-armari-magnetar-x64t-workstation-with-4-ghz-allcore-threadripper-3990x

AMD Based 6W Lenovo ThinkCentre M75n Available.
https://www.fanlesstech.com/2020/09/thinkcentre-m75n-iot-available.html

Axiomtek PICO317 Fanless Atom x5-E3940 Pico-ITX SBC with mSATA and up to 8 GB RAM.
https://www.cnx-software.com/2020/09/11/pico317-fanless-atom-x5-e3940-pico-itx-sbc-powers-industrial-iot-applications/
https://www.axiomtek.com/Default.aspx?MenuId=Products&FunctionId=ProductView&ItemId=25762&C=PICO317&upcat=137#

USB Mass Storage and USB Attached SCSI … are Both SCSI.
https://www.devever.net/~hl/usbuas

NVIDIA to Acquire ARM for $40 Billion.
https://www.anandtech.com/show/16080/nvidia-to-acquire-arm-for-40-billion
https://nvidianews.nvidia.com/news/nvidia-to-acquire-arm-for-40-billion-creating-worlds-premier-computing-company-for-the-age-of-ai

Banana Pi BPI-M5 Amlogic S905X3 SBC in Works.
https://www.cnx-software.com/2020/09/14/banana-pi-bpi-m5-amlogic-s905x3-sbc/

20 Greatest Home Computers Ranked.
https://www.theguardian.com/games/2020/sep/07/the-20-greatest-home-computers-ranked

Life

Citroen Ami – Tiny Cube on Wheels that French 14 Year Olds Can Drive.
https://www.theguardian.com/world/2020/sep/11/ami-the-tiny-cube-on-wheels-that-french-14-year-olds-can-drive

Other

AVIF Has Landed.
https://jakearchibald.com/2020/avif-has-landed/

Cassidy Desk.
https://cassidyjames.com/desk/

Bullfrog after Populous.
https://www.filfre.net/2020/09/bullfrog-after-populous/

EOF

Valuable News – 2020/09/07

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

Vermaden – FreeBSD – HP Elitebook – Very Nice.
https://www.youtube.com/watch?v=KiY32p3LH6c

Installing OpenBSD 6.7 with Disk Encryption and FVWM Ricing.
https://medium.com/@crhenr/installing-openbsd-6-7-with-disk-encryption-fvwm-ricing-b6fb7e2073e6

Minimal OpenBSD Virtual Machine.
https://medium.com/@AliFarzanrad/minimal-openbsd-virtual-machine-94dcd06dacf

FreeBSD Foundation Celebrates 20 Years of Promoting and Supporting FreeBSD Project.
https://itsfoss.com/freebsd-foundation-20-years/

Modernizing OpenBSD Console.
https://www.cambus.net/modernizing-the-openbsd-console/

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

OpenZFS Support Merged into FreeBSD HEAD.
https://svnweb.freebsd.org/base?view=revision&revision=364746

Running Wine in 32-bit Sandbox on 64-bit NetBSD.
https://washbear.neocities.org/wine-sandbox.html

Bastille Manager as XigmaNAS Extension.
https://www.xigmanas.com/forums/viewtopic.php?f=71&t=14848

CVE-2020-7460 – FreeBSD Kernel Privilege Escalation.
https://www.thezdi.com/blog/2020/9/1/cve-2020-7460-freebsd-kernel-privilege-escalation

Rewritten in Rust – Modern Alternatives of Command Line Tools.
https://zaiste.net/posts/shell-commands-rust/

Android App Development Under FreeBSD.
https://baohaojun.github.io/blog/2020/06/16/0-Android-App-development-under-FreeBSD.html

Beginners Guide to FreeBSD.
https://www.fosslife.org/beginners-guide-freebsd

FreeBSD 11.3 End of Life Announced.
https://lists.freebsd.org/pipermail/freebsd-announce/2020-September/001982.html

FreeBSD Cluster with Pacemaker and Corosync.
https://vermaden.wordpress.com/2020/09/03/freebsd-cluster-with-pacemaker-and-corosync/

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

BSD Now 366 – Bootloader Zpool Checkpoints.
https://www.bsdnow.tv/366

Bhyve – FreeBSD Hypervisor.
https://klarasystems.com/articles/bhyve-the-freebsd-hypervisor/

BpyTop on FreeBSD – Bashtop Goodliness.
https://www.youtube.com/watch?v=ZeSol-Igoeo

First FreeBSD CURRENT Snapshots Built from FreeBSD Git Sources.
https://lists.freebsd.org/pipermail/freebsd-current/2020-September/076975.html

FreeBSD Mini Git Primer.
https://hackmd.io/hJgnfzd5TMK-VHgUzshA2g

Migrating from Mastodon to Pleroma.
https://icyphox.sh/blog/mastodon-to-pleroma/

KDE Su Adds OpenBSD doas(1) Support.
https://invent.kde.org/frameworks/kdesu/-/merge_requests/5

In Other BSDs for 2020/09/05.
https://www.dragonflydigest.com/2020/09/05/24909.html

Quare FreeBSD?
https://vermaden.wordpress.com/2020/09/07/quare-freebsd/

Lessons Learned from SSH Credential Honeypots.
https://systemoverlord.com/2020/09/04/lessons-learned-from-ssh-credential-honeypots.html

Hardware

AnandTech Best SSDs – 2020/08.
https://www.anandtech.com/show/9799/best-ssds

PinePhone Manjaro Community Edition.
https://www.pine64.org/2020/08/31/pinephone-manjaro-community-edition/

ARM Cortex-R82 – First 64-bit Real Time Processor.
https://www.anandtech.com/show/16056/arm-announces-cortexr82-first-64bit-real-time-processor

Reducing SATA Power Consumption.
https://insanity.industries/post/sata-power-consumption/

Seagate IronWolf Pro 18TB HDD and 4TB IronWolf NAS SSDs Arrive.
https://www.servethehome.com/seagate-ironwolf-pro-18tb-hdd-and-4tb-ironwolf-nas-ssds-arrive/

Why I Love ARM and PowerPC.
https://opensource.com/article/18/4/why-i-love-arm-and-powerpc

8086 Microcode Disassembled.
https://www.reenigne.org/blog/8086-microcode-disassembled/

Look at Die of 8086 Processor.
https://www.righto.com/2020/06/a-look-at-die-of-8086-processor.html

Life

Amazon Drivers are Hanging Smartphones in Trees to Get More Work.
https://www.bloomberg.com/news/articles/2020-09-01/amazon-drivers-are-hanging-smartphones-in-trees-to-get-more-work

Mass Surveillance Program Exposed by Snowden Was Illegal.
https://www.reuters.com/article/us-usa-nsa-spying/u-s-court-mass-surveillance-program-exposed-by-snowden-was-illegal-idUSKBN25T3CK

Other

Complete Oracle to PostgreSQL Migration Guide.
https://www.enterprisedb.com/blog/the-complete-oracle-to-postgresql-migration-guide-tutorial-move-convert-database-oracle-alternative

PostgreSQL 13 Beta – Index Deduplication.
https://blog.rustprooflabs.com/2020/09/postgres-beta3-btree-dedup

EOF

Quare FreeBSD?

I really wanted to make this article short … but I failed miserably. At least I tried to organize it well so one may get back to it after ‘some’ reading because its not a short lecture. I wanted to title it Why FreeBSD? but when you type that into your favorite duck.com search engine there are so many similar articles. I wanted it to have distinguished and unique name so I used Latin word for ‘why‘ which is ‘quare‘.

logo-freebsd

What FreeBSD can offer you that other operating systems does not? From all of the operating systems I used I find FreeBSD to suck the least. This post is not here to convince you to use or try FreeBSD – this you will have to do by yourself. This article will show you why FreeBSD is valuable or better alternative to other operating systems and is definitely not dying.

This is the Table of Contents for this article.

  • Base System
  • ZFS Boot Environments
  • Rescue
  • Audio
  • Jails
  • FreeBSD Ports Infrastructure
  • Updating/Building from Source
  • Storage
  • Init System
  • Linux Binary Compatibility
  • Simplicity
  • Evolution Instead Rewriting
  • Documentation
  • Community
  • Closing Thoughts
  • External Discussions

Base System

When you install a Linux system its just a bunch of RPM or DEB packages. For example of you install CentOS 7.8 Minimal variant you end up with several hundred RPM packages installed. After a week or month many of these packages will get updates sometimes making this CentOS system unusable or even unbootable (recent GRUB Boothole problem for example). On the contrary FreeBSD comes with a Base System concept. This means that when you install FreeBSD you install a minimal system as a whole. No packages or subsystems to be separately updated. Just whole Base System. That means that /boot /bin /sbin /usr /etc /lib /libexec /rescue directories are untouchable by any packages. When you decide to install packages (or build them using FreeBSD Ports) they will all fall into the /usr/local prefix. That means /usr/local/etc for configuration. The /usr/local/bin and /usr/local/sbin directories for binaries. The /usr/local/lib and /usr/local/libexec for libraries and so on. The FreeBSD Base System kernel modules are kept in the same dir along with the kernel in the /boot/kernel directory. To make things tidy all kernel modules that are provided by packages go into the /boot/modules dir. Everything has its place and its separated.

That is separation between Base System binaries (at /bin /sbin /usr/bin /usr/sbin dirs) and Third Party Packages maintained by pkg(8) and are located at /usr/local/bin and /usr/local/sbin dirs. We all know differences between bin (user) and sbin (root) binaries but in FreeBSD there is also another more UFS related separation. When there was only UFS filesystem in the FreeBSD world the /bin and /sbin binaries were available at boot after the root (/) filesystem was mounted and yet before /usrย  filesystem was mounted – this is historical (and still useful in the UFS setups) distinction dating to old UNIX days. In ZFS setups it does not matter as all files are on ZFS pool anyway.

The FreeBSD Base System separation also helps with another thing – if any package gets the ‘great’ idea to install new compiler named cc and override the default system compiler … or to add libraries/includes in such a way that makes it super hard to get back into a working system. If some random FreeBSD package would add libc.so to /usr/local/lib dir then you are covered and not prevented from running programs as usual because FreeBSD system binaries are linked to stuff in /usr/lib dir. This is why there is PATH variable on UNIX systems (and FreeBSD as well) to set which directories should be searched for binaries first. On FreeBSD by default its set search Base System binaries dirs first and then Third Party Packages later.

You can update (or not) the Base System separately from the installed packages with freebsd-update(8) command when using RELEASE or by recompiling with make buildworld and make installworld commands when using STABLE/CURRENT systems. When it comes to packages you can update them using the pkg(8) tool or portmaster when building from FreeBSD Ports tree under /usr/ports dir. That means that any packages updates will not touch your FreeBSD Base System at all. For example when you mess up (and I have done that in the beginning of my FreeBSD journey) the compiled ports and packages and you want to start over the only thing you have to do is remove /usr/local and /boot/modules and /var/db/pkg directories. That’s it. You are just reverted to your Base System and can start over. This is just not possible when using Linux system. Even with Gentoo that many concepts are based on FreeBSD ideas does not have Base System feature. This Base System also have additional feature. Because its separated from packages version no one stops you from running oldshool FreeBSD 9.0 from 2012 and install there latest Firefox 80 or LibreOffice 7.0. You can not install latest Firefox on Ubuntu from 2012 …

One may be ‘afraid’ that such Base System independent from installed packages would take more space but nothing far more from the truth. The fresh installed FreeBSD 12.1 system uses less then 1 GB of disk space and takes less then 75 MB of RAM with sshd(8) running. For the comparison fresh CentOS 7.8 install with ‘Minimal’ set chosen takes 1.1 GB of disk space and uses more then 100 MB RAM with sshd(8) running. Such CentOS system is really naked and really needs more packages to be usable while FreeBSD with its Base System is far more capable and powerful and comes along with builtin latest version of LLVM/CLANG compiler suite for example.

More on the Base System topic:

ZFS Boot Environments

I have talked about this many times and probably one time too less because Linux world still ignores this bless. Having ZFS Boot Environments its such a game changer that once you realize how powerful it is you will never want to use a system that does not support it. The idea is that you can snapshot a running system at any moment of time and then reboot into that moment (or snapshot) if something happened. Its perfect solution for upgrade or changes to the system. The FreeBSD systems are already well ‘protected’ from problems arising after updating the packages but ZFS Boot Environments takes this to a whole new level.

groundhog

Like in the movie Groundhog Day (1993) with ZFS Boot Environments you will have limitless chances to get your shit toghether. Even the Base System updates and changes are protected by it. You can even transport that Boot Environment by using zfs send and zfs recv commands to other system … or propagate it on many systems. You can create Jails containers from it … or install new version of FreeBSD in the new Boot Environment and reboot into it while still having your older ‘production’ system untouched.

More on the ZFS Boot Environments topic:

Rescue

When you really mess up to the point that even Base System concept or ZFS Boot Environments feature did not stopped you from killing your FreeBSD installation then there is one more level of rescue … the Rescue subsystem.

rescue

You have about 150 statically linked binaries available at your disposal for the rescue mission of that FreeBSD installation. You probably think now that if its so many binaries then it probably takes a lot of space … nothing far more from the truth. Its actually one static binary with hardlinks … and it takes whooping 11 MB of disk space.

# ls -lh /rescue | head -5
total 1118446
-r-xr-xr-x  146 root  wheel    11M 2020.02.19 21:10 [
-r-xr-xr-x  146 root  wheel    11M 2020.02.19 21:10 bectl
-r-xr-xr-x  146 root  wheel    11M 2020.02.19 21:10 bsdlabel
-r-xr-xr-x  146 root  wheel    11M 2020.02.19 21:10 bunzip2

They Rescue subsystem even contains such binaries as bectl(8) for ZFS Boot Environments management or zfs(8) and zpool(8) commands for the ZFS filesystem. Here is complete list of these binaries.

# ls /rescue
[           dd               fsck_ffs      init       mdmfs          ping      rtsol        unlink
bectl       devfs            fsck_msdosfs  ipf        mkdir          ping6     savecore     unlzma
bsdlabel    df               fsck_ufs      iscsictl   mknod          pkill     sed          unxz
bunzip2     dhclient         fsdb          iscsid     more           poweroff  setfacl      unzstd
bzcat       dhclient-script  fsirand       kenv       mount          ps        sh           vi
bzip2       disklabel        gbde          kill       mount_cd9660   pwd       shutdown     whoami
camcontrol  dmesg            geom          kldconfig  mount_msdosfs  rcorder   sleep        xz
cat         dump             getfacl       kldload    mount_nfs      rdump     spppcontrol  xzcat
ccdconfig   dumpfs           glabel        kldstat    mount_nullfs   realpath  stty         zcat
chflags     dumpon           gpart         kldunload  mount_udf      reboot    swapon       zdb
chgrp       echo             groups        ldconfig   mount_unionfs  red       sync         zfs
chio        ed               gunzip        less       mt             rescue    sysctl       zpool
chmod       ex               gzcat         link       mv             restore   tail         zstd
chown       expr             gzip          ln         nc             rm        tar          zstdcat
chroot      fastboot         halt          ls         newfs          rmdir     tcsh         zstdmt
clri        fasthalt         head          lzcat      newfs_msdos    route     tee          
cp          fdisk            hostname      lzma       nextboot       routed    test         
csh         fsck             id            md5        nos-tun        rrestore  tunefs       
date        fsck_4.2bsd      ifconfig      mdconfig   pgrep          rtquery   umount   

More on the Rescue topic:

Audio

Not many people expect from FreeBSD to shine in that department but it shines a lot here and not from yesterday but from decades. Remember when Linux got rid of the old OSS subsystem with one channel and came up with ‘great’ idea to write ALSA? I remember because I used Linux back then. Disaster is very polite word to describe Linux audio stack back then … and then PulseAudio came and whole Linux audio system got much worse. Back then because of that one OSS channel and many ALSA channels meant that ONLY ONE application with OSS backend could do the sound (for example WINE). But if another application would want to ‘make’ sound using OSS and you already have WINE started then it will be soundless because that one and only OSS channel was already taken. And remember that ALSA was so bad back then that KDE or GNOME made their own sound daemons mixing audio in userspace that were incompatible with each other. That means if you used KDE and GNOME apps back then you could have sound from GNOME apps but not from KDE apps or vice versa. One big fucking audio hell on Linux.

audio

Lets get back to FreeBSD audio then. What FreeBSD offered? A whooping 256 OSS channels mixed live in kernel for low latency. Everything audio related just worked out of the box – and still works today. You could have WINE or KDE/GNOME sound backends attached to their OSS channels and also ALSA apps getting their sound device without a problem. Even when you plugged a 5.1 surround system into FreeBSD it worked out of the box without any configuration and applications were able to use it immediately. That FreeBSD audio supremacy remains today as PulseAudio sound mixing in userspace while generally working incorporates large latency on Liunx compared to in kernel FreeBSD mixing with low latency.

Comrade meka suggested that FreeBSD is also the only OS which has virtual_oss that allows mixing/resampling/compressing in user space and allows one to have Bluetooth headphones and USB microphone represented as single sound card.

More on the Audio topic:

Jails

The FreeBSD Jails are one of the oldest OS Level Virtualization implementations dating back to 1999. Even the Solaris Zones/Containers came five years later in 2004.

containers

After Docker was introduced in Linux the term OS Level Virtualization became less used to the Containers term and now the FreeBSD Jails along with Solaris Zones/Containers are named 1st generation containers. But that naming nomenclature change does not make FreeBSD Jails less powerful. They are also really brain dead simple to use. You just need a directory – for example /jail/nextcloud – where you will extract the FreeBSD Base System for desired release version – for example base.txz from 12.1-RELEASE and create the Jail config in the /etc/jail.conf file as shown below.

# mkdir -p /jail/nextcloud
# fetch -o - http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/base.txz | tar --unlink -xpJf - -C /jail/nextcloud
# cat /etc/jail.conf
nextcloud {
  host.hostname = nextcloud.local;
  ip4.addr = 10.0.0.100;
  path = /jail/nextcloud;
}

Now you can start you Jail right away.

# service jail onestart nextcloud
Starting jails: nextcloud.

Voila! Your FreeBSD Jail is already running.

# jls
   JID  IP Address      Hostname                      Path
     1  10.0.0.100      nextcloud.local               /jail/nextcloud

You can of course have a trimmed down version of FreeBSD Base System in the Jail if that is needed. The ZFS filesystem also helps here greatly because with zfs clone only your ‘base’ Jail will take space and only the changes you make to Jails created from it. Thanks to other FreeBSD subsystem – the Linux Binary Compatibility – you can also create a Linux Jail – for example running Devuan Jail.

The FreeBSD Jails are also very lightweight. You can boot and use about 1000 FreeBSD Jails on a single FreeBSD system with 4 GB RAM.

They are also very easy to debug and troubleshoot comparing even to plain Docker – not to even mention Kubernetes which requires whole team of highly skilled people to maintain.

The FreeBSD Jails may be configured/managed only by the Base System utilities such as jls(8)/jexec(8) but you can also select from many third party Jail management frameworks. From all available ones I would choose BastilleBSD because of their modern approach and many ready to use templates for all needed use cases.

More on the Jails topic:

FreeBSD Ports Infrastructure

This is one of another examples why FreeBSD rocks that much. When you install Ubuntu or CentOS in some version there is chance that you will end up with not latest versions of packages but with versions that were quite up-to-date when this distribution version was released. Its especially visible in the CentOS world (and its upstream enterprise source system from Red Hat) where packages are quite up-to-date when .0 (dot zero) release is published but are VERY outdated when .8 or .9 incarnation of that release is available. Not to even mention that Firefox for example is released every month …

packages

As I said before when describing the FreeBSD Base System the FreeBSD Ports (and packages built from it available through pkg(8)) are independent. That means that third party software from FreeBSD Ports is almost always up-to-date (or very close to it). You can even check it on the repology.org site for the details. Below you will find a ‘snapshot’ of the repology.org stats from time of writing this article. The ‘online’ table is very long so I copy/pasted just the systems relevant to the article.

repology

One of the other advantages of FreeBSD Ports is that it offers really MASSIVE amount of software counting 40354 ports when writing this article and still rising. Amount of ready to be installed packages are little smaller with more then 32000 available.

I once migrated for a while to OpenSolaris in 2009 on my Dell Latitude D630 laptop because I really liked all the Solaris features (including ZFS and ZFS Boot Environments that were not available on FreeBSD back then) and the OpenSolaris GNOME based desktop was pretty nice back then even with Time Slider feature for ZFS snapshots in the Nautilus file manager. I got working WiFi connection, sound was working, generally everything on my laptop was supported and working with OpenSolaris … but there was no software. Of course ‘large’ projects like GIMP or OpenOffice was available even in the default pkg(8) repository but not much else. There was less then 4000 packages back then on OpenSolaris while about 25000 packages on FreeBSD if I recall correctly.

You can also easily browse available FreeBSD Ports (and its options) on the web by using the https://freshports.org/ page.

ports

The count of FreeBSD Ports is one thing, the features is another. No matter which Linux distribution you are using you will find a software that was compiled and shipped without that needed flag that you desperately need. If you find such software on FreeBSD it ‘hurts’ only for a moment because you can VERY EASILY recompile that software with needed options and replace that ‘default’ package with yours. For example the FreeBSD project is afraid to provide packages of Lame because of existing MP3 patents, so multimedia/ffmpeg package is built without MP3 support (with --disable-libmp3lame flag). That is why I have my own audio/lame and multimedia/ffmpeg packages built with my configure options and that is very easy to achieve. You need to go to the /usr/ports/multimedia/ffmpeg dir type make config and select [x] LAME at the ncurses dialog. Your chosen options will be saved as plain /var/db/ports/multimedia_ffmpeg/options file. If you remove that file (or type make rmconfig) then these custom options will reset to defaults. Then you type make build deinstall install clean and your port with new options is ready and installed as package. Nothing more is needed. You can even lock that package from the pkg(8) upgrades with pkg lock -y ffmpeg command so it will not be modified later but its better to rebuild such packages everytime you do a pkg upgrade procedure because of libraries versions bump and changes. While its very easy and fast to create a script with these commands to make it more automated you can also use other parts of the FreeBSD Ports infrastructure – enter Poudriere (or Synth) – more on that in the next part.

You also do not have to configure each port that way (which could be PITA for large amount of ports) but you may specify your needed (OPTIONS_SET) or unwanted (OPTIONS_UNSET) parameters only once globally using the /etc/make.conf file. You can also specify which default versions of software you want to use, for example Apache 2.2 instead of 2.4 and PHP 7.0 instead of 7.2. You can find all default versions in the /usr/ports/Mk/bsd.default-versions.mk file. Once you setup these options you can build/rebuild or update your packages from FreeBSD Ports by portmaster(8) tool. Like on Gentoo Linux with USE flags. But this is the original. Gentoo took all/most of its ideas from FreeBSD system and its Ports infrastructure.

The Poudriere is a build framework that uses FreeBSD Ports and FreeBSD Jails to build requested packages in clean reproducible way. You can create whole new binary package repository for pkg(8) command to use with it. I mentioned Synth because while Poudriere is often used to produce whole package repository the Synth is usually used just to rebuild several packages that does not fit your needs.

There is one important things about FreeBSD Ports that is often misunderstood by newcomers. What is the difference between the Ports and packages that are fetched and installed by pkg(8) tool? Its quite simple. A package is just a build and installed port. Nothing more or less. When you use the binary packages using pkg(8) command you are using packages that someone (the FreeBSD project in that case) built for you from the FreeBSD Ports in some point in time. While FreeBSD strives to maintain as up-to-date built packages as possible its the nature of FreeBSD Ports that they are always more up-to-date then the built packages. That is why you may build and install a new version of needed packages by yourself using FreeBSD Ports. One may think of such usage when it comes to security holes. When some locally executed commands (like file(1) for example) has a security hole then its not critical for you to update it as fast as possible because that security hole can be harmless for you, but when new version of Firefox fixes very important security hole then its better to update from FreeBSD Ports version faster because waiting 2 days for the package to be built (along with other packages) can be too long.

More on the FreeBSD Ports topic:

Updating/Building from Source

While the FreeBSD Ports infrastructure is for third party software the FreeBSD Base System (or its parts) also can be easily and convenient build from source. The FreeBSD kernel config is also very small and simple. While Linux kernel config contains thousands of options – 4432 for example in the default CentOS 8.2 install the FreeBSD GENERIC config has about 20 times options less – only 260 options. But that does not saturate the topic. You can start with MINIMAL FreeBSD kernel config which has only 75 options specified.

Linux # grep -c '^CONFIG' /boot/config-$( uname -r )
4432

FreeBSD # grep -c -E '^(device|options)' /usr/src/sys/amd64/conf/GENERIC
260

FreeBSD # grep -c -E '^(device|options)' /usr/src/sys/amd64/conf/MINIMAL
75

… and its not only about smaller amount of options. Can you tell my how many steps (and which ones are required) to rebuild CentOS or Ubuntu for example without Bluetooth support?

code

On the contrary its very simple (and fast) on the FreeBSD side. While /etc/make.conf file is used to enable/disable Ports options the /etc/src.conf file is used to enable/disable FreeBSD Base System options while building it from source. To build FreeBSD without Bluetooth support just add WITHOUT_BLUETOOTH=yes to the /etc/src.conf file and type these to build it:

# beadm create safe
# cd /usr/src
# make buildworld kernel
# reboot
# cd /usr/src
# make installworld
# mergemaster -iU
# reboot

Voila! You now have FreeBSD without Bluetooth support … and if any of the steps failed or because of your lack of experience/expertise your FreeBSD system does not boot or is broken you can use tools from /rescue to try to fix it (or at least figure out what is broken) and when you do not want to cope with this jest select safe ZFS Boot Environment at the FreeBSD loader(8) to boot to the system before you started building modified version of FreeBSD. Yes, You are bulletproof here. While having 294 WITHOUT_X options and 125 WITH_X options you can really tune FreeBSD Base System to your needs.

# zgrep -c WITHOUT_ /usr/share/man/man5/src.conf.5.gz
294

# zgrep -c WITH_ /usr/share/man/man5/src.conf.5.gz
125

The big downside of updating FreeBSD by source is that you can not use the freebsd-update tools to do it … but nothing stops you from creating your own FreeBSD Update Server so you will be able to use freebsd-update by adding updates using a CURRENT or STABLE system instead of RELEASE. That process is described in the Build Your Own FreeBSD Update Server article of official FreeBSD documentation.

More on the FreeBSD Source Updates/Builds topic:

Storage

Storage is one of the parts where FreeBSD really shines. Lots of people adore FreeBSD for well integrated ZFS filesystem and its really true. ZFS in FreeBSD has always been first class citizen. Lately OpenZFS 2.0 has been also integrated from the upstream joint FreeBSD and Linux repository. More and more FreeBSD features and solutions are using ZFS features.

openzfs

Most of these people that like integrated ZFS in FreeBSD do not know about the FreeBSD GEOM modular disk transformation framework which provides various storage related features and utilities like software RAID0/RAID1/RAID10/RAID3/RAID5 configurations or transparent encryption of underlying devices with GELI/GDBE (like LUKS on Linux). It also allows transparent filesystem journaling for ANY filesystem with GJOURNAL (yes also for FAT32 or exFAT) or allows one to export block devices over network with GEOM GATE devices (like NFS for block devices).

storage

FreeBSD also has its own FUSE implementation which allows all these FUSE based filesystems to work natively on FreeBSD. While lots of Linux folks know DRBD probably very few of them knew that FreeBSD comes with its own DRBD like solution called HAST – which does exactly the same thing. While ZFS has a lot features and possibilities FreeBSD still maintains and develops fast and small memory footprint UFS filesystem which today is used either with Soft Updates (SU) or Journaled Soft Updates (SUJ) depending on the use case. For example 10 TB data on UFS filesystem with Journaled Soft Updates (SUJ) takes about 1 minute under fsck(8). These storage solutions are available from FreeBSD Base System alone. The FreeBSD Ports offers much more with distributed filesystems solutions such as CEPH, LeoFS, LizardFS or Minio for Amazon S3 compatible storage.

More on the Storage topic:

Init System

FreeBSD offers really simple yet very powerful init system. It has system wide config under /etc/rc.conf file when you can enable/disable needed services with service_enable=YES and service_enable=NO stanzas. You do not even need to launch vi(1) to add them – just type sysrc service_enable=YES and they are added to the /etc/rc.conf file. There are also default values and services that are enabled and you will find them – along with many comments – in the /etc/defaults/rc.conf file. Each FreeBSD service file has PROVIDE/REQUIRE stanzas which are then used to automatically order the services to start. Services that can be run in parallel are started in parallel to save time. For example its pointless to start sshd(8) daemon without network. To start or stop the serivice you need to type service sshd start or service sshd stop command. But when a service is not enabled in the /etc/rc.conf file then you need to used add onestart and onestop instead. The Base System separation remains here as FreeBSD Base System services are located at /etc/rc.d directory and third party applications from ports/packages are kept under /usr/local prefix which means /usr/local/etc/rc.d dir.

When using systemd(1) you never know how the services gonna start because it will be different each time. Zero determinism. On FreeBSD you know exactly which services will start when because they are always ordered in the same state according to the PROVIDE/REQUIRE stanzas. FreeBSD also offers tools that will tell you the exact order – rcorder(8) – which can be used for all services, Base System services or third party services separately. There is also service -r command that will show you what was the orfer at the boot time.

# rcorder /etc/rc.d/* | head
/etc/rc.d/growfs
/etc/rc.d/sysctl
/etc/rc.d/hostid
/etc/rc.d/zvol
/etc/rc.d/dumpon
/etc/rc.d/ddb
/etc/rc.d/geli
/etc/rc.d/gbde
/etc/rc.d/ccd
/etc/rc.d/swap

# rcorder /usr/local/etc/rc.d/* | tail
/usr/local/etc/rc.d/hald
/usr/local/etc/rc.d/git_daemon
/usr/local/etc/rc.d/fscd
/usr/local/etc/rc.d/cupsd
/usr/local/etc/rc.d/cups_browsed
/usr/local/etc/rc.d/clamav-clamd
/usr/local/etc/rc.d/clamav-milter
/usr/local/etc/rc.d/clamav-freshclam
/usr/local/etc/rc.d/avahi-dnsconfd
/usr/local/etc/rc.d/aria2

# rcorder /etc/rc.d/* /usr/local/etc/rc.d/* 2> | grep -C 3 sshd
/etc/rc.d/ubthidhci
/etc/rc.d/syscons
/etc/rc.d/swaplate
/etc/rc.d/sshd
/etc/rc.d/cron
/etc/rc.d/jail
/etc/rc.d/localpkg

Adding new service to FreeBSD is also very easy as template for new service is very small and simple.

#!/bin/sh

. /etc/rc.subr

name=dummy
rcvar=dummy_enable

start_cmd="${name}_start"
stop_cmd=":"

load_rc_config $name
: ${dummy_enable:=no}
: ${dummy_msg="Nothing started."}

dummy_start()
{
	echo "$dummy_msg"
}

run_rc_command "$1"

If its not simple enought for you there is dedicated FreeBSD article about writing them – Practical rc.d Scripting in BSD – available here.

More on the Init System topic:

Linux Binary Compatibility

While Linux can not be FreeBSD – the FreeBSD can be Linux – and its not some slow emulation – its implementation of Linux system calls. There was time when enterprises used to work with Linux only applications (not available on FreeBSD by then) using the Linux Binary Compatibility on FreeBSD because it was faster then running them natively on Linux – FreeBSD Used to Generate Spectacular Special Effects – an official FreeBSD Press Release about FreeBSD being used to generate spacial effects to the one of the best movies of all time – The Matrix (1999).

matrix

Today the LINUX_COMPAT is also natively fast and allows one to run Linux applications – even Linux games in X11 with hardware acceleration for graphics. Think of it as WINE but for Linux applications. It lives under /compat/linux directory. It even implements Linux /proc virtual filesystem which can be mounted at the /compat/linux/proc dir but its not mandatory. For any software that does not come with source code and works on Linux the Linux Binary Compatibility saves the day. For example the f.lux project. Before I got to know Redshift I used f.lux Linux binary using LINUX_COMPAT to suppress blue spectrum light from my FreeBSD screen. The Linux Binary Compatibility subsystem can also be used to run Linux bases FreeBSD Jails – with Devuan for example.

More on the Linux Binary Compatibility topic:

Simplicity

FreeBSD is simple but not coarse/ornery. For example as Linux the FreeBSD system also supports the /proc virtual filesystem but on FreeBSD its optional and not used by default while Linux could not live without it. But while Linux has mandatory /proc it also has another virtual filesystem residing under /sys … but why Linux people need two different virtual filesystems with similar purposes? Why they could not create everything under /proc as it already existed. That is big enigma for my sanity.

But /sys is not the end of that madness. Its just a beginning.

What about these?

  • securityfs
  • devpts
  • cgroup
  • pstore
  • bpf
  • configfs
  • selinuxfs
  • systemd-1
  • mqueue
  • debugfs
  • hugetlbfs

Take a look at the FreeBSD mount(8) output after the default install on ZFS.

FreeBSD # mount
zroot/ROOT/12.1 on / (zfs, local, noatime, nfsv4acls)
devfs on /dev (devfs, local, multilabel)
zroot/tmp on /tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/var/mail on /var/mail (zfs, local, nfsv4acls)
zroot/usr/home on /usr/home (zfs, local, noatime, nfsv4acls)
zroot/var/crash on /var/crash (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/log on /var/log (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/audit on /var/audit (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/tmp on /var/tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/src on /usr/src (zfs, local, noatime, nfsv4acls)
zroot/usr/ports on /usr/ports (zfs, local, noatime, nosuid, nfsv4acls)

Several ZFS datasets and one virtual devfs filesystem for /dev directory. With install on UFS it would be similar with several UFS partitions mounted instead of ZFS datasets.

Take a look at the CentOS 8.2 installation with just one physical root (/) XFS filesystem.

[root@centos8 ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=919388k,nr_inodes=229847,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,rdma)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=17309)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=187088k,mode=700)

Fuck me. Its even really hard to just find any REAL filesystem there … fortunately we can ask for only XFS filesystems to display.

[root@centos8 ~]# mount -t xfs
/dev/sda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

Lets get on the networking now. Lets assume that you want to make standard enterprise networking setup on a physical server with two interfaces aggregated together into highly available interface bond0 (lagg0 on FreeBSD) and then you want to put VLAN tag and IP address on that VLAN. The CentOS 7.x/8.x installer (Anaconda) will welcome you with this mess.

[root@centos7 ~]# ls -1 /etc/sysconfig/network-scripts/ifcfg-*
ifcfg-Bond_connection_1
ifcfg-eno49
ifcfg-eno49-1
ifcfg-eno50
ifcfg-eno50-1
ifcfg-VLAN_connection_1

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-Bond_connection_1
DEVICE=bond0
BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup"
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_PRIVACY=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Bond connection 1"
UUID=ca85417f-8852-43bf-96ee-5bd3f0f83648
ONBOOT=yes

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno49
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno49
UUID=2f60f50b-38ad-492a-b90a-ba736acf6792
DEVICE=eno49
ONBOOT=no

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno49-1
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
NAME=eno49
UUID=342b8494-126d-4f3a-b749-694c8c922aa1
DEVICE=eno49
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno50
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno50
UUID=4fd36e24-1c6d-4a65-a316-7a14e9a92965
DEVICE=eno50
ONBOOT=no

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno50-1
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
NAME=eno50
UUID=a429b697-73c2-404d-9379-472cb3c35e06
DEVICE=eno50
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@centos7 ~]# cat/etc/sysconfig/network-scripts/ifcfg-VLAN_connection_1
VLAN=yes
TYPE=Vlan
PHYSDEV=ca85417f-8852-43bf-96ee-5bd3f0f83648
VLAN_ID=601
REORDER_HDR=yes
GVRP=no
MVRP=no
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.20.30.40
PREFIX=24
GATEWAY=10.20.30.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_PRIVACY=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="VLAN connection 1"
UUID=90f7a9bb-1443-4adf-a3eb-86a03b23ecfb
ONBOOT=yes

For the record – I have choosen ‘STATIC’ IPv4 address but installer made these interfaces to use DHCP and that STATIC address. That could be a bug but lets get to the point.

After manual fixing with vi(1) (and hour later) this is how it supposed to look.

[root@centos7 ~]# cat /etc/sysconfig/network
GATEWAY=10.20.30.1
NOZEROCONF=yes

[root@centos7 ~]# ls -1 /etc/sysconfig/network-scripts/ifcfg-*
ifcfg-bond0
ifcfg-bond0.601
ifcfg-eno49
ifcfg-eno50

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup"
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPV4_FAILURE_FATAL=no
IPV6INIT=no
ONBOOT=yes

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0.601
VLAN=yes
TYPE=Vlan
VLAN_ID=601
DEVICE=bond0.601
REORDER_HDR=yes
GVRP=no
MVRP=no
BOOTPROTO=none
IPADDR=10.20.30.40
PREFIX=24
IPV4_FAILURE_FATAL=no
IPV6INIT=no
ONBOOT=yes

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno49
BOOTPROTO=none
IPV4_FAILURE_FATAL=no
IPV6INIT=no
TYPE=Ethernet
NAME=eno49
DEVICE=eno49
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno50
BOOTPROTO=none
IPV4_FAILURE_FATAL=no
IPV6INIT=no
TYPE=Ethernet
NAME=eno50
DEVICE=eno50
ONBOOT=yes
MASTER=bond0
SLAVE=yes

Better … but still takes A LOT OF SPACE and several files to cover that quite simple setup. Not to mention its level of complication and making that very error prone way. The same configuration on FreeBSD would take just 7 lines within single /etc/rc.conf file as shown below.

ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1"
vlans_lagg0="601"
ifconfig_lagg0_601="inet 10.20.30.40/24"
defaultrouter="10.20.30.1"

What about the boot process? FreeBSD boots from root on ZFS partition with just small 512 KB not mountable partition. No separate /boot device is needed. On the other side Linux always needs that separate /boot partition filled with GRUB modules. No matter if its ZFS or LVM. That is why implementation of ZFS Boot Environments is quite complicated on Linux bacause even if you have root on ZFS on a Linux system there is still unprotected /boot filesystem that can not be snapshoted with ZFS and has to be protected in old classic way which kill the idea of ZFS Boot Environments or Linux.

FreeBSD is really simple and well thought operating system. But also a very underestimated one.

Evolution Instead Rewriting

How many Linux tools or subsystems are abandoned or superseeded by new ones? Why the ifconfig(8) command was not updated with new options and instead a new ip(8) command was introduced? Same with netstat(8) being replaced by ss(8). Same with arp(8)/iwconfig/route(8) and many more. What about whole init system? The Linux world has been taken over by systemd(1) whenever you like it or not. Even distributions that have grown their mature init systems like Ubuntu with its Upstart has moved to systemd(1) altogether. The distributions that do not use it are very few and considered a niche today.

evolution

In the FreeBSD land on the countary such things happen only if there is no other way to implement new things. Its the last thing wanted in the FreeBSD. FreeBSD evolves and is developed with stability and backward compatibility in mind. Userland tools are grown and updated with new options instead of rewriting them over and over again. Not to mention how many new bugs are introduced by changing one tool to another.

More on the Evolution Instead Rewriting topic:

Documentation

Having system that can do almost anything but not knowing how to do that makes that system pretty useless (or at least pretty PITA to use). FreeBSD offers second to none documentation that is actively maintained and updated. Along with its legendary FreeBSD Handbook and FreeBSD FAQ the FreeBSD project also offers official FreeBSD Articles about various FreeBSD topics. The Man Pages are also very detailed and contain many examples. There is also FreeBSD Wiki page for work in progress documentation and ideas related to FreeBSD development and if you have any problems or questions related to FreeBSD there are official FreeBSD Forums and oldschool Mailing Lists available.

documentation

These were only the official project knowledge sources but there are also lots of FreeBSD books. Here are the best and up-to-date ones.

  • Absolute FreeBSD – Complete Guide to FreeBSD – 3nd Edition (2019)
  • Beginning Modern Unix (2018)
  • Book of PF – 3rd Edition (2015)
  • Design and Implementation of FreeBSD 11 Operating System – 2nd Edition (2015)
  • FreeBSD Device Drivers (2012)
  • FreeBSD Mastery – ZFS (2015)
  • FreeBSD Mastery – Advanced ZFS (2016)
  • FreeBSD Mastery – Storage Essentials (2014)
  • FreeBSD Mastery – Specialty Filesystems (2015)
  • FreeBSD Mastery – Jails (2019)

There are also two magazines that are dedicated to BSD and FreeBSD systems. Both are free and cover lots of interesting topics regarding FreeBSD.

With all this knowledge and support its really hard not to achieve what you need/want with FreeBSD system.

Community

Last but not least and I would say its even more important then good documentation (which FreeBSD has awesome). People that use FreeBSD do that conciously and are often experienced not only in FreeBSD land but also in topics related to other UNIX systems. Often they took long road of first using the Linux systems before finally setting on the FreeBSD land or they still do Linux adminitration for a living while resting using far more reasonable and sensible FreeBSD solution. I always find FreeBSD Community helpful and friendly. Always willingly helpful – especially towards newcommers. Even when you try to ‘force’ FreeBSD people to ‘fight’ in unjust/doubtful discussion they will reply with dignity and technical arguments instead of yelling at you.

The FreeBSD project even made several articles and Handbook chapters especially for Linux newcommers (or sometimes called systemd(1) refugees).

Closing Thoughts

I tried really hard to not make it a Linux rant but some may feel it that way – if so please remember that this was not my intention. FreeBSD like Linux and like any other operating system has its ups and downs. Hope that I showed you most interesting FreeBSD parts. I may add new sections here without a warning in the future ๐Ÿ™‚

External Discussions

Discussions and comments from ‘external’ sources are available here:

EOF