電球を取り換えるだけで家族を見守る

GPL v2 における派生物についてのご意見を頂戴したく思います。

以下のような状況において OS のカーネルは派生物に該当するかどうか
ご意見を頂ければ嬉しく思います。

カーネル(非 GPL)
ドライバ(GPL)

組み込み機器で使用するソフトなので,ソフトウェアの形態としては
最終的には1つの実行ファイルになります。ただ,これは組み込み機器
への搭載に際して不可避なことであり,単に1つの実行ファイルである
からといって,即派生物になるという認識は一般的でないと考えています。

さて,本論に入ります。

GPL カーネルを 非 GPL のドライバがファンクションコールする場合,
当該ドライバがカーネルの一般に公開されている I/F のみを用いるの
であれば,当該ドライバは派生物とは見なされないのが一般的であ
ると認識しています。これはソフトウェア情報センターによる報告
(2004.10)に基づいています。

本件は,これを逆に解釈し,非 GPL カーネルが GPL ドライバの
一般に公開されている I/F のみを使用する場合も,カーネルが
派生物と見なされないという余地があるかについての質問です。

通常は linux のカーネル(GPL)が例に多く出されるので,本件の
ような事例は調査しところ見つけることができませんでした。
ご意見お待ちしております。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

今回のご質問の場合、FAQの次の項目が当てはまるのではないでしょうか?



http://www.gnu.org/licenses/gpl-faq.ja.html#GPLP …
フリーではないプログラム向けのプラグインにGPLを適用することはできますか?
もしプログラムがforkやexecでプラグインを呼び出すならば、プラグインは別のプログラムですから、メインプログラムのライセンスは何の条件も課しません。ですからあなたはプラグインにGPLを適用できますし、特別な要件はありません。

プログラムがプラグインと動的にリンクされ、お互いにファンクションコールを使ってデータ構造を共有している場合、それらは単一のプログラムを形成していると見なされますので、プラグインはメインプログラムの拡張部分として扱われなければなりません。このことは、GPLで保護されたプラグインをメインプログラムとリンクするのはGPL違反となることを意味しています。しかし、あなたはこの法的問題を、あなたのプログラムのライセンスにフリーではないメインプログラムとのリンクを許可する例外を加えることで解決できます。

より詳しくは、「フリーではないライブラリを利用するフリーソフトウェアを書いています」という項目で始まる既出の質問をご覧ください。

---
ドライバとカーネルも、fork&exec かそれに類する手段で呼ばれる
関係ではないですから、ドライバとカーネルは単一のプログラムを形成する考えられ、
したがって全体がGPLによる縛りを受けるものと判断すべきだと思います。

最終的には(裁判所で)法的に判断してもらうしかないですし、
GPLの縛りを嫌うのであれば、徹底的に避けるべきだと思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとう御座います。
ご紹介いただいたFSFの見解の中で,見落としていたFAQがありました。
「私の独占的なシステムに,GPLで保護された・・・」
というものですが,これが私の質問内容に当てはまるのではないかと思います。

多くの方の意見やFSFの見解から,朧気ながらですが,やはりリンク形式はともかく,本件は1つのプログラムと見なされるような気がしてきました。

ありがとうございました。

お礼日時:2009/10/28 17:46

もう解決されたようですね



私もNO.2さんの意見に同意です。
まぁGPLが効力を発揮するのは配布した時なので、
販売する製品につかったりしなければ余り気にする必用はないですが
    • good
    • 0
この回答へのお礼

ご意見ありがとうございます。

何とかぎりぎりのところで回避できないか考えていたのですが,
やはりそう簡単にはいかないようですね。

ありがとうございました。

お礼日時:2009/10/31 19:18

Linuxカーネルの多くのデバイスドライバやプロトコルスタックが


そうなのでごっちゃになっている印象を受けるんですが、

ローダブルカーネルモジュール(動的にリンクされるカーネルの一部)

デバイスドライバ(何がしかH/Wデバイスを駆動するカーネルの一部)

H/W制御用のユーザプロセス

が、ごっちゃになっていませんか?
少なくともどの件について質問されているのかが、御質問の文章からは伝わってこないので、
期待されているような答えが返ってきていないように見えます。

この回答への補足

ご意見ありがとう御座います。
説明不足でした。
申し訳ありません。

環境としては,以下のものとなります。
・カーネル(自前開発なので非GPL)
・デバイスドライバ(GPL)

