There are several problems with the script you posted.
Don't remove /Users/Shared - iTunes needs it and will fail on certain store and sharing operations.
dscl on Lion will still whine if you start it (it's looking for the missing plist) - even if you launch /System/Library/LaunchDaemons/com.apple.opendirectoryd.plist
as Ingmar Hupp has suggested.
I've never been one to worry about cleaning up the groups since I'm deleting user 501. The system will just add UID 501 back into the Admin and Staff groups the next time the Setup Assistant boots, so I do the following: (assume the short name of the user 501 is test)
- ⌘+S
/sbin/mount -uw /
cd /var/db/dslocal/nodes/Default/users/
rm test.plist
rm -rf /Users/test
rm /var/db/.AppleSetupDone
halt
I do use the official Users & Groups Preference Pane to delete all users except 501 and/or create the test user as 501 as needed since launchd can have jobs stuck if the users you are clearing aren't trivial users set up for simple updates as your case allows.
I would avoid saving a WiFi password or setting up WiFi outside the user account or use ethernet for your updates if you want to be fastidious about leaving as little of your settings behind (especially if the SSID/name isn't generic like Apple Network or has WEP/WPA keys).
Issue solved; no physical errors.
These are what I did:
First I analyzed where the error occurred :
...
** Checking catalog file.
Invalid index key
(4, 20220)
Invalid node structure
(4, 38065)
The volume SSD could not be verified completely.
...
fsck
stops while scanning catalog files. Let's try reading fsck_hfs
user manual by executing man fsck_hfs
for clues.
...
-R flags Rebuilds the requested btree. The following flags are supported:
a Attribute btree
c Catalog btree
e Extents overflow btree
...
Let's try rebuilding catalog btree then. fsck_hfs -Rc /dev/rdisk0s2
Results: fsck
does not stop at catalog file check anymore, and the Invalid index key
error disappeared, revealing more errors ( clues! ).
** Checking extents overflow file.
Incorrect block count for file Cache.db-wal
(It should be 114 instead of 119)
** Checking catalog file.
Missing thread record (id = 30291961)
Incorrect number of thread records
Incorrect number of thread records
** Checking multi-linked files
** Checking catalog hierarchy.
Invalid directory item count
(It should be 221 instead of 244)
Invalid volume file count
(It should be 1318081 instead of 1318117)
** Checking extended attributes file.
Invalid node structure
The volume SSD could not be verified completely.
fsck
now stops when checking extended attributes file. Let's try rebuilding the attributes btree with fsck -Ra /dev/rdisk0s2
.
Result(s): All errors, except Invalid node structure
disappeared after the first repair attempt. It shows several invalid nodes, then attempts the second repair, and rechecks. It still shows some invalid nodes, but even less then before.
However the fsck
stops with a message saying that it stops making repair attempts after 3 check failures. I ran fsck -Ra /dev/rdisk0s2
again. It attempts to repair again, then rechecks. No invalid node structure error shows up!
It now makes Invalid volume free blocks count
, Invalid volume file count
, and Invalid volume directory count
errors, but it doesn't stop yet!
After yet another attempt of repair, fsck
finished without any errors.
Shut down. Boot normally without entering single user mode. And it works!
Problem solved by running fsck
several times, rebuilding catalog btree, and attribute btree several times.
Best Answer
Boot to Recovery HD or internet recovery since the Disk Management Framework isn't loaded in single user mode:
If you run into more problems -
diskutil verifyDisk
andverifyVolume
and their repair variants might help to get at the underlying error condition on your volume.