- Make a full backup and turn off auto login for your account
- Create a 2nd admin user for purposes of changing the path once you are booted into the SSD.
- Create a custom copy script in SuperDuper!
- Allow the user to select the script in the first tab. Include the script "Backup - all files.dset" in the second tab. On the third tab set an ignore for /Users/yourusername
- In SuperDuper! use this script to copy from the HD to the SSD. It will leave all data on the HD, and copy everything but your user folder to the SSD.
- Change the boot drive to be the SSD in System Preferences.
- Boot into the SSD, login to the account you created in step 2, and follow knweiss's advice from the page you linked to. You'll be right clicking on your account to change the path to point to the user folder on the HD.
- Reboot and login.
Be aware that you'll have a /Users folder on your SSD which will have /Shared in it, and new users will be created on the SSD unless you specify otherwise.
Once you are done you should delete everything on the HD except of course /Users/yourusername
Don't change the name of the HD in the finder or it will break the link to your User folder unless you edit the link again in Accounts. You can change the drive name before you start, but pick something you'll want to stick with.
On Linux, simply run
hdparm --trim-sector-ranges start:count /dev/sda
passing the block ranges you want to TRIM instead of start
and count
and the SSD device in place of /dev/sda
.
It has the advantage of being fast and not writing zeros on the drive. Rather, it simply sends TRIM commands to the SSD controller letting it know that you don't care about the data in those blocks and it can freely assume they are unused in its garbage collection algorithm.
You probably need to run this command as root. Since this command is extremely dangerous, as it can immediately cause major data loss, you also need to pass --please-destroy-my-drive
argument to hdparm
(I haven't added this to the command line to prevent accidental data loss caused by copy and paste.)
In the above command line, /dev/sda
should be replaced with the SSD device you want to send TRIM commands to. start
is the address of the first block (sector) to TRIM, and count
is the number of blocks to mark as free from that starting address. You can pass multiple ranges to the command.
Having personally done it with hdparm v9.32 on Ubuntu 11.04 on my laptop with a 128GB Crucial RealSSD C300, I have to point out an issue: I was not able to pass the total number of disk blocks (0:250069680) as the range. I manually (essentially "binary searched" by hand) found a large enough value for block count that worked (40000) and was able to issue TRIM commands on a sequence of 40000 ranges to free up the entire disk. It's possible to do so with a simple shell script like this (tested on Ubuntu 11.04 under root):
# fdisk -lu /dev/sda
Disk /dev/sda: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
...
to erase the entire drive, take that total number of sectors and replace 250069680 in the following line with that number and run (add --please-destroy-my-drive
):
# i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
| hdparm --trim-sector-ranges-stdin /dev/sda
And you're done! You can try reading the raw contents of the disk with hexedit /dev/sda
before and after and verify that the drive has discarded the data.
Of course, even if you don't want to use Linux as the primary OS of the machine, you can leverage this trick by booting off a live CD and running it on the drive.
Best Answer
Since I haven't heard anything, I'll create and keep editing a list of what I find here, in scrappy, note-like fashion. However I'd still welcome a more expert answer!
Possibilities (yet to do)
What I've done
Terminal commands: