Mac OS X Unleashed

Mac OS X Unleashed

By John Ray and William C. Ray


With a complex operating system like Mac OS X, things can sometimes go wrong, and the user is left with little recourse for solving the problem. Operations such as repairing damaged Mac OS X installations, resetting the root password, and fixing damaged disks can all be performed even if your machine is not booting into the operating system properly.

Verbose Boot

Mac OS 8 and 9, although hiding much of the system operation from the user, gave a clearer picture of what was going on during a system boot. When Mac OS X starts, dozens of support processes and drivers are loaded at the same time. If something fails, it is left to the imagination of the user to guess exactly what has gone wrong. In many cases, users might not even be aware that there are problems with their system configuration because the boot process hides behind a very simple GUI startup screen.

To view exactly what is happening as the Mac OS X system boots, you can hold down Command+V at power-on to force a verbose startup. The verbose boot displays all status and error messages while the computer starts. This can be a bit startling to many Mac users because instead of the usual blue or gray background present during startup, the screen is black and filled with text. Windows and Linux users will feel right at home.

The verbose startup messages are similar to those contained in /var/log/system.log. For example:

Jun 29 17:30:30 localhost mach_kernel: .Display_RADEON: i2cPower 1
Jun 29 17:30:30 localhost mach_kernel: .Display_RADEON: user ranges num:1 start:9c008000

Jun 29 17:30:30 localhost mach_kernel: .Display_RADEON: using (1600x1024@0Hz,32 bpp)
Jun 29 17:30:30 localhost mach_kernel: AirPortDriver: Ethernet address 00:30:65:11:37:15
Jun 29 17:30:30 localhost mach_kernel: ether_ifattach called for en
Jun 29 17:30:30 localhost mach_kernel: kmod_create: (id 58), 6 pages

    loaded at 0xc27a000, header size 0x1000
Jun 29 17:30:30 localhost mach_kernel: kmod_create: (id 59), 5

    pages loaded at 0xc28d000, header size
Jun 29 17:30:30 localhost mach_kernel: kmod_create: IPFirewall (id 60), 5 pages loaded at

    0xc292000, header size 0x1000
Jun 29 17:30:30 localhost mach_kernel: ipfw_load
Jun 29 17:30:30 localhost mach_kernel: IP packet filtering initialized, divert enabled,

    rule-based forwarding enabled, default to accept, logging disabled
Jun 29 17:30:31 localhost sharity[161]: [0] Sharity daemon version 2.4 started
Jun 29 17:30:39 localhost ntpdate[204]: ntpdate 4.0.95 Sat Feb 17 02:38:39 PST 2001 (1)
Jun 29 17:30:43 localhost ntpdate[204]: no server suitable for synchronization found
Jun 29 17:30:43 localhost ntpd[206]: ntpd 4.0.95 Thu Apr 26 13:40:11 PDT 2001 (1)
Jun 29 17:30:43 localhost ntpd[206]: precision = 7 usec
Jun 29 17:30:43 localhost ntpd[206]: frequency initialized 0.000 from /var/run/ntp.drift
Jun 29 17:30:43 localhost ntpd[206]: server minpoll 12 maxpoll 17

This small sample of the verbose output shows the Apple Radeon driver loading, followed by the AirPort software, Classic SharedIP driver, firewall, Sharity, and ntp (network time protocol) software.

Interestingly enough, in capturing this example, I ascertained what I had suspected for several weeks: The ntpdate utility, which is responsible for automatically contacting a remote time server for synchronization, has been failing:

Jun 29 17:30:39 localhost ntpdate[204]: ntpdate 4.0.95 Sat Feb 17 02:38:39 PST 2001 (1)
Jun 29 17:30:43 localhost ntpdate[204]: no server suitable for synchronization found

Similar feedback is provided for almost all the services on the computer, from low-level device drivers to Apache and Sendmail. If your computer hangs during boot, you can use the verbose startup mode to determine exactly where the sequence has gone amiss.

Single-User Mode

Another interesting modification to the startup process is booting into single-user mode. Holding down Command+S will start Mac OS X in single-user mode, allowing an administrator to directly access the system through a command-line interface. This is a last-resort method of booting your computer that should be used only if absolutely necessary.

Single-user mode boots in a text-only fashion, just like the verbose startup mode. The process finishes by dropping the user to a shell:

Singleuser boot — fsck not done
Root device is mounted read-only
If you want to make modifications to files,
run '/sbin/fsck -y' first and them '/sbin/mount -uw /'


Using the fsck command, you can repair local file systems from the command line. To fix a damaged file system, type fsck -y at the single-user prompt. This is equivalent to running the First Aid Disk Utility:

