August 2015 Video Games Report

Civilization 5 (14 hours):

Civ 5 - Lefties 1902
Civ 5 – Lefties 1902

Dan and Dave finally started playing their multiplayer turns again. YAY!

The Witcher (14 hour):

Finally was able to find some uninterrupted gaming time. Here’s the video!

If you’re interested in watching, it goes from session 25 through 40 (or more if I forget to update this section before I publish)

Super Mario 64 (3 hours):

Super Mario 64 - King Bomomb
Super Mario 64 – King Bomomb

Scarlett kept asking me to play until I found the princess.

Super Mario 64 - sliding in the snow
Super Mario 64 – sliding in the snow

Later in the month I heard that OBS had finally released their multi-platform version that included Linux compatibility. So I streamed a play session:

I just did a really quick setup so I still have some work to do to get the donations and twitch chat running as it does on Windows with Xsplit. Still, I’m pretty happy with the results. That computer’s not too beefy and yet the audio doesn’t jitter TOO much.

Sonic the Hedgehog 3 (1 hour)

Sonic the Hedgehog 3 Carnival Zone - Wheel of Centripidal Force
Sonic the Hedgehog 3 Carnival Night Zone – Wheel of Centripidal Force

I played a bit with Scarlett and finally made it to my FAVORITE level in Sonic 3 based on soundtrack – Carnival Night Zone! I have to say that while the Mario series certainly had some pretty iconic music, the Sonic producers during the Sega Genesis era were very good at creating great music for each zone. Check out this cover by Vernian Process:

I also loved all the ways they played with Sonic and gravity.

Sonic the Hedgehog 3 Carnival Zone - Defying Gravity
Sonic the Hedgehog 3 Carnival Night Zone – Defying Gravity

Team Fortress 2 (15 min):

I wanted to see if I could actually play it on Linux now that I’ve upgraded to a much more modern nVidia GeForce 750Ti. Before I was using a card so old, that a year or two ago they stopped supporting it on the main driver.

Also played a bit on my Windows computer to test some donation settings on my overlay:

Pacific Northwest Trip Part 2

This year happened to contain one of the driest summers the Pacific Northwest had seen. There were lots of fire raging, some intentionally set and some caused by nature. On the way to the Bachelor Party caving trip, I saw this immense plume of smoke from a fire.

Washington State Wildfire
Washington State Wildfire

I’d been to lots of caverns before, so that’s what I expected from this bachelor party trip. I first suspected I was wrong when I couldn’t find a sign for the place. My suspicions grew when Dave arrived (along with other attendees) and we just started walking into the woods. As we arrived at the entrance Dave told us that one can be sure he’s arriving at the entrance to a cave by spotting mosquitoes. Turns out we were going into a lava tube. I thought that meant we’d be walking in a cave that was fine as glass. Instead it was as if someone had chosen a cave to dump a bunch of rocks. We did see some baby stalagtites, though.

It was pretty trippy being in a place where if we shut off our flashlights we were in complete darkness. The flashlights didn’t even penetrate all the way to the end of the walls ahead of us.

Switching topics, here’s a panorama from where my parents were staying:

Panorama from my parent's rental place
Panorama from my parent’s rental place

It was a pretty spectacular view (even if my cell phone panorama doesn’t do it justice). There’s a bridge you can see in the distance that’s probably the scariest bridge I’ve ever been on. It was so narrow that any vehicles wider than a compact car took up space in the other lane. In fact, my uncle almost got into an accident when someone veered into his lane.

Next time: some photos from before the wedding.

Pacific Northwest Trip Part 1

A while ago I went to the Pacific Northwest for Dave’s wedding. I finally am getting caught up with my photos from back then. It was a fun trip because we’d lived in Oregon for a few years when I was a kid so I was able to revisit some fun areas.

First up was Multnomah Falls. It is the second tallest falls in the US and it’s a really neat hike. Because of timing and Scarlett being 3 (and unlikely to be able to hike back and forth) we only went up to the lower level. But it was still neat to be reminded of the great outdoors areas in Oregon.

Next time caving, fires, and a river.

Thankfully, Dave didn't pick this for our vests
Thankfully, Dave didn’t pick this for our vests

A Couple Windows 10 Upgrade Gotchas

  1. I “lost” my optical drives. I had to mess with a registry key to get them back.
  2. Here’s one I didn’t realize until I went to play Civ 5 and my saves were all gone. Because I have my main OS on a small SSD (and originally had my games on a regular hard drive – now they’re on their own bigger SSD), I had My Docs and My Pictures pointing to another drive. The Windows 10 upgrade lost those settings. I had to open up Windows Explorer and right click on each of those and change the location on the location tab.

Scarlett’s 3-Year-Old Vocabulary

