超格安CF-IDE変換アダプタの製作、CF-IDE変換アダプタの活用Tips

Last-modified: 2011-12-31 (土) 03:44:34

(2011-12-31追記)どういう環境でという話は抜きにした大雑把な話で、しかも確証がとれた話でもないのですが、もし少し古めのPCで変換アダプタ経由でCFを認識しないということが起きた場合、一度CFのパーティションテーブルのパラメータの確認をお薦めします。私がお薦めするその方法は、LinuxにUSB接続カードリーダ経由でCFを接続し、fdiskコマンドを使うという方法です。「# fdisk -l」で確認し、論理ヘッダ数255、論理シリンダ数63という最も標準的なパラメータか否かを確認して下さい。違う場合は「# fdisk -H 255 -S 63 デバイス名」でパーティションテーブルを作り直してみて下さい(要は駄目元ですがこの作業でうまくいくBIOSがあるかもしれないからやってみて確かめて欲しいなということです。この方法は組み込み系ファームウェアにはよく効く方法です)。


このページは当初「超格安CF-IDE変換アダプタの製作」だけだったところに後から「CF-IDE変換アダプタの活用」を追加しました。それぞれに最終更新があります。

 

マルチブートするなら2段階ブートに統一してMBMを使用しましょう。MBMは、WindowsがインストールするMicrosoft謹製のMBR用ブートローダやgrubのchainloader機能の上位互換となる高機能なブートローダです。

 

CFのリードオンリー運用ならこちら→ Debian Linux の OneCD(ライブDVD)化手順 ←CDやDVDだけではなくCFにも対応しています。私の自宅ルーターはこのページの手法をそのまま用いてCFをリードオンリーで運用しています。
ワンスピンドルPCへ外付け光学ドライブを使わずにLinuxをインストールするならこちら→ Linuxを、インストーラが起動したドライブにインストールする


CF-IDE変換アダプタの活用

初出 2007-8-13
最終更新 2009-5-24

購入して使用しているCF-IDE変換アダプタ

cfide_5_s.jpg
下記の自作アダプタも使用していますが、自作VPNルータ群ではSNE PCICF528を使用しています(※)。
PCIスロットに設置できます。ケースを開けなくてもCFを抜き差しできるので自宅で使うには便利だと思います。安いのも長所だと思います。PCIブラケットを外せば普通のCF-IDE変換アダプタです。IDEのソケットは3.5インチHDDに付いているものと同じです。世にはもっと(非常に)価格の高いCF-IDE変換アダプタがありますが、多分それらはボッタクリに近いと思います。この製品の価格は良心的です。

※: 千円余りで製品が購入できる中、とてもこんな手間のかかるものを2個も作れません。1個作っただけでも我ながらおバカだと思います。自分は購入していませんが、こんな商品(680円)もあります。

 

このPCICF528の結線を以下に示します。パネリーナWikiともこことも少し異なりますが、パネリーナWikiとの違いはパネリーナWikiでncとされている2箇所がGNDに接続されているだけなので実質同じではないかと思います。私はDMA対応のCFを持っていないので確認していませんが、多分DMAに対応していると思います。(2009-3-12追記)ご報告が遅れましたが、実際にDMA(UDMA)に対応していることを確認しました。

PCICF528の結線表
CFピンIDEピン(等)
1GND,2,19,22,24,26,30,40
211
39
47
55
63
737
8GND,2,19,22,24,26,30,40
9GND,2,19,22,24,26,30,40
10GND,2,19,22,24,26,30,40
11GND,2,19,22,24,26,30,40
12GND,2,19,22,24,26,30,40
13VCC
14GND,2,19,22,24,26,30,40
15GND,2,19,22,24,26,30,40
16GND,2,19,22,24,26,30,40
17GND,2,19,22,24,26,30,40
1836
1933
2035
2117
2215
2313
2432
25GND,2,19,22,24,26,30,40
26GND,2,19,22,24,26,30,40
2710
2812
2914
3016
3118
3238
33nc
3425
3523
36VCC
3731
38VCC
39Master/Slave
40nc
411
4227
4321
4429
4539
4634
474
486
498
50GND,2,19,22,24,26,30,40

CF39ピンの仕様は他の方のページを参照して下さい。

格安A-DATA CFのCF-IDE変換アダプタでの使用時のTips

所謂CFブートに関する説明です。


(2008-1-30追記) 誤解のないように補足しておきます。以下に、OSの種類によって相性問題の詳細が異なる可能性があると書いていますが、これらの問題はCFやマザーボードが規格を満たしていない場合のみに起こります。

