BSD界隈四方山話

第106回BSDライセンスのdtcへ差し戻し

BSDライセンスdtc(1)

2017年6月20日に実施されたコミットでFreeBSDのdtc(1)コマンドがGPL版のdtc(1)コマンドからBSDライセンスのdtc(1)コマンドへ戻りました。GPL版のdtc(1)コマンドを使いたい場合にはWITH_GPL_DTCを指定してビルドを実施する必要があります。

dtc(1)はデバイスツリーソースをバイナリ形式のデバイスツリーブロッブに変換するためのデバイスツリーコンパイラです。ここで生成されたデータはバイナリはファームウェア、ローダなどから直接利用されます。amd64サーバなどでFreeBSDを使っている場合にはdtc(1)を直接使うことはまずないと思いますが、ARMのモードなど多種多様なボードを使う場合にはお世話になることになるコマンドです。

 FreeBSD 11.0のdtc(1)コマンドはGPL版
% uname -sr
FreeBSD 11.0-RELEASE-p9
% dtc --version
Version: DTC 1.4.0
% dtc --help
Usage: dtc [options] <input file>

Options: -[qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv]
  -q, --quiet
    Quiet: -q suppress warnings, -qq errors, -qqq all
  -I, --in-format <arg>
    Input formats are:
        dts - device tree source text
        dtb - device tree blob
        fs  - /proc/device-tree style directory
  -o, --out <arg>
    Output file
  -O, --out-format <arg>
    Output formats are:
        dts - device tree source text
        dtb - device tree blob
        asm - assembler source
  -V, --out-version <arg>
    Blob version to produce, defaults to %d (for dtb and asm output)
  -d, --out-dependency <arg>
    Output dependency file
  -R, --reserve <arg>
    tMake space for <number> reserve map entries (for dtb and asm output)
  -S, --space <arg>
    Make the blob at least <bytes> long (extra space)
  -p, --pad <arg>
    Add padding to the blob of <bytes> long (extra space)
  -b, --boot-cpu <arg>
    Set the physical boot cpu
  -f, --force
    Try to produce output even if the input tree has errors
  -i, --include <arg>
    Add a path to search for include files
  -s, --sort
    Sort nodes and properties before outputting (useful for comparing trees)
  -H, --phandle <arg>
    Valid phandle formats are:
        legacy - "linux,phandle" properties only
        epapr  - "phandle" properties only
        both   - Both "linux,phandle" and "phandle" properties
  -W, --warning <arg>
    Enable/disable warnings (prefix with "no-")
  -E, --error <arg>
    Enable/disable errors (prefix with "no-")
  -h, --help
    Print this help and exit
  -v, --version
    Print version and exit
%
 FreeBSD 12-CURRENTのdtc(1)コマンドはBSDL版
% uname -sr
FreeBSD 12.0-CURRENT
% dtc -v
Version: dtc 0.5.0 compatible with gpl dtc 1.4.0
% dtc -h
Usage:
        dtc     [-fhsv@] [-b boot_cpu_id] [-d dependency_file][-E [no-]checker_name]
                [-H phandle_format] [-I input_format][-O output_format]
                [-o output_file] [-R entries] [-S bytes] [-p bytes][-V blob_version]
                -W [no-]checker_name] input_file
%

導入されたBSDライセンス版のdtc(1)はGPL版のdtc(1)版と互換性があるように開発されてはいますが、FreeBSDでの利用を想定したもので、今のところFreeBSD向けに使うものだと思っておくのがよいと思います。

ARMプロセッサを搭載したミニボード、たとえばIoTデバイスでよく使われるようなものは、プロセッサは同じでも周辺のチップの構成が製品毎に異なっています。FDTはそうしたデバイスに対応するための技術であり仕組みです。dtc(1)はそのFDTで使うためのコンパイラです。

アプライアンスやIoTデバイス、ゲームデバイスなどを開発するベンダはライセンスとして扱いやすいBSDライセンスやMITライセンスを好む傾向があります。FreeBSDプロジェクトはこうしたベンダの要望を受けてベースシステムのソフトウェアをBSDライセンスのソフトウェアへ置き換える取り組みを続けています。

勉強会

第65回 8月24日(木)19:00~FreeBSD勉強会

内容は検討中(会場:ヴァル研究所 セミナールーム)です。登録はこちらから。

FreeBSD勉強会 発表者募集

FreeBSD勉強会では発表者を募集しています。FreeBSDに関して発表を行いたい場合、@daichigotoまでメッセージをお願いします。1~2時間ほどの発表資料を作成していただき発表をお願いできればと思います。

おすすめ記事

記事・ニュース一覧