Lousy Software Policies of Microsoft Windows 10

Been a long time since I had Windows as a primary OS on any machine I cared about. I had forgotten Microsoft’s lousy software policies. Nobody could really forget the lousy software or why <ALT><CTRL><DEL> became ingrained in the mind of generations. You can forget the really bad design when you only let Windows run in a VM.

Well, one has to be more specific when talking about bad design and Microsoft. In this particular case it is forced updates with forced reboots. Microsoft ASS-U-MEs that it is the only OS on your machine and that it controls the boot sequence.

Silly Microsoft! Trix are for kids!

The Trix rabbit

What Happened?

I left the office last night with Windows 10 started and BOINC running. Yes, if you are reading in sequence this post is one day after my previous post. I came out to find a Ubuntu 20.04 LTS login screen. Even after applying all of those updates that got applied yesterday Microsoft decided to push out yet another update forcing a reboot.

Forced reboots are why many corporations don’t allow developers to run Microsoft operating systems as a primary on their desktop. This is especially true in the medical device world where you can leave a long build of Qt or CopperSpice from source running when you go home. Having the host OS reboot and take out the Linux VM running the build really jacks things up.

Microsoft Defensive Strategy #1 – Fix Grub

sudo nano -B /etc/default/grub
Grub configuration

You want to change GRUB_DEFAULT=0 to be GRUB_DEFAULT=saved. At the end you want to add GRUB_SAVEDEFAULT=true. Exit and save the file.

sudo update-grub

That will generate new Grub menu for boot. It tells Grub to default to whatever the last selection was. If you have ten different operating systems installed when some kind of power issue causes your system to reboot, it will reboot to the last chosen OS.

Microsoft Defensive Strategy #2 – Try to configure Windows properly

You can find Windows users complaining to Microsoft directly that this “automatic reboot feature is a cancer.” There are many really long winded less than effective “work arounds” listed on official forums. Most of them seem to center around completely removing the ability to restart. Not just removed for updates, your ability to restart gets disabled as well. There are even some advertisement pumping sites like this one with information that might have been right at some point.

Here’s what I did.

This only works for Windows Pro. You shouldn’t be using “Home” for work anyway. Especially not if you need to leave tasks running overnight or for days.

You have to start by hitting the “Windows Key” and R.

Windows key

Hold down the Windows key and hit R then release both. In the run box that pops up you need to type the following:

gpedit.msc

When that application starts go to full screen mode. On the left navigate your way down:

Computer Configuration
    Administrative Templates
       Windows Components
          Windows Update
Navigate to Windows Update on left side of screen
You will then see a lot of settings on the right side

What people tend to do here is look for a “one & done.” Microsoft deliberately made this difficult. If you try that approach as many have, you still end up with the occasional update reboot happening. I took a more deliberate and measured approach.

Turn off auto-restart for updates during active hours
You are limited to an 18 hour window for “active hours”
Configure auto-restart reminder notifications for updates
240 minutes is as high as you can go
Configure Automatic Updates

Most people miss this rather obvious step. You can limit the damage to one day per week or month here.

Update settings

I changed it to every Thursday at 7am. I also told it to install updates for other products because this machine had word pre-loaded. Some people can remember useless things so they can get buy with one week per month. I always get way to involved in a project and forget little things like “Hey, my PC is going to screw me on the third week of the month.”

If I’m changing settings at a client site, (some allow us to do that, some don’t) I tend to choose 11:30am on Friday. Why? I usually find someone to go get fish and chips with on Friday.

Allow Automatic Updates immediate installation
Automatic installation

If Microsoft does not lie to you, this should be enabled. Why not let them automatically install things that aren’t going to bounce the computer or take down a service?

Turn on recommended updates via Automatic Updates

Recommended updates is a double edged sword. You should get a better experience but you increase the chances of needing a reboot.

Be Careful Here

No auto-restart with logged on users for scheduled automatic updates installations

This is the one and only setting people tend to reach for. It is also the most misleading. Many things you want to leave running uninterrupted don’t require an active login. A good example would be backup software where you schedule a task. On this day at this time it backs up your computer whether you are logged in or not.

Enable this

You need to control this setting along with the day and time. You can’t avoid the reboot, but you can mitigate the damage. Just how good do you think your automatic backup is going to be if updates try to apply while it is running? How about when the computer reboots half way through?

Re-prompt for restart with scheduled installations
Enable this and set it to at least 60 minutes

What we are doing here is assuming some restart will slip through so make Microsoft drag a plow. You can keep postponing while you are there. This is one reason you probably want to set the day and time for when you will be in the office. Yes, it is annoying if there are a lot of updates to apply, but you can personally stop any significant damage.