本来、CF-IDE変換はOSの種別を考慮しなくていい類の代物です。CF-IDE変換したCFは基本的には、電気的に、プロトコル的に、本物のPATAハードディスクと区別できなくなるからです。"USB対応"とか"SATA対応"と違って基本的にCF-IDE変換を使用する際にOS側の対応は必要ありません。

 

(2008-6-15更新)以下に記述したように「CF-IDE変換における相性問題」には様々な原因がありますが、「(PATA用の)CF-IDE変換アダプタ」が原因になることはまずありません。これは当然です。PATAのCF-IDE変換アダプタ以外のメモリカード-HDD変換アダプタ(CF-SATA変換アダプタとかSDカード-IDE変換アダプタとかSDカード-SATA変換アダプタなど)はアダプタ内部に変換チップを含んでいますが、CFカード内部にPATA-HDD互換機能があるので、PATA用のCF-IDE変換アダプタ内に変換チップはなく、ただ結線するだけの役割です。アダプタ価格がいくら安かろうと、高い商品と結線が同じであればまず特性に違いはありません。PATAのCF-IDE変換は他の種類のメモリカード-HDD変換とは明らかに区別して扱う必要があります。

 

それと、

どのOS(Windows, Linux, FreeBSD, Solaris その他)であっても、本物のハードディスクを扱う限り、相性問題は発生しません。
ということは、
CF(+変換アダプタ)が本物のハードディスクと同じ機能を持てば、相性問題は自然に消滅するわけです。

 

「CF(+変換アダプタ)が本物のPATAハードディスクと同じ機能を持つ」為の
(現時点での)具体的な十分条件をを挙げてみます。

 

この2条件

  • CF-IDE変換アダプタがDMAに対応している
  • CFがDMAに対応している

を満たすことあたりが妥当だと言えると思います。

どのOSもDMAと名の付くモードであれば問題なく取り扱えるからです。
上の2条件を満たせばまず余裕を持って相性問題から開放されるでしょう。OSの種類を考慮する必要もなくなります。

 

これからCF-IDE変換アダプタで使うCFを求めるなら出来る限りDMA(予算が許せばUDMA)対応のものにすべきでしょう。最近のUDMA33対応のCFなら、ほぼハードディスクと同じ機能を持っていると言えるのではないでしょうか。(2009-4-15追記)もう今はどのCFを買ってもUDMA対応してるのかも? 年初に買った格安のSilicon PowerのCFでもUDMA対応していましたよ。(スペックの上だけじゃなくて実際に確認しましたよ。)

 

Windowsの場合は「相性問題」とは別に「リムーバルディスク(として認識される)問題」があります。これはWindowsならではのお節介な仕様に起因するものなので、他のOSで同様なことはない筈です。他のOSには正真正銘の本物のハードディスクとそれ以外で取扱仕様を変えるといった親切心はないので、他のOSをインストールする場合は「自分は本物のハードディスクを使っているるんだ」と思っておけばいいと思います。Windows以外のOSにとってIDE接続のCFはハードディスクです(HDDの一種として取り扱われます)。CFはハードディスクの簡易版だと考えておけばいいと思います。SSDの簡易版みたいなものとも言えます。

 

(2009-5-24追記)もう二つ、CFの取扱に関するかなりマイナーな注意点を挙げます。多分ものすごく古いマザーボードだけの問題です。この二つは密接に関連し合っています。1)CFは本物のハードディスクのサブセットのようなものでハードディスクとは少し違うのでマザーボードによってはBIOSの自動認識がうまくいかなくて手動でCHSパラメータを指定する必要が生じる場合があります2)またCFはSSDのサブセットみたいな立場でもあり、こちらに書いた問題はCFにもあてはまります。こちらに書いた内容に従ってHSパラメータをSSD(CF)向きの値(つまり本物ののハードディスクを使う場合の標準とは違う値)にカスタマイズした場合、BIOSがそのCHSパラメータを自動認識しない場合があります。くどいですがHSの値としてハードディスク用の標準値を用いた場合には正しくCFのCHSパラメータを認識するBIOSであっても起こりえるということです。その場合も手動でBIOSの設定画面でCHSパラメータを指定する必要があります

 

今後PATAハードディスクの入手が困難になると思われる為、古いPCのハードディスクを「CF変換アダプタ+CF」に交換するケースが増えると思います。


相性問題
※(2009-5-24追記)現在販売されているCFと変換アダプタを用いれば、以下のような問題に遭遇するケースはまずないと思います。(現在販売されているCFとはUDMA対応のCFを指します現在販売されている変換アダプタとはCF43PinとIDE21PinおよびCF44PinとIDE29Pinとが接続されているDMA対応アダプタを指します。)

 

