Search This Blog

Thursday, June 18, 2020

Linux, Newest Kernel, Old Hardware, Windows 10

I just had to do this post!  August will be 4 years of great performance for this Dell Precision 7710.  Kudos to Dell for great hardware design. I did an in depth review here in August 2016, Linux, Newest Kernel, Newest Hardware, Windows 10 when I first set up the system.

First, big Shout Out to one of my best friends and co-workers that introduced me to Debian, Nate!  Thanks for all the tips and support over the years.  Even though you couldn't keep up w/ the bleeding edge that is... testing! LoL

Next, I must say the folks at Oracle have done great at keeping VirtualBox Free to use at home, and stable enough to keep upgrading the same VM for four years.  Also, great work with the new VBoxSVGA graphics controller with 3D acceleration.  It not only works great, but screen resize and responsiveness with graphics intensive applications is flawless, even on this older Quadro M!

Microsoft, I'm shocked.  I thought for sure I would be wiping this VM at some point. Never did I think it would be running my entire Windows Experience flawlessly virtualized with Office, VPN and Updates for years.  I have almost 4 years of content packed in there!   I even use the USB passthrough with Web Cam and Smart Card reader, to support the use of Skype!

Last but not least, Linux Debian community.  Your packaging and persistence to compatible releases and regression tests has helped keep us Debian users stable.  At this point I'm running on Buster, and have made significant upgrades.

I can't recommend this configuration enough.  Only down side has been the Broadcom 5580 Smart Card reader, which has been broken in Virtualbox for at least 10 years.  USB card readers work just fine.

I should also say I spent a few years doing photogrammetry development.  That means this machine's CPU has been pegged at 100% for >24 hours continuously, while enormous amounts of disk have been consumed and deleted, with thousands of small to large (4GB+) files.  It is an absolute work horse.

I've also carried this thing around the U.S. and dragged it through airports and scanners on multiple occasions.  The disk is still encrypted with LVM, and I've updated the password more times than I can remember at this point.

Pleased to say I am now smoothly running with:

VirtualBox 6.1.10
Windows 10 Pro Build 18362.19h1_release.190318-1202
Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux

The only question now is, when do I get a new PC?  I still have 32 GB of RAM, 8 Logical CPUs running on a 6th Gen Core i7.  The GPU is totally adequate for almost all workloads, and the SSD SMART logs show no issue with the hard drive.  Wifi is fine, as well as sound.  All pluggable ports work well and the Keyboard and mouse pad has no issues or stuck keys. The backlighting for the keyboard still works as well.

One thing I did not cover in the original post (because I must have not seen the error) is the microcode for the Intel Chipset.  Make sure to install that if you see the TSC_Deadline Failure during boot. This was a "WARNING" i saw for years and ignored.  It may have effected performance but I didn't notice.  Nevertheless, I aim to understand all errors on my Linux PC, and solve them.

TSC deadline support is nice to have, but not vital. The kernel has an elaborate framework for timekeeping and timed event handling; TSC deadline is one possible implementation of event handling, but not the only one. On CPUs which support it, it is nice to have though, because it’s very efficient.

To upgrade your microcode and hopefully re-enable TSC deadline support, you can install the microcode update packages from Debian’s contrib and non-free repositories. To do so, edit your /etc/apt/sources.list to ensure that your Debian repository definitions include main, contrib and non-free; then run

# sudo apt update

followed by

# sudo apt install intel-microcode

(for Intel CPUs) or

# sudo apt install amd64-microcode

(for AMD CPUs). Once that’s done, reboot, and your microcode should be updated. If TSC deadline support is re-enabled, you won’t see the error message at boot, and you’ll see tsc_deadline_timer in the flags lines of /proc/cpuinfo.

The Debian wiki has more information on microcode updates.

Saturday, February 8, 2020

Synology Follow-Up

