Friday, February 28, 2020

Backing up dot files in my home folder

In spending some time with customizing my machine, I have some heavily modified configuration files within my home folder.  As a good measure, here's a way to help backup dot files in your home folder:

$ tar cvfz my_dotfile_backup-$(date +"%Y-%m-%d").tar.gz --exclude .file_to_exclude --exclude .vscode  ~/\.*

The above will:
    • c = create a tarball
    • v = verbose
    • f = write the output to the specificed file
    • z = compress the output file with gzip. 
    • Output filename will be "my_dotfile_backup-" + the date the command was run in YYYY-MM-DD format + ".tar.gz"
    • Exclude files matching .file_to_exclude, and .vscode
    • ~ = My home folder
    • \.* Escaped dot character then wildcard (meaning the filename needs to start with a .)
Here's an example output of when the command above was run:

$ ls -l my_dot*

-rw-r--r--  1 arojas  staff  30093272 Feb 28 12:17 my_dotfile_backup-2020-02-28.tar.gz

Monday, February 10, 2020

Update Sublime Text to automatically default a particular filetype



Found this nugget today on Stack Overflow:
https://stackoverflow.com/questions/7574502/set-default-syntax-to-different-filetype-in-sublime-text-2

In a nutshell, Colin R a user from Stack Overflow suggested that the following steps can be used to set the defaults for all future new files opened in Sublime Text, which is much easier than having to hack around the JSON preferences.

In a nutshell, Sublime Text -> View -> Syntax -> Open all with Current Extension As... ->  Select default option.

Not exactly sure why certain options aren't available as a default, will continue digging into that:

Thursday, October 24, 2019

Windows 10 and EFI System Partitions

I recently was trying to swap some SSD drives between laptops and still keep the same OSes on the respective machines, which involved some backup and disk cloning.  That wasn't difficult, it was the point when I couldn't leave well enough alone, I saw one of the SSD drives with ~ 500MB of a FAT32 partition that was unused, so I figured I could move around some partitions using a partition editor to shuffle up the hidden partitions, and expand the main OS partition.  Well that was well and good until I tried slightly extending the EFI partition, and that broke a lot of stuff.   Then I realized the hard way that the EFI partition is a special partition that can't be cloned to from another disk image that has a good EFI partition.  (I didn't wan't to clone the entire drive again because there was more work I did on the new system that wasn't on the backup, silly me).

Thankfully, digging around the interwebs, I was able to find some resources from a few sites about EFI partitions and how to unfubar oneself.  (Credits and links to the original sites below):


Per Wikipedia: https://en.wikipedia.org/wiki/EFI_system_partition:
"The EFI (Extensible Firmware Interface) system partition or ESP is a partition on a data storage device (usually a hard disk drive or solid-state drive) that is used by computers adhering to the Unified Extensible Firmware Interface (UEFI)."


EFI should really be renamed Eventually Fubared Instantly.



If the EFI partition ever gets nuked, wrecked, or just plain fubar, consider running through these steps:


To Delete the EFI System Partition in Windows 10:
1. If you can't boot the system perform step 1a, then go to step 2.  If you can boot the system, skip step 1a and continue with step 1b:.

1a. Boot using a Windows 10 USB Key, selecting Repair;  Go to Advanced Tools and select a Command Prompt.  

1b. On the Start menu find and run the Command Prompt as Administrator

2. Run DISKPART, the Windows Disk Partition Tool
C:\> diskpart

On the DISKPART> prompt, go through the following steps:
3. List the disks that are detected:
DISKPART> list disk

4. After identifying the main disk containing the EFI partition (or where it used to be) select it:
DISKPART> select disk 1

5.List the disk partitions to identify which partition the EFI partition was or the partition you would like it to be:
DISKPART> list part

6. Select the partition:
DISKPART> select part 1

7. Delete the partition:
DISKPART> delete part



To Create the EFI System Partition in Windows 10:
1. If you can't boot the system perform step 1a, then go to step 2.  If you can boot the system, skip step 1a and continue with step 1b:.

1a. Boot using a Windows 10 USB Key, selecting Repair;  Go to Advanced Tools and select a Command Prompt.  

1b. On the Start menu find and run the Command Prompt as Administrator

2. Run DISKPART, the Windows Disk Partition Tool

On the DISKPART> prompt, go through the following steps:
3. List the disks that are detected:
DISKPART> list disk

4. After identifying the main disk containing the EFI partition (or where it used to be) select it:
DISKPART> select disk 1

5.List the disk partitions to identify which partition the EFI partition was or the partition you would like it to be:
DISKPART> list part

6. Select the partition:
DISKPART> select part 1

7. Create the partition:
DISKPART> create partition efi

8. Format the partition to FAT32:
DISKPART> format quick fs=fat32

9. Identify the volume where the Windows OS is installed (i.e. C:\WINDOWS).  Note the drive letter here may be different than C, this may be temporary:
DISKPART> list volume

10. Exit Diskpart and run the tool to copy the needed files to the EFT partition, noting the drive letter where Windows was installed on Step 9 above:  (Replace the D below with the proper drive letter):
C:\> bcdboot D:\windows

11:  Close out the command prompt and reboot the system, you should be good to go!


Credit to AnyRecover for their original instructions:
https://www.anyrecover.com/hard-drive-recovery-data/how-to-create-and-delete-efi-system-partition-in-windows/#tip1

Tuesday, September 17, 2019

Testing Gzipped Tarball in Bash

Originally sourced from stack exchange. modified a bit:
https://unix.stackexchange.com/questions/129599/test-tar-file-integrity-in-bash

