CompactFlash boot drive
Changing your HDD for a CF boot drive (CompactFlash card on CF-PATA/SATA adapter) is an alternative to using SSD to boost the performance.
Previously, using CompactFlash cards meant giving up on storage capacity. Nowadays the biggest available CF sizes are up to 100 GB so you even gain more storage space compared to a classic 1.8" HDD.
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. Active Protection System is therefore unnecessary)
- Does not generate any noise or vibrations
- (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
What you need
- A passive CF to PATA/SATA adapter
- Sadly, the X30's native CF slot does not appear to be bootable, so you're stuck using an adapter in the PATA drive sled like everyone else.
- 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
CF to PATA adapter
CF to PATA (IDE)
These adapters will work with both ThinkPads with 1.8" and 2.5" HDD slot with PATA interface
While many CF cards claim to have high throughput, it's not necessarily a good indicator. As the claimed throughput is usually only attainable in specific situations (usually sequential and large block operations). But in typical usage as a boot drive, it usually involves lots of random and small block operations.
Therefore, the actual performance figures can only be found out via real world benchmarks.
Below is a list of some of the cards reported to be working, it's by no mean authoritative and final.
These cards are known to identify themselves as fixed disk via CF-IDE adapters without any manual intervention, and is of good value, and speed (for 266X/300X).
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
SanDisk Ultra II 4 GB
This card doesn't work with the Debian stable 2.6.26 kernel in a X41 tablet with SATA controller, it seems to be to slow.
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.
Silicon Power 300X
to be updated
Works fine, read performance up to 43mbit/s acording to hdparm
Storage capacity issues
Due to the limited capacity for high speed CF cards, the space may not be enough for some users. As a typical OS may already consume 3-4GB already. Here are some suggestions on how to work around it. Each of the below suggestion has its pros and cons, and should be selected on a case-to-case basis.
- Put only the OS and frequently accessed files on the main CF card
- (If dual-CF is possible) Add a second CF card, which will show up as an additional drive. Moreover since the speed needs not be as fast as the main CF card, a slower card with larger capacity could be desirable.
- On certain ThinkPads, there is an internal card reader (e.g. CF on X20/X30, and SD/SDHC on X40/X41/X60/X61) which can house another flash card. However, the speed is certainly to be worse than connecting to the PATA/SATA interface.
- Use a PC Card/ExpressCard SSD drive. However, the price of SSD is likely to be more expensive than flash cards.
- Use a PC Card/ExpressCard flash reader to house another flash card.
- Use a USB drive. Take mind that the drive will stick out, which is less desirable as a permanent solution (appearance/damage/speed especially if USB 2.0 is not supported)
- (If network access is readily available) Store the files on a network drive (e.g. server disk/NAS)
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  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.
- 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
- Instead of throwing together all kind of tweaks here, it's probably better to keep the tweaks be CF boot-specific... And link to another page showing the more generic tweaks... ***
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.