Tiny Deathstars of Foulness

The first thing you’ll want to do on any server is setup the networking for the computer. To do this, open the System Preferences and click on Network. You usually want to use a wired Ethernet connection on a server, but in this case we’ll be using Wi-Fi. Here, click on the Wi-Fi interface and then click on the Advanced… button.

Screen Shot 2015-09-07 at 10.03.11 PM

At the setup screen for the interface, provide a good static IP address. Your network administrator can provide this fairly easily. Here, make sure you have an IP address and a subnet mask. Since we need to install the Server app from the Mac App Store, and that’s on the Internet, you’ll also need to include a gateway, which provides access to the Internet and using the DNS tab, the name servers for your Internet Service Provider (ISP).

Screen Shot 2015-09-07 at 10.05.40 PM

Once you have provided a static IP address, verify that you can route to the Internet (e.g. open Safari and visit a website). Provided you can, the first step to installing OS X Server is to download the Server app from the Mac App Store. If you install an El Capitan machine (or Yosemite), you can then open the App Store app and search for Server. In the available apps, you’ll see the Server app from Apple. Here, click on Buy and let the app download. That was pretty easy, right. Well, the fun has just gotten started. Next, open the app.

When you first open the Server app, you’ll see the OS X Server screen. Here, you can click on the following options:

  • Other Mac: Shows a list of Macs with the Server app that can be remotely configured. Choosing another system does not complete the setup process on the system you’re working on at the moment.
  • Cancel: Stops the Server app setup assistant and closes the Server App.
  • Continue: Continues installing the Server app on the computer you are using.
  • Help: Brings up the OS X Server manual.

Screen Shot 2015-09-07 at 9.46.12 PM

Click Continue to setup OS X Server on the machine you’re currently using. You’ll then be prompted for the licensing agreement from Apple. Here, check the box to “Use Apple services to determine this server’s Internet reachability” and click on Agree (assuming of course that you agree to Apple’s terms in the license agreement).

Screen Shot 2015-09-07 at 9.46.15 PM

Installing OS X Server must be done with elevated privileges. At the prompt, enter the credentials for an account with administrative access and click on the Allow button.

Screen Shot 2015-09-07 at 9.56.42 PM

The services are then configured as needed and the command line tools are made accessible. This can take some time, so be patient. When the app is finished with the automation portion of the configuration, you will be placed into the Server app for the first time. Your first order of business is to make sure that the host names are good on the computer. Here, first check the Host Name. If the name doesn’t resolve properly (forward and reverse) then you will likely have problems with the server at some point. Therefore, go ahead and click on Edit Host Name… Here, enter the fully qualified address that the server should have. In the DNS article, we’ll look at configuring a good DNS server, but for now, keep in mind that you’ll want your DNS record that points to the server to match what you enter here. And users will use this address to access your server, so use something that is easy to communicate verbally, when needed.

Screen Shot 2015-09-07 at 10.07.24 PM

At the Change Host Name screen, click Next. At the “Accessing your Server” screen, click on Internet and then click on the Next button.

Screen Shot 2015-09-07 at 10.08.44 PM

At the “Connecting to your Server” screen, provide the Computer Name and the Host Name. The Computer Name is what you will see when you connect to the server over Bonjour and what will be listed in the Sharing System Preference pane. The Host Name is the fully qualified host name (fqdn) of the computer. I usually like to take the computer name and put it in front of the domain name. For example, in the following screen, I have osxserver as the name of the computer and as the host name.

Screen Shot 2015-09-07 at 10.11.16 PM

Once you have entered the names, click on the Finish button. You are then prompted to Change Host Name. Click on Change Host Name at this screen.

Next, let’s open Terminal and run changeip with the -checkhostname option, to verify that the IP and hostname match:

sudo changeip -checkhostname

Provided that the IP address and hostname match, you’ll see the following response.

sudirserv:success = “success”

If the IP address and hostname do not match, then you might want to consider enabling the DNS server and configuring a record for the server. But at this point, you’ve finished setting up the initial server and are ready to start configuring whatever options you will need on the server.

October 4th, 2015

Posted In: Mac OS X Server

Tags: , , , , , , ,