デバイスドライバは,ネットワークデバイスの制御用のものでして,メーカーよりGPLで頒布されていたものを自前開発のカーネル用に移植しました。勿論,移植により改変されたデバイスドライバ自体はGPLの派生物であると認識しております。

このような状況において,デバイスドライバと静的リンクされるカーネルもデバイスドライバの派生物と見なされるか否かについて知りたく思っております。

補足日時:2009/10/28 15:26
    • good
    • 0

単一の実行ファイルの場合にGPLを含む場合は、それ全体がGPLとなるのは一般的だと思いますよ。



まず、GPLとLGPLというのはご存知でしょうか?
GPLの場合、動的リンクであってもそれは派生物の一部とみなされ、LGPLの場合はみなされないというライセンスです。

ただ、これらはあくまでも動的リンクの場合であって、静的リンクの場合はどちらも派生物の一部とみなされます。

ところで、どう解釈するかどうかという以前に一度でもGPLのライセンスを読んだことがあるのでしょうか?
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
情報が不足していたようで,申し訳ありませんでした。

GPL,LGPLともに存じておりますし,それぞれのライセンス条項も確認済みです。
ですが,ライセンスの文言からはリンク形式に基づいて派生物か否かが定義されていません。
従って,実質的なプログラム間の依存関係に基づいて判断するしかないと考えていました。

本件の場合,一般的なWebや著作権関係の研究報告にあるようなGPLカーネルを利用するプロプライエタリな
プログラムのパターンではなく,その逆であったので,何かしらご意見を頂戴したいと思った次第です。

> 静的リンクの場合はどちらも派生物の一部とみなされます。
参考にさせていただきたいので,この根拠について出典等の情報が有ればご教示願えますでしょうか?

失礼いたします。

お礼日時:2009/10/26 20:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QGPLライセンスのライブラリを利用=ソース公開しなきゃだめ?

GPLライセンスについて調べています。
考え方がまちがっていたらご指摘いただきたいです。

1.GPLライセンスのライブラリを用いたシステム開発を行った場合
  ソースの開示を求められたら、開示しなければいけない?

たとえば、Javaで開発したシステムの場合、ここでいうソースコードとはjavaファイル郡になるのでしょうか?
jarファイルとかwarファイルだけでは駄目 ということですよね?

2.GPLライセンスのライブラリを用いたソフトを作って売る場合も
  同様で、ソースの開示を求められたら、開示しなければいけない?

つまりは、Javaで開発したソフトをパッケージ販売したいなら、
ソースコードをお客に開示するつもりでいなければならない ということでいいですか?

また、ソースコードを開示する先 は、お客だけでいいのでしょうか?
まったく関係のない人から開示を求められた場合も、ソースコードを渡さなきゃいけないのでしょうか?

以上です。
よろしくおねがいします。

Aベストアンサー

僕もあまり詳しくはないですが、
GPLで配布について求められていることは、
バイナリを直接配布する場合、そのバイナリを入手するのと
同じ手順でソースコードも入手できるようにすることだったと思います。

つまり、サイト経由でバイナリを配布するならば同じページでソースコードを配布しないとだめだし、CDで配るのなら、同じCDの同じディレクトリに同梱しないといけません。

ちなみに、GPLには、LGPLというライブラリ用の劣化したGPLがあります。
この場合、動的リンクをする場合にはGPL汚染はしなかったと思います。
利用しようとしているライブラリのライセンスを確認して、実際に利用している人に聞いてみるのがよいかと。。

参考URL:http://www.opensource.jp/lesser/lgpl.ja.html

QGPLライセンスの適用範囲について

お世話になります。

下記のように Blender(ライセンス:GPL)のソフトで、
書き出したモデルをPV3D(MITライセンス)で
取り込んで加工したものを商用で売りたいと思っています。
http://blog.rainyday.jp/flash/pv3d/dae.html

この場合、作成したものに対して、ライセンス:GPLが適用されるのでしょうか?
※ソースコードを公開する等しないといけないのでしょうか?
お手数ですがよろしくお願い致します。

Aベストアンサー

基本的に
GPLのプログラムを使って出力したデータについてはGPLの適用範囲外になります。

参考URL
http://sites.google.com/site/blugjp/home/others/gpl-for-artists
http://www.blender.org/education-help/faq/gpl-for-artists/
http://darkhorse2.0spec.jp/70/