CF-IDE変換アダプタでのCF利用は相性問題があるとよくいわれます。この原因を、一部推定も含んでいますが簡単に説明および考察してみます。

 

CFをCF-IDE変換アダプタで運用するということはCFのIDEエミュレーション機能を利用するということです。IDEは長期に渡って発展してきたのでマザーボードとHDDの間の転送モードが多くあります。しかし殆どのCFのIDEエミュレーション機能はかなり前の転送モードしかサポートしていません(※)。マザーボードにCF-IDE変換アダプタを付けるということはマザーボードに通常ならもう対応しなくてもいいような(?)古いモードでHDD(CF)とのやりとりを強いることと同じなわけです。

 

それら古いモードへのきちんとした対応をマザーボードがちょっと省略してしまっていると当然問題が生じます。CF側が、対応しているとマザーボードやOSに通知したモードを実際には不完全にしか満たしていない場合にも問題が生じます。またCF側のマザーボードを介してのやOS側への対応モードの通知が正しく規格を満たしていなくて、OS側の実装次第で選択する転送モードの決定が揺れてしまうこともあると思います。もちろんOS自体のバグという可能性もあります。これらのどれが問題の原因なのかを判定することは見た目ではなかなか難しいと思います。3つめと4つめはBIOSはモードを正しく認識するものも、OSが誤認識する場合の主な要因だと思います。(この節は推定を含んでいます。)

 

同じマザーボードでも使用するCFによって問題が生じたりしなかったりします。あるマザーボードで問題が発生するCFを別のマザーボードで使用すると何も問題が生じなかったりします。

 

ただ殆どの場合において問題は、マザーボードを介してOSとCFがネゴシエーションをおこない、出来る限り最速の転送モードを用いようとするから生じるのであって、他の(もっと遅い)モードに変更することができれば問題の発生を回避できることもあります(※)。とりあえず私はLinuxでしか試していませんが、転送モードを明示的に指定してやることで当初は相性問題の発生した格安なA-DATAのCFでの運用をなんとかおこなえていますので、そのやり方を次に紹介します。

※: 不具合が発生する場合でもブート初期までは正常動作するのは、そこまでは最遅の(安全な)モードが用いられているからです。

LinuxでのCF-IDE相性問題(暫定)解消方法

※(2009-5-24追記)現在販売されているCFと変換アダプタを用いれば、以下のような対応が必要となる場合はまずないと思います。

 

当該環境はインストールは別のHDDでおこなったものを1GバイトのA-DATAのCFにコンバートしたものです。
不具合の状態はLinux OSのブート時、イニシャルラムディスク(initrd)内の処理が済んだ直後にOSが無限Wait状態に陥るというものでした。ルートパーティションののmountには成功するが、/sbin/initを読もうとすると無限Wait状態に陥っているように見えました。

 

カーネル引数にide=nodmaを指定しても効き目はありません。どうも正しくないPIOのモードが選択されて不具合が生じているようでした。これに対処するカーネルオプションはないのでinitrd内でhdparmを使うしかありません。使うとうまくいきました。以下は具体的な手順です。もちろん母艦上で作業します。
(あくまで1例です。A-DATAのCFにもいろいろあるでしょうし...)

# cd ${mountpoint}/boot
# mkdir work
# cd work
# gzip -dc ../initrd-hoge-fuga | cpio -idmv
# cp -p ../../sbin/hdparm bin
# vi init
# ・・・・・
# 最後の行より前に↓このような1行を追加する
# hdparm -p2 /dev/hda
# 上書き保存する
# ・・・・・
# find | cpio -H newc -o | gzip -9 > ../initrd-hoge-fuga
  • この例でのhdparmのオプション-p2はBIOSが認識したこのCFの対応転送モード「Fast PIO 2」に合致しています。この例ではこれでうまくいきましたが、いつもBIOSの認識が正しいとは限らないかもしれません。
  • もちろん/dev/hdaは適宜変更して下さい。これらhdparmのオプションをブートローダで指定できるようにinitスクリプトを修正してもいいかと思います。
  • hdparmコマンドがdynamicで且つ元々のinitrd内に必要ライブラリがない場合はライブラリもコピーする必要があります。
  • 念のためブート後にも同じくhdparm ????を実行した方がいいでしょう。
  • 問題が生じる環境ではhdparm実行前に当該CFのルートパーティションの読み書きをおこなうと無限Waitしてしまいます。このページのパッチを適用するとinitrd内でもルートパーティションの読み書きをおこないます。この場合はhdparmを記述する行を最初に読み書きを実行する行よりも前にする必要があります。最後の行の直前では遅すぎます。
     
    こんな感じでLinuxのようにカスタマイズしやすいOSの場合は相性問題に見舞われても「なんとかなる」という感じですが、Windows等の場合には克服し難い場合もあると思います。
     
    上記の対応はインストーラをカスタマイズでもしない限り、Linuxインストール時にはとれません。対応なしでのインストールが可能なのか、試しにDebianを本来不具合の発生する環境で普通にインストールしてみました。以外に最後の直前まで正常にインストールがおこなえました。エラーが生じた後、母艦上でapt-get -f install、grubのインストール、rootパスワード設定、一般ユーザの作成をおこなうだけで本来のインストールの全て(多分)が完了しました。さらに上記の対応を施した後、OSを起動して確認してみましたが、全く異常は見つけられませんでした。でもこのようなインストールはお薦めしません。インストール時は普通のHDDを用い、インストール後にCFにコンバートする方が楽だし安心だと思います。

