CompactFlash boot drive

From ThinkWiki
Revision as of 12:12, 13 July 2008 by Bugmenot1 (Talk | contribs)
Jump to: navigation, search
Addonics Dual CF-IDE HDD Adapter with 8GB SanDisk Extreme IV CompactFlash

Changing your HDD for a CF boot drive (CompactFlash card on CF-IDE adapter) is an alternative to using SSD to boost the performance.

This is primarily done by ThinkPad X40, X41 and X41 Tablet series owners due to the extremely slow speed of 1.8" HDD.

For the time being, it does mean giving up on storage capacity. Since most of the faster CF cards are currently (July '08) only available in capacity up to 16GB.

ThinkPads utilizing PATA controller for the HDD slot can recognize both CF cards installed on a dual adapter. While newer ThinkPads, such as X41, which utilize SATA controller, can only recognize the single card installed on the primary slot.

Advantages of CF boot drive

  • Much faster access time (<1ms for CF, >20ms for 4200RPM HDD and >15ms for 5400RPM HDD)
  • Higher read throughput for >8KB blocks (may differ depending on brand, model, partition type and cluster size)
  • Higher write throughput for >64KB blocks (may differ depending on brand, model, partition type and cluster size)
  • Minimal risk of mechanical damage due to shock and vibration. Template:APS is therefore unnecessary)
  • (Possibly) a slight increase in battery life
  • (Possibly) less heat being generated

Disadvantages of CF boot drive

  • Lower read throughput for <8KB blocks (may differ depending on brand, model, partition type and cluster size)
  • Lower write throughput for <64KB blocks (may differ depending on brand, model, partition type and cluster size)
  • Lower capacity
  • Higher price per GB
  • Not officially supported
  • Invoke boot error 2010 on certain ThinkPads, including the X41 series
NOTE!
A often mentioned disadvantage of flash-based storage is the limited number of write cycles (typically 100,000 for the current generation). This should not however be as much of an issue because...
  • The 100,000 write cycles applies to each address block separately in the card, not to the card as a whole
  • The flash controller automatically distribute write operations evenly, so that the number of writes to each address block is kept low

Therefore, it should take years of typical real world usage to render a current flash memory card unusable

See [1] for more details.

What you need

  • A passive IDE/SATA to CF adapter
  • One or more CompactFlash cards with the following parameters:
    • (for Windows) Identify itself as a fixed disk instead of removable media
    • (preferably) UDMA support
    • (preferably) 266X speed or better

Known working adapters

IDE to CF

These adapters will work for both ThinkPads with 1.8" and 2.5" IDE (PATA) HDDs.

  • Addonics AD44MIDECF (single slot) [2]
  • Addonics AD44MIDE2CF (dual slot)[3]
ATTENTION!
The second (slave) slots on dual slot adapters do not work on newer ThinkPads, including the X41, X41 Tablet, T43, T43p and R52. Because their IDE interface is actually connected to the SATA controller via an IDE-SATA bridge. It works fine on the others, like the ThinkPad X40, and 2 separated drives will be recognized.
ATTENTION!
On the X41, X41 Tablet, T43, T43p and R52, the system will complain that an unsupported disk is installed (Error 2010), but will continue to boot after 5-10 seconds or after pressing enter (assuming you have a recent BIOS installed). The beeps can be muted by using the hardwrae mute button before the last shutdown/reboot

SATA to CF

These adapters are needed for newer ThinkPads with native SATA interface.

TODO
If someone has tested any, please add them here

Removable vs Fixed disk type

Most CompactFlash cards identify themselves as removable media instead of fixed disk. For Linux this will not cause any problem, but not for Windows.

If you have to use a CF card that has the type bits set to Removable and want to install Windows XP you can work around it as follows;

  • Use Linux to partition the drive with a FAT32 partition (you can boot from one of the LiveCD/LiveUSB distributions for this), and set the partition bootable.
  • Start the install of Windows, during install you will be given the opportunity to migrate to NTFS
  • After the install is finished you will need to install the Hitachi microdrive disk drivers (google for XPfildrvr1224.zip), which will mask the removable bits and should allow suspend and other operations that fail on a removable drive to work.

SanDisk Extreme

SanDisk used to provide a utility (when asked) under NDA to change the type bit to Fixed disk. It has however changed it stance on this and now refuses to provide it. This utility (ATCFWCHG.COM) however can be found for download at various places (try Google).

You will need to boot DOS and run it with the CF configured as either the master on the primary IDE interface or the master on the secondary interface. It will not work if the drive is attached as a slave or to any other interfaces.

To set a SanDisk Extreme adapter attached to the primary IDE interface to Fixed disk

ATCFWCHG.COM /P /F

To set a SanDisk Extreme adapter attached to the secondary IDE interface (Ultrabay) to Fixed disk

ATCFWCHG.COM /S /F
NOTE!
It seems that the ATCFWCHG.EXE utility is incompatible with SATA to IDE bridges, such as found in the X41. In those cases you will have to connect the CF card to another computer or ThinkPad with a regular IDE (PATA) interface to change the flag, after which you can put it into the ThinkPad X41.

Kingston Ultimate