Some people still treat TV as if it’s the boob tube (that’s boob as in dummy, not breast). But Scarlett’s kid’s cartoons led her to learn some stuff that led to the following exchange:

Danielle (rhetorically): Why does this monkey have a frog on its head?

Eric: It’s Swedish. (The toy is from Ikea)

Danielle: What?

Scarlett: No, it’s symbiosis!

Eric: Symbiosis? (I wonder if she knows what it means) What does that mean?

Scarlett: It means working together!

When we asked her where she learned that – The Magic School Bus? Octonauts? Some other show? She said it was from an Octonauts episode with a crab.

This guy has figured out the holy grail of PC gaming

I’ve been dreaming (no foolin’) about this for two or more years now – having one computer running Linux with a Windows VM for gaming when there aren’t Linux ports. Less hardware overhead for me. But until now VMs haven’t been able to gain native use of the graphics card. This guy figured out how to do it and it’s great. I’m likely going to do this next time I do a CPU/Motherboard refresh.

GPU Passthrough – Or How To Play Any Game At Near Native Performance In A Virtual Machine

Fedora Print Debugging Tip

I was having trouble printing and couldn’t figure out what was going on. I tried everything, including reinstalling the printer and reinstalling the driver. I was getting a misleading “you are using the wrong driver” message. Turns out SELinux was to blame! I happened to check dmesg and see some audit messages. Then I did a

setenforce 0

to turn it off and printing worked. I tried some restorecons on some directories, but I don’t think that fixed it. What I think fixed it was going into the policycoreutils gui and checking as active the cups module “Allow cups execmem/execstack.” Obviously, I turned setenforce back on after checking the box.

So if nothing works with printing – check out SELinux to see if it’s being overzealous.

Modern Fedora and SSH Server

Today I was banging my head against the desk trying to figure out why I couldn’t ssh to one of my Fedora machines. I knew that while Fedora wasn’t the most secure Linux distro out there, it was more secure than many by default. That includes having a strict firewall set up. But I had already enabled ssh. What was going wrong? Well, it turns out that the ssh daemon is disabled by default! Just typing the following:

systemctl enable sshd.service
systemctl start sshd.service

Got me up and running and able to be one step closer to running that machine headless. (Which is a good thing as it runs my main QEMU/KVM server so it doesn’t need to be wasting RAM on a GUI)

Upgraded Windows 7 to Windows 10

After waiting for a bit, turned out that the only real issue with Windows 10 is that you shouldn’t do Express Install unless you want Microsoft spying on everything. Also, now that I’m doing photography on Linux (another post about that at some point), the only thing I had to lose was the ability to play games for a while. The updater was pretty self explanatory and the process was more or less similar to a Fedora upgrade.

And here’s my Windows 10 Desktop:

Windows 10 Desktop 20150810
Windows 10 Desktop 20150810

Overall, the feeling I get is that of a dream started back in Windows 98 finally realized. Windows 98 had the whole Internet Desktop concept – you could put Internet slices on your desktop and it had this matte black theme. But we weren’t ready yet – we didn’t have broadband yet. So now, 16 years later, they’ve finally realized that idea with the Win 9x-Win 7 desktop and lots of internet added in – live tiles and that search bar on the bottom.

They’ve also added some great Linux innovations from the last few decades – virtual desktops and good notification areas.

What I learned while trying to diagnose a slow boot

I spent the weekend trying to figure out why SuperMario boots so slowly. I ended up overturning my ideas about what the problem was and learned a lot of new techniques. The only bad thing is that while I’m a lot closer to the problem, I’m still unsure of the root cause. So that the proper helpers can get credit, let me point you to the LinuxQuestions.org thread in which I worked this out. If you haven’t already clicked, don’t worry, I’m going to bring the relevant info over.

First off, there’s an hdparm test you can run to make sure your hard drive is running well. This will be followed by a command that will let you know if your hard drive is running as SATA-I, II, or III.

# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   7992 MB in  2.00 seconds = 4002.41 MB/sec
 Timing buffered disk reads: 190 MB in  3.00 seconds =  63.27 MB/sec

# hdparm -I /dev/sda | grep -i speed
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
for comparison purposes:

# hdparm -I /dev/sdb | grep -i speed
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
# hdparm -I /dev/sdc | grep -i speed
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
           *    Gen3 signaling speed (6.0Gb/s)

As you can see, two of my three hard drives are SATA-IIs so they aren’t as fast as they could be. Next up is how to view the SMART data on your hard drive. Nothing in the SMART data is a guarantee of WHEN your hard drive is going to die, but it can let you know that it’s in a bad state.

# smartctl -a /dev/sda
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.0.8-300.fc22.x86_64] (local build)
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.10
Device Model:     ST3160815AS
Serial Number:    6RA313Q3
Firmware Version: 3.AAD
User Capacity:    160,041,885,696 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7 (minor revision not indicated)
Local Time is:    Thu Jul 30 17:49:06 2015 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (  430) seconds.
Offline data collection
capabilities:                    (0x5b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        (  54) minutes.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   109   099   006    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   099   099   020    Old_age   Always       -       1809
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   089   060   030    Pre-fail  Always       -       878752509
  9 Power_On_Hours          0x0032   062   062   000    Old_age   Always       -       33741
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   020    Old_age   Always       -       1837
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   053   048   045    Old_age   Always       -       47 (Min/Max 40/47)
194 Temperature_Celsius     0x0022   047   052   000    Old_age   Always       -       47 (0 16 0 0 0)
195 Hardware_ECC_Recovered  0x001a   087   073   000    Old_age   Always       -       119456045
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 Data_Address_Mark_Errs  0x0032   100   253   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

But here is where I got to the most interesting data command, systemd-analyze. This will tell you how long it took to boot and why it took so long. First is the simplest set of numbers:

# systemd-analyze
Startup finished in 1.389s (kernel) + 11.939s (initrd) + 2min 36.838s (userspace) = 2min 50.166s

As you can see, not exactly great numbers for boot. But why? Well, there’s where we get to assign blame!

# systemd-analyze blame
    1min 25.354s initial-setup-graphical.service
         47.561s abrtd.service
         42.233s dev-sda3.device
         37.338s home.mount
         27.617s firewalld.service
         21.944s akmods.service
         21.569s smb.service
         18.883s NetworkManager-wait-online.service
         18.856s systemd-journal-flush.service
         17.703s NetworkManager.service
         16.135s systemd-udevd.service
         12.757s libvirtd.service
         12.379s cups.service
          9.896s plymouth-start.service
          8.033s nfs-idmapd.service
          7.771s console-kit-log-system-start.service
          7.769s vmware.service
          7.769s gssproxy.service
          7.767s mcelog.service
          7.421s rpcbind.service
          7.419s netcf-transaction.service
          6.405s rsyslog.service
          6.114s media-Photos.mount
          5.884s nfs-server.service
          5.827s colord.service
          5.089s proc-fs-nfsd.mount
          4.535s dnf-makecache.service
          4.057s vmware-USBArbitrator.service
          3.940s fedora-loadmodules.service
          3.744s systemd-binfmt.service
          3.597s media-nfs-xbmc\x2dmount.mount

Blame is pretty useful, but the usefulness is limited by the fact that some services are dependent upon other services before they can complete. So that’s where the critical-chain comes in:

# systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @2min 36.827s
└─multi-user.target @2min 36.827s
  └─smb.service @2min 15.256s +21.569s
    └─network.target @2min 15.199s
      └─NetworkManager.service @1min 38.605s +17.703s
        └─firewalld.service @1min 10.985s +27.617s
          └─basic.target @1min 10.598s
            └─sockets.target @1min 10.598s
              └─cups.socket @1min 10.598s
                └─sysinit.target @1min 10.534s
                  └─systemd-update-utmp.service @1min 10.313s +220ms
                    └─systemd-tmpfiles-setup.service @1min 9.938s +370ms
                      └─fedora-import-state.service @1min 9.008s +926ms
                        └─local-fs.target @1min 9.005s
                          └─home.mount @31.665s +37.338s
                            └─systemd-fsck@dev-disk-by\x2duuid-89cfd56a\x2d06c7\x2d4805\x2d9526\x2d7be4d24a2872.service @31.306s +88ms
                              └─dev-disk-by\x2duuid-89cfd56a\x2d06c7\x2d4805\x2d9526\x2d7be4d24a2872.device @31.306s

This was the most useful command in the entire exercise because it led me to the true culprit. I’d been ready to reinstall Fedora, sure that it was getting tripped up by a series of in-place installs or a slow, dying root hard drive. Instead, I found out that the biggest culprit was the mounting of home. This led to me my slightly inconclusive, but evidence-based conclusion that I perhaps didn’t buy the best drive for a /home drive. When I did some research based on what I now know, it seems that the hard drive I bought was meant for Tivos and stuff and so was not meant to have a fast mount time. Additionally, it changes its speed from 5400 to 7200 RPM depending on the situation. My /Photos drive is also a 3TB drive with btrfs, but it mounts instantaneously. Additionally, this did let me know that I still had VMWare services running so I WAS able to stop those and get about 30 seconds less boot time.

If any of my readers have some ideas, I’m willing to investigate some more. If not, I hope you at least learned some new, neat commands for diagnosing boot times and hard drive issues.