One of the easiest things to do in OS X is to remotely run an installation package using the installer command. You can do some similar tasks in Windows, although the commands aren’t quite as cut and dry. The Start-Process command can be used to kick off an executable. Here, we will kick off the msiexec.exe and feed it an argument, which is the msi file to install silently. We’ll then wait for it to complete:

{Start-Process -FilePath "msiexec.exe" -ArgumentList "/i TEST.msi /qb" -Wait -Passthru}

August 19th, 2015

Posted In: Windows Server, Windows XP

Tags: , , , , ,

When installing a package OS X makes a list of what it installs in /Library/Receipts/InstallHistory.plist. The dictionaries show each package installed, along with the installation date, the name displayed during installation, the version of the package being installed, the identifier of the package and the process name used to install the package. This information, along with the file name of the actual package is stored in corresponding property lists in /private/var/db/receipts. Each bill of material is also stored there, in .bom file.

The lsbom command is used to see a list of objects installed by the package. You can also see the options such as the permissions assigned to files by the package as they’re installed. For example, that Twitter app from the app store; to see what it installs:

lsbom /private/var/db/receipts/

This package is installed by the Mac App Store. When run, packages installed by the Mac App Store should only contain objects within that applications .app bundle. That’s a pretty good bit of information, so you can also use the -s option to constrain the output to only see the paths of files (relative paths, of course). I’m usually a fan of getting more information than less, so I usually run it adding the -m option, which shows me those permissions.

lsbom /private/var/db/receipts/

Note: You can also use the mkbom command to create new .bom files. As the man page for bom indicates, this goes back to NeXTSTEP and was extended for 10.0 and again in 10.3.

May 18th, 2013

Posted In: Mac OS X, Mac OS X Server, Mac Security, Mass Deployment

Tags: , , , , ,

Thanks to Allan Sanderson for the following submission, which outlines how to install Final Cut Server in Lion and Mountain Lion Server.


Check “Enable PHP web applications”

Install Java
Open /Applications/Utilities/Java
You’ll be prompted by Software Update service to install Java, click “Continue”, provide admin credentials when promopted.

Install Final Cut Server
Run Final Cut Server installer.
Then run Software Update to get ProApplications 2010-02 & Final Cut Server v1.5.2 updates.