出力時にGPLライセンスプログラムの一部が組み込まれるようなものの場合は
適用範囲内になりますが、今回の場合は適用範囲外となります。

Q/ が何時の間にか「Read-only file system」になってしまった

PlamoLinuxの3くらいを使っています。
18日間起動しているマシンで、
いつものように作業をしようと思ったら、
なぜか動作が変でした。
いろいろと調べてみると、どうやら
/ が何時の間にか「Read-only file system」になっていました。
そのため、/tmpに一時的に書き込んだりする
プログラムの動作がおかしくなったのではないかと思っています。
試しに「# touch /tmp/test」を実行すると
「Read-only file system」とか「読み込み専用ファイルシステムです」
と文句を言われてしまいます。
/etc/fstabと/etc/mtabを確認したところ、
「/dev/hda2 / ext3 defaults 1 1」
「/dev/hda2 / ext3 rw 0 0」
だったので、問題はないかなと思っています。
「# mount -o rw,remount /」を試してみると、
block device /dev/hda2 is write-protected, mounting read-only
と言われてしまいました。
ログを確認したところ、7/30 04:26に書き込まれたのが最後で、
それ以上書かれていないところからすると、
その直後くらいに / がRead-onlyになってしまったようです。
ちなみに、ログにはおかしな記録は見当たりませんでした。

/dev/hda1がswap
/dev/hda2が/
/dev/hda3が/boot
/dev/hda4が/home
で、/だけがRead-onlyになってしまったようで、
/home, /bootは書き込めました。
再起動はできるだけしたくないのですが、
元にもどす方法はないでしょうか?
宜しくお願いします。

PlamoLinuxの3くらいを使っています。
18日間起動しているマシンで、
いつものように作業をしようと思ったら、
なぜか動作が変でした。
いろいろと調べてみると、どうやら
/ が何時の間にか「Read-only file system」になっていました。
そのため、/tmpに一時的に書き込んだりする
プログラムの動作がおかしくなったのではないかと思っています。
試しに「# touch /tmp/test」を実行すると
「Read-only file system」とか「読み込み専用ファイルシステムです」
と文句を言われてしまいます。
/etc/fsta...続きを読む

Aベストアンサー

dmesg を実行したり /var/log/messages を調べると kernel から何かファイルシステムに関するエラーが出力されていませんでしょうか。経験上、ファイルシステムのエラー(I/O error)によって強制的に Read-Only モードに移行させられているように見えます。

もし I/O error 等のエラーが出ている場合は、/ 以下だけではなく、出来れば全パーティションのバックアップを早急に行うことをオススメします。もしディスクの破損が原因であれば、バックアップ作業中に止まってしまう事もありますので、バックアップ作業自体にもリスクを伴うことにご注意下さい(止まってしまうと二度とブートできなくなる、という現象を目の当たりにしたこともあります)。

HDD のセクタ内の情報が単に矛盾しているだけであれば、サーバの再起動後にシングル・ユーザ・モードで fsck を実行してファイルの整合性を確認することが必要です。

もしファイル情報の不整合がハードディスクの物理的な故障によるものであれば、ハードディスクの交換作業が必用になってしまいます。。

まずは、ログを確認して、どのようなメッセージが出ているか確認をなされてみては如何でしょう。上記の記述は最悪のケース、ですので。。

dmesg を実行したり /var/log/messages を調べると kernel から何かファイルシステムに関するエラーが出力されていませんでしょうか。経験上、ファイルシステムのエラー(I/O error)によって強制的に Read-Only モードに移行させられているように見えます。

もし I/O error 等のエラーが出ている場合は、/ 以下だけではなく、出来れば全パーティションのバックアップを早急に行うことをオススメします。もしディスクの破損が原因であれば、バックアップ作業中に止まってしまう事もありますので、バックアップ作...続きを読む

QLinuxのライセンスについて(GPL)

μITRONでの開発経験しかない者です。
Linuxについては見たことも触ったこともない、
全くのど素人ですが、どうぞ宜しくお願い致します。

かなりざっくりとした質問になるかと思いますが、
出来れば具体的なケースなど用いて細かくご回答
頂けると助かります。

(1)Linux上で動くアプリを作った場合、そのアプリは開示義務が
あると言えるのでしょうか?

(2)Linux上で動くアプリを作った場合、何をしたら開示義務が
適用されますか?

