[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kernel-handbook 査読依頼 #5



八津尾です。
kernel-handbook 5 章 versions の日本語訳です。
査読をお願いします。

なお、titanpad にも貼りつけました。
突っ込みがあればそちらを編集していただくと助かります。
(もちろんメールでの指摘でもかまいません)

うまく訳せない箇所がありました。
5.2.2 の

    <p>
      In order to avoid the need for users to rebuild
      out-of-tree modules frequently, we try to avoid changing
      the kernel ABI during updates to a Debian stable or
      oldstable release.  Most importantly, we avoid making such
      changes without changing the ABI name, except where it
      appears that out-of-tree modules do not depend on that
      part of the ABI.
    </p>

という文章ですが、2文目に出てくる "such changes" の such と
"depend on that part of the ABI" の that が指す内容がいまいちよくわかりません。

<こう解釈しました>
・ツリー外のモジュールのビルドを極力避けるためstable/oldstableのアップデートではABIを極力変更しません
・カーネルモジュールをビルドしなければならないようなABIの変更は必ずABI名を変更します
・カーネルモジュールをビルドする必要がないABIの変更の場合はABI名を変更しません
・ただし、ツリー外のモジュールが "その" 部分 (変更対象となるABIの一部) に依存していない場合を除きます

で、素直に訳すとこんな感じになりました。
    <p>
      私達は、ユーザがツリー外のモジュールを頻繁にビルドする必要が無いよう、
      Debian 安定版や旧安定版に対するアップデートでは、カーネルの ABI を変更しません。
      最も重要なことは、ツリー外のモジュールが ABI のある部分に依存していないと
      思われる場合を除き、ABI 名を変更せずにそのような変更を行うことを避ける
      ということです。
    </p>

日本語がおかしいので助けてください。


    <chapt id="versions">
      <heading>バージョン番号と ABI</heading> <sect id="version-types"> 異なるバージョンのタイプ

<!--
  <p>
    <taglist>
      <tag>Upstream version</tag>
      <item>
        The version that Linus or a stable series maintainer uses
        for a release.  Currently Linus will use the version
        format: 3.<var>x</var>[-rc<var>y</var>].  Stable series
        maintainers use the version format:
        3.<var>x</var>.<var>y</var>.
      </item>
      <tag>Package version</tag>
      <item>
        The version used in a Debian package.  Following Debian
        policy, it should follow the format
        <var>upstreamversion</var>-<var>debianrevision</var>.
        However, for an upstream release candidate, the string
        '-rc' must be replaced with '~rc' so that it will be
        recognised as an earlier version than the following release.
      </item>
      <tag>Kernel version</tag>
      <item>
        This is the version that appears in kernel messages,
        filenames, package names and the output of 'uname -r'.
        In official kernel packages it follows the format
        <var>upstreamversion</var>[-<var>abiname</var>][-<var>featureset</var>]-<var>flavour</var>.
        It is not changed for every new package version.
        The <var>abiname</var> is changed as explained below.
      </item>
    </taglist>
  </p>
-->

  <p>
    <taglist>
      <tag>アップストリームバージョン</tag>
      <item>
      Linus や安定版のメンテナがリリースに使用するバージョンです。
      現在 Linus はバージョンナンバに 3.<var>x</var>[-rc<var>y</var>] というフォーマット
      を使用しています。
      安定版のメンテナはバージョンナンバに 3.<var>x</var>.<var>y</var>. というフォーマット
      を使用しています。
      </item>

      <tag>パッケージバージョン</tag>
      <item>
      Debian パッケージで使用されるバージョンナンバDebian ポリシーによると、
      <var>アップストリームのバージョン</var>-<var>Debian のリビジョン</var>
      というフォーマットに従う必要がります。しかし、アップストリームのリリース候補版で
      使用される 「-rc」 は 「~rc」 で置き換える必要があります。これ以降にリリースされ
      るバージョンよりも前のバージョンであると認識させるためです。
      </item>

      <tag>カーネルバージョン</tag>
      <item>
      これはカーネルメッセージ、ファイル名、パッケージ名、「uname -r」 コマンドで
      出力されるバージョンナンバです。公式のカーネルパッケージでは
      <var>upstreamversion</var>[-<var>abiname</var>][-<var>featureset</var>]-<var>flavour</var>
      というフォーマットに従います。これは全ての新しいパッケージバージョンで
      変わるものではありません。<var>abiname</var>は以下のルールに従い変更されます。
      </item>
    </taglist>
  </p>

<!--
  <p>
    Many programs parse the kernel version string reported by
    the <tt>uname</tt> system call or command and expect to find
    at least 3 version components separated by dots.  For
    compatibility, the official kernel packages currently add
    '.0' to the upstream version, but this will be dropped in
    wheezy+1.
  </p>
-->

  <p>
    多くのプログラムがカーネルバージョンを<tt>uname</tt>システムコールかコマンドから
    パースしますが、最低でも 3 つのバージョンのパーツがドットで区切られていることが
    前提となっています。互換性のために、公式のカーネルパッケージは現在アップストリーム
    バージョンに「.0」を付けていますが、これは wheezy+1
    (訳注:Wheezy の 次のバージョン Jessie) で廃止される予定です。
  </p>
      </sect>

      <sect id="abi">
  <!-- The kernel ABI -->
  カーネルの ABI

<!--
  <p>
    An ABI (Application Binary Interface) is an interface
    between two software components, considered at the level of
    register allocation and memory layout.  The ABI between the
    kernel and user-space is generally maintained carefully, and
    is not a concern here.  However, the ABI between the kernel
    and its modules is not.  In order to support out-of-tree
    modules, the kernel version should be changed when the ABI
    between the kernel and modules changes.
  </p>
-->

  <p>
    ABI (Application Binary Interface) はレジスタの割り当てやメモリのレイアウト
    のレベルで考慮されているソフトウェアコンポーネント間のインタフェースです。
    カーネルとユーザ空間の間の ABI は定常的に注意深くメンテナンスされているため、
    ここでは考慮する必要はありません。しかし、カーネルとカーネルモジュール間の
    ABI はその限りではありません。ツリー外のモジュールをサポートするためには、
    カーネルとモジュール間の ABI に変更があるたびにカーネルバージョンを変更しなけ
    ればなりません。
  </p>

  <sect1 id="abi-name">
    <!-- The ABI name -->
    ABI 名

<!--
    <p>
      In official kernel packages, we change the
      <var>abiname</var> part of the kernel version to mark ABI
      changes that aren't due to a new upstream version.  This
      part comes from the <tt>abiname</tt> setting in
      <tt>debian/config/defines</tt>.  We use either a number or
      'trunk' (for experimental), but for a custom package it
      should be some other string.
    </p>
-->

    <p>
      公式のカーネルパッケージでは、私達はカーネルバージョン名の一部である
      <var>abiname</var>を変更します。これは、新しいアップストリームバージョン
      に起因しない ABI の変更をマークするためです。この部分は
      <tt>debian/config/defines</tt> 中の <tt>abiname</tt> の設定で管理されています。
      私達は、この部分に 「trunk」(experimental 用) か番号を使用しますが、
      カスタムパッケージにはそれ以外の文字列を使うべきです。
    </p>
  </sect1>

  <sect1 id="abi-maintenance">
    <!-- Maintaining and updating the ABI -->
    ABI の管理と更新

<!--
    <p>
      In order to avoid the need for users to rebuild
      out-of-tree modules frequently, we try to avoid changing
      the kernel ABI during updates to a Debian stable or
      oldstable release.  Most importantly, we avoid making such
      changes without changing the ABI name, except where it
      appears that out-of-tree modules do not depend on that
      part of the ABI.
    </p>
-->

    <p>
      私達は、ユーザがツリー外のモジュールを頻繁にビルドする必要が無いよう、
      Debian 安定版や旧安定版に対するアップデートでは、カーネルの ABI を変更しません。
      最も重要なことは、ツリー外のモジュールが ABI のある部分に依存していないと
      思われる場合を除き、ABI 名を変更せずにそのような変更を行うことを避ける
      ということです。
    </p>

<!--
    <p>
      Bug fixes or configuration changes to the kernel may alter
      the ABI.  If an exported function is conditional on
      <tt>CONFIG_</tt><var>FOO</var>, or it uses a type whose
      definition depends on <tt>CONFIG_</tt><var>FOO</var>, then
      turning <tt>CONFIG_</tt><var>FOO</var> on or off changes
      the ABI of that function, and thus of the kernel as a
      whole.  Enabling or changing the configuration of a single
      driver usually doesn't change the ABI, because most
      drivers don't export anything.
    </p>
-->

    <p>
      カーネルへのバグ修正や設定の変更は ABI の変更をともなう場合があります。
      もしエクスポートされた関数が <tt>CONFIG_</tt><var>FOO</var> を条件としているか、
      もしくは型定義が <tt>CONFIG_</tt><var>FOO</var> に依存するものを使用している場合、
      <tt>CONFIG_</tt><var>FOO</var> の有効無効によってその関数の ABI、
      ひいてはカーネル全体の ABI が変更になります。
      1 つのドライバの設定を有効化したり変更したりする場合、たいてい ABI は変更しません。
      ほとんどのドライバは何もエクスポートしないからです。
    </p>

<!--
    <p>
      The kernel build process generates a 'symbol version' for
      each exported function or variable.  This is a hash of the
      definitions that it depends on, and should change whenever
      the function's ABI changes.  The kernel module loader
      detects incompatible modules by comparing symbol versions.
      The whole set of symbol versions represents the kernel
      ABI.
    </p>
-->


    <p>
      カーネルのビルドプロセスによって 、それぞれのエクスポートされた関数や変数用に
      「シンボルバージョン」が生成されます。これは自身が依存している定義のハッシュで、
      関数の ABI が変更された場合は必ず変更しなければなりません。
      シンボルバージョンを比較することで、カーネルモジュールローダは非互換のモジュール
      を検出します。シンボルバージョンの完全なセットはカーネル ABI で表現されます。
    </p>

<!--
    <p>
      We collect the symbol versions for previously uploaded
      packages under the directory <tt>debian/abi</tt> and then
      compare the new kernel with those.  If the ABI name is
      unchanged but the ABI itself is changed - except for
      additions, or changes that we have marked as acceptable -
      then the build is aborted.
    </p>
-->

    <p>
      私達は以前アップロードした <tt>debian/abi</tt> ディレクトリ以下のパッケージの
      シンボルバージョンを修正し、新しいカーネルのものと比較します。もし ABI 名が
      変更さないにも関わらず ABI そのものに変更がある場合は、ビルドを中止します。
    </p>

<!--
    <p>
      If the kernel ABI has changed you must then change the ABI
      name in <tt>debian/config/defines</tt>.  Then run the
      command
      <example>
$ fakeroot debian/rules debian/control-real
      </example>
      to regenerate the package definitions for this ABI name.
    </p>
-->

    <p>
      カーネル ABI が変更された場合は、<tt>debian/config/defines</tt> の ABI 名
      を変更しなければなりません。それから、この ABI に対応したパッケージ定義を再生成する
      ために、<example> $ fakeroot debian/rules debian/control-real </example> コマンド
      を実行しましょう。
    </p>
  </sect1>
      </sect>
    </chapt>

Attachment: signature.asc
Description: Digital signature