超格安CF-IDE変換アダプタの製作

初出 2006-8-18
最終更新 2009-5-24
作業時期 2006-2
cfide_1_s.jpg
CF-IDE変換アダプタの自作を紹介するサイトはいろいろありますが、多分、本ページのものが一番安く製作出来ているだろうと思います。
とはいっても製作時間がそれなりにかかるので、”自作好き”な人以外には薦められません。
 


cfide_2_s.jpg
安くできる理由は材料費が安いからです。基本となる材料は左のIDEハードディスクからサルベージしたコネクタ、右のCFカードアダプタです。

 

cfide_3_s.jpg
表の板をニッパーでひっぺがしました。

 

cfide_4_s.jpg
IDEのコネクタとCFアダプタとを接続する為に基板を使うことにしました。
エッチング用基板にカッターで溝を掘りました。雑な工作ですが用途には十分です。

 

結線に関しては基本的にはここに従いました。つまりDMAには非対応です。
一点だけ違いがありCF33PinはGroundにしてあります。

 

(2009-5-24追記)現在の状況
このほど改造してDMAに対応させました。改造内容はCF43PinとIDE21PinおよびCF44PinとIDE29Pinとを接いだだけです。もうこれでDMA非対応のアダプタを使った場合の検証は出来なくなりました。もう市場にDMA非対応のCFは殆ど出回ってないでしょうからこれでいいと思います。
cfide_7_s.jpg

(2008-9-12追記)現在の状況
現在といっても2年前から全く変更はありません。半田付け部が剥き出しのままでは実用できませんから保護しています。
cfide_6_s.jpg

 


PATAの別の言い方:IDE, E-IDE, EIDE, P-ATA, パラレルATA

 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)

  • はじめまして。HDの代わりにCFカードを使う方法ですが、SDカードの方が割安なのですが、なぜCFなのでしょうか? -- ゆぞう? 2008-12-19 (金) 13:51:55
  • 私の文が追記ばかりで見通しが極端に悪くなって、かなり読みづらい状態になってると思います。一応質問の答えは本文中にあります。が、以下にあらためて抜き出します。各種メモリカードの中でCFだけは特別です。CFはCF自身の中にPATAハードディスク(現在主流のSATAの前に標準として使われていた規格なので今では対応していないPCもある)の互換機能を持っていて、変換チップを必要とせず、単純に結線するだけのアダプタを介するだけでハードディスクの代りに使えるのです。CF-IDEアダプタの中には変換チップが入っていません。CFのピンとHDDのピンをつなぐだけの物です。SDをハードディスクの代りに使えるようにする変換アダプタもありますが、それは中に変換チップ(LSI)を含んでいます。 -- disklessfun? 2008-12-20 (土) 13:26:13
  • ご教示、ありがとうございました (^^) 。 -- ゆぞう? 2008-12-30 (火) 02:39:17
  • 文中,「再遅」とありますが,「最遅」の誤りではないでしょうか。 -- へそまる? 2009-02-22 (日) 07:04:05
  • ご指摘ありがとうございます。訂正致しました。 -- disklessfun? 2009-02-23 (月) 02:02:48
  • このページにSATA to IDE 兼 IDE to SATA 変換アダプタの使用例があります。 -- disklessfun? 2009-04-12 (日) 01:58:20
  • 先日sdカードのide変換基盤を購入しました(「ヘンカンジャー」)と呼ばれているものです。VIAのNano-itxに導入しようとしたのですが,アクセスランプは付くものの,マザーボードのBIOS画面にすらいきません。相性の問題なのでしょうか?ご示唆いただけると幸いです。 -- 格闘SDD化? 2009-11-11 (水) 10:41:50