Outage fixed

A few days ago we had an outage on this web site that lasted from Monday through Wednesday night. This has – obviously – now been fixed and we are back up and running.

The problem appears to have been a surge from a nearby lightning strike that somehow powered off the server. This was not a power failure and there are no indications of that on any of my UPS systems.

Because I was out of town and this required a physical intervention I was unable to resolve it until Wednesday night. It only took a few minutes one I was able to restart the server.

In any event all is well now.

Book Details Updated

Now that we have revised the structure and Table of Contents for my upcoming three volume book, Using and Administering Linux — Zero to SysAdmin, I have updated the information about it here.

Because of the huge amount of information included in this book, it could only be published as three volumes. These three volumes are related and interconnected and cannot stand alone. You must have all three volumes in order to have the complete course.

In some ways I dislike having it broken up into three volumes. However the limitations imposed upon the “Print On Demand” model used by many publishers these days, including Apress, means that the course needs to be split to accommodate the ecologically sound objective of saving trees. So these books will not be printed unless physical copies are ordered. That is a very good thing.

If you need a self-study course that can help you learn to be a Linux system administrator, please consider this one.

Thank you.

News about “Using and Administering Linux – Zero to SysAdmin”

Due to the massive amount of material that will be covered in my new book, “Using and Administering Linux – Zero to SysAdmin,” my publisher, Apress, and I have concluded that the book is best published as three volumes rather than the two I first envisioned.

The resulting three volumes will be similar in size and each will build upon the previous volume. Together, these three volumes constitute a self-study course the equal of no other. Using VirtualBox to create virtual machines running Fedora in a virtual network, the student will learn how to use and administer Linux from the command line. This course contains many hands-on experiments that guide the student from installation of VirtualBox on a Windows or Linux computer, creating and installing Fedora on virtual machines, using the command line, installing and managing software, creating a server complete with email, DNS, NTP, DHCP, and more.

Together, Volumes 1 and 2 guide the student through many aspects of use and administration of a Fedora workstation. Volume 3 leads the student through creating of a server that provides many necessary services to that network.

As I work with my editors to finalize the structure of this three-volume course, I will make more information available as I am able.

Thanks for your interest in my books.

First Draft Complete

Late this afternoon I completed the first draft of the last chapter in my book, “Using and Administering Linux.” This is book 1 in my two book series of courses, From Zero to Linux SysAdmin Self-Study.

This first book is scheduled for release in early 2020. For more details about this book, visit its page at, “Using and Administering Linux — From Zero to Linux SysAdmin — Self-Study – Book 1.” There you will find a link to its page at the Apress web site and its page on Amazon.

My next book: Using and Administering Linux

From Zero to Linux SysAdmin Self-Study – Book 1

My next book is a self study course, “Using and Administering Linux – From Zero to Linux SysAdmin Self-Study – Book 1.” It is set to be published by Apress in 2020. I do not yet know the exact date, but it should be early in the year. As you can tell from the title, another book will follow soon after.

About the book

Become a Linux sysadmin and expert user of Linux, even with no previous Linux experience and learn to manage complex systems with ease. This book provides you with the tools necessary for mastering user management; installing, updating, and deleting software; creating and managing simple firewalls; and using command line tools to do performance tuning and basic problem determination.

You’ll begin by installing a Linux instance on a VirtualBox VM on an existing Windows or Linux computer that can be used for all your projects. You will then move on to the basics of using the Xfce GUI desktop and the many options Linux provides for working on the command line including virtual consoles, various terminal emulators, BASH, and other shells. Some of the more advanced user level tasks include creating, deleting and managing files and directories, managing the users own processes, writing short command line programs, and creating shell scripts to begin learning how to “Automate Everything.” 

Improving efficiency using command line recall and editing, command line history, and by creating command line aliases is addressed as well. You’ll configure your own BASH environment by directly editing the user level BASH configuration files, and learning the Vi editor in the process. Using and Administering Linux, the first book in the From Zero to SysAdmin series will help in using and managing Linux client services, such as DHCP network configuration, Chrony, SSH, DNS name services, and more. 