Should look like this when done

Linux Distros That Suck at Multiple Hard Drives

Some Linux distros really suck at dealing with multiple hard drives. Too many “maintainers” only have a laptop.

Background

You need a wee bit of background before we jump in. Hopefully you can see the featured image. Recently picked up this Lenovo M93p ThinkCentre from eBay. I specifically bought an M93p instead of M83 because I wanted two hard drives. I had a 480 GB SSD I wanted to transfer the Windows 10 over to and I had a 6TB Western Digital Black I wanted to use for the other operating systems.

Why did I buy this particular M93p?

Lenovo M93p Ports

I actually added the PS/2 ports today. The little cable showed up to do that. It already had both serial ports, wifi, and the NVIDIA add-on video card. If your eyes are real good you will notice that on the other side of that Wifi antenna is a parallel port.

Software engineers need a lot of ports. If book sales start picking up I may even have to break down and buy another dot matrix printer to print shipping labels with. Yes, parallel port dot matrix printers are still made. You can buy them from newegg.com today. There are lots of legal requirements to print with impact printers on multi-part forms in various shipping and transport industries. They also do a more economic and reliable job on mailing labels . . . if you buy the right one . . . and you have the proper printer stand.

Printer stand back

The best ones from days of old have both a center feed slot and a rear feed slot to accommodate either type of printer. Long time readers of this blog will remember I started work on a Qt and USB series and then life got in the way. That was all USB serial ports talking to real serial ports. My Raspberry Qt series also involved quite a bit of serial port work. My How Far We’ve Come series also involved quite a bit of serial port stuff as well.

Putting it mildly, I still do a fair bit of serial port work from time to time. If I get done with RedDiamond and RedBug without life getting in the way I’m going to start a new post series using CopperSpice and serial ports. The makers of Qt have honked off their installed base with the new “subscription licensing” for Qt 6.x and beyond. Even more honkable, if that is possible, is the chatter that they are trying to license the OpenSource QtCreator as well. Yeah, people are making a hasty exit from the Qt world and many are headed to CopperSpice.

Sadly Needed Windows

Unlike every other machine in this office, I needed to have Windows on this machine. There is some stuff coming up that will require it. There is no way in Hell I was going to try writing my serial port code using Linux in a VM. I may edit it there, but testing is a completely different story.

You’ve never spent days trying to track down why some characters don’t get through. Worse yet, the serial port just “stops working.” After you do a bunch of digging you find that someone baked in some super secret control strings to do special things in the interface driver of the VM. Nothing nefarious. Usually to support “remoting in” via cable connection.

Boot Managers

In the days of DOS and GUI DOS that Microsoft insisted on calling Windows, this was no big deal. BootMagic and about a dozen other competitors existed to help Noobies and seasoned pros alike install multiple operating systems onto the same computer. Honestly, I can’t even remember all of the different products that had a brief life helping with this very task.

OS/2 had Boot Manager backed in. Those of us needing to develop for multiple operating systems usually ran OS/2 as our primary. It just made life so much easier.

Early floppy based Linux distributions came with Lilo. It was generally pretty good at realizing Linux wasn’t going to be on the primary disk. SCSI controllers could support six drives and distributions were different enough you had to boot and build on each.

Grub

Later many distros went with Grub. To this day Grub has issues. The biggest issue is that each Linux distro adopts new versions of Grub at their own pace and Grub has a bit of history when it comes to releasing incompatible versions.

Adding insult to injury is the fact many Linux distros like to hide files Grub needs in different places. When you run your distros version of “update-grub” (as it is called in Ubuntu) it has to be a real good guesser when it wants to add a Grub menu line for a different distro.

Your second fatal injury happens during updates. Say you have an RPM based distro but have Ubuntu as the primary Grub OS. When your RPM based distro updates and changes the boot options for its own Grub menu entry in its own little world it has no way of informing the Grub that is actually going to attempt booting. Sometimes an “update-grub” will fix it and sometimes it won’t. A bit heavier on won’t that will.

Drives got too big

That’s the real problem. During the SCSI days when 80MEG was a whopper we put each OS on its own disk and just changed the boot device. That was our “boot manager.” Every OS existed in its own little universe.

As drives got bigger various “boot manager” type products could play games with MBR based partitions. Only one partition could be “active” so a tiny little boot manager got stuff into the MBR and it changed the active partition to match the requested OS.

Cheap but effective trick as long as you didn’t need more than four partitions. Only a primary partition could be flagged for active booting. Lilo and the other Linux boot managers started allowing Linux distros to boot from Extended partitions.

Today we have GPT and UEFI

I’m not intimate with how these work. The Unified Extensible Firmware Interface (UEFI) created the spec for GUID Partition Table (GPT). {A GUID is a Globally Unique Identifier for those who don’t know. That’s really more than you need to know.}

Theoretically we can have an unlimited number of partitions but Microsoft and Windows have capped support at 128. The UEFI should be replacing Grub, Lilo, and all of these other “boot manager” type techniques.

We shouldn’t have all of these problems

As you install each OS it should obtain its partition GUID then find the boot device and locate the UEFI partition on it. Then it should look for a matching GUID to update and if not found, create an entry. There is a spec so every entry should be following the same rules.

(If you read up on the OS/2 boot manager you will see that from the 10,000 foot level UEFI and the OS/2 boot manager conceptually have a lot in common.)

When any computer boots from UEFI and there are multiple operating systems in the UEFI partition, UEFI should show the menu and let the user select. This should all be in hardware and firmware now. We shouldn’t have Microsoft trying to lock us into their buggy insecure OS and Linux distros shouldn’t be trying to ham-fist Grub into UEFI.

The Split

I wanted all Linux distros to boot from the 6TB drive. I wanted Windows and UEFI to stay on the tiny SSD. This isn’t unreasonable. As all of the background should tell you, I’ve been doing things like this for decades. I did not want to try and stuff everything on the 6TB.

Each Linux distro would get 500 GB – 800 GB depending on how much I thought I would be doing in them. This means I should be able to put up to 12 different distros on the drive.

That may sound like a lot, but it’s not. You’ve never written code that worked perfectly on a Ubuntu LTS and failed rather bad on some of the YABUs supposedly using that LTS as their base . . . I have. The only way to know things for certain is to have a bunch of test systems. When you are testing serial port (or other device stuff) you need to be running on hardware, not in a VM.

Manjaro was the first failure

Manjaro kernel 5.9.16-1 was actually a double failure. I have this distro running on a pair of machines, but it is the only OS on them. Rather like what they’ve done with the KDE desktop. I rather hate the fact PostgreSQL cannot access the /tmp directory bulk import to restore a database doesn’t work on that platform. There are a few other odd Manjaro bugs as well.

I wanted to do some pacman packaging and some testing of the future serial port code in CopperSpice on Manjaro so it was first on the list. It booted fast and seemed to install clean. Rebooted the computer and boom, Windows came up. Navigated to the Advanced Settings under Settings in Control panel and tried to switch the boot OS. Boom! Windows is the only entry.