Modified from the source link above, the following command will iteratively test each .tgz file within the current directory for errors, and if any are detected, will report an error.

$ for i in *.tgz; do echo "Testing $i..."; if tar xOfz $i &> /dev/null;  then echo "Error with tarball $i"; fi; done


Options used:
 x  - Extract from archive
 O  - Write output to standard out instead of disk
 f  - Read input from a file
 z  - Tarball is compressed with Gzip (Some OSes may automatically detect Gzip and not need this option)
 &> /dev/null  -   Redirect both stdout and stderr to /dev/null

Misc. Linux Sysadmin tips

Got around to updating the home office machines, and thought it would be a good idea to keep some recurring tips handy:



Disabling SSH login for root user

  1.  Edit /etc/ssh/sshd_config
  2. Set PermitRootLogin to no (Remove # if present)
  3. Add AllowUsers  
  4. Save, then restart sshd: 
    $ service sshd restart

Setup Passwordless SSH:
  1. Create SSH keypair with options, such as:
    $ ssh-keygen -b 5120
  2. chmod created keypair: 
    $ chmod 600
  3. SCP the public key to target machine.
  4. On target machine:
    $ mkdir ~/.ssh$ chmod 700 ~/.ssh
  5. If ~/.ssh/authorized_keys doesn't exist:
     move the public key from home folder to ~/.ssh/authorized_keys then
    $ chmod 600 ~/.ssh/authorized_keys
  6. If it does exist, then append the public key to the authorized_keys: 
    $ cat >> ~/.ssh/authorized_keys, then delete the public key.
  7. Test by SSHing to the target machine

Editing Hostnames
  1. Edit /etc/sysconfig/network.  modify HOSTNAME= to FQDN
  2. Edit /etc/hosts.  Add IP address with FQDN and shortname
  3. Restart network services:
    $ /etc/init.d/network restart

Wednesday, April 4, 2018

com.apple.preference.displays.MirrorDisplays): Service only ran for 0 seconds. Grrrrrr.




I've had my Mac Pro 6,1 for a few months and noticed that the display crashes every few weeks, where the symptoms range from 1) screen is "frozen as-is", 2) while mouse cursor can move 3) Cannot click on anything on the screen. 4) System clock on screen is stuck at the time the displays froze, and 5) System is still responsive through SSH.

While there was some discussion on various boards about the issue being due to the AMD FirePro D500 and D700 cards, I have a pair of D300s in this unit, which aren't supposed to be impacted by the known Apple Issue.


This occurred again recently and after getting some time to dig into things further, I looked into /var/log/system.log file to see what was the most recent entries prior to the latest freeze episode.

Found the following:

Output snippet from /var/log/system.log
Apr  4 11:01:18 macpro com.apple.xpc.launchd[1] (com.apple.preference.displays.MirrorDisplays): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Apr  4 11:01:28 macpro com.apple.xpc.launchd[1] (com.apple.preference.displays.MirrorDisplays): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Apr  4 11:01:38 macpro com.apple.xpc.launchd[1] (com.apple.preference.displays.MirrorDisplays): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Apr  4 11:01:58 macpro com.apple.xpc.launchd[1] (com.apple.preference.displays.MirrorDisplays): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Apr  4 11:02:28 macpro com.apple.xpc.launchd[1] (com.apple.preference.displays.MirrorDisplays): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.


In digging around the web, found the above link on Stackexchange that talks about this issue being related to a particular issue with out an Apple plugin is behaving badly, and lists instructions on how to temporarily disable it:

Here's the overall steps taken:
Sourced from Stackechange article:
https://apple.stackexchange.com/questions/304745/mirrordisplays-error-every-30-seconds-in-system-log



  1. Disable System Integrity Protection so you can edit the .plist file. Do this by rebooting into the recovery partition with cmd-R, open Terminal from the Utilities menu, and type:
    $ csrutil disable
  2. Reboot, then edit the .plist file with this command:
    $ sudo vi /System/Library/LaunchAgents/com.apple.preference.displays.MirrorDisplays.plist
  3. Comment out the line that causes the MirrorDisplays tool to load. Change this line:
       
  4. To this:
  5. Then, reboot and re-enable System Integrity Protection using the recovery partition as described above and type:
    $ csrutil enable
  6. Reboot 

After implementing the changes, it appears that this has stopped the occurrence:


$ grep "MirrorDisplays): Service only ran" system.log | cut -d ':' -f1 | uniq -c

 164 Apr  4 11

 172 Apr  4 12
  47 Apr  4 13
   3 Apr  4 14

The above command is grepping the system.log for the event occurrence, then parsing based on the first colon ':' which filters out everything of the error past the Day and Hour. So the above output shows that at 11am it occurred 164 times, 12pm occurred 172 times, 1pm 47 and so on...

It's now almost 4pm and no occurrences since disabling!  Keeping fingers crossed that this will fix the freezing scenario, otherwise will continue trudging through the system.log file on the next freeze.


Tuesday, January 9, 2018

Random sleep time in Bash

Recently, I needed to setup a script that would sleep a certain number of seconds between 1 and 8.  Stumbled across this particular item, which was adapted to my need:


$ sleep $[ ( $RANDOM % 8 ) + 1 ]s

This would sleep anywhere from 1 second to 8 seconds before continuing.  If the need comes up to set to a different limits, you can change the 8 to the max number and the 1 to the minimum.  Note that increasing the minimum value will affect the max number as well if min > 1.

Sourced from: http://blog.buberel.org/2010/07/howto-random-sleep-duration-in-bash.html