|
|
ハードウェアとドライバ No. 461 DMA転送の有効/無効を切り替える
【解説】
Direct Memory Access (DMA) とは、CPUを介さずに入出力装置とメモリ間でデータを
直接やりとりする方式のことをいいます。ATAPI接続のDVDドライブを使用した動画再生
など、大量のデータ転送が要求される場合に威力を発揮します。
しかしながら、一部のデバイスにおいてDMAを有効にした場合にマウントできないなどの
問題が発生する場合があります。その場合は、DMA の設定を無効にすることにより
回避することができます。
【設定】
A.atapidmaを使用する方法
atapidmaパッケージには、CD-ROMデバイスのDMA設定を自動的に行うためのプログラムが
収録されています。atapidmaサービスを有効にした場合、起動時に接続されていたデバ
イスのDMA設定が有効になります。
- CD-ROMデバイスのDMA転送を有効にする
# service atapidma start
- CD-ROMデバイスのDMA転送を無効にする
# service atapidma stop
B. hdparmコマンドを使用する方法
rootユーザはhdparmコマンドを使用することにより設定が可能です。
# hdparm -d1 デバイスファイル名
実行例)
- /dev/hdaのDMA転送を有効にする
# hdparm -d1 /dev/hda
- /dev/hdaのDMA転送を無効にする
# hdparm -d0 /dev/hda
なお、現在の設定を確認するには、次のように実行します。
# hdparm デバイスファイル名 | grep using_dma
例)
# hdparm /dev/hda | grep using_dma
using_dma = 1 (on)
C. カーネルのブートパラメタで指定する方法
DMAの設定がシステムの起動に支障を来す場合は、カーネルのDMA機能を無効にします。
DMA を無効にするブートパラメータは以下の通りです。
ide=nodma
このブートパラメータを起動時に指定してください。
ブートローダにliloを使用している場合は、以下の様になります。
例:(LILOの起動名がlinuxの場合)
LILO: linux ide=nodma
起動の度に入力するのが面倒な場合には、lilo.confファイルにappend行を追加します。
例:
[/etc/lilo.conf]
-------------------------------
...
image=/boot/vmlinuz
label=linux
read-only
root=/dev/hda3
append="ide=nodma" <- 追加
-------------------------------
lilo.conf設定後は`lilo`コマンドを実行し、設定を反映させてください。
DMA 関連文書
Last modified : Mon Dec 27 JST 2004 # 2
|
Copyright © Turbolinux, Inc..All Right Reserved.

