[JM:03865] Re: [POST:RO] modprobe.d.5 (kmod 29 man5 man8)

Back to archive index
長南洋一 cyoic****@maple*****
2022年 9月 2日 (金) 20:22:24 JST


長南です。

メーリングリストがやっと復活したようですね。
チェックしたものが溜まっているので、取りあえず一件、出してしまいます。
結局、kmod は全部チェックしました。

後半です。

・ install modulename command...
    This command instructs modprobe to run your command instead of
    inserting the module in the kernel as normal. The command can be
    any shell command: this allows you to do any kind of complex
    processing you might wish. For example, if the module "fred" works
    better with the module "barney" already installed (but it doesn't
    depend on it, so modprobe won't automatically load it), you could
    say "install fred /sbin/modprobe barney; /sbin/modprobe
    --ignore-install fred", which would do what you wanted. Note the
    --ignore-install, which stops the second modprobe from running the
    same install command again. See also remove below.

  [今回の訳]
    このコマンドは modprobe に対して、 カーネルに対して普通にモジュール
    を登録するのではなく、 指定したコマンドの実行を指示するものです。
    コマンドにはシェルコマンドが指定できます。 これによって、 どのよう
    な複雑な処理であっても、 必要であれば実現することができます。 たと
    えば、 "fred" というモジュールが、 すでにインストール済みの
    "barney" というモジュールを使って適切に動作するとします (ただし依存
    関係にはないことから、 modprobe は自動的にはロードしないものとしま
    す)。 その場合には、 "install fred /sbin/modprobe barney;
    /sbin/modprobe --ignore-install fred" を実行します。 こうすれば適切
    に実現されます。 なお、 ここにある --ignore-install は、 2 つめの
    modprobe コマンドが、 同じ install コマンドを再度実行することがない
    ようにしています。 以下の remove も参照してください。

  訳文は、全体として「当たらずと言えど遠からず」と言えないこともありませんが、
  それは、かなりズレているということでもあります。"The command can be any
  shell command" が、「コマンドにはシェルコマンドが指定できます」になって
  いますが、"any" はどこに行ってしまったのでしょう。"this allows you to do
  any kind of complex processing you might wish." の訳が、「これによって、
  どのような複雑な処理であっても、必要であれば実現することができます」ですが、
  "you might wish" と「必要であれば」は、意味がかなり違います。
  'if the module "fred" works better with the module "barney"
  already installed' の "with" 以下は、いわゆる付帯状況の "with" です。
  「すでにインストール済みの "barney" というモジュールを使って適切に動作する」
  ではありません。"works better" も、「適切に動作する」と言うよりは、「より
  効果的に、より効率的に、より有能に、より高機能で動作する」といったところでしょう。
  "you could say" は、ここでは、設定ファイルに書き込むことですから、
  「実行する」になるはずがありません。"which would do what you wanted."
  の訳文、「こうすれば適切に実現されます」も、"what you want" が勘所なのに、
  それが抜けています。また、ここの "Note the --ignore-install" の "Note" は、
  「注目せよ」と、注意を喚起しているのです。「なお、ちなみに」と補足情報を述べて
  いるのではなく。
  
  こういう指摘を続けてもキリがないので、試訳を挙げて済まします。

  [試訳]
    このコマンドは、modprobe に対して、いつもどおりカーネルにモジュール
    を組み込む代わりに、 指定されたコマンドを実行するように指示します。
    指定するコマンドには任意のシェルコマンドが使えるので、 どのような
    複雑な処理を望もうと、それを実行することができます。 たとえば、
    モジュール "fred" は、モジュール "barney" がすでにインストール
    されているときの方が、うまく動作するとします (しかし、前者は後者に
    依存しているわけではないので、modprobe は後者を自動的にロードしよう
    とはしません)。そういう場合は、"install fred /sbin/modprobe barney;
    /sbin/modprobe --ignore-install fred" と、設定ファイルに書いておけ
    ばよいのです。そうすれば、 希望する動作が行われることになります。
    --ignore-install に注意してください。これは、二番目の modprobe
    が、ほかならぬこの install コマンドを繰り返し実行しないようにしてい
    るのです。 以下の remove の項も参照してください。

  "to run your command" や "you might wish" を「あなた」なしで
  訳してみましたが、この場合は、「あなた」を出した方が、訳しやすく、
  分かりやすいかもしれません。日本語では一般にあまり二人称を使わない
  ものですが、こだわりすぎないほうがよいと思っています。

・ install コマンドの二番目の段落
    The long term future of this command as a solution to the problem
    of providing additional module dependencies is not assured and it
    is intended to replace this command with a warning about its
    eventual removal or deprecation at some point in a future release.
    Its use complicates the automated determination of module
    dependencies by distribution utilities, such as mkinitrd (because
    these now need to somehow interpret what the install commands might
    be doing. In a perfect world, modules would provide all dependency
    information without the use of this command and work is underway to
    implement soft dependency support within the Linux kernel.

  この原文には、"(because ..." に対する閉じカッコがありません。

  [今回の訳]
      モジュール追加によって依存関係を維持する対処として、 このコマンド
      が、 今後も長期的にその解決策となる保証はありません。 このコマンド
      は、 将来のリリースのある時点において、 最終的には削除か非推奨とし
      て、 警告する形に置き換わる予定です。 このコマンドを利用すると、
      mkinitrd などのような配布ユーティリティーが行っているモジュール依存
      関係の自動検出の処理が複雑になります (なぜなら、 install コマンドが
      行っている処理内容を、 ある程度解釈しておかなければならないためで
      す)。 理想的には、 本コマンドを用いずに、 モジュールが依存関係をす
      べて提供するようになるはずであり、 Linux カーネル内部において、 ソ
      フトな依存関係を実装する作業が、 現在進行中です。

  のっけから、意味不明の訳です。「モジュール追加によって依存関係を維持する」
  というのは、どういうことなんでしょう。対応する原文は、"providing additional
  module dependencies" らしいのですが。

  ここは、試訳を挙げるだけで済ませます。かなり分かりにくい内容なので、
  私としても自信があるわけではありません。とくに、"it is intended to
  replace this command with a warning about its eventual removal
  or deprecation at some point in a future release." の部分は、
  原文が辻褄の合わないことを言っている気がします。なぜなら、警告を出すと
  いうことは、install コマンドがまだ残っていて、使えるということでしょう。
  「置き換わる」ことにはならないのではありませんか。いや、install の
  代わりになる別の仕組みを用意して、install コマンドについては、警告の表示に
  置き換えるということかもしれません (「今のところ、まだ install コマンドが
  使えますが、実際に働いているのは soft dependency です。そのうち、
  install コマンドは使えなくなります」といった具合に)。それなら、
  一応辻褄が合うかもしれません。

  それから、"soft dependency" も、どういうことなのか分かりません。それで、
  訳語も自信を持って決められないわけです。一応「柔軟な依存関係」としておきました。

  [試訳]
    このコマンドは、モジュールに補助的な依存関係を提供するという課題に対する
    一つの解決策ですが、長期的に見て、将来もそうである保証はありません。
    それどころか、このコマンドは、将来のリリースのある時点で、いずれ
    廃棄されるだろうとか、非推奨であるとかの警告に置き換えることが予定されて
    います。このコマンドを使用すると、mkinitrd のようなディストリビューション
    固有のユーティリティが、モジュールの依存関係を自動的に判断しようとするとき、
    その作業が複雑になるのです (なぜなら、現状では、そうしたユーティリティは、
    install コマンドがやっていそうなことを、何らかの方法で解読しなければ
    ならないからです)。完璧な世界でなら、このコマンドを使わないでも、モジュールは、
    依存関係の情報を漏れなく提供することでしょう。実際、柔軟な依存関係のサポートを
    Linux カーネルの内部で実装しようとする作業が、現在進行しています。

・ install コマンドの三番目の段落:
    If you use the string "$CMDLINE_OPTS" in the command, it will be
    replaced by any options specified on the modprobe command line.
    This can be useful because users expect "modprobe fred opt=1" to
    pass the "opt=1" arg to the module, even if there's an install
    command in the configuration file. So our above example becomes
    "install fred /sbin/modprobe barney; /sbin/modprobe
    --ignore-install fred $CMDLINE_OPTS"

  [今回の訳]
    コマンド内に文字列 "$CMDLINE_OPTS" を用いると、 これは modprobe コ
    マンドラインに指定されたオプションに置き換えられます。 これが役に立
    つのは、 "modprobe fred opt=1" とした場合に、 モジュールに対して
    は、 "opt=1" という引数が受け渡されることが期待されるためです。 た
    とえ設定ファイル内に install コマンドがあったとしても実現できます。
    したがって先に示したコマンド例は "install fred /sbin/modprobe
    barney; /sbin/modprobe --ignore-install fred $CMDLINE_OPTS" となり
    ます。

  これも、かなり混乱した訳です。"even if ..." がどこにかかっているのか、
  分からなかったのでしょうか。それとも、分かっていたけれど、前から順番に
  訳すという訳し方をしようとして、日本語が混乱してしまったのでしょうか。

  それから、あちこちで見たような気がするのですが、「は」という係助詞を
  使いすぎています。「モジュールに対して "opt=1" という引数が受け渡される」
  で十分でしょう (「受け渡される」も「渡される」で十分)。「モジュールに
  対しては」と言うと、「モジュールに対してはこうだが、他のものに対しては
  こうだ」といった必要のないニュアンスが出てしまいます。

  [試訳]
    このコマンド中で、"$CMDLINE_OPTS" という文字列を使用すると、コマン
    ドラインで modprobe にオプションを指定した場合に (訳注: ここで言う
    オプションは、alias コマンドの訳注でも述べましたが、modprobe(8) の
    「書式」で module parameter と言われているもののようです)、そのオプ
    ションが "$CMDLINE_OPTS" に置き換わります。この動作は重宝なことがあ
    ります。なぜなら、ユーザとしては、 "modprobe fred opt=1" とコマンド
    ライン上で指定したら、 設定ファイル中に install コマンドが存在する
    場合でも、モジュールに "opt=1" という引数が渡ってほしいと思うからで
    す。そこで、上記の例でこれを使うと、 "install fred /sbin/modprobe
    barney; /sbin/modprobe --ignore-install fred $CMDLINE_OPTS" になり
    ます。

  "This can be useful" の "This" を「この動作」と訳しましたが、
  「この変数」と取ることもできます。その方がよいかもしれません。

  "any options specified on the modprobe command line" の
  "options" は、'users expect "modprobe fred opt=1" to pass
  the "opt=1" arg to the module' と言っていますから、モジュール
  オプション (モジュールパラメータ) のことだろうと思っていました。
  しかし、実際に試してみたところでは、modprobe は、元々、-v, -c,
  -show-depends といったオプションを modulename の後ろに指定することが
  できます。install コマンドを使用している場合も同様で、コマンドラインから
  "modprobe modulename -c" などと指定できますし、この "-c" は問題なく、
  $CMDLINE_OPTS に置き換わります。ですから、この "options" は、コマンドオ
  プションとモジュールオプションの両方に取ることもできるわけです。
  まあ、、$CMDLINE_OPTS に置き換わるのは、modprobe のコマンドラインで
  modulename の後ろに指定する引数ですから、モジュールオプションを想定して
  いるのでしょうけれど。
  
  それにしても、このマニュアルは、「オプション」という言葉の使い方がぞんざいだ
  と思います。modprobe コマンドのオプションと、モジュールオプションをきちんと
  区別して表記すればよいのに。私としては、説明が若干不十分でも、上の訳のように、
  訳注を入れないと落ち着きません。

・ options modulename option...
    This command allows you to add options to the module modulename
    (which might be an alias) every time it is inserted into the
    kernel: whether directly (using modprobe modulename) or because the
    module being inserted depends on this module.

    All options are added together: they can come from an option for
    the module itself, for an alias, and on the command line.

  [今回の訳]
    このコマンドは、 モジュール modulename (エイリアスを含む) がカーネ
    ルに登録される際に、 その都度追加するオプションを指定します。 その
    場合は、 (modprobe  modulename を使って) 直接指定する場合と、 その
    モジュールに依存したモジュールが登録される場合があります。

    オプションは、 すべてまとめて追加されます。 つまりオプションは、 モ
    ジュール自体への指定、 エイリアスへの指定、 コマンドラインからの指
    定すべてです。

  「このコマンドは、... 追加するオプションを指定します」は、"This command
  allows you to add options to the module modulename" の要約では
  あっても、翻訳とは言えないのではないでしょうか。翻訳においては、意味、内容、
  文章の論理だけでなく、表現方法や発想、ものの見方、語彙や構文の特徴、それに
  文体や言葉の調子も、できるだけ移すべきでしょう。もちろん、「言うは易き」で、
  思うようには行かないものですが、少なくとも、そう心がけるべきだと思います。

  なお、「その場合は ...」という表現は、日本語としてかなり無理があるのでは
  ないでしょうかか。「その」というのは、何のことなんでしょう。全体として、
  言いたいことは、何となく分かりますけれど。

  [試訳]
    このコマンドを使えば、モジュール modulename (エイリアスであっても
    構いません) がカーネルに組み込まれるたびに、それにオプションを付け加える
    ことができます。組み込みは、(modprobe modulename を使って) 直接
    行われるか、組み込まれるモジュールがこのモジュールに依存しているために
    行われるかを問いません。

    すべてのオプションはまとめて付け加えられます。そうしたオプションには、
    モジュールそのものやエイリアスに対して options コマンドで指定したものも
    あれば、コマンドラインで指定したものもあるわけです。

  二番目のパラグラフの 後半がよくわかりません。"they can come from an
  option for the module itself" の "option" は、roff ソースでは
  "\fBoption\FR" になっています。太字になっていますから、語尾に "s" が
  ありませんが、options コマンドのことなんでしょう。

・ remove modulename command...
    This is similar to the install command above, except it is invoked
    when "modprobe -r" is run.

  [今回の訳]
    これは上で示した install コマンドに似ていますが、 違うところは、
    "modprobe -r" が実行されている際に呼び出される点です。

  細かいことですが、「実行されている際に」ではなく、「実行される際に」でしょう。
  状態と動作の違いです。

  [試訳]
    これは上記の install コマンドに似ていますが、"modprobe -r" が実行される
    ときに、呼び出される点が違います。

  ご参考までに、前回の翻訳を挙げておきます。except を「が」だけで済ませています。
  こういう訳も可能なんですね。

  [前回の訳]
    上の install コマンドと同様であるが、 "modprobe -r" が呼び出され
    たときに実行される。

・ softdep modulename pre: modules... post: modules...
    The softdep command allows you to specify soft, or optional, module
    dependencies.  modulename can be used without these optional
    modules installed, but usually with some features missing. For
    example, a driver for a storage HBA might require another module be
    loaded in order to use management features.

  [今回の訳]
    softdep コマンドは、 ソフトな、 つまり任意のモジュール依存関係の指
    定を行います。 modulename は、 そのような任意のモジュールがインス
    トールされていなくても、 用いることができます。 ただし普通は、 何か
    の機能が失われることがあります。 たとえば、 ストレージ HBA に対する
    ドライバーは、 管理機能を利用するために、 別のモジュールがロードさ
    れている必要があります。

  「任意の」では、イマイチ意味がわからないのではないのではないでしょうか。
  「使用・不使用が任意の」ぐらいまで言った方がよいと思います。「使用・不使用が
  自由な」「使用・不使用をユーザが選択できる」などもあるかもしれません。
  最後の文は、"might" ですから「必要がある」という断定ではなく、「あるかも
  しれない」という可能性です。

  [試訳 1]
    softdep コマンドを使うと、柔軟 (soft) な、すなわち使用・不使用が
    任意 (optional) なモジュールの依存関係を指定できます。modulename
    というモジュールは、そうした使用・不使用が任意なモジュールを
    インストールしないでも、使うことができます。しかし、たいていの場合、
    何らかの機能が使えないことになります。たとえば、ある記憶装置用 HBA
    (ホストバスアダプタ) のドライバは、管理機能を使うためには、別の
    モジュールがロードされている必要があるかもしれません。

  "optional" の訳語に「選択可能な」を思いつきました。いや、「選択が任意な」
  の方がよいか。それでやってみます。

  [試訳 2]
    softdep コマンドを使用すれば、 柔軟な、言い換えれば選択が任意な、
    モジュールの依存関係を指定できます。 modulename というモジュールは、
    そうした選択が任意なモジュールをインストールしないでも、使うことがで
    きます。 でも、たいていの場合、何らかの機能が使えないことになりま
    す。 たとえば、ある記憶装置の HBA (ホストバスアダプタ) 用のドライバ
    は、 管理機能を使うためには、別のモジュールをロードする必要があるか
    もしれません。

・ softdep の二番目のパラグラフ:
    pre-deps and post-deps modules are lists of names and/or aliases of
    other modules that modprobe will attempt to install (or remove) in
    order before and after the main module given in the modulename
    argument.

  [今回の訳]
    pre-deps モジュールと post-deps モジュールは、 modulename 引数とし
    て与えられたメインのモジュールの前後において、 modprobe がインス
    トール (または削除) しようとする別のモジュール名、 あるいはエイリア
    ス名のリストです。

  これは、訳文の罪ではなく、原文が説明不足なのですが、pre-deps や post-deps を
  そのまま使うのは、無理ではないかと思います。
  それから、"in order (順番に)" の訳が抜けています。

  [試訳]
    前依存モジュールや後依存モジュール (訳注: 上記書式の pre: や post:
    に続く modules...) は、modulename という引数によって指定されたメイン
    モジュールの前後に、modprobe が 順番に組み込み (あるいは、取り外し)
    を試みるほかのモジュールの名前やエイリアスのリストです。

・ softdep の三番目のパラグラフ:
    Example: Assume "softdep c pre: a b post: d e" is provided in the
    configuration. Running "modprobe c" is now equivalent to "modprobe
    a b c d e" without the softdep. Flags such as --use-blacklist are
    applied to all the specified modules, while module parameters only
    apply to module c.

  [今回の訳]
    例: 設定として "softdep c pre: a b post: d e" が与えられたとしま
    す。 "modprobe c" を実行するということは、 softdep がなかった場合に
    は、 "modprobe a b c d e" を実行することと同じになります。
    --use-blacklist などのフラグは、 指定されたモジュールすべてに適用さ
    れます。 一方で、 モジュールパラメーターは、 モジュール c にのみ適
    用されます。

  "without the softdep" と定冠詞が付いていますから、厳密に言うと、
  「この softdep (の設定) がなかった場合に」です。まあ、「この」の
  省略は可能でしょうが、「...なかった場合には」と「は」を付けると、
  意味がおかしくなります。 

  実を言うと、この原文には間違いがあるのではないかと思います。modprobe.8
  の manpage によれば、モジュールを組み込む (登録する) ときは、モジュールは
  一つしか指定できないようです。もし、複数のモジュールを同時に組み込みたい
  ならば、--all オプションが必要になるらしい。ですから、softdep の設定が
  ないときのコマンドは、"modprobe --all a b c d e" になるのではないで
  しょうか。試訳では、コマンドを "modprobe --all a b c d e" として
  おきました。

  [試訳]
    用例: "softdep c pre: a b post: d e" という設定がなされている
    とします。このとき、"modprobe c" を実行するのは、この softdep
    コマンドを設定せずに、"modprobe --all a b c d e" を行うのと同じこと
    です。 なお、--use-blacklist のようなフラグは、指定されたすべての
    モジュールに適用されますが、 モジュールパラメータが適用されるのは、
    モジュール c だけです。

・ softdep の最後のパラグラフ:
    Note: if there are install or remove commands with the same
    modulename argument, softdep takes precedence.

  [今回の訳]
    注意: 同一の modulename を引数とする install コマンドまたは remove
    コマンドがある場合、 softdep が優先されます。

  これは問題ありませんが、どうせですから、私の訳も書いておきます。

  [試訳]
    注意: 同じ modulename 引数を取る install や remove コマンドが設定
    ファイル中にあっても、softdep が優先されます。

○ COMPATIBILITY
    A future version of kmod will come with a strong warning to avoid use
    of the install as explained above. This will happen once support for
    soft dependencies in the kernel is complete. That support will
    complement the existing softdep support within this utility by
    providing such dependencies directly within the modules.

  [今回の訳]
    kmod の将来版においては、 上で説明した install の利用を避けるような警告
    を含めるつもりでいます。 これは、 カーネル内でのソフトな依存関係のサ
    ポートが完成した際に行います。 そういった依存関係は直接モジュール内で行
    われるようになるため、 そのサポートは、 本ユーティリティーの既存の
    softdep サポート機能を補助するものとなります。

  "a strong warning" の "strong" が抜けています。"by providing such
  dependencies ..." と「... 行われるようになるため」ですが、原文は
  手段や方法を表し、訳文の方は原因・理由を言っているわけで、ちょっと違うのでは
  ないかと思います。ご参考までに、試訳を付けておきます。"soft" をここでも
  「柔軟な」と訳していますが、適切な訳語かどうかは分からないままです。
  後半の内容についても、イマイチ分かっていません。

  [試訳]
    kmod の将来のバージョンでは、上で述べたように、install コマンドの
    使用は避けるべきだとの強い警告が出ることになるでしょう。 そうなるのは、
    カーネル内での柔軟な依存関係のサポートが完成したときのことです。そうした
    サポートは、柔軟な依存関係をモジュールの内部で直接提供することによって、
    現在存在するこのユーティリティ内での softdep によるサポートを補完する
    ことになるでしょう。


追伸:

これは、matsuand さんの翻訳に ribbon さんが手を入れたものなのでしょう。
すでにおわかりになっていることでしょうが、おせっかいを承知で、一言書いて
おきます。

ほかの人の翻訳に手を入れる場合、公開できるレベルにまで、訂正し、修正し、
翻訳を練り上げるのが、一番よいに決まっています。しかし、原稿に問題点が
ありすぎて、直し切れないこともあります。そういうときは、思い切ってボツに
することも考えたほうがよいと思います。「ボツにします」と宣告するような
角の立つことをしたくないのならば、放置すればよいでしょう。不正確な箇所の
多い翻訳を公開するよりも、その方が誰にとっても幸せだろうと思います。

-- 
長南洋一



linuxjm-discuss メーリングリストの案内
Back to archive index