The Kingston Ultimate CF card ships as CF-Removable, and although Kingston admits it is possible to change the type to Fixed disk, it was not willing when asked to provide a tool/application for this purpose.

But supposedly the Kingston card automatically changes ID based on the adapter used, so it will ID as fixed disk when used with an IDE-CF or SATA-CF adapter, but will ID as CF-Removable when used with a PCMCIA adapter.

Storage capacity issues

Due to the fast CF cards that you will want for your OS drive only being available in smaller sizes (up to 8GB currently) you might not have enough local storage for your needs. Here are some suggestions on how to work around it.

  • Add a second CF card, using the dual-port adapter. This will show up as an additional drive on ThinkPads that support it, and you might even use a larger capacity (and hence slower card) for this purpose depending on your needs.
  • use another flash memory card in the dedicated slot on select ThinkPads (CF on ThinkPad X20 and X30 series and SD on ThinkPad X40 and X60 series). Note that this slot might not be very fast.
  • use a USB drive or memory stick for additional storage. This is ugly since it will stick out, and should be avoided on ThinkPads that do not support USB 2.0
  • use NAS (network attached storage)

4GB is sufficient to install Linux or Windows with some basic applications. So unless you intend to keep your library of music/videos/pictures local the 8GB card might be sufficient.

Linux issues

With the Addonics adapters listed above (and possibly with other ones as well), the kernel's libata driver might warn about a 40-wire cable and default to UDMA/33 operation:

[ 27.831146] ata1.00: limited to UDMA/33 due to 40-wire cable
[ 27.846808] ata1.00: configured for UDMA/33

This has been observed with version 2.6.24 of the kernel, and it may affect older ones, too. A patch is available from [4] that adds a force_cbl kernel parameter. After applying the patch and recompiling the kernel, you can then set force_cbl=80:

[    7.140864] ata1: forcing 80c
[    7.140886] ata1.00: CFA: LEXAR ATA FLASH CARD, 20071016, max UDMA/100
[    7.140890] ata1.00: 7831152 sectors, multi 0: LBA 
[    7.140908] ata1.00: forcing 80c
[    7.141625] ata1.00: configured for UDMA/100

With the patch enabled, the above system achieves 42MB/sec read performance according to hdparm. Without it, performance suffers: 23MB/sec.

Linux tuning

  • edit /etc/fstab and add the option noatime to disable writing of last access timestamps on each file or directory access for each ext3 filesystem
LABEL=/ / ext3 defaults,noatime 1 1
  • disable swap (remove swap volume from /etc/fstab), just make sure you have enough memory installed (which since memory is cheap, should be easy to just max out the machine!)
  • increase writeback time (add the following line to /etc/rc.local)
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
  • remove beagle (if installed) from your system, it indexes the filesystem, but causes disk activity and keeps your cpu busy
rpm -e beagle beagle-gnome beagle-evolution

Windows tuning

Due to the space constraints of CF, you will want to do some tuning of Windows. In addition there are some tunes that help performance, and can even help in the case where your not changing your HDD to CF.

  • Do a minimal Windows XP install (not a recovery) with nLite, this allows you to remove components of Windows before they even get to the HDD, such as Movie Maker, Windows Messenger and Outlook Express that you might not need, while at the same time slipstreaming the latest ServicePack (SP3 for XP). Alternatively if you cannot reinstall, you can try the public domain xplite program, but for it to be useful you need to pay, and it does not work with SP3.
  • Disable NTFS from updating the last access of a file or directory on each access. This causes NTFS to do a write for each file read operation and writes are always slower, and with flash storage might not be a good idea, for this you need to set NtfsDisableLastAccessUpdate in your registry.
  • Disable Indexing of the drive (drive properties)
  • Compress the drive (NTFS only), this saves space and might in some cases even be faster as it will require less disk access (drive properties)
  • Disable swap (system properties), just make sure you have enough memory (just max out the machine, RAM is cheap these days)
  • Disable windows system restore (system properties), if you feel you can live without it. It reserves a defined amount of space for this purpose
  • Do not enable Hibernation, it requires a huge hibernation file and suspend should be good enough.
  • Disable programs from starting on boot that you do not need (do you really need Java, Adobe, Apple iTunes, etc from starting on boot each time?) with a program such as MSCONFIG (->Start ->Run -> msconfig)
  • Disable Windows services that you do not need from starting on boot
  • Only install the IBM/Lenovo applications you truly know you will need (in my case, only the Hotkey utility and the Wireless drivers package to be able to disable wireless with Fn-F5)
  • Never do a full install of an application, do a custom install and prune the options to remove all the stuff you will never use
  • Disable HW devices in device manager that you do not need (in my case, the Modem and Infrared)
  • Only install drivers you actually need (video, ethernet, wireless and sound in my case), and remove the C:\DRIVERS directory after your done.
  • Do not run defrag, it is pointless on flash media and just causes unnecessary writes!

With this I was able to Install Windows XP (SP3) with Office 2003 (SP2), IE7, WMP 11, Symantec Client Security, Adobe acrobat reader, Firefox, Thunderbird, Pidgin and Palm Desktop in addition to the necessary drivers in under 4GB of an 8GB CF card on a ThinkPad X40.

useful links