Server+ beta results are out!

Well, the results for the beta test of the new Server+ (SK1-005) are finally out! And, to God be the glory, I passed! Barely, but I passed!

It took a long time to get the results from this beta test, and after emailing the CompTIA help desk, I learned this was due to Covid-19 delaying the process. Fortunately, they were able to get it done. As well as passing the Server+ exam, this gave me the stackable certification of CompTIA Network Infrastructure Professional and another badge.

The test was very interesting, and of course, due to non-disclosure, I can’t regurgitate the test for you, but in general, it seemed to be rather balanced between Windows and Linux, which was nice. In the past, the tests seemed to be a lot heavier on the Windows side, and it was nice seeing Linux take a more prominent role in the test.

Of all the tests I took, this one seemed to be the most “cumulative”. What I mean is that this test seemed to be a better compilation of previous certificate material (A+, Net+, Sec+, Linux+) than most other tests. Perhaps that is the nature of a tests about servers, since they really are just supped up computers and everything relies on networking and security, as well as a good mix of Linux, as a lot of servers us that OS.

Either way, really relieved to get the reports and find that I did pass the test. It was a bit harder to study for, since, as a beta test, there was no study guide or tutorial to follow. I did study the previous Server+ material to help prep for the test.

Linux – keep it simple.

A Discrete 10 Meter Dipole

I’m a bit new to the HAM radio scene. I’ve been playing around with it for a while, since I got my license back in 2018. For the most part I’ve been on the 2 meter band, and I decided it was time to step it up a notch and try some lower frequencies.

One item that helped push me in this direction was the availability of a TS-520 Kenwood radio that my brother has asked to store at my house. It needed a little bit of work, so I’ve been playing with it a bit, cleaning it up, and decided to try putting it on the air.

Of course, that would mean I need an antenna. So, I decided to purchase a 1:1 balun and set up my own dipole. I could put it out in the yard, we live on an acre and a half, and I’m not ashamed to be a HAM radio enthusiast, but I felt it would look nicer if it was a little more discrete. So, I put it in the attic.

The radio itself sits in the laundry room, with a wire that runs up the wall, outside through the old dryer vent (it used to be in a different spot), up the side of the house, and into the roof trusses to the attic area. Our house has a cold roof, so it is not heated and open air.

I made sure to follow the math rules for building it at a length (feet) = 468 / frequency (MHz), giving me a dipole at around 16.5 feet total. The kids helped me hold the wire while I cut it to length, and then I climbed up in the attic to string it up. My brother brought over his antenna analyzer which gave me a little less than 2:1 SWR on 28.4 MHz, which wasn’t perfect, but good enough to get started!

We did a receiving test while he was in the yard with his mobile unit, and I was able to pick him up. I still need a microphone, so I was not able to transmit a reply yet. But, more to follow!

Linux – keep it simple.

Convert AVI to MP4 for Piwigo

As it turns out, Piwigo and AVI files don’t play nicely together. So, I shamelessly ripped off this thread, and wrote a script to automatically convert my camcorder’s AVI files into MP4 videos and put them into my gallery:

#!/bin/bash

echo "Converting videos..."
cd /home/alaskalinuxuser/Videos/
for i in *.avi; do ffmpeg -i "$i" -c:a aac -strict -2 -b:a 128k -c:v libx264 -crf 20 "${i%.avi}.mp4"; done
for i in *.AVI; do ffmpeg -i "$i" -c:a aac -strict -2 -b:a 128k -c:v libx264 -crf 20 "${i%.avi}.mp4"; done