(3)この家電はこういうやり方で開示義務を免れているという
ような例があればお願い致します。


ちなみにGPLとLGPLなるものが存在することは承知しております。

Aベストアンサー

一応理解の範囲内で回答します。

(1)
質問が「必ずあるのか」という意味ならNo。

(2)
GPLのソースコードを流用などした場合、そのアプリ全体をGPLとして扱わなければなりません。
LGPLのライブラリを静的にリンクした場合、そのアプリはソースコードかオブジェクトの開示が義務付けられます。(動的リンクに制約はなし)

(3)
Cで開発する場合、おそらくGCCを利用するでしょうがglibcはLGPLです。
ですから、これをスタティックリンクしない形ですべてのコードを自前で作成すれば、アプリ部分の公開義務はありません。

たとえばBuffaloのNAS(LinkStation等)ではシステム部分(MontaVista Linux)自体のコードは公開していますが、制御部分は自社で作成していてそのコードは非公開です。

特に「うっかりGPLコードを流用した奴がいて炎上」って話が危険なので、非公開アプリを作りたいならコード管理は厳密にやらないと危険です。

QUSBホスト機能とは何ですか?

よくMP3プレーヤーの仕様に「USBホスト機能」と書かれていますが、これはどんな機能なのですか?
(「USBストレージクラス」とは違うのでしょうか?)

Aベストアンサー

USBホスト機能とは、USBの周辺機器を接続するための「親」になる機能です。USBは、その対応機器が「ホスト」「デバイス」に別れており、「ホスト」は「デバイス」に対し接続制御を行える端末、「デバイス」は「ホスト」から制御信号を与えられて初めてデータ伝送が行える端末、という区別が為されます。

通常は、「ホスト」になるのはPCであって、「デバイス」はPCの周辺機器ということになります。例えばPCとマウスをUSBで繋ぐとき、PCがホスト、マウスがデバイスになります。この時、PCのUSBインターフェースはホスト専用ですし、マウスはデバイス専用ということになります。間違ってもこの関係が逆転することはあり得ません。
デジカメをPCに繋ぐときも同じことが言え、PCが「ホスト」、デジカメが「デバイス」です。同じようにプリンタをPCに繋ぐときはPCが「ホスト」、プリンタが「デバイス」になります。

ところが最近は、PC抜きでデジカメとプリンタを繋いでデジカメの写真をプリントしようという機能が付けられるようになりました。この時、デジカメとプリンタは両方とも「デバイス」ですから、そのままでは接続しても動作しません(制御信号を与える役目の装置がない)。よって、例えばデジカメにUSBホスト/デバイスの両方になれる機能を持たせることで、他にUSBホストがいる場合(PCとデジカメを繋いだ場合)はデジカメはUSBデバイスに、他にUSBホストがいない場合(デジカメとプリンタを繋いだ場合)はデジカメがUSBホストに、というように、ケースバイケースで様々な組み合わせを可能にするような周辺機器が登場しています。

MP3プレイヤーのUSBホスト機能がどういった役に立つのかはそのMP3プレイヤーによって異なりますが、USBホスト機能がある場合は他のUSB周辺機器を繋げることで、PC抜きで様々な動作が可能になっている、と思えば良いでしょう。
当然ですが、USBストレージクラスとは別の用語となります。

USBホスト機能とは、USBの周辺機器を接続するための「親」になる機能です。USBは、その対応機器が「ホスト」「デバイス」に別れており、「ホスト」は「デバイス」に対し接続制御を行える端末、「デバイス」は「ホスト」から制御信号を与えられて初めてデータ伝送が行える端末、という区別が為されます。

通常は、「ホスト」になるのはPCであって、「デバイス」はPCの周辺機器ということになります。例えばPCとマウスをUSBで繋ぐとき、PCがホスト、マウスがデバイスになります。この時、PCのUSBインターフェース...続きを読む

Qセマフォとmutexの違いは?

排他制御としてセマフォとmutexがありますが、
この二つの違いがよくわかりません。
自分で調べてみたところ、
・セマフォ…プロセス間排他制御。複数ロックがかけられる。
・mutex…スレッド間排他制御。ロックは一つだけ。

と言うような違いがあるようなのですが、これだけの差なんでしょうか?
(これだけの差、と言ってる時点で筋違いだったら申し訳ありません)
また、セマフォをスレッド間排他制御に用いたり、
mutexをプロセス間排他制御に用いることは可能なのでしょうか?
可能だとしたら、これらが2種類存在する理由も教えていただきたいです。

Aベストアンサー

> >一般論としては、Mutexは「カウントを1に限定した」特殊化したSemaphoreです。
> とのことですが、これはWin32以外の環境だと
> これ以上の違いはないと言うことでしょうか?

「一般論」と書いた意味を取り落とされているのではないかと思います。

「一般論としては〇〇」なのですから、「Win32以外の環境」も含めて「各論」では「必ずしも〇〇とは限らない」とご理解ください。

なお、ご指摘のとおり、あるリソースを排他的に利用するだけであればMutexを使用するかわりにカウントが1のSemaphoreを使用することができます。(特定の環境での、MutexとSemaphoreの環境依存の動作を除けば、ですが。)

ではなぜ2種類が用意されている(用意されている環境が存在する)のかといえば、リソースの排他的利用は非常によくあることなので、これに特化した機能を用意すればより良いであろう、というシステムデザイナの判断によるものと考えられます。

ここで言う「より良い」は、あるデザイナにとっては「便利性」、また別のデザイナにとっては「消費リソースが少ない」と、これまた考え方はいろいろでしょう。

> >一般論としては、Mutexは「カウントを1に限定した」特殊化したSemaphoreです。
> とのことですが、これはWin32以外の環境だと
> これ以上の違いはないと言うことでしょうか?

「一般論」と書いた意味を取り落とされているのではないかと思います。

「一般論としては〇〇」なのですから、「Win32以外の環境」も含めて「各論」では「必ずしも〇〇とは限らない」とご理解ください。

なお、ご指摘のとおり、あるリソースを排他的に利用するだけであればMutexを使用するかわりにカウントが1のSemaphore...続きを読む

Qmakeコマンドのエラーについて(

UNIX(Linux)系のOSやC言語には不慣れなのですが、よろしくお願いします。

普段はWindows7(Home Ed.)を利用しているのですが、
いくつかのlinux系のソフトを利用する際にcygwinも利用しています。


==========================================================
cygwinにソフトウェアをインストールしようとする際に、
ときどき遭遇するエラーなのですが

仮にsoftware.tar.gzというソースファイルからインストールしようとして、

> gunzip -c software.tar.gz | tar xvf -
> cd software
> ./configure
> make
.....
make: *** [all-recursive] error

というエラーが生じて、makeが通らない時があります。
=========================================================


これまで何度か、どういうエラーなのか調べようとする度に挫折し、
何回かやり直している内に、たまたまmakeがすんなり通って
インストールできてしまったりしていたので、
なんとなくうやむやにしていました。

そもそも、この"all-recursive"に全くピンとこないのですが、
これはどういった場合に生じるエラーを示しているのでしょうか?
recursive(再帰的な)だから、関数かなにかの呼び出しに失敗している、
とかそういうことなのでしょうか?


エラーの内容はケースバイケースだし、
漠然とした質問になって申し訳ないのですが、
ちょっとしたアドバイスでもいいので、ご回答をお願いします。

UNIX(Linux)系のOSやC言語には不慣れなのですが、よろしくお願いします。

普段はWindows7(Home Ed.)を利用しているのですが、
いくつかのlinux系のソフトを利用する際にcygwinも利用しています。


==========================================================
cygwinにソフトウェアをインストールしようとする際に、
ときどき遭遇するエラーなのですが

仮にsoftware.tar.gzというソースファイルからインストールしようとして、

> gunzip -c software.tar.gz | tar xvf -
> cd software
> ./configure
> make
...続きを読む

Aベストアンサー

お腹痛いのに、一生懸命違うところを診察しているようなものですかね。

make[2]: *** [tvsetf.o] Error 1
この行より上全部じゃないですか?
WARNINGとかも出てますしね。

仰るとおりケースバイケースではありますが、例えば自分で作ったプログラムでの話ならばプログラムのミスが考えられますが、どこかの出来合いのフリーウェアをmakeしてエラーで落ちる場合は、環境が整っていない場合があります。(○○がインストールされていないとか…)

その辺は全てconfigureやmake時に出てくるメッセージをちゃんと見ることです。

なぜ最後に出てくるall-recursiveだけに注目してるのか知りませんが、見なくてもいいものをずっと見ていても問題は解決しません。


人気Q&Aランキング

おすすめ情報