You are previewing Mac for Linux Geeks.
O'Reilly logo
Mac for Linux Geeks

Book Description

Some might say we all want Linux with an OS X GUI. Mac for Linux Geeks will assist you step by step in migrating from Linux-based systems to OS X. Dual booting, virtualization, and building out the Linux environment on OS X are discussed in detail, along with a comparative view of well-known Mac tools and their open source equivalents. Written for daily use, this concise and dependable guide will steer you across the technical landscape from your chosen Linux flavor to the OS X promised land.

  • Live with OS X, but work with Linux tools.

  • Make the OS X-Linux hybrid a reality.

  • Use Mac tools where possible and free software where appropriate.

Table of Contents

  1. Copyright
  2. About the Author
  3. About the Technical Reviewer
  4. Preface
  5. 1. The Backstory
    1. 1.1. Of Macros and Manuals: UNIX
      1. 1.1.1. From Assembly to C
      2. 1.1.2. Macros and Pipes
      3. 1.1.3. User Manuals
    2. 1.2. The Fork: BSD
      1. 1.2.1. 1BSD to 4BSD
      2. 1.2.2. Licensing Issues
    3. 1.3. The Enthusiast and the Marketer: Apple Computer
      1. 1.3.1. Homebrew Days
      2. 1.3.2. Apple I to Lisa
      3. 1.3.3. And Finally, the Mac
    4. 1.4. The Convergence: Mac OS X
      1. 1.4.1. NeXTStep
      2. 1.4.2. Back at Apple
    5. 1.5. Why BSD in Mac OS X?
      1. 1.5.1. History
      2. 1.5.2. Portability
      3. 1.5.3. Open Source Base
      4. 1.5.4. Economics
      5. 1.5.5. Extensibility
    6. 1.6. How Is BSD Implemented in Mac OS X?
    7. 1.7. Why Switch from Linux to Mac?
      1. 1.7.1. Hardware Control
      2. 1.7.2. Common Code
      3. 1.7.3. Release Stability
    8. 1.8. Summary
  6. 2. The Comparison: Linux vs. Mac OS X
    1. 2.1. Mac OS X and Linux Filesystems
      1. 2.1.1. The Apple Filesystem
      2. 2.1.2. Filesystem Layouts
      3. 2.1.3. The ext2/ext3 Filesystem in Linux
      4. 2.1.4. Comparison of HFS+ and ext2/ext3
    2. 2.2. Permissions in Mac OS X
      1. 2.2.1. File Permissions
      2. 2.2.2. Root and Administrative Access
    3. 2.3. Terminal Access in Mac OS X
      1. 2.3.1. Starting Bash
      2. 2.3.2. Setting Linux System Variables in Mac OS X
    4. 2.4. Interfaces in Mac OS X
      1. 2.4.1. Configuring Ethernet Interfaces from the Command Line
      2. 2.4.2. Using the GUI to Configure Ethernet Interfaces
    5. 2.5. Devices and Drives
      1. 2.5.1. Accessing Devices and Drives Through the GUI
      2. 2.5.2. Accessing Devices and Drives from the Command Line
    6. 2.6. Summary
  7. 3. Dual-Booting and Virtualization
    1. 3.1. Dual-Booting Linux and Mac OS X
      1. 3.1.1. Loading Linux with rEFIt
      2. 3.1.2. Installing Linux Using Boot Camp
      3. 3.1.3. Partitioning from the Command Line
      4. 3.1.4. Removing a Linux Partition
    2. 3.2. Virtual Linux
      1. 3.2.1. Using VMware
      2. 3.2.2. Using VirtualBox
    3. 3.3. Summary
  8. 4. Building Out the Linux Environment
    1. 4.1. Xcode Tools
      1. 4.1.1. Xcode Installation
      2. 4.1.2. An Overview of the Xcode Tool Set
    2. 4.2. Online Linux Tools
      1. 4.2.1. MacPorts
      2. 4.2.2. Fink
    3. 4.3. Summary
  9. 5. Using the Many Apple and Linux Tools
    1. 5.1. A Brief Overview of Graphics and Multimedia on the Mac
      1. 5.1.1. Core Graphics
      2. 5.1.2. Core Video
      3. 5.1.3. Quartz Composer
    2. 5.2. Built-in Mac OS X Multimedia Tools
      1. 5.2.1. iPhoto
      2. 5.2.2. iMovie and iDVD
      3. 5.2.3. iWeb
      4. 5.2.4. GarageBand
    3. 5.3. Third-Party Multimedia Tools
      1. 5.3.1. The Adobe Multimedia Tools
      2. 5.3.2. Mac OS X Third-Party Multimedia Summary
    4. 5.4. Open Source Multimedia Tools
      1. 5.4.1. Graphics Editing with GIMP
      2. 5.4.2. Audio Editing with Audacity
      3. 5.4.3. Open Source Multimedia Summary
    5. 5.5. Office and Productivity Tools in Mac OS X
      1. 5.5.1. Microsoft Office for Mac
      2. 5.5.2. The Mac iWork Tools
    6. 5.6. Open Source Productivity Tools
      1. 5.6.1. OpenOffice.org
      2. 5.6.2. NeoOffice
    7. 5.7. Summary
  10. 6. Routine Mac OS X System Administration
    1. 6.1. Using the Shell
      1. 6.1.1. Changing the Default Shell
      2. 6.1.2. Using UNIX Administration Tools and Commands
    2. 6.2. System Monitoring
      1. 6.2.1. Using Activity Monitor
      2. 6.2.2. Viewing System Processes with top
      3. 6.2.3. Listing Processes with ps
    3. 6.3. User Maintenance
      1. 6.3.1. Managing User Accounts Using System Preferences
      2. 6.3.2. Managing Users Using the Command Line
    4. 6.4. Log Review and Maintenance
      1. 6.4.1. Log Location and Naming Conventions
      2. 6.4.2. Reviewing Log Files with the Console Application
      3. 6.4.3. Managing Tasks with launchd
    5. 6.5. Administering Shared Resources
      1. 6.5.1. Mac OS X and Web Servers
      2. 6.5.2. Printer Sharing
      3. 6.5.3. SMB File Sharing
      4. 6.5.4. NFS File Sharing
    6. 6.6. Summary
  11. 7. Backup, Security, and Automation
    1. 7.1. Backup and Recovery Overview
    2. 7.2. The Mac Approach to Backup and Recovery
      1. 7.2.1. Time Machine Backups
      2. 7.2.2. Backups with Carbon Copy Cloner
      3. 7.2.3. SuperDuper for Simple Backups
      4. 7.2.4. Mozy and Other Off-Site Backup Options
    3. 7.3. The Linux Approach to Backup and Recovery
      1. 7.3.1. Using dd to Copy Data
      2. 7.3.2. Using rsync to Synchronize Files
    4. 7.4. Security
      1. 7.4.1. Configuring Security Through System Preferences
      2. 7.4.2. Using ipfw As a Firewall
      3. 7.4.3. Using WaterRoof: An ipfw Front End
    5. 7.5. Summary
  12. 8. Mac OS X and Code
    1. 8.1. Using Xcode
      1. 8.1.1. Creating an Application with Xcode
      2. 8.1.2. Working in the Main Xcode Window
      3. 8.1.3. Debugging with Xcode
    2. 8.2. Xcode and Other Application Development Tools
      1. 8.2.1. Xcode and Java
      2. 8.2.2. Xcode and Python
      3. 8.2.3. Xcode and Ruby
      4. 8.2.4. Xcode and PHP
    3. 8.3. Scripting
      1. 8.3.1. Using AppleScript
      2. 8.3.2. Creating Scripts with the Script Editor
      3. 8.3.3. Using Other Scripting Languages
    4. 8.4. Code Maintenance and Revision Control
      1. 8.4.1. Introducing Subversion
      2. 8.4.2. Using Subversion from the Command Line
      3. 8.4.3. Using Subversion GUI Front Ends
      4. 8.4.4. Managing Changes with Git
    5. 8.5. Summary
  13. 9. Hybridizing Your System
    1. 9.1. How BSD and Linux Differ
      1. 9.1.1. Distribution vs. Operating System
      2. 9.1.2. Runlevels and System Startup
      3. 9.1.3. Licensing
    2. 9.2. Kernel Customization and Compilation
      1. 9.2.1. Setting Up the Build Environment
      2. 9.2.2. Building the Kernel
    3. 9.3. Porting UNIX Apps to the Mac
      1. 9.3.1. Why Port?
      2. 9.3.2. Good Practice
      3. 9.3.3. Installing the Development Environment
      4. 9.3.4. Creating Makefiles
    4. 9.4. Installing Linux Desktop Environments on the Mac
      1. 9.4.1. Installing GNOME
      2. 9.4.2. Installing KDE
    5. 9.5. Summary