echo "Moving videos..."
mv /home/alaskalinuxuser/Videos/*.mp4 /var/www/html/galleries/camcorder/
cd /home/alaskalinuxuser/Videos/
rm -rf *

chown -R apache:apache /var/www/html/galleries/
echo "Changed owndership"

.....EDITED OTHER FUNCTIONS THAT ARE SPECIFIC TO MY PIWIGO SERVER IMPLEMENTATION.....

exit

Note the double quotes, I learned that this is important because single quotes will not properly handle some characters and spaces in file names. As it turns out, the camcorder we have does not allow you to change the naming convention, nor to use anything other than AVI as the video format.

Linux – keep it simple.

Free QSO Logbook Sheets

As I begin branching out in the amateur radio world, I came to realize that I needed some form of log to capture my contacts. Of course, I found several log books available on Amazon and the like, but as this is a side hobby, I would like to cut down on costs.

There are also several computer programs to handle this, which also are free, in various forms, but the problem with this is that I did not want to be tethered to a computer while I am transmitting or receiving. So, I jump online and searched for any downloadable, printable QSO sheets. Surprisingly, I found none.

If you happen to find some, be sure to let me know in the comments.

However, if, like me, you want to just have some sheets to download and use for yourself, I’ve made a spreadsheet and PDF version that you can readily use and even modify for your own needs. You can download them here and print/use/edit to your hearts content!

Linux – keep it simple.

Adding A Video Plugin To My CentOS Piwigo Server

Previously, I had decided to ditch Google apps, including Google Photos. That meant that I needed a new photo backup solution, of which I have written several articles on this blog. The main portion of the server was Piwigo, a photo viewing/sharing/organizing server that you can view from other devices over the internet. Feel free to check out my previous posts by searching Piwigo to see the setup.

One feature that was missing, however, was the ability to display and view videos. This brought me on a long adventure that I will summarize here, because it wasn’t as easy as it first seemed.

The first thing I needed was to download the right plugin. There were several to pick from, but the one that seemed to be the easiest to integrate was called video-js. I simple logged into my Piwigo server as the administrator and went to the plugins and clicked install. Seemed pretty simple so far….

But, that’s when the problems began.

Following the video-js documentation, I set all my settings under the settings tab, and then moved over to the synchronization tab. I was immediately greeted by yellow triangles because ffmpeg, mediatool, ffprobe, and exiftool were not found. So, I jumped into the terminal, but found that those packages don’t exist in CentOS’s yum repositories. A little bit of internet searching lead me to do this (wish I had written down the reference) :

# yum install mediainfo
# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# yum install ffmpeg ffmpeg-devel -y
# yum install perl-Image-ExifTool.noarch

After installing those packages, now I could go to the synchronize page and received no errors. Unfortunately, after setting the synchronization settings to my liking, pressing submit returned only this error: “You ask me to do nothing, are your sure?”

So, after more web searching, I went to the video-js plugin issue tracker and found others with the same problem. Included was also a fix by a user named ipsedix: https://github.com/xbgmsharp/piwigo-videojs/issues/162#issuecomment-605990233

Back at the command line again, I jumped into my MariaDB like so:

[root@localhost alaskalinuxuser]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1302
Server version: 5.5.65-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| piwigo             |
| test               |
| uloggerdb          |
+--------------------+
6 rows in set (0.01 sec)

MariaDB [(none)]> USE piwigo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [piwigo]> SHOW TABLES;
+-------------------------------+
| Tables_in_piwigo              |
+-------------------------------+
| piwigo_caddie                 |
| piwigo_categories             |
| piwigo_comments               |
| piwigo_config                 |
| piwigo_favorites              |
| piwigo_group_access           |
| piwigo_groups                 |
| piwigo_history                |
| piwigo_history_summary        |
| piwigo_image_category         |
| piwigo_image_format           |
| piwigo_image_tag              |
| piwigo_image_videojs          |
| piwigo_images                 |
| piwigo_languages              |
| piwigo_old_permalinks         |
| piwigo_plugins                |
| piwigo_rate                   |
| piwigo_search                 |
| piwigo_sessions               |
| piwigo_sites                  |
| piwigo_tags                   |
| piwigo_themes                 |
| piwigo_upgrade                |
| piwigo_user_access            |
| piwigo_user_auth_keys         |
| piwigo_user_cache             |
| piwigo_user_cache_categories  |
| piwigo_user_feed              |
| piwigo_user_group             |
| piwigo_user_infos             |
| piwigo_user_mail_notification |
| piwigo_users                  |
+-------------------------------+
33 rows in set (0.00 sec)

MariaDB [piwigo]> UPDATE piwigo_config SET value="a:0:{}" WHERE param="vjs_sync";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [piwigo]> exit
Bye

Now we were getting somewhere! Unfortunately, because I had over 1000 videos in the server, I kept getting errors and time outs. This caused the process to fail repeatedly when I try to synchronize. It would usually only get through the first 200 or so videos before stopping. So, as a quick and dirty fix for that I unchecked the setting to “Overwrite existing posters”. This way, even though it would time out or fail, it would make the posters (thumbnails) for about 200 videos before it quit. Then all I had to do was run the synchronization process five or six times to get them all done!

Linux – keep it simple.

“Dude”, a 3D low poly man

Well, I guess I got a little board after finishing my last project. Usually I move right into some other project, but at the moment, I am lacking inspiration on what to do next. So, in the meantime, I decided to work on my low poly skills, namely, the art of character creation and rigging.

Rigging is the addition of a skeleton to the model so that they can be manipulated or animated. As you can see from “Dude”, he is able to move about and be articulated into any natural (and some unnatural) positions, such as running, pointing, kneeling, and being pushed backwards.

Perhaps the most interesting feature was that I gave him an articulate hand. He doesn’t have all 5 fingers, but he has a thumb, a pointer finger, and then three “connected” fingers on each hand. This allows for the pointing motion and some other articulate movements such as picking things up, or pushing buttons and holding objects like controllers.

Low poly art is interesting. There are so many “flavors” of it. Some low poly is focused on more of a “cartoon” look. Others are actually high poly objects with a small color pallet to produce a low poly feel. Yet some actually go for a square or “Lego” style. What I’ve done here is given the model sharp, angular features with no texture. The clothes are simply a change of the surface color of those polygons, rather than having a mapped skin with details.

I like this style and I’m trying to see what I can do with it. Hopefully a little practice will improve my skills.

Linux – keep it simple.

Fix a Nabi Big 20 HD Tablet that cannot connect to FUHU servers!

I recently got a Nabi Big 20 HD tablet to use as a camera viewer in a nursery at our church. The only problem was, when I turned it on, it kept giving me an error, stating that I had to hook up to the wifi, and that the FUHU servers had a problem. Essentially, since Fuhu went out of business, you can’t connect to the fuhu servers.

Since you can’t connect to the servers, setup can’t be completed, and this 20″ tablet became a 20″ paperweight. Obviously, that would not do, so I figured out how to use fastboot mode, TWRP, and the advanced file manager to delete the unneeded junk to make the tablet functional again. Below are my instructions, performed from a Linux computer. You could do this from Windows as well, if you download the right tools.

Before you begin, you will need the TWRP recovery image, which you can get from here: http://www.mediafire.com/folder/rul6liygr1rw3/Nabi_big_20_hd_tablet or from https://forum.xda-developers.com/android/development/recovery-nabi-bigtab-hd-20-t3035372

  1. Power off the tablet.
  2. Hold the volume up and power on buttons, and release them when you see the menu options.
    NOTE: This is actually fastboot mode!
  3. Perform an OEM unlock
alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~$ fastboot oem unlock
...
(bootloader) Showing Options on Display.
(bootloader) Use device keys for selection.
(bootloader) erasing userdata...
(bootloader) erasing userdata done
(bootloader) erasing cache...
(bootloader) erasing cache done
(bootloader) unlocking...
(bootloader) Bootloader is unlocked now.
OKAY [ 13.625s]
finished. total time: 13.625s
alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~$
  1. After this it reboots and starts up again, so power off the tablet.
  2. Hold the volume up and power on buttons again, release them when you see the menu options.
    NOTE: Once again, this is actually fastboot mode!
  3. Flash the recovery image.
alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~/Downloads$ fastboot flash recovery recovery.img
target reported max download size of 643825664 bytes
sending 'recovery' (8646 KB)...
OKAY [  0.313s]
writing 'recovery'...
OKAY [  0.314s]
finished. total time: 0.627s
alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~/Downloads$ 
  1. From the still open menu, use the volume keys to scroll down to “recovery mode” and press the power button once to choose it. NOTE: it will show the NABI screen, then reboot into TWRP. Unfortunately, ADB does not work in this version of TWRP.
  2. Go to “Mount” and check “System” and then click to disable MTP.
  3. Press the home key or back key to get back to the main menu.
  4. Click “Advanced”.
  5. Click “file manager”.
  6. Scroll to “priv-app” and select it.
    Click on each of these items and choose to delete them:
    fuhu_addapps2.apk
    fuhu_appzone2.apk
    fuhu_drmmanagerservice.apk
    fuhu_nabiaccountmanager.apk
    fuhu_nabiupdater.apk
    –Personally, I just deleted all “fuhu” apps in this folder, but I think you only need those ones.
    Then in the “app” folder, delete all the fuhu apps. Yes, I’m pretty sure you need to delete all of these ones.
  7. Select the home or back button to get to the main TWRP screen.
  8. Reboot to system.
  9. Enjoy!
    NOTE: It should start up, and may go through the Google setup (if you never started it before), and then will drop you off in “parent mode”.

At this point, I recommend installing a regular launcher, such as Trebuchet, Apex launcher, Nova launcher, etc. I used Apex launcher personally, because you can “hide” unwanted apps, and I use it to hide the unwanted Nabi apps. You should be able to see the Chrome browser in the parent mode window, use that to download the apk for the launcher you want (or use the Google account if you set up an account).

Once a launcher is installed, press the home key, and choose to always use the launcher you installed. You can now use this tablet as a regular Android tablet.

TWRP does have the option to install SuperSU and root the device. That’s completely up to you. Kingo Root also works incredibly well on this tablet. It will be stuck on Android 4.4.2, so it is a little outdated, but seems to work rather well. It was designed for gaming, so it is pretty powerful for as old as it is.

Linux – keep it simple.

Let’s Encrypt with DDNS on CentOS 7

My new A+ rating for my personal web server, with certificates from Let’s Encrypt!

A while back, I started using CentOS, with Apache, to host my own website. As I talked about here on this blog, the website is for my Piwigo server, which is a Google Photo’s alternative. My pictures from my phone are backed up to my home server automatically, and the Piwigo server acts as an interface where people with appropriate passwords can log in and see the photos. Typically, just me and my wife.

One problem that I had, however, was difficulty getting a certificate from a CA (Certificate Authority), and I had to use a self signed certificate. This worked great, to be honest, except that some browsers have a pesky “this is not secure” message that you had to accept alot. It got old if I was showing some one, either client or friend, the setup but had to acknowledge a big security warning.

So, I set out once again to try to get that fixed. I heard a lot of good things about Let’s Encrypt, the free, open source encryption method, and that they now support DDNS, so I thought I’d give it a try. So, logging into the terminal, I followed the instructions, and got this in the terminal:

[root@localhost alaskalinuxuser]# certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: alaskalinuxuser.ddns.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for alaskalinuxuser.ddns.net
Cleaning up challenges
Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

This was a bit confusing to me, since I could browse to my own website on port 80. But, fortunately, I found the answer here: http://tomaskalabis.com/wordpress/letsencrypt-unable-to-find-a-virtual-host-listening-on-port-80/

So, I made a new file at /etc/httpd/conf.d/alaskalinuxuser.conf and filed it in with this:

<VirtualHost *:80>  
    ServerAdmin alaskalinuxuser@fastmail.com
    ServerName alaskalinuxuser.ddns.net
    ServerAlias alaskalinuxuser.ddns.net
    DocumentRoot /var/www/html 
</VirtualHost>

After that, I exited nano and restarted the httpd daemon, and was able to re-run certbot:

[root@localhost conf.d]# certbot --apache -d alaskalinuxuser.ddns.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for alaskalinuxuser.ddns.net
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/httpd/conf.d/ssl.conf
Redirecting vhost in /etc/httpd/conf.d/alaskalinuxuser.conf to ssl vhost in /etc/httpd/conf.d/ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://alaskalinuxuser.ddns.net

And now I have a CA vouching for my web server!

Linux – keep it simple.

Putting LineageOS on a Samsung Galaxy S9 (SM-G960F/DS)

LineageOS on the Samsung Galaxy S9

Recently, a friend of mine wanted to get away from the stock software of their phone, and asked for my help to install LineageOS. There were several write-ups about how to do this, so I’m just sharing my experience of making this process work, in case it is useful to someone else.

First things first, LineageOS says that you need to be on the latest Android 10 firmware for this to work. So, after getting the phone, I turned on automatic updates under software update and had to go through 4 rounds of downloading and installing the updates. This took a while on a 10 Mbps internet connection, about 3 hours. But finally, it was up to date from Android 9 to now be Android 10 with the latest firmware.

During this time, I also downloaded the latest LineageOS nightly and recovery for the S9. As seen from their site.

Now with the latest firmware, I enabled developer options by clicking on about phone, and multiple taps of the build number to enable developer options. I looked in the developer options for the OEM unlock option, but it was no-where to be found. Interesting…. But, a quick search of XDA revealed that you have to wait 7 days after enabling the developer options before you can see the OEM unlock option. However, a user, named altai1963 had a neat post about disabling automatic time updates and changing the date to be a month ago and tricking the phone that more than 7 days had passed. So, I used it, and sure enough, it worked like a charm.

I did notice though, that I didn’t need to follow all of the steps they had done. All I did was uncheck auto date/time, and set the date back one month. Then the OEM unlock option became available under developer options. After I clicked on it, it asks if you want to wipe all of your data and proceed, to which I said yes. The phone rebooted to the Samsung logo for a while with a blue flashing notification light. After about 4 minutes, it said “Android wirt restarten” and then rebooted in (I believe) German.

Fortunately, Australian English was an option from the drop-down, as was Canadian English, so I went with my old friends the Aussies and clicked through the startup screens, choosing to skip setup of anything, since I was about to wipe it anyways to install LineageOS.

Now the fun begins….

I powered off the phone from the menu, and then held Volume down, the Bixby button, and Power button to power it on. Within a second, the screen was green with a download icon and lots of text, so I released all of the buttons, and per the on screen instructions, pressed volume up to allow changes.

Per LineageOS’s instructions, I tested that Heimdall (which was already installed on my Linux computer) was working and compatible with the phone:


$ heimdall print-pit
Heimdall v1.4.1

Copyright (c) 2010-2014 Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/

Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...

Initialising protocol...
Protocol initialisation successful.

Beginning session...

Some devices may take up to 2 minutes to respond.
Please be patient!

Session begun.

Downloading device's PIT file...
PIT file download successful.

Entry Count: 32
Unknown 1: 1598902083
Unknown 2: 844251476
Unknown 3: 21324
Unknown 4: 14665
Unknown 5: 12600
Unknown 6: 48
Unknown 7: 5
Unknown 8: 0


--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 8 (Unknown)
Identifier: 80
Attributes: 2 (STL Read-Only)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 0
Partition Block Count: 1024
File Offset (Obsolete): 1
File Size (Obsolete): 0
Partition Name: BOOTLOADER
Flash Filename: sboot.bin
FOTA Filename: 
----- Edited for breivety ------
--- Entry #31 ---
Binary Type: 0 (AP)
Device Type: 8 (Unknown)
Identifier: 25
Attributes: 5 (Read/Write)
Update Attributes: 5 (FOTA)
Partition Block Size/Offset: 1697152
Partition Block Count: 0
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: USERDATA
Flash Filename: userdata.img
FOTA Filename: remained

Ending session...
Rebooting device...
Releasing device interface...

And then the phone rebooted. So I shut down the phone again, and again went into download mode by pressing Volume down, the Bixby button, and Power button to power it on. Again, the screen was green with a download icon and lots of text, so I released all of the buttons, and per the on screen instructions, pressed volume up to allow changes.

Now from my computer terminal, I typed:

$ heimdall flash --RECOVERY ./lineage-17.1-20200615-recovery-starlte.img --no-reboot
Heimdall v1.4.1

Copyright (c) 2010-2014 Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/

Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...

Initialising protocol...
Protocol initialisation successful.

Beginning session...

Some devices may take up to 2 minutes to respond.
Please be patient!

Session begun.

Downloading device's PIT file...
PIT file download successful.

Uploading RECOVERY
100%
RECOVERY upload successful

Ending session...
Releasing device interface...

Now the phone showed a load bar across the screen. It was finished as soon as I saw it, so it was pretty fast. Then, I unplugged the USB cable, and per the instructions on the screen, held Volume Down and the Power button for 7 seconds to get out of download mode. As soon as it switched off, I held the Volume Up button with the Bixby button, and the Power button to go into recovery mode. This is important, because if you let it boot all the way into the stock ROM, it will wipe the recovery you just loaded. After a second or two, I could see the pink LineageOS recovery screen, and I plugged back in the USB cable to the computer.

On the phone, I used the volume keys and power button to select “Apply update” and “ADB sideload”. Then, on the computer terminal, I typed:

$ adb sideload ./lineage-17.1-20200615-nightly-starlte-signed.zip
serving: ‘./lineage-17.1-20200615-nightly-starlte-signed.zip’ (~17%)

To which it proceeded to 47%, and the phone screen had small white text at the bottom with status, eventually stating “script succeeded: result was [1.000000]” and giving me a prompt back on the phone screen and computer terminal.

At this point, I could install Magisk or Gapps, but in this case the owner of the phone wanted to install only LineageOS. So, I pressed the back arrow at the top of the phone screen, and tapped “Reboot System Now”. The phone rebooted and immediately showed me the LineageOS boot logo, and then a pop up asking me to wipe all encrypted data. I said yes, the phone rebooted to wipe the data, then rebooted back to LineageOS. Success!

One final note, when I started this process, the battery was at 100%, but by the time I finished, the battery was down to 67%, so be sure to fully charge the phone before you start this process, if you intend to follow along.

Linux – keep it simple.

Convert Nero’s NRG to standard ISO file format

While searching for inspiration for 3D programming ideas, I decided to play a few old games for a few minutes to get the feel for the classics. In so doing, I had one game that the CD was burnt using Nero, which saved the CD as an NRG file. Unfortunately, Linux can’t natively use NRG files without some tweaking or special programs.

What Linux can do, however, is convert the NRG files to standard ISO file formats which can be used in Windows. A quick duckduckgo search lead me here: http://ubuntuhandbook.org/index.php/2013/09/one-command-to-convert-nrg-to-iso-in-ubuntu-linux/

In the article, it suggests using nrg2iso, which should be available in the Ubuntu repository. While it was available, and seemed to work, the end result was an unusable file that took up over 600 mb of space and couldn’t be mounted as a CD. So, I had to keep digging. A quick apt-cache search for nrg gave me some clues:

alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~/Downloads$ apt-cache search nrg
libcdio-dev - library to read and control CD-ROM (development files)
libcdio17 - library to read and control CD-ROM
acetoneiso - feature-rich application to mount and manage CD and DVD images
bashburn - simplify cd/dvd burning at the command line
ecm - prepares CD image files so they compress better
furiusisomount - ISO, IMG, BIN, MDF and NRG image management utility
fuseiso - FUSE module to mount ISO filesystem images
golang-github-disintegration-imaging-dev - Simple Go image processing package
iat - Converts many CD-ROM image formats to iso9660
nrg2iso - Extracts ISO9660 data from Nero ".nrg" files

Iat looked interesting, online I could only find a page in German, stating it is an ISO9660 Analyzer Tool, but other searching online revealed it could be used for converting nrg files to iso’s as well. So, I gave it a try:

alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~/Downloads$ sudo apt-get install iat
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  iat
0 upgraded, 1 newly installed, 0 to remove and 28 not upgraded.
Need to get 7,056 B of archives.
After this operation, 24.6 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 iat amd64 0.1.3-7build1 [7,056 B]
Fetched 7,056 B in 0s (21.2 kB/s)
Selecting previously unselected package iat.
(Reading database ... 280573 files and directories currently installed.)
Preparing to unpack .../iat_0.1.3-7build1_amd64.deb ...
Unpacking iat (0.1.3-7build1) ...
Setting up iat (0.1.3-7build1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~/Downloads$ iat ./Mechcom_gold.nrg ./Mechcom_gold.iso
Iso9660 Analyzer Tool v0.1.3 by Salvatore Santagati
Licensed under GPL v2 or later

Detect Signature ISO9660 START at 339968
Detect Signature ISO9660 START at 342016
Detect Signature ISO9660 at 344064

 Image offset start at 307200
 Sector header 0 bit
 Sector ECC 0 bit
 Block 2048
Done                           
alaskalinuxuser@alaskalinuxuser-OptiPlex-7010:~/Downloads$ 

And the result was a success! Not only did it complete properly, but the generated ISO file was usable in Linux. So now I can play some games… er, conduct my research.

Linux – keep it simple.