macOS 10.13.2 supplement update disaster and recovery story

This is going to be a quick, poorly written post. I want to get this information out there since this might only be a short lived problem for mac users.

I have a 2017 iMac with a SSD.

I was running 10.13.2.

I did the supplemental update for meltdown and spectre.

The iMac would not boot.

I booted into recovery mode to run “First aid”. It exited with error 11.

I booted into single user mode and ran fsck_afps. Same error 11.

I made a disk image of my drive as a secondary backup to my time machine backup.

I did a reinstall of the OS. It still would not boot.

I tried with disk utility to erase the Macintosh HD. This is when things really went sideways.

I thought I would do a network restore of the OS, it would not work!

I downloaded the full 5+ gb installer of High Sierra. I created a bootable USB installer. That would not work. I could get the installer to boot, but not install.

It gets a little fuzzy in my memory at this point. While booted to the USB installer, the iMac would shutdown to a black screen and just generally thrashed as I tried to create a new Macintosh HD volume with the Disk Utility application. I could not truly clear the ssd.

I had to resort to terminal diskutil to really blow away everything.

With diskutil I created the new volume.

Now I was able to install the OS.

I tried to used to migration assistant, and the computer would shutdown just like earlier. I did this twice.

I tried to restore my DMG, that failed when i tried to scan for restore.

I wiped and installed the OS again. This time I created a new admin user and completed setup without migration assistant.

I go to do software update, and find out that the new download of High Sierra did not include the supplemental update.

I download that and restart. The supplemental install took about 20 minutes.

With all updates done, and a fresh admin user. I was finally able to use migration assistant and bring the user accounts back from my time machine backup.


How to be the fmserver user

If you are ever trying to troubleshoot a system script that will be run by the fmserver user on OS X you can do the following to replicate what the server is doing with terminal.

1. Type su

2. Enter the root user password

3. Type su fmserver

4. Type whoami and it should return fmserver. This last step verifies that you are in fact the fmserver user.

This is what it should look like in terminal:

servername:~ currentuser$ su
sh-3.2# su fmserver
bash-3.2$ whoami

An example of what you can do at this point is execute a shell script as fmserver.

sh /Library/FileMaker\ Server/Data/Scripts/

Preparing FileMaker Server System Script File for Mac OS X

When preparing a system script file for FileMaker server you must place it in the proper folder with proper ownership and privileges.

Step 1: Copy file to proper location

cp /Volumes/OS_Drive_Name_Example/Library/FileMaker\ Server/Data/Scripts/

Step 2: Navigate to FileMaker Server scripts folder

cd /Volumes/OS_Drive_Name_Example/Library/FileMaker\ Server/Data/Scripts/

Step 3: Assign FileMaker server owner/group to the file:

sudo chown fmserver:fmsadmin

Step 4: Assign proper privileges:

sudo chmod 755

scp: ambiguous target

I was recently trying to copy a simple bash script from one FileMaker server to another using scp. The standard scp command is:

scp file.ext destination_user@server.address:/Folder/file.ext

This would leave you to think that the scp command for copying a script from one FileMaker server to another would look like this:

scp user@123.456.7.8:/Library/FileMaker\ Server/Data/Scripts/


This however fails with the response from terminal being:

scp: ambiguous target

Since the FileMaker Server folder contains a space this causes the failure, despite placing the backslash before the space. The answer is to put quotes around the entire destination to look like this:

scp user@123.456.7.8:"/Library/FileMaker\ Server/Data/Scripts/"

CustomList custom function limited to 300 items in list on FileMaker Server

I received a nice email from Agnès who created the CustomList function. I have copied her email below.  The function has been updated.

“I just did the test and saw that the function Evaluate () is the problem ( the same for FileMaker Go )
it is the current limit of FileMaker Serveur internal Evaluate function
FileMaker GO Evaluate () is limited to 400 (+/-)
FMServeur Evaluate () is limited to 300 (test FMServeur v11 )
instead of 1700 (+/-) for FileMaker. ( runtime and IWP )