localhost# fsck -y
** /dev/rdisk0s9
** Root file system
** Checking HFS Plus volume
** Checking Extents Overflow file.
** Checking Catalog file.
** Checking multi-linked files.
** Checking Catalog heirarchy.
** Checking volume bitmap.
** Checking volume information.
** The volume Rmac OS XS appears to be OK.

If an error occurs during this process, you might have to tell the system that it is okay to perform repairs. Table 32.4 lists additional command-line arguments for fsck.

Table 32.4. fsck Command-Line Options

Option Purpose
-d Debugging mode. Displays the commands that fsck will execute without actually carrying them out.
-f Forces a check of the file systems, even if they are considered clean.
-l <max parallel processes> Sets the number of scans that fsck will run in parallel. Usually defaults to one scan per disk.
-n Assumes that the answer to all interactive questions is no.
-p Preen (clean) the file systems marked as dirty.
-y Answers yes to all interactive questions.

Editing Files

When booted into single-user mode, the Mac OS X file system is mounted read-only as a precaution. If you've installed a new daemon or script that is stalling the system at startup, it would be useful to be able to edit files from within single-user mode. To mount the file system with write permissions, use /sbin/mount -uw /.

Again, be aware that changes made while in single-user mode are made as the root user. When dealing with stalled startups, take the same approach as with extensions and control panels under Mac OS 8 and 9: Remove the last item to load before the system failure, and then reboot.

As you already know, both the /Library/Startupitems and /System/Library/Startupitems directories contain the services that are started at boot time. Make these your starting locations for pinpointing hang-ups when Mac OS X is booting. In addition, the /etc/hostconfig and /private/var/db/SystemConfiguration/preferences.xml files hold information on your machine's network configuration and boot parameters. Although editing these files isn't a guaranteed cure for any problem, they're a good place to start.

Commercial Repair Tools

At the time of this writing, only a single disk repair utility is available under OS X: Drive 10 from MicroMat. This is expected to change in late 2001/early 2002, but that is of little consolation for those of us using the operating system currently.

Thankfully, because Mac OS X uses the same default file system as Mac OS 9, the big-name commercial disk repair utilities have been updated to work under the new operating system:

  • Drive 10 by Micromat Inc. ( Drive 10 offers extensive disk diagnostic utilities ranging from power supply tests to buffer validation. Unfortunately, it is lacking several of the more useful features—such as more generalized system diagnostics and drive optimization—of its big brother, TechTool Pro.
  • TechTool Pro by Micromat Inc. ( TechTool Pro is the undisputed king of diagnostics. It can locate problems with almost any hardware component, from memory to CPU failures. It also includes extensive drive repair and optimization facilities.
  • Norton Utilities by Symantec, Inc. ( Norton Utilities is the oldest and best-known Macintosh repair software available. NU focuses entirely on drive repair, optimization, and data loss prevention.

It has been my experience that TechTool Pro and Norton Utilities can be used in conjunction with one another to successfully diagnose and solve problems that neither can handle alone. Drive 10, although effective as a complete disk drive diagnostic tool, does not offer as complete a package as the non-native TechTool Pro.


Most Windows users are familiar with the word reinstall. I've listened in on many support calls, only to hear the technician give up and tell the end user to reinstall. Unfortunately, Mac OS X users might find themselves doing the same thing. The difference, however, is that reinstalling Mac OS X does not replace your system accounts, information, or configuration.

I have found on numerous occasions that rerunning the Mac OS X installer is the fastest and easiest way to return to a viable system. There are, however, a few drawbacks—most notably, the system updates are replaced by the original version of the operating system. After running the Mac OS X Installer to recover a damaged system, be sure to open the /Library/Receipts folder and throw away any receipt files stored by system updates, and then manually force a software update to reinstall the latest versions of the Mac OS X support software.

Another anomaly is that if you've moved or removed any of the system-installed applications, they will be restored during the install process.

Restoring the Administrator Password

If the Mac OS X administrator password is forgotten or misplaced, Apple has provided a facility for restoring a password. Boot your computer from the Mac OS X install CD (hold down the C key while turning your computer on with the CD in the CD-ROM drive). When the Installer application starts, choose Reset Password from the Installer application menu. Figure 32.8 shows the interface to the Password Reset facility.


Figure 32.8 Use the boot CD and Password Reset application to ease your forgetful head.

Detected Mac OS X volumes are listed along the top of the Window. Click the main boot drive to load the password database for that volume.

Next, use the pop-up menu to choose the user account that you want to reset. Fill in the new password in both of the password fields provided.

Finally, click Save to store the new password.

This really isn't useful for much beyond resetting the administrator password. As long as there is access to the administrator account from the command line, you can easily use passwd <username> to reset the named user's password:

[primal:~] jray% sudo passwd robyn
Changing password for robyn.
New password:
Retype new password:

+ Share This