「Hwdetect」の版間の差分
表示
削除された内容 追加された内容
編集の要約なし |
→使い方: リンクを更新 |
||
| (同じ利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
[[Category:ハードウェア検出とトラブルシューティング]] |
[[Category:ハードウェア検出とトラブルシューティング]] |
||
[[en:Hwdetect]] |
[[en:Hwdetect]] |
||
[https://github.com/archlinux/svntogit-packages/blob/packages/hwdetect/trunk/hwdetect hwdetect] はハードウェア検出スクリプトで、主に [[mkinitcpio.conf]] で使用するモジュールのロードやリストに使用されます。そのため、ハードウェアを駆動するためにどのカーネルモジュールが必要かをユーザーに知らせます。これは他の多くのツールとは対照的で、ハードウェアにクエリを発行し、生の情報を表示するだけで、その情報を必要なドライバに関連付ける作業をユーザーに任せます。このスクリプトは、Linux カーネルで採用されている [[Wikipedia:Sysfs|sysfs]] サブシステムによってエクスポートされた情報を利用します。 |
|||
[[tr:hwdetect]] |
|||
[https://projects.archlinux.org/svntogit/packages.git/tree/hwdetect/trunk/hwdetect hwdetect] は [[rc.conf]] や [[mkinitcpio|mkinitcpio.conf]] で使用するモジュールをロード・確認するためのハードウェア検出スクリプトです。Linux カーネルによって使われている [[Wikipedia:Sysfs|sysfs]] サブシステムの情報を利用します。 |
|||
== インストール == |
== インストール == |
||
| 8行目: | 7行目: | ||
[[公式リポジトリ]]から {{Pkg|hwdetect}} パッケージをインストールしてください。 |
[[公式リポジトリ]]から {{Pkg|hwdetect}} パッケージをインストールしてください。 |
||
==使 |
== 使い方 == |
||
最新の使用方法は [https:// |
最新の使用方法は [https://github.com/archlinux/svntogit-packages/blob/packages/hwdetect/trunk/hwdetect hwdetect ソース] や {{ic|hwdetect --help}} を実行することで確認できます。 |
||
== サンプル == |
== サンプル == |
||
以下の方法で [[rc.conf]] の {{Ic|MOD_AUTOLOAD}} を無効化できます。モジュールを探す手間が省けるので、起動時間が短縮されます。 |
|||
次のメソッドを使用して、[[mkinitcpio.conf]] に {{Ic|MODULES}} を設定できます。 |
|||
# hwdetect --modules |
# hwdetect --modules |
||
コマンドを実行すると以下のように出力されます (もちろん出力はシステムによって変わります): |
コマンドを実行すると以下のように出力されます (もちろん出力はシステムによって変わります): |
||
MODULES=(ac battery button processor thermal video cdrom ....) |
|||
SOUND : pcspkr |
|||
上記の出力をコピーして {{ic|/etc/rc.conf}} の {{ic|MODULES}} セクションを置き換えて {{Ic|MOD_AUTOLOAD}} を "yes" から "no" に変更してください。それで自動ロードがスキップされて起動が高速になります。 |
|||
OTHER : 8139cp 8139too ac |
|||
使用するものに応じて、モジュール名をコピーして、{{ic|/etc/mkinitcpio.conf}} の {{ic|MODULES}} セクションを置き換えます。ハードウェアの検出とモジュールの依存関係の計算の一部またはすべてがすでに記載されているため、システムはより速く起動するはずです。 |
|||
{{Note|If any of the module names change (unlikely) or you install new hardware on your computer, you will need to generate the list of modules again and update {{ic|MODULES}}.}} |
|||
{{Note| |
|||
| ⚫ | |||
* このツールには、{{ic|/etc/mkinitcpio.conf}} 内で使用するための専用の出力があります。 |
|||
| ⚫ | |||
* 新しいカーネルに新しいモジュールが追加された、またはコンピュータに新しいハードウェアをインストールしたためにモジュール名が変更された場合は、モジュールのリストを再度生成し、{{ic|MODULES}} を更新する必要があります。 |
|||
# hwdetect --modules-not-loaded |
|||
もしくは以下のスクリプトを使用: |
|||
{{hc|modules-not-loaded|<nowiki> |
|||
eval $(hwdetect --modules) |
|||
for m in ${MODULES[*]}; do |
|||
| ⚫ | |||
echo $m; |
|||
| ⚫ | |||
done</nowiki> |
|||
}} |
}} |
||
| ⚫ | |||
=== 未使用のモジュール === |
|||
| ⚫ | |||
#!/bin/bash |
|||
modules=($(awk '{print $1}' /proc/modules)) |
|||
for hw in $(hwdetect --show-modules | awk -F: '{gsub("-","_"); print $2}'); do |
|||
| ⚫ | |||
printf '%s\n' "$hw"; |
|||
| ⚫ | |||
done |
|||
=== 上位レベルのモジュール === |
|||
その逆のスクリプトも、特定のハードウェアとの関連性が低いという意味で、より高レベルのモジュールをリストアップしていて興味深いです: |
|||
#!/bin/bash |
|||
lowlevel=($(hwdetect --show-modules | awk -F: '{gsub("-","_"); print $2}')) |
|||
for mod in $(awk '{print $1}' /proc/modules); do |
|||
if ! grep -q "$mod" <(printf '%s\n' "${lowlevel[@]}"); then |
|||
printf '%s\n' "$mod"; |
|||
fi |
|||
done |
|||
== 参照 == |
|||
* [[wikipedia:Lspci|lspci, and other hardware detection related tools]] |
|||
2023年12月28日 (木) 20:26時点における最新版
hwdetect はハードウェア検出スクリプトで、主に mkinitcpio.conf で使用するモジュールのロードやリストに使用されます。そのため、ハードウェアを駆動するためにどのカーネルモジュールが必要かをユーザーに知らせます。これは他の多くのツールとは対照的で、ハードウェアにクエリを発行し、生の情報を表示するだけで、その情報を必要なドライバに関連付ける作業をユーザーに任せます。このスクリプトは、Linux カーネルで採用されている sysfs サブシステムによってエクスポートされた情報を利用します。
インストール
公式リポジトリから hwdetect パッケージをインストールしてください。
使い方
最新の使用方法は hwdetect ソース や hwdetect --help を実行することで確認できます。
サンプル
次のメソッドを使用して、mkinitcpio.conf に MODULES を設定できます。
# hwdetect --modules
コマンドを実行すると以下のように出力されます (もちろん出力はシステムによって変わります):
SOUND : pcspkr OTHER : 8139cp 8139too ac
使用するものに応じて、モジュール名をコピーして、/etc/mkinitcpio.conf の MODULES セクションを置き換えます。ハードウェアの検出とモジュールの依存関係の計算の一部またはすべてがすでに記載されているため、システムはより速く起動するはずです。
ノート
- このツールには、
/etc/mkinitcpio.conf内で使用するための専用の出力があります。 - 新しいカーネルに新しいモジュールが追加された、またはコンピュータに新しいハードウェアをインストールしたためにモジュール名が変更された場合は、モジュールのリストを再度生成し、
MODULESを更新する必要があります。
ヒントとテクニック
未使用のモジュール
現在使用されていないモジュールのリストを生成するには、次のスクリプトを使用します:
#!/bin/bash
modules=($(awk '{print $1}' /proc/modules))
for hw in $(hwdetect --show-modules | awk -F: '{gsub("-","_"); print $2}'); do
if ! grep -q "$hw" <(printf '%s\n' "${modules[@]}"); then
printf '%s\n' "$hw";
fi
done
上位レベルのモジュール
その逆のスクリプトも、特定のハードウェアとの関連性が低いという意味で、より高レベルのモジュールをリストアップしていて興味深いです:
#!/bin/bash
lowlevel=($(hwdetect --show-modules | awk -F: '{gsub("-","_"); print $2}'))
for mod in $(awk '{print $1}' /proc/modules); do
if ! grep -q "$mod" <(printf '%s\n' "${lowlevel[@]}"); then
printf '%s\n' "$mod";
fi
done