Check Configuration
Check fcsvr user has been created:
dscl /Local/Default -search /Users RecordName fcsvr
Output should look something like this:
fcsvr RecordName = (

Check “fcsvr” user’s home folder location is set to “/Library/Application Support/Final Cut Server”
dscl /Local/Default -read /Users/fcsvr NFSHomeDirectory
Output should look something like this:
NFSHomeDirectory: /Library/Application Support/Final Cut Server
If it doesn’t, caorrect it with this command:
sudo dscl /Local/Default -create /Users/fcsvr NFSHomeDirectory “/Library/Application Support/Final Cut Server”

Customisations To Make It Work
A word to the wise, I personally take a backup before making any changes to system files, Time Machine is nice ‘n all, but I’d prefer not to have to go there in the first place.

An out the box FCSvr install doesn’t set an “AUTH_TYPE” key/value pair in the file. Under 10.5 & 10.6 this didn’t cause any issues, but 10.7+ does seem to be an issue. So for Local and Open Directory authentication, this command will do the job:
sudo defaults write /Library/Preferences/ “AUTH_TYPE” -int 2
If you’re being more daring and trying to work with an Active Directory, then you’ll want the following:
sudo defaults write /Library/Preferences/ “AUTH_TYPE” -int 1

Because of how things have changed between 10.6 and 10.7 & 10.8, its necessary to manually copy the apache site config into a users apache space.
sudo cp “/Library/Application Support/Final Cut Server/Final Cut Server.bundle/Contents/Resources/share/conf/client_apache2.conf” “/etc/apache2/users/fcsvr.conf”

Now in order for the apache site config to be read by apache, we need to add in the necessary direction for httpd.
Append “UserDir Sites” to end of “/etc/apache/httpd.conf”, this can be done as a one-liner if you like:
sudo echo “UserDir Sites” >>/etc/apache2/httpd.conf

Lastly we have to add in the redirection settings for 10.7+ as the installers isn’t able to do this due to file path changes between the OS revisions.
So, in your /etc/apache2/sites/0000_any_80_.conf file, paste in the following lines after the IfModule for mod_ssl.c:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [F]
RewriteRule ^/FinalCutServer$ /~fcsvr/Sites/webstart/index.php [NC,L]
RewriteRule ^/FinalCutServer/FinalCutServer_mac.jnlp$ /~fcsvr/Sites/webstart/macJnlp.php [NC,L]
RewriteRule ^/FinalCutServer/FinalCutServer_windows.jnlp$ /~fcsvr/Sites/webstart/windowsJnlp.php [NC,L]
RewriteRule ^/FinalCutServer/FinalCutServer_other.jnlp$ /~fcsvr/Sites/webstart/jnlp.php [NC,L]

SPECIAL_MENTIONS: Matt Geller, David Colville

September 6th, 2012

Posted In: Mac OS X, Mac OS X Server, Xsan

Tags: , , , , , , , , , , , ,

One of the challenges that we face when building a large Xsan for video environments where we also need to deploy Final Cut is to install Final Cut Pro or Final Cut Studio on all the clients. It can mean a lot of switching out of optical media and kill productivity if you aren’t careful. This is why we started looking to the Xsan to provide some of the speed to the installation process that it will later provide to the clients.

First off, extract the installers or create an image of the disk(s). If you extract the disk then you will need to mount it and then start the installer package, which can be done programmatically (assuming a disk image called FCInstaller.dmg located on an Xsan volume called simply SAN):
hdid /Volumes/SAN/FCInstaller.dmg
installer -verbose -pkg /Volumes/Final Cut Studio Install/Installer/FinalCutStudio.mpkg -target /Volumes/Final Cut Studio 3

Once installed, don’t forget to clean up after yourself by unmounting the drive. This can also be done programatically using the hdiutil command with the detatch option. You can use df or another tool to obtain the device and then unmount based on that device. For example, if df showed a device of /dev/disk3s2 for your installer disk image, then the following would unmount the disk image:
hdiutil detach /dev/disk3s2

If you have multiple disk images then each will need to be mounted and unmounted separately. You can also mount them all manually by simply double-clicking on the dmg files. Performing the installation over point-and-click or programmatically can then be done on a number of Xsan clients concurrently. It provides a means of deploying Final Cut over fibre channel and beats the pants off the previous means of installation, which was mostly to either do optical media, ethernet or over firewire drives moved between stations via sneakernet. This type of deployment will also free up the Ethernet network for any other installers or processes that you are working on at the time.

Also, as you get deployment packages and scripts built, you can host those on the Xsan as well. This allows for fast deployment of any suite. Anyway, hope it saves you a little time…

January 11th, 2010

Posted In: Mac OS X, Mac OS X Server, Mac Security, Mass Deployment, Xsan

Tags: , , , , ,

I have talked about many of the features of Mac OS X Server for years now and now I have had a third request (from Windows guys funny enough) to walk through the basic installation of the operating system in one week.  So, here we go.  This is going to be a bit of a long one as there are a number of screens involved in the installation.  Additionally, all of the screens are going to show the VMware console as I’m installing a fresh copy of Mac OS X Server while flying home from Advanced Camp.

So for starters, we’re going to boot to our nifty Mac OS X Server optical media, or if you’re using VMware like me, insert the optical media and create a new VMware image.  Here, you’ll choose your boot volume and likely select to do a custom installation, removing the unneeded language and printer files to keep your install pretty lean and mean.  I don’t recommend disabling X11 as part of your initial install as it’s a pretty helpful app (and small).

After the initial OS installation, the first screen you’ll see is the good ‘ole welcome screen.  Here, click on Continue.  The second screen you will see is a Server Configuration screen.  Now, this is a far more complicated discussion than I’m ready to have in this post, although I did explain the difference between the modes here.  At this screen, you will be able to click on Standard, Workgroup or Advanced.  Personally, I will only use Workgroup or Standard in three cases: 

  • If I want the automated augmented records to be built I will use Workgroup
  • If I want to use Time Machine destinations for clients on the server
  • If a customer forces me too

No matter what mode you choose to use, you will be able to upgrade to Advanced (which is where you will likely want to be) easily by opening Server Admin and telling it to upgrade.  Here we’re going to use Advanced, so click Advanced (or whatever mode you want to use) and click on Continue.

Server Configuration Screen

Server Configuration screen

At the Keyboard screen, select your preferred keyboard type and click Continue.

Keyboard Screen

Keyboard screen

At the Serial Number screen type in your serial number, Registered to and name of your company and click on Continue.  Do not try to use the one I typed in here as it won’t work (I didn’t figure Apple would like it if I turned my blog into my own little Serial Surfer).

Serial Number screen

Serial Number screen

At the Registration Information screen, type in your info and click on Continue.  

Registration Information screen

Registration Information screen

At the A Few More Questions screen, check the boxes appropriate for you and click on Continue.

A Few More Questions screen

A Few More Questions screen

At the Administrator Account screen, enter the credentials for your first administrator account.  The Name, the Short Name and the password will all be placed into the local directory store and the password will also be used on the root account, which is enabled by default on Mac OS X Server (but not on the client version of the operating system).  When you’re happy with your account name, click Continue.

Administrator Account screen

Administrator Account screen

Now you can configure your network settings at the Network Address screen.  Here you will ONLY want to use the “Yes, use the information supplied” radio button if you have a DHCP reservation setup for your server.  You do not want the IP address of a Mac OS X Server to change unless you run the changeip command.  It will cause you to potentially no longer want to use Mac OS X Server, which will make me very, very sad as I think it’s a great platform…

Network Address screen

Network Address screen

So click on No, configure network settings manually and then click on Continue.  Here, type the relevant IP information for your environment and then click Continue.    Unless you use it, consider disabling IPv6 here but make sure to use a DNS server that is authoritative for the domain this server will reside in.

At the Network Names screen, enter the name that you have setup for this server into the Primary DNS Name field.  If you have not setup the name that you are giving this server on your DNS servers, do so now (including the PTR record).  If this server isn’t destined to become the DNS server then obviously you won’t have a record yet, but enter the IP as it will be when you get around to setting up your DNS.  At the Computer Name field enter what would otherwise be the A record in most cases.  You can use this   

Network Names screen

Network Names screen

I’m not sure why the option is located on the Network Names screen, but one of the few services I will sometimes leave enabled at install time is the Enable Remote Management service.  Especially if I’m doing a headless installation.  If you aren’t using ARD then you likely won’t be using Remote Management but hopefully most of you are.  When you’re satisfied with the name of the system then go ahead and click on Continue.

At the Time Zone screen, set your Time Zone by selecting the closest city and then click Edit and set your Network Time Server (NTP).  The Network Time Server is important in a Workgroup setup where you will be binding to Active Directory or Open Directory on installation as Kerberos will need the server to be within 5 minutes (by default) of the KDC (Key Distribution Center).  If there’s not an existing directory services infrastructure or Network Time Server, then you can create one after installation and leave the server as  When you’re happy with your time settings, click Continue.

Time Zone screen

Time Zone screen

If you are using Standard Mode then you will not get the Directory Usage screen as it will automatically turn your box into an Open Directory Master.  If you’re using Workgroup Mode then you will be required to join a directory service.  if you’re using Advanced Mode (and in most cases you should be), just click Continue leaving the directory usage set to Standalone.  If the server is to be promoted to an Open Directory master or replica at a later time then still leave it Standalone until you have installed the available software updates.  

Directory Usage screen

Directory Usage screen

Now you will be looking at the Confirm Settings screen.  Here, review the settings you’ve given the host (yours should not say Network supplied by DHCP as mine does btw) and click on Apply.  Once the server reboots login and open the System Preferences and run Software Update, installing all available updates, except maybe Bluetooth, AIrPort  or iPod types of updates that will likely not be needed on a server.  Reboot after the updates are finished.

Confirm Settings screen

Confirm Settings screen

Login again, go to the /Applications/Server folder and open Server Admin (if you’re using Advanced Mode) or Server Preferences (if you’re using Standard or Workgroup Modes).  If your DNS isn’t ready yet when you open up Server Admin you’ll get a nastygram telling you that the server cannot be found. Here you can choose to Keep in List or Remove.  The thing is that Server Admin allows you to configure your servers and connects to each computer.  But you’re not deleting any functionality, etc. when you choose to Remove.  This is only a listing, not a big deal…  

Server Admin without DNS

Server Admin without DNS

I usually remove it and then readd it using when I don’t have DNS yet, or edit my /etc/hosts file to throw my name in there until I’m finished setting up DNS prior to opening Server Admin.

Configure Services Prompt

Configure Services Prompt

Once you’re able to connect you’ll get another dialog box, this time asking you if you want to enable any of the services on the server.  Go ahead and click on Choose Configured Services.  Here we’re going to run through and just check the boxes for services we want to see in the list.  We haven’t actually configured any services by checking their box, only made it where we only see relevant servers in the list, making administration easier.  Once you’ve checked your boxes, click Save.  

Selecting Services to Run

Selecting Services to Run

Next, click on Notifications and add some addresses and at a minimum tell your server to notify you when the free space drops dangerously low.  User Server Monitor you can then configure the server (if it is an Xserve) to notify you for a wide variety of other items as well.

Setting up Notifications

Setting up Notifications

Now, fire up a Terminal screen and run changeip -checkhostname to see whether your DNS is OK.  If, like me you didn’t have DNS before then it will return with an error.  If you didn’t have DNS already and will be setting it up as part of your server install, add the service as described early, configure your Zones and then try the changeip.  Do not put a server into production without first verifying the hostname.  

Anyway, at this point you’re on to configuring the server services, so I’ll let you get to that.  Have fun and later (when I’m not a bit jetlagged) I’ll explain how to do the installation using AutoServerSetup.

November 4th, 2008

Posted In: Mac OS X Server

Tags: , ,

Install Xsan software and Reboot. This will install a bin, config, debug, examples, man and ras folder into your /Library/FileSystems/Xsan folder. The bin folder will contain the Xsan command line binary files that allow you to do all of what you can do within Xsan Admin (and more). The config folder will begin with only a uuid file. Once you setup the SAN it will fill in with more information.

Next you will want to place the Xsan Admin application in your dock and open it for the first time. Once open, you will be faced with the Introduction screen.

Xsan 2.0 Introduction Screen

Here you will click Continue. In the resultant Initial SAN Setup screen you will have the opportunity to Configure a new SAN or Connect to existing SAN.

If this is not the first MDC you will be installing then click on the Connect button; however if it is the first MDC then click Configure new SAN and click on Continue. At the next screen, name the SAN.

SAN Settings

The SAN name is not the same as the volume(s) name. In this screen you can enter an Administrator Name and Email. If you do this is purely for the purpose of providing administrator contact information to Xsan users and not used for other purposes. When you are satisfied with the information you have entered click Continue.

Next, at the Add Computers screen, click Select None and check the box for the MDC you are currently working on.

Add Computers screen

Then click on Continue. Next, at the Authenticate SAN Computers screen type the User Name and Password for the MDC you are working on and click on Continue.  The system will briefly present an Authenticating window and then allow you to enter your Serial Numbers into the Serial Numbers screen.

Serial Number Screen

You will no longer need to associate a serial number to a client, but rather build a pool. Apple will often distribute Serial Numbers in email form. In this case you can lasso the serial numbers and drag them into the License area of this screen. Xsan 2 will dynamically allocate licenses to clients when needed. Otherwise you can use the Add Serial Number Screen to type each one in manually.

Next you will see the SAN Metadata Network screen.

SAN Metadata

Xsan requires (per best practices) a dedicated Metadata network. This network should have no other devices attached and be solely used for Xsan traffic. This network should have a good switch (no LinkSys, DLink, etc) to keep any dropped packets/collisions at a minimum and as such should also not be a VLAN from a bigger switch or have any managed switching services (such as link aggregation or spanning tree protocol) enabled. You will have two Network Interfaces. The first should be used for your standard network, and thus be able to provide directory services, Internet access, file server access, etc. The second, the Metadata interface should be dedicated to Xsan traffic and not routable or running any DHCP services (therefore clients will need static IP addresses on the Metadata interface. At the SAN Metadata Network choose the network your metadata will run on and click on the Continue button.

Finally, you will be presented with a Summary screen.


Review these settings carefully and if they are correct click on the Continue button. At this point you will see a screen that the SAN is creating. When it is finished you will be placed into the Create Volume screen. Here you can click Create One or more Volumes later and go into the main Xsan Admin Screen. At this point if you look into your config folder you will now see the following files:

    * Config.plist – XML file with licenses, SAN name, controller settings, etc

    * Fsnameservers – Listing of Metadata Controllers

    * Notifications.plist – XML parsed data of Email notifications

Later, other files will be added as volumes, etc. are created (each volume will have it’s own cfg file and an accompanying fsm process spawned by xsand). You can now move on to creating a Volume.

October 11th, 2008

Posted In: Xsan

Tags: ,

I originally posted this at

Installing Mac OS X is a fairly simple task to complete and can typically take up to an hour or more depending on the installation options you choose. However, you should review all of your options in the installer as many items are not needed unless you have a specific need for them. Installing any operating system involves choices, which we will reveal throughout this chapter. If you are reinstalling your operating system, just make sure to have a valid backup before you continue on with this chapter.

The Installation Process
Installing Mac OS X requires little of a user other than agreeging to the license agreement, known as an EEULA and being able to click on continue. Many of the choices available during installation can be left at their default settings. The system will simply guide you in many cases allowing you to click Continue or Agree at most of the dialog boxes and obtain a default installing.
But the power user knows better and wants to be up and running as quickly as possible. The power user wants to leave out any of the items from the operating system that they’re not going to use and the power user is going to want a level of control over what is on their system that can’t be had by doing a default installation.

Also, until the system starts the Checking Disk process, which it will do in order to verify your installation media, you can stop the installation and go back to the operating system you had before. Of course, if you reformat a drive going back to your operating system will no longer be an option.
Note: You can access Disk Utility while booted to the CD in order to partition your hard drive, but if you plan on using Boot Camp to install Windows onto a partition then you will need to leave your system with one partition.

The installation process takes users through a variety of steps to help choose which parts of the operating system to install. At most of the stages, you will be able to click on the default value and proceed without actually customizing anything. However, you will see a Customize button at many of the screens that can be used to

Note: Each version of OS X will have a slightly different installation process. This article is written for OS X 10.5. However, if you are using a previous version then while some of the screens will be similar do not expect them all to be the same.

Installing an Operating System onto an External Drive
When you install OS X you can choose to install it on any drive that is visible to your computer. This can be a USB jump drive, a FireWire hard drive or an Xserve RAID. There are a variety of reasons why you would use any of these as a boot medium rather than your internal drive. Whether the reason is portability, drive size, redundancy or performance, Apple has given us a lot of options by allowing the installation of the operating system on any medium the computer can access that doesn’t require special drivers.
• USB jump drive: Placing a customized and very trimmed down operating system onto a USB jump drive can provide you with the ability to have a quick and easy way to troubleshoot any computer in your pocket at any time. The size of a USB jump drive makes it a good choice for people just looking to
• FireWire: Firewire hard drives are becoming more and more inexpensive with each passing year. These portable drives can allow you to take your files with you anywhere. But they’re not as good for using as a full time operating system. They are great for carting around installers, using as targets for your backups and it never hurts to an operating system on to use for troubleshooting.
• Internal RAID 0: A RAID is a random array of independent disks, or disks that have been combined for a specified outcome. RAID 0 disks are particularly helpful with increasing performance and obtaining a larger drive than what is possible without using a RAID. Computers with an operating system installed on a RAID 0 will receive a slight speed increase, but if either drive fails then you risk loosing all of the data on the volume.
• Internal RAID 1: A RAID 1 disk set is also known as a mirror. In a mirrored disk set, if any single drive fails then all of the data is also located on the second drive. There is a slight reduction in speed for RAID 1 volumes.
• Internal RAID 5: Apple recently released a card that allows for using 3 internal drives to create a RAID 5 volume. RAID 5 allows for redundancy as is found with RAID 1 and a larger volume as is found in RAID 0 with an offset in the speed decrease.
• Xserve RAID: The Xserve RAID can be connected to a computer through a fibre cable and allows for a single volume size of up to 10 terabytes.

Once you have your drives ready to install onto you will want to choose whether to do an upgrade or a new installation. If you are coming from a previous version of Mac OS X or having problems with your existing installation then you will likely want to do an Archive and Install. If you are working on Mac OS X Server you will likely need to do a format prior to installation. Once you have chosen which of these you will be doing then click on the Next and get ready to customize your installation. At this point you will be able to click on the Custom… icon and choose which parts of the OS to install. Don’t worry, if you leave anything out that you later decide you would like you can always go to the installation CD and install it as a package manually.

Now, click Install and you’re off to the races.

October 25th, 2007

Posted In: Mac OS X

Tags: , ,