In the previous post ( I configured the Synology DS218j through a virtual network using an Ubuntu VM as the DHCP Server.  Today I wanted to back up some of my files, so I needed to configure some kind of share.

Enable SSHd on the VM

  1. $ sudo apt-get install -y openssh-server
  2. $ sudo systemctl enable ssh.service
  3. $ sudo systemctl start ssh.service

Create an Account on Synology

You will need an account to connect to on the Synology.  You could use the admin account, but don't.  This was easy enough and walking through the Wizard after clicking "Users" somewhere in Control Panel, I created an account named 'charlie'.  
The Control Panel is easy to find when you log in with the Web Browser on port 5000 over HTTP
HTTP is Plain-Text and thus Not Secure.  This is another good reason we are working on a private virtual network, as there are no other devices that could be snooping.

Check SMB Settings

By default SMB is enabled, but I discovered I needed to enable SMB version 3.0 on the Synology!  You'll find this under the "Advanced" SMB settings. 

Create a "New Folder"

Creating an account by itself does not create a Share/Folder that can be accessed from a remote client.  You'll need to create a new folder as well.  Again, the UI is intuitive and you should be able to navigate to "Folders" in the control panel, and create a new one, giving your user account created in the previous step "Customized" permissions.  I enabled "Full Control".  

Also, when creating the folder I set a password and enabled disk Encryption.  Filename lengths are restricted to ~170 characters in your storage folder if encryption is enabled.

Mount the Synology Share using CIFS

You'll need to install 'cifs-utils' using apt-get install first.  Then you can easily add the entry to the /etc/fstab using sudo.

Note the 'user' option.  This allows you to mount with the 'vubuntu' user, making it read/write approved for the SSH User.  Using `sudo mount` works too, but then accessing the VM remotely would require an SSH as root.  You can only SSH as root after modifying the "PermitRootLogin" setting in /etc/ssh/sshd_config.

Was all that Worth it???

I would have to say it was.  The goal was to back up my Desktop PC's data to the Synology, and I've achieved peek throughput of 540 Mbps while using WinSCP to move files from the Desktop's E:\ Storage drive to the Synology over the Cat5 cable.  Which is 67.5MB/sec.

While the connection is 1Gbps, Secure Shell and Virtualization are at play.  Again, this isolates the Synology from the web, while still providing high throughput.  Don't forget to run your Virus Scan on files before backing them up!

Synology Home NAS

Virtual Networked NAS

Everything Configured from My Desktop PC running Windows 10; Color-Coded based on Trust, where Green is obviously the most trusted.

Purchase and Put Together:

Total: $386.42
Both Seagate IronWolf 4TB Drives Installed in Synology DS218j

Create Virtual Switch for Desktop NIC:

  1. From Hyper-V Manager, Click "Virtual Switch Manager" on the Left-Hand "Action" Panel
  2. Select "External" for Create Virtual Switch Type
  3. Set Name as value that will be intuitive for your Desktop NIC. e.g. 'Wired External Switch"
  4. Choose the Ethernet Device Connected Directly to Synology NAS Device
Creating an External Switch in Hyper-V
Think of this as a 'physical' switch between your CPU and Network Card, with only 1 port (Your NIC!)

Create Virtual Machine and Install using ISO

Don't forget to add a second virtual NIC to the VM and attach it to the previously created external switch.
Creating "Dual-Homed" VM w/ 2 Virtual NICs
One for Synology, One for Internet(NAT)

Static IP for "Wired External Switch"

You've now got everything connected.  When you boot ubuntu you'll see 1 NIC has an IP (dhcp) from Hyper-V and provides Internet Connectivity.  The second is not enabled at all.  You'll need to enable this by editing /etc/network/interfaces as follows:
Configure Ubuntu to have a Static-IP.  This is normal for Servers that provide DHCP
Ensure 'eth0' or 'eth1' corresponds with the External Switch chosen above.
'sudo ifup eth0' will bring your NIC online after editing the interfaces file

DHCP Configuration (This part can be tricky)

I've used the network in this example to match up with the information provided in the link above.  Make sure to check your syntax after editing the file.  `ps -ef | grep dhcpd` should show the server is running.  If there are errors, use `journalctl` to view any errors, fix them, and use `sudo systemctl restart isc-dhcp-server.service`.  Once DHCP is running and everything is connected, you should see a Lease for the Synology using `cat /var/lib/dhcp/dhcpd.leases'.

Make sure to enable 'authoritative' DHCP, since this DHCP server is the only one on this External Switch.

Set up your Synology, Download the OS with VM

When the Synology gets an IP, it should get the first IP in your DHCP range. For me this was  Inside your VM, open a browser and go to 
You will be redirected to set up the device.  Your device wont have an internet connection because we did not configure the VM to act as a gateway/router.  So you'll need to click the link provided in the Synology setup, and Download the OS software to the VMs Downloads folder.  Once complete, verify the checksum `md5sum ~/Downloads/DSM_DS218j_24922.pat`.  This ensure you are getting the right software and no corruption occured during download.  Then switch back to the Synology configuration Tab, and Choose "Select a File/Browse", navigate to the Downloads folder, and 'upload' the .PAT file to the Synology via the web interface.  Finish the configuration and make sure to remember your NAS does NOT HAVE INTERNET CONNECTIVITY.  This is so that you can ensure it is secure and not downloading software you do not explicitly provide.

Once configured using Defaults, you should have 2 drives providing redundant storage with 3.6TB of Storage

What Next?

Now that everything is connected you'll want to think about how you want to access your synology from other devices.  You could simply connect the Synology to your Wifi Router now and access it via wifi.  However, this would expose it to the internet, so make sure you want to do that.

Another option would be to configure the Virtual Machine as a "Reverse-Proxy" for HTTP/HTTPS or set up the routing tables to forward specific ports and provide NATing back to the requester.  There are several possibilities at this point and I hope you have found this tutorial useful and informative.

Read more on how I configure SMB w/ SCP between the Host OS, VM and Synology devices in the next post,

Saturday, June 15, 2019

2005 Ford Expedition A/C Compressor Bypass Belt

Here are the signs your A/C is failing and you're in for some serious repairs.
  1. You smell a burning while A/C is running.  Not like burning rubber, more like burning electronics or wires/metal.
  2. You immediately turn off the vehicle because of the smell, and then later when you turn it on, NOTHING happens.  No turn over, no rough start, just a click and silence.
  3. Your Battery is fine, the starter is fine, and MAYBE it starts up again a while later.
In my case, this was the A/C failing.  The compressor is depicted below as part #9. It is part of the serpentine belt pulley configuration. #8 is the crankshaft pulley connected to the engine, and as you can see, WILL NOT TURN OVER IF ANY OF THE OTHER PULLEYS ARE SEIZED.  This is because the Starter (which starts the engine by turning over the crankshaft) doesnt have enough 'juice' to force the frozen pulley.

In my case, #9 froze up so tight the belt started squealing, burning up, and snapped in half.  These belts typically only handle a little over 260°F before they break.  With #9 seized up, and a 5.4L V8 forcing the belt to slide around it, eventually it will heat up and break.  At that point all of the check engine lights come on your dashboard, and you will lose power generation (battery wont charge, #3), power steering (hard to turn the wheel, #5), Cooling for the Engine, (overheating, #7) which will result in the need to replace the engine if it gets too hot (>190-210°), and of course A/C (#9).

So, now you have no belt, and #9 is seized.  You could have it towed, and spend $1500+ dollars getting the A/C components replaced, flushed, and re-charged.  In my case, I had pulled forward in to my driveway and wanted to do the work myself, but needed to move the vehicle.   So I started looking in to 'bypassing' #9!

This would look something like this.

If you're paying attention, you might notice the most obvious issue here is figuring out how long the new belt needs to be.  Another thing I chose to do was replace pulley #2.  Not only are the bearings likely old on this pulley, but in my case the pulley is 'smooth' and not 'grooved'.  I was concerned about the belt 'slipping' off the pulley, so i replaced it with an aftermarket pulley.

To figure out how long of a belt you need, use a piece of string and run it through the same path.  Measure the string and purchase a belt of the same length.

On my 2005, 5.4L V8 Expedition the options are:
  • Duralast 840K6 - 84.06" (Bypassing the A/C Clutch Pulley)
  • Duralast 1015K6 - 101.5" (Stock Belt, including the A/C Clutch Pulley)
(Duralast is just what is at my local autozone.  Just make sure to compare size, rib count, etc.)
You may notice on websites like Autozone, you cannot search by 'length', only by part number.  The pattern for these duralast belts seem to be 1/10" increments, and I guess K6 has to do with the 6 "ribs" on the inside of the belt.

e.g. 101.5 Inches is 1015K6  and 84.0 inches is 840K6, and so on.

Link to Autozone's Site with Belts ~ $25
Link to Autozone's Site with Idler Pulleys ~ $20
Breaker Bar ~ $17
Total Cost: $62

Make sure you have a breaker bar (1/2" drive) that plugs in to the square hole in #1. Pushing downward (away from the belt), you should feel the spring loaded tensioner move.

To replace the belt,
  1. Start with dropping a loop straight down under #8 looking down at the engine standing in front of the car.  YOU DON'T NEED TO GO OVER YOUR FAN BLADES, just around it!
  2. Keeping your left hand at the 9 o'clock on #8 so the belt doesn't fall off, with your right hand, guide the belt clockwise around #7, continue over and under #6, still keeping your left hand at the 9 o'clock position on #8. (Read that step a few times)
  3. Continue around #5, skip #4 and over #3.
  4. you can probably move your left hand now!  Slip it over #2 and around the tensioner.
  5. Using the breaker bar, adjust the tensior and go back to #4 (which is a smooth pulley) and slip it over the pulley.  Release the tensior.
  6. Double check EVERYTHING ensuring the belt is in the grooves, and around all pulleys.  You'll likely notice if there is an issue.
This may feel impossible when you start, but stick with it and you'll find it to be pretty easy when you are done.

It will look like this after replacing the Idler Pulley (#2) and using the shorter belt:
AC Bypass 1.jpg

AC Bypass 3.jpg

You'll notice the belt goes from #2 (the new black pulley in the top left), around the tensioner to the crank pulley #8.   Aka "Bypassing #9".

You should now be able to drive the car, however will not have A/C.

NOTE: I am not a certified mechanic nor am I a mechanical engineer.  Here are a few other things to consider.
  • A shorter belt with different sized pulleys and less of them will create a modified load on the engine.  The tensioner provides a 'factory' tension, so I think it should be fine, but it is not how the car was designed so there could be additional issues with this that I am not aware of.
  • The 'modified' load on the crankshaft is probably marginal compared to the load of say, towing a trailer with cement bags, but perhaps still worth consideration.  Comments welcome if you're a mechanical engineer and have thoughts on this.
  • I'm too tired to go back outside and take a photo, so credit to this forum post for great photos of a 4.6L V8, which is VERY similar to mine.
  • Be ready to make multiple trips to the store.  I got a Duralast 800K6 (79.?") the first time and it was too short.  No free lunch here, just measure the best you can using string/twine and hope you got it right.
  • If your A/C is fine now, but car is like mine and old, consider getting a belt and breaker bar for your trunk.  This can be done in a parking lot and could save you a tow for a long trip.
  • There are likely to be typos, quirks in grammar and terminology, or instances above where I mention pulley X and meant pulley Y.  This isn't rocket science so just use your sense and I think you will figure it out.

I wrote this blog because I couldn't find a great resource for the 2005 Ford Expedition 5.4L V8 Triton Engine.  Later I came across the forum post in the notes above, and finally got motivated to get that second belt (840K6).  I hope this is helpful for someone else.

6/16/19 Update:  After letting the Battery trickle charge overnight (it's been sitting for months), I fired it up this morning and it has been running for more than 25 minutes.  Took it for a spin down the street and all seems well for now.  Brakes are rusty, Power steering is a little tight, but hopefully all that smooths out with some additional use.

Sunday, March 24, 2019

Unity3D with QGIS and GIMP

It has been a long time since I have posted anything on here. I now have my own commercial drone (and FAA license) with a nice camera, and I've integrated several open source projects so that I can create 3D models from imagery/video (photogrammetry).

So now I am looking to create a sort of unity experience so that I can showcase places I've visited in 3D, and embed them with the larger general area.  I think I will have a good amount of learning to do before I'm able to create transitions from 'high altitude' scenes to 'low altitude' scenes where vegetation might appear.  I don't think I want to try to "Place Mass Trees" with this large of an area.

I am calling the concept "ODT" or "Open Digital Twin" (Copyright OTT LLC 2019).

As you can see, the result is actually pretty nice.  You can obtain stereo DEMs (digital elevation models) from the USGS using WMS service calls.  I then created a Normal Map, and also used USGS WMS to fetch a high altitude imagery color map.

When creating the height map for unity, you'll need to ensure you are saving the map as "Raw Image File" with Planar mapping.

There is still plenty of work to be done, but I thought this might be a fun update to get me back in the blogging mode.  It's been too many years, and I've come a long way from the original work I did with Java & Hadoop.  Hopefully these GIS and 3D skills will couple nicely with my enterprise experience to bring 3D to the enterprise!

Monday, May 21, 2018

Repairing Corrupted LUKS Encrypted Filesystem

This morning I noticed that my USB backup drive would not mount properly.  The first thing I did was check the dmesg log from Debian/Linux...

[1962217.824829] usb 1-5.1: New USB device found, idVendor=0bc2, idProduct=3300
[1962217.824832] usb 1-5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1962217.824834] usb 1-5.1: Product: Desktop         
[1962217.824835] usb 1-5.1: Manufacturer: Seagate 
[1962217.824837] usb 1-5.1: SerialNumber: 2GHNRSVE    
[1962217.825589] usb-storage 1-5.1:1.0: USB Mass Storage device detected
[1962217.825927] scsi host4: usb-storage 1-5.1:1.0
[1962218.832372] scsi 4:0:0:0: Direct-Access     Seagate  Desktop          0130 PQ: 0 ANSI: 4
[1962218.833253] sd 4:0:0:0: Attached scsi generic sg1 type 0
[1962218.833370] sd 4:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
[1962218.833691] sd 4:0:0:0: [sdb] Write Protect is off
[1962218.833694] sd 4:0:0:0: [sdb] Mode Sense: 2f 08 00 00
[1962218.833991] sd 4:0:0:0: [sdb] No Caching mode page found
[1962218.833996] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[1962218.842262]  sdb: sdb1
[1962218.843668] sd 4:0:0:0: [sdb] Attached SCSI disk
[1962219.029068] sd 4:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[1962219.029072] sd 4:0:0:0: [sdb] tag#0 Sense Key : Hardware Error [current] [descriptor] 
[1962219.029074] sd 4:0:0:0: [sdb] tag#0 Add. Sense: No additional sense information
[1962219.029077] sd 4:0:0:0: [sdb] tag#0 CDB: ATA command pass through(16) 85 06 20 00 00 00 00 00 00 00 00 00 00 00 e5 00
[1962219.111836] sd 4:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[1962219.111839] sd 4:0:0:0: [sdb] tag#0 Sense Key : Hardware Error [current] [descriptor] 
[1962219.111841] sd 4:0:0:0: [sdb] tag#0 Add. Sense: No additional sense information
[1962219.111844] sd 4:0:0:0: [sdb] tag#0 CDB: ATA command pass through(12)/Blank a1 06 20 da 00 00 4f c2 00 b0 00 00
[1962251.479639] JBD2: Invalid checksum recovering block 144 in log
[1962251.574260] JBD2: recovery failed
[1962251.574265] EXT4-fs (dm-4): error loading journal
[1962258.650930] JBD2: Invalid checksum recovering block 144 in log
[1962258.749283] JBD2: recovery failed
[1962258.749288] EXT4-fs (dm-4): error loading journal

This generally means that there were issues with the unmount and the "checksum"  for block 144 in the journal does not match the actual checksum from disk.  This means there is an error reading the journal, and to prevent further corruption EXT4-fs will not mount via device mapper.

So how do we fix this?  If this was not encrypted you could google this error and find out to run FSCK and hopefully be done with it.

Lets start with a quick reminder of the utility `lsblk`.

root@CLCFQ92:~# lsblk --fs /dev/sdb
NAME                                          FSTYPE      LABEL  UUID   
└─sdb1                                        crypto_LUKS        ce6cebbc-5026-4f47-9a22-da4aecfd26ad 
  └─luks-ce6cebbc-5026-4f47-9a22-da4aecfd26ad ext4        Backup e7bab3dc-87ce-4a7d-b758-34e2839b51f0 

 This 'console' output does not render well above using the blog defaults, so I'll have to modify it for clarity, but the thing to notice is that the File System type for sdb1 is NOT ext4, it is crypto_LUKS.  There is then an extended partition that is 'ext4' called luks-.  This luks partition is the one you want to run fsck on.  NOT /dev/sdb1 (or /dev/sdb).

So lets first open the encrypted fs...

root@CLCFQ92:~# cryptsetup luksOpen /dev/sdb1 corrupted
Enter passphrase for /dev/sdb1: 
Now, lets recover the device via the name ("corrupted") we mapped to the luks partition... 
root@CLCFQ92:~# fsck /dev/mapper/corrupted 
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Backup: recovering journal
JBD2: Invalid checksum recovering block 144 in log
Journal checksum error found in Backup
Backup was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (436669919, counted=433657941).
Fix? yes
Free inodes count wrong (121861163, counted=121856397).
Fix? yes

Backup: ***** FILE SYSTEM WAS MODIFIED *****
Backup: 245363/122101760 files (0.4% non-contiguous), 54719555/488377496 blocks
Next, disable/close the mapped name to the luks partition:
root@CLCFQ92:~# cryptsetup luksClose /dev/mapper/corrupted
Then mount/open the filesystem the way you normally would using gnome or whatever.  Check dmesh logs for confirmation!

At this point it may be good to look at using the `smartctl` utility, as your disk may be old/dying...

root@CLCFQ92:~# smartctl -a /dev/sdb
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
  1 Raw_Read_Error_Rate     0x000f   118   100   006    Pre-fail  Always       -       200743680
  3 Spin_Up_Time            0x0003   094   093   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       72
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   073   063   030    Pre-fail  Always       -       24115411
  9 Power_On_Hours          0x0032   077   077   000    Old_age   Always       -       20273
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       39
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         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   043   045    Old_age   Always   In_the_past 47 (Min/Max 42/47 #179)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       19
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       767
194 Temperature_Celsius     0x0022   047   057   000    Old_age   Always       -       47 (0 19 0 0 0)
195 Hardware_ECC_Recovered  0x001a   022   021   000    Old_age   Always       -       200743680
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
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       12697 (213 75 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       3453343066
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       2807657092

Based on the output from the SMART controller, this disk is having a lot of errors and should be backed up and disposed of.

Friday, March 2, 2018

Easy install of NVIDIA SDK on Linux

Spent some time looking around for the best solution to this problem.  I think that it is best to download the 1.8GB installer from nvidia.  Then execute something like the following:

./ --no-drm --no-opengl-libs --extract=/home/ottch/Development/nvidia_cuda_9_1/ --toolkit --toolkitpath=/home/ottch/Development/nvidia_cuda_9_1/ --silent

Next you'll need to execute the cuda-linux .bin file that is generated in the toolkitpath by the last command.  Ensure to set the prefix to something other than /usr/local/cuda-9.1 if you don't have sudo.