(*&^)(*&)(*

Let’s Install Ubuntu!

I had real dread when I reached for Ubuntu. That installer has had a lot of assumptions baked into it over the years. I was pleasantly surprised and slightly disturbed.

Installation went smooth and when I rebooted I was greeted with a Grub menu. Both Windows and Manjaro were on the Grub menu, but, should we really be seeing Grub on a UEFI system with multiple operating systems? Shouldn’t there be a UEFI menu that just has an entry for Ubuntu and when you select Ubuntu shouldn’t that be when you see a Ubuntu Grub menu?

Let’s See if Manjaro Boots Now!

Once I verified Ubuntu could boot and apply updates I rebooted and selected Manjaro. That’s as far as you get. The Lenovo logo stays on the screen and nothing else happens. HP owners have the same problem according to Reddit.

Fedora 33 Was Next

The Fedora installer was the worst of the lot. If you chose the second drive via one of the manual methods, it looked for a UEFI partition on that drive. It wasn’t smart enough to determine what the boot device was and go look there. You couldn’t get out of the screen either. There was no back or cancel, you had to power down.

Summary

Manjaro at least tried to install. It failed to create anything in the UEFI partition of the boot disk and it failed to show any error with respect to UEFI creation failure. It refuses to boot from the entry Ubuntu created for it in Grub. Double failure. I suspect this is due to a combination of super secret stuff needed on the menu entry, Manjaro using a different version of Grub, and Manjaro potentially hiding the files in a place Ubuntu doesn’t know to look.

Fedora failed to get out of the starting blocks. That graphical installer needs a whole lot of work!

Ubuntu worked despite my expectations of abject failure.

Just because Ubuntu worked doesn’t mean every YABU will. Most tend to write their own installers. If the developer working on the installer only has a laptop, they are going to take unreasonable shortcuts.

Related posts:

Fedora 33 Black Screen Again

How to Install PostgreSQL on Fedora 33

Fedora 32 – Black Screen After Login

OpenSuSE When Home Isn’t /home Anymore

Over the last few days I’ve been building a new desktop machine.  I was going to hold off another year or so, but, I’m getting paid well for doing timely writing and I didn’t want to find myself suddenly reduced to my laptop.  I had replaced a few components in my other machine, but the CPU and motherboard were over 5 years old according to the dates they displayed when booting.  I had recently even had to replace the CPU fan due to noise the other one was making, thus, I bit the bullet and ordered enough pieces to assemble an AMD 3Ghz Quad Core desktop in an old Systemax case I had laying around.

This one needed to have a DOS boot partition as well as OpenSuSE because I might get back into doing some Zinc work later this year.  I dutifly obtained MS-DOS 7.10 GNU licensed DOS and FreeDOS 1.1.  After installing MS-DOS, then FreeDOS, I was horribly upset with FreeDOS.  It had way more problems than the previous version AND most of the boot software now displayed MS-DOS 7.1 logos.  The same appeared to be true with both the DRDOS enhancement project and NXDOS.

Of course, I made the grand assumption that my FAT-32 DRIVE_D partition would be accessible by either DOS.  Ever since I started using OS/2 over a decade ago I had the habit of keeping either a FAT-16 or FAT-32 DRIVE_D partition so I could exchange files with any other OS on my machine.  There was a time when I had (and needed) more than three operating systems on the machine due to the work I was doing at the time.  The FAT logical drive in an extended partition allowed me to quickly exchange data.  This was long before we had thumb drives.  You should also know that USB devices and DOS don’t have the magic they do with GUI systems.

Insult was added to injury when I booted MS-DOS 7.1.  (FreeDOS once again had issues booting under Grub.)  The “extended partition” created by the OpenSuSE installer has a type of 69 which is completely unrecognized by MS-DOS.  This lead me to delete the FreeDOS partition and manually move the DRIVE_D logical drive to a physical primary partition.  Of course I also decided to expand two other logical drives to utilize the space once consumed by DRIVE_D.  I used the Gnome Partition tool on Parted Magic 6.7 CD.  I knew I should have just backed things up, deleted, then restored, but, I was getting ready to leave so opted to let this run all night, which is exactly how long it took.

I was the good little soldier.  I booted recovery and dumped the information to manually edit fstab.

linux-pus9:/home/roland # fdisk -l

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028bf5

Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63    40337407    20168672+   c  W95 FAT32 (LBA)
/dev/sda2        40337408    81981439    20822016    b  W95 FAT32
/dev/sda3   *    81981440  2930276351  1424147456    f  W95 Ext’d (LBA)
/dev/sda5        81983488    86188031     2102272   82  Linux swap / Solaris
/dev/sda6        86190080   128135167    20972544   83  Linux
/dev/sda7      1227030528  2695049215   734009344   83  Linux
/dev/sda8      2695051264  2930255871   117602304   83  Linux
/dev/sda9       128137216  1227028479   549445632   83  Linux

 

Partition table entries are not in disk order

I also completely ignored the last line in green.  Very carefully I changed all of the FSTAB entries to match this output.  When I rebooted my home was gone.  It was there under a different “home” location, just not the one the boot pointed to.

Much frustration and head scratching occurred, then I noticed this:

partitioner view
Yast expert partitioner

The output from fdisk has the partitions in the wrong order.  My books partition was being mounted as /home, and several other things were hosed.  Another careful edit session followed by a reboot made things all better.

 

Grub, Linux Bug With SATA

I’ve spent the last couple of days ripping my hair out trying to identify why a FreeDOS partition I installed prior to an OpenSuSE installation would not boot from Grub. Oh, it would try to boot, but then it couldn’t find the C drive once it finished loading or mostly finished. This was most infuriating.

At first I suspected it was because I had placed the SWAP partition on a different drive since the SWAP drive was appearing out of order in the device list. I did some backing up, some reformatting, and some restoring but still no love.

I started testing things like System Rescue CD 1.2.0, Partition Commander 10, Image for Linux, and most other things where I had a bootable CD. All of them use some form of Linux kernel load. I even found the instructions for listing the device order in Grub and did that. That piece of shared code between Grub and the Linux base which identifies drive hardware at system boot is broken. It identifies SATA drives in the reverse order they are seen by the BIOS.

You can test this yourself. Hook up 3 SATA drives of different sizes. Boot to your BIOS and see the way the BIOS orders the drives (write down the order). Use a bootable CD like System Rescue CD 1.2.0 or your OpenSuSE installation media which will let you open a partitioning tool. Take a look at the drive order. You will see the SATA drives are backwards.

There is no amount of parameters tweaking you can do in Grub to get FreeDOS to boot when the BIOS and the loader don’t see the drives in the same order.