What You Will Learn

  • Install Fedora Linux and some basic configuration of the Xfce desktop
  • Access the root user ID, and the care that must be taken when working as root
  • Explore administrative tools available to root that enable the student to manage users, filesystems, processes, and basic network communications
  • Configure the boot and startup sequences, start, stop, and obtain the status of running services
  • Review methods of performing and testing backups.

Who This Book Is For

Anyone who wants to learn Linux as an advanced user and system administrator at both the command line and the GUI desktop. 


The ISBN number for this book will be ISBN 978-1-4842-5049-5. The estimated cost is $39.99US.

Innovative New Linux Desktops and other Changes in Fedora 30

Fedora 30 was released on April 30. The Fedora Wiki contains a complete list of the changes that were accepted for inclusion in this release. These changes include two new desktop environments, other new features, and bug fixes. Some older packages have been deprecated or completely removed.

As you can see in my previous post, I have already upgraded all of my physical hosts and I have created a new VM for Fedora 30. All of these hosts are working very well and I have not had any problems so far.

Fedora 30 and my books

Fedora 30 should make no difference in any of the experiments in my book, The Linux Philosophy for SysAdmins, Apress, 2018. That book was written using Fedora 28 but everything should also work just fine with Fedora 29 and 30.

I am also working on two new books, the titles of which I cannot yet divulge. The experiments in these two books are being tested to ensure that they work on Fedora 29 and 30. These books should be available late this year but I will keep you informed with future posts here on this site.

The changes

I have listed some of what I consider the more interesting changes along with a short description of each. Much of this information is distilled directly from the Wiki page but I have not included all of the changes listed on that wiki page.

New desktop environments


Add the Deepin Desktop Environment. Deepin is a Chinese Linux distribution and DeepinDE is its desktop. The DeepinDE is based on the Qt 5 toolkit so can be easily installed on other distributions. It is intended to be simple and easy for new users.

Pantheon Desktop

Another new desktop for Fedora, the Pantheon desktop environment is the minimalist Desktop Environment that powers elementaryOS. It builds on GNOME technologies, but utilizes components that were written from scratch in vala, using the GTK+3 toolkit.

Other changes

Bash 5.0

Upgrade bash to 5.0 release. This release fixes several outstanding bugs in bash-4.4 and introduces several new features. The new features include some new Bash environment variables and improved history command that can delete ranges of history.

Boot Loader

Make BootLoaderSpec-style configuration files the default. This change enables the use of per-boot-entry configuration files, similar to those described in Boot Loader Specification (BLS), to populate the bootloader’s menu entries.


Make dbus-broker the default DBus implementation. Enable dbus-broker.service to use dbus-broker as system and session message bus backend. DBUS provides communications that allow things like plug and play to work by distributing event notifications to applications and kernel level tools.

Boost 1.69 upgrade

This change brings Boost 1.69 to Fedora. Boost is a set of free, peer-reviewed, portable C++ source libraries This will mean Fedora ships with a recent upstream Boost release.

Flicker Free Boot

Make Fedora Workstation boot graphically smooth, without the display briefly turning off and without any abrupt graphical transitions.

FreeIPA Python 2 Removal

No it is not free beer! FreeIPA 4.8 will require Python 3.6+ and therefore no longer provide Python 2 packages on Fedora 30.


Fully remove deprecated and unsafe functions from libcrypt. This change is about removing binary support for deprecated and unsafe functions and bumping libcrypt.so to libcrypt.so.2.


Switch GCC in Fedora 30 to 9.x.y. An attempt will be made to rebuild all packages with it, or optionally rebuild just some packages with it and rebuild everything else in Fedora 31.

GNU C Library

Switch glibc in Fedora 30 to glibc version 2.29.

GNOME 3.32

Update GNOME to the latest upstream release, 3.32.

GnuPG 2

Use GnuPG2 as the default GPG implementation. The /usr/bin/gpg path representing the main GPG implementation will now use GnuPG 2 instead of GnuPG 1.

Mass Python 2 Package

(Sub-)packages only providing python2 importable modules without additional functionality will be removed from Fedora unless some other package(s) depends on them.

Obsolete Scriptlets

Remove scriptlets which are not needed anymore (ldconfig, gtk-update-icon-cache, etc.).

Locale settings

When logging in over ssh or another mechanism, locale settings are forwarded. If the destination does not support that locale, C.UTF-8 will be used instead.

Ruby 2.6

Ruby 2.6 is the latest stable version of Ruby. Many new features and improvements are included for the increasingly diverse and expanding demands for Ruby. With this major update from Ruby 2.5 in Fedora 29 to Ruby 2.6 in Fedora 30, Fedora becom

Deprecate /etc/sysconfig/nfs

Deprecate /etc/sysconfig/nfs and only use /etc/nfs.conf to configure NFS daemons.

uEFI for ARMv7

Move to uEFI as the default boot mechanism for ARMv7 devices.

Fish 3.0

Update Fish to 3.0. Fish allows tools like Midnight Commander and other file managers to access filesystems on remote hosts for easy copy and move from one host to another.

Haskell GHC 8.4 and Stackage LTS 12

Update the ghc Haskell compiler version from 8.2.2 to 8.4.4 and Haskell packages to Stackage LTS 12 versions.

LXQt 0.14.0

Update LXQt to 0.14.0.

MongoDB Removal

The Server Side Public Licensev1 (SSPL) under which MongoDB is distributed is not a Free Software License. Therefore, MongoDB has been removed.

java-openjdk JDK12

Update rolling package of java-openjdk to JDK12

krb5 crypto modernization

krb5 will be removing support for DES, 3DES, crc-32, and MD4 entirely; they will not be allowed in session keys or long-term keys. Additionally, RC4 and MD5 will be marked deprecated and dangerous.

PHP 7.3

Update the PHP stack to latest version 7.3.x

Upgrading to Fedora 30

Yesterday, April 30, Fedora 30 became available. Fedora 30 has some interesting new features as well as some bug fixes so I decided that I wanted to upgrade all of my physical computers as soon as possible.

I first upgraded one of my test computers from Fedora 29 to Fedora 30 just to verify that the upgrade would work. This host worked just fine after the update so I began the process of upgrading the rest of my hosts. All of my hosts have been successfully upgraded to Fedora 30.

Because multiple steps are required to perform these upgrades, I have a script that I use, called UpgradeFedora.sh. It automatically performs all of the steps required for upgrading from one release of Fedora to the next. The guts of the code are shown below.

 # Set the new Fedora release number
# Do all current updates to prepare for the upgrade
dnf -y update --refresh
# Install the system upgrade plugin
dnf install -y dnf-plugin-system-upgrade
# Perform the upgrade
dnf -y system-upgrade download --refresh --releasever=$TargetRelease --allowerasing
# Reboot and perform the upgrade
dnf system-upgrade reboot

You can use this little script as it is, but I have a more easily used script that handles things like obtaining the value of the variable $TargetRelease from a command line option. You can download the complete script from http://www.both.org/downloads/UpgradeFedora.sh to get the complete script.

I did have one problem on one of my servers. The /var filesystem filled up during the download of Fedora 29 packages and it generated an error to that effect and exited. I used LVM to extend the /var logical volume, expanded the filesystem itself using resize2fs, and reran the script. The upgrade programs called by the script know enough to pick up where they left off, doing nothing for any step that is already completed. A reboot was not required because Linux LVM allows this to all be done with the filesystem on-line and active.

Fedora 30 has both graphical and command line options for performing upgrades. See this Fedora Magazine article for details of both methods. I personally prefer the command line methode so I can do these upgrades remotely on several computers.

Linux process scheduling

I read an informative and interesting article today at Opensource.com about process scheduling in Linux, CFS: Completely fair process scheduling in Linux. It goes into some detail about the Linux Completely Fair Scheduler which has been around now for a bit over a decade.

Understanding how the Linux kernel schedules tasks for CPU time is an important part of our knowledge as SysAdmins. It enables us to understand why programs might be unresponsive and how to deal with that. Dr. Marty Kalin, the author, has covered this in an understandable way that helped me to understand this important kernel task.

Don’t miss this excellent article.

Server repairs completed

It has been a challenging few days due to a series of hardware failures. I had two systems that were complete failures two with minor problems and one that might be easily fixable. But the server is back up and running so email and my web site are functional again.

It all started last week when my old server crashed due to an intermittently failing hard drive. I managed to get that back up and running temporarily with a bit of luck and a complete BIOS reset. I was able to keep it running long enough to choose a spare host and move DHCP, DNS, NTP, and firewall services to it.

While I was working to move additional services to my new server, the motherboard on my wife’s computer failed so I took some time to replace that. Of course the motherboard on that system was so old that the only option was to go with a new motherboard, CPU, memory, and a power supply that could deal with an Intel i7 1151 hexa-core processor.

After fixing my wife’s system and getting a good bit of work done to move web services and email to my new server, the old one died permanently.

It took me a couple days to get web and email up and running on the new server because I was moving from CentOS 6 to Fedora 29 which included updates to both Sendmail and Apache. It took a bit of research but I was able to determine that the fix for each were minor changes to obscure configurations for the newer versions of those services.

Both web and email are complex installations. My web site uses Apache web server and WordPress with a MySQL (MariaDB) back-end database. For email I use Sendmail with SpamAssassin and MimeDefang for spam filtering. The good news is that a simple restore from backups of the data and everything was up and running – you do make backups, don’t you?

I apologize if you tried to send me email or visit one of my web sites and were unable to get through. If you send me email between January 21 and today and did not receive an expected reply, please let me know and I will respond as soon as possible.


Server upgrade in the works

After some work to determine the extent of my server problems, I have decided that it is time to go for a complete upgrade. I have another Fedora Linux system that I have been using for several months that is the prime candidate as the target for this move.

Over the next few days I will be moving services such as DHCP and DNS from the old server to the new. After the basic service moves, I will move web and email services to the new server.

I intend to go slowly and ensure that each service is working properly on the new server before working on the next.

There will be outages of various lengths during this process although I am hoping that only one service at a time will be affected. Where possible I will try to post a notification here in advance of outages. I may not be able to do that in all cases but I will try.

Again, thanks for your patience.

Web Site Outages Today

Due to a failing power supply, my web and email host has been repeatedly rebooting every few minutes this morning. This caused intermittent web site outages and would have made accessing this web site quite frustrating. I apologize for the inconvenience.

I was able to determine that it was the power supply quite easily because it was very hot to the touch. After replacing the power supply the server is now running butu there is still a problem.

There appears to be an issue with the motherboard in which the system dies and won’t restart when the case is placed in an upright position. This is probably cause by a short on the motherboard that is created when the case is upright and the weight of the cables is causing different force vectors on the main board.

I hope to do some additional testing to determine the true source of the problem and repair it. This might require purchase and installation of a new motherboard.

Expect more hopefully short outages today and possibly tomorrow as well.

Thanks for your patience.

Why I Hate Windoze

Well – one reason anyway.

I use a virtual Machine (VM) with Windows 10 installed for research on a new book I am writing. I started that VM this afternoon to do some testing and took a few screen shots to include in that book. After I finished up with that, I was going to shut down the VM but then this – the Blue Screen of Updates.

Windoze Blue Screen of Updates

This has been going on for hours, now, despite the fact that this VM has assigned to it 8 CPUs (4 Cores) of the 32 CPUs (16 cores) and about 24GB of RAM of the 64GB that I have on the physical host. Here is what that looks like in htop.

PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
22254 dboth 20 0 26.3G 23.7G 23.5G S 13.1 37.9 4h32:53 │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 08219ab 22422 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 1:41.72 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22304 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.16 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22302 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 1:52.65 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22301 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.10 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22300 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.02 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22299 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.00 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22298 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:33.08 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22297 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.73 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22296 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 1:54.59 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22295 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 1:43.01 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22294 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.32 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22293 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.39 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22292 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.00 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22291 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.00 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22290 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:01.40 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22289 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:30.35 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22288 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.00 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22287 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 0:00.00 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22285 dboth 20 0 26.3G 23.7G 23.5G S 2.0 37.9 29:35.40 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22284 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 29:38.65 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22283 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 49:19.77 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22282 dboth 20 0 26.3G 23.7G 23.5G S 0.7 37.9 28:13.68 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22281 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 25:38.74 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22280 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 22:36.03 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22279 dboth 20 0 26.3G 23.7G 23.5G S 0.0 37.9 29:00.56 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821 22278 dboth 20 0 26.3G 23.7G 23.5G S 6.6 37.9 47:30.30 │ │ ├─ /usr/lib/virtualbox/VirtualBoxVM --comment Win10 --startvm 0821e>

These lines copied from htop show that the Win10 VM has been running for hours and taking over 26GB of RAM. This includes what I assigned plus the VirtualBox overhead. But that is huge in terms of both RAM and CPU time. Updates to a Linux system never, ever take that much system resource or real-world time. 

Meanwhile, the virtual machine is of no use to me as I cannot do anything on it until the updates and multiple reboots are completed. Not to mention the fact that I had no choice about when this happened. It just started and did not give me an opportunity to opt-out.

On Linux I can work while the updates are being installed, and I do not have to reboot until I am ready. Only one reboot is ever needed to install updates and I can choose when I want the updates to be installed and then, separately, when I want to reboot my Linux computer.

To make this even more disturbing, after it finally rebooted for the umptieth time — or so I thought — I logged in and it had the audacity to display in the screen, “Hi. We have some updates to install,” or something to that effect. 

Some of my friends wonder why I don’t use Windows. This is one reason. 

Fun with ASCII art on the Linux command line

This really brings back memories of when I worked night shift on an IBM 1401 and we used to print ASCII art on the IBM 1403 printer when we had nothing else to do.

This fun little utility, boxes, can draw various forms of boxes around text at the Linux command line. Jason Baker, my friend at Opensource.com found this and made it the subject of the first of 24 articles he will be publishing this month.

                 / .===. \
                 \/ 6 6 \/
                 ( \___/ )
 /                                       \
| OK, Jason, how did I not know about the |
| boxes utility before?!                  |
                  |  |  |
                  |_ | _|
                  |  |  |
                 (__/ \__)

I look forward to Jason’s next Linux toy.


The eBook version of The Linux Philosophy for SysAdmins on sale for $7


The eBook version of my book is currently on sale for $7.00 at Apress from now through November 26, 2018. Click on the image at left or here to go directly to My book’s page at Apress where you can purchase it. You can also go here to see all of the eBooks that Apress has on sale.


About The Linux Philosophy for SysAdmins

The Linux Philosophy for System Administrators is not about learning new commands, processes, or procedures. Rather it is about becoming a better SysAdmin through understanding the power of Linux as a function of the philosophies that built it. SysAdmins will learn how to unleash that power with the knowledge enabled by a philosophical approach that targets their unique needs.

This book uses a relatively few common Linux commands to illustrate practical, usable aspects of the philosophy. Readers will learn a philosophical approach to system administration that will unlock the power of the knowledge they already have. This book will enable SysAdmins and others to more fully understand and access the vast power of the command line using commands and tools that they already know and use.

This book takes place on the Linux command line, but it is not about the commands themselves. The commands are only the tools through which the beauty of the underlying structure of Linux is revealed. This book will help you learn how to do that using the philosophy contained in its pages.

Book availability update

My book The Linux Philosophy for SysAdmins is now available in hardcopy (softcover) at Amazon.

Please note that for a couple days Amazon was fulfilling this via a third party storefront on Amazon. Amazon now has my book in stock and it is currently sold and fulfilled directly through Amazon.

I would appreciate any reviews you post on Amazon, good or bad. I am writing two new books and any feedback will be appreciated so that my next books can be even better. If you wish to contact me directly, please do so.

LinuxGeek46 {at} both {.} org