I update the calc CustomList for this to work correctly on FMSserver
( and )

Do not hesitate to let me know by email if you have a problem with CustomList ()
In this case, I have made test with FMS v11, maybe the limit is different with other versions.

Thank you



Be careful when using the CustomList custom function on FileMaker server. My testing has revealed that the list this function will generate is limited to 300 entries when used on FileMaker Server. The documentation of this functions states that it is limited to 500,000 on FileMaker Pro and 150,000 on FileMaker Go.


Bash script to FTP exported files from FileMaker Server

The below bash script can used if you need to FTP an export from FileMaker Server to anywhere.  The script basically looks to see what ever document is in the Documents folder of FileMaker Server and passes that to the cURL command.  It then moves the file to clear it out the directory.  You can /should include error trapping and maybe setup subdirectories but my objetive is to keep this simple to convey the concept after which you can “go nuts” customizing it.

cd /Volumes/Server\ HD/Library/FileMaker\ Server/Data/Documents/
curl -T /Volumes/Server\ HD/Library/FileMaker\ Server/Data/Documents/"$LOCALFILE" --user username:password
mv "$LOCALFILE" /Volumes/Drivename/uploads/

FileMaker Server scheduled bash script could not be found or is invalid.

If you are using FileMaker server to execute bash scripts be sure to check the first line to see that is includes the bang after the hash (#!/bin/bash).  I  ( and many others as revealed in a google search ) accidentally erased the bang while commenting a bash script and found out what happens. If you do this, you will see an error in the event.log file on FileMaker server when executed which looks like this.

Schedule “schedule_name” aborted; “” could not be found or is invalid.


Object naming order very important to FileMaker web viewer responding to script step

The FileMaker web viewer can be controlled via the script step Set Web Viewer.  This script step is dependent on you naming the web viewer object and telling the script step that name. I have often found that I like to make the entire web viewer a button for things like downloading a document from SuperContainer.  The absolute key to this working is that your must first name the web viewer BEFORE making it a button. If you do so afterword, only the button has an object name and not the web viewer. Since the web viewer would not have an object name in this case, it would not respond to the script step.

If you have found this information helpful, or if you have any tips or suggestions, please leave a comment.

Copying FileMaker portals to a new context in less time.

I recently attended a PauseOnError session by Danny Mack on leveraging FileMaker internal IDs. This blog post will demonstrate the method he showed to copy portals for use in a different context with minimal work.

Traditionally, when you copy a portal to a layout that has a different context, you need to redefine the copied portal, its fields, and other things like conditional formatting. This technique eliminates much of this work. I have attached a sample file so that you can try out the technique for yourself in a simple way.

The sample file copy_portal.fp7 has three tables: Parent_One, Parent_Two, and Child.

Step 1: Copy the portal Child__original_context to clipboard

Step 2: Enter relationship graph and duplicate the Child__original_context table occurrence. You will notice the duplicated table occurrence now has a number 2 following its name.

Step 3: Establish the relationship from Child__original_context 2 to the table occurrence Parent_two

Step 4: Rename the table occurrence Child__original_context to Child__original_contextx.

Step 5: Rename the duplicated table occurrence to Child__original_context

Step 6: Go to layout Parent_two and paste the portal that you copied to the clipboard in step one onto the layout.  You will see the correct context for the portal and the field it contains.  When you enter browse mode, the correct data will be displayed.

Step 7: Go back into the relationship graph and rename the table occurrence Child__original_context to Child__original_new_context. Then rename the table occurrence Child__original_contextx back to Child__original_context.

Step 8: Click ok and you have successfully copied a portal to its new context and retured everything else back to its original state.

Using this time-saving technique the other day, I copied 25 table occurrences, their established relationships, several portals (in one copy), and a lot of conditional formatting all using the same steps above. You can imagine how much time that saved!

If you have found this technique helpful or have any tips or suggestions to make it better, please leave a comment.