パスワードを忘れた? アカウント作成
4819 story

NetBSDでDarwin用バイナリを動かす 39

ストーリー by yourCat
いいところは吸収 部門より

ちょっと古い本家の記事より。Mach/DarwinのバイナリをNetBSDで動すプロジェクトがある。現在はNetBSD/powerpcのみ作業中だが、NetBSD/i386でのDarwin x86コードの互換レイヤーも視野にある。なお、NetBSD/powerpcでMac OS X向けバイナリを動かす場合には、当然OS Xの各種ライブラリとライセンスが必要だ。ONLamp.comのEmmanuel Dreyfus氏へのインタビュー記事も興味深い。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Darwin互換 (スコア:4, 参考になる)

    by yanagi (6075) on 2003年01月27日 1時30分 (#244115) ホームページ 日記
    NetBSDは結構足取りの軽いところがあって、
    新しいハードウェアとかソフトとかを
    いち早くさっさと取り込むのが面白いところ。

    うろ覚えなんだけどlinuxバイナリ互換を
    最初に入れたのもNetBSDだったと思うし、
    USBとかIEEE1394なんかもそうじゃないかな?
    こういうところがNetBSDのハッカーの嗜好性で
    ユーザの数よりも質で優れてるという、
    カッコいいところだよね。

    そのうち他のUN*XライクOSにもフィードバック
    されるでしょうけど。

    #最近は一番触ってるのはlinuxだけど:-P
    --
    やなぎ
    字面じゃなく論旨を読もう。モデレートはそれからだ
  • 何を動かすの? (スコア:2, 参考になる)

    by nog (7146) on 2003年01月27日 0時03分 (#244051) 日記
    将来的にはわかりませんが、現状で Darwinで動いてNetBSDにあったらいいものってなにがあるのだろう、というのが素朴な疑問としてあります。
    Mac OS X用のソフトにしても、iTunesみたいなのがサクッと動いちゃうならかなりびっくりするし、有益かもしれませんが、、、
    • by Anonymous Coward on 2003年01月27日 2時02分 (#244135)
      そういや Win32 のバイナリーを動かそうという PEACE [haun.org] というものもあったような。
      親コメント
    • Re:何を動かすの? (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2003年01月27日 8時59分 (#244204)
      そこにアーキテクチャが有るから動かす

      # だってNetBSDだもん
      親コメント
      • by Anonymous Coward
        車でドライブするのが好きだけじゃなくて、なによりクルマを自分でいじくって色々なところで走らせるが好きな人達なんですよね、NetBSDは。
    • by Anonymous Coward
      逆に NetBSD にあって Mac OS X で動かない素敵な物って何があるのかしら。

      いや、実利よりは技術的興味でやっているというのは分かっていますが、
      NetBSD 側から見た問いかけが出たので、 Mac OS X 側から見るとどうかなと。
      • 各種ドライバ
        親コメント
        • by Anonymous Coward
          動く環境が制限されている Mac OS X で
          NetBSD が持ってるドライバの殆どは意味がないという罠、では?
          • 一応ドライバが橋渡しをしてくれている訳だし
            そこはどうにかなるんじゃないかな?
            まさかアプリケーションがドライバ通さずに直に
            ハードウェアを叩いてるわけじゃないでしょ。
            あ、でもBIOS依存はありそうだ(笑
            --
            やなぎ
            字面じゃなく論旨を読もう。モデレートはそれからだ
            親コメント
      • by Anonymous Coward
         アプリの話でなくて申し訳ないんですけど、やはりプラットフォームでは?

        現状PPCでしか動かないOS Xよりも、対応プラットフォーム数が
        桁違いなNetBSDが魅力的な人もいるのでしょう・・・いると思う、多分(根拠なし)。

        # このプロジェクトでNetBSDがMacOS X Server的位置を占めたりして・・・
        # これまた根拠なしですが
      • by Anonymous Coward
        まーでも各種 Unix 系 OS での互換性が高くなってくれるのは単純に嬉しいじゃないですか。なんとなく。
        • by Anonymous Coward
          単にNetBSDがエミュレーションをしているだけなので「各種Unix系OSでの互換性が高くなっている」というのとは全然違う。

          NetBSDってとりあえず他のOSのバイナリ代わりとなんでもかんでも動いてしまったりするのですが、そのおかげかどうかNetB
          • by redbrick (4865) on 2003年01月27日 14時56分 (#244471) 日記
            >NetBSDがエミュレーションをしているだけなので
            >「各種Unix系OSでの互換性が高くなっている」というのとは
            >全然違う。

            NetBSD/i386でLinuxエミュレーションといわれているものは、
            切り口だけすり合わせたもので、本質的にエミュレーションでは
            ないんですけどね。
            #system callの入り口がlinuxの流儀にあわせてあるだけで
            #実行自体はエミュレーションでもなんでもない。
            #CPUアーキテクチャが異なる場合にバイナリを動かせないのはそのため。

            Unix系の互換性が云々、ってのは完全に同意です。
            #つーか、CPUアーキテクチャが全く違うものに関しての
            #バイナリ互換性なんて、誰も言わないよねぇ?
            #i386に限定しても、NetBSDが互換を取る方策を用意してるだけで、
            #他のもの(OpenBSDは同根なので除外)は互換性なんて知らん顔だし。
            #CPUがi386だけしかないと思うと、そんな風な見え方もするの
            #かもしれないけど、NetBSDじゃi386はone of themでしかないと
            #思うし、Unix全般で言っても、他アーキテクチャ間での
            #バイナリ互換性なんて、ほとんど取れてないと思うのです。
            #sourceの互換性、ってなるとまた別の話になるのでとりあえずパス。

            >そのおかげかどうかNetBSDネイティブバイナリの商用ソフトが
            >出ないんですよねぇ。

            わたしはアーキテクチャのサポートの問題だと思ってます。
            メジャーどころでもPPC,i386,SPARC,m68k,hpcarm,hpcsh・・なんて感じで
            サポートするアーキテクチャ数が増えるのが辛いんじゃないかと。
            #結局、i386しか売られないと、その他のアーキテクチャでNetBSD
            #動かしているヒトにとっては悔しいだけですし。
            #・・・WnnとかVJEとかも、以前m68k中心だったわたしにとっては
            #悔しいだけのシロモノだったしなぁ・・・。
            #そんなのなら、機能が少しばかり低くても自分でsource取ってきて
            #環境に合わせて構築出来る方がいいし、そうなると商用としては
            #非常にやりにくいだろうし。
            --
            ---- redbrick
            親コメント
            • >#・・・WnnとかVJEとかも、以前m68k中心だったわたしにとっては
              >#悔しいだけのシロモノだったしなぁ・・・。

              Wnn7 for Mac OS X出してくれたらNetBSD/powerpc系でWnn7を動かす事が出来る様になるのになぁ:-)
              ついでにオムロンソフトさんが気を利かしてMABでi386なDarwinでも使える様にしてくれてたらさらにうれしいな:-)
              でも、オムロンソフトさんがWnn7 for Mac OS Xを出さないとできないし、COMPAT_DARWINも完成しないと実現できない話だな(笑)
              どっちもいつになるかわからない話だし:-)
              親コメント
            • by Anonymous Coward
              #244239なんだけど。

              だからその「切り口を合わせる」ことをエミュレーションと呼んでるんだわさ。

              そもそも「本質的にエミュレーションではない」ってなに?

              CPUアーキテクチャが異なると動かないのはlinuxPPC/linux(i386)の場合でも同じだよね
              • by redbrick (4865) on 2003年01月27日 20時06分 (#244737) 日記
                #エミュレーション、という言葉の範囲の定義から決めないと
                #ダメだったかな・・・?

                >だからその「切り口を合わせる」ことをエミュレーションと
                >呼んでるんだわさ。

                それだと呼び方が大雑把で混乱するので、もっと詳しい定義付けを
                しませんか?
                PPCでのm68kエミュレーションやi386エミュレーション(Virtual PC)の、
                CPUエミュレータ(バイナリ変換あり)なんかとは本質的に違うものだし、
                Real PCなんかのハードウェアのエミュレータ(こっちはマシンの仮想化?)
                とも違うわけだから。
                #NetBSDのlinuxエミュレータと呼ばれているものは、system callの
                #すり合わせをやってるけど、binary変換はないから、実行時に
                #オーバーヘッドはないので、ある意味エミュレータとは
                #言えないでしょ?
                #・・・しいて上げれば・・・linux system callエミュレータ??
                #インターフェースの切り口を合わせる事をエミュレーションと
                #呼んでいいものだろうか・・・??


                >文脈に合わせて用語の意味は読み取ってくださいね。

                それはわたしには出来ない。
                文字という明確な表現が出来るものがあるのに、それを使わずに
                文章の間からなにを読み取れと?
                #各人の想像で補うコミュニケーションって、なにが伝わってるか
                #わからないので、わたしは避けたいです。
                --
                ---- redbrick
                親コメント
              • by Anonymous Coward
                ある意味エミュレータとは言えないでしょ?
                私もそれに賛成ですし、 某OSはそういう立場を取っています [freebsd.org]が、 NetBSDはエミュレーション呼ばわりしている [netbsd.org]という罠。
              • by Anonymous Coward
                まず文脈を無視して「エミュレーション」を一意に解釈できると思ってるあたりアホだと思う。
                どーーーーしても、宗教上の理由かなんかでアレをエミュレーションと呼ぶことができないなら毎回「NetBSDがいうところのバイナリエミュレーション」と書きゃいいのだよ。ひょっとすると相手も付き合ってくれるかもしれない。省略して「バイナリエミュレーション」と呼ぶかもしれないけど、それこそ「文脈で解釈してくれ」。
                それができないってことは自然言語が解釈できないってことだ。

                で。ここからが本題。

                redbrickさんの「エ
              • by Anonymous Coward
                はあ?オーバーヘッドの有無が問題なのですか?
                あなたのいうところの「エミュレーション」とは「オーバーヘッドのある処理」と等価なんですか。
                で、これは何と呼べばいいんでしょうね?「#245090がいうところのエミュレーション」ですか?
              • by Anonymous Coward
                s/あなた/redbrick/g
                s/#245090/redbrick/g

                質問する相手が間違ってる。
              • by Anonymous Coward
                #245090だがそんなに読解が難しい文章だったろうか?

                >redbrickさんの「エミュレータ」の定義には「実行時にオーバーヘッド」があるものなわけね。

                これは「redbrickが言うところのエミュレータ」の定義の確認。わたしがそう思ってるわけではない。

                #244737 [srad.jp]で
                >#NetBSDのlinuxエミュレータと呼ばれているものは、system callの
                >#すり合わせをやってるけど、binary変換はないから、実行時に
                >#オーバーヘッドはないので、ある意味エミュレータとは
                >#言えないでしょ?
                #強調はわたし
                と主張しているのでNe
              • by haraoka (13737) on 2003年01月28日 19時24分 (#245436)
                何故エミュレーション呼ばわりしているかは想像ですが、多分歴史的事情だと思います。
                一番最初にCOMPAT_ほげ で作られたのがCOMAT_SUNOSやCOMPAT_SVR4あたりから作られたからだと思います。
                で、あの辺はエミュレーションと言っても問題ないと思います。
                しかし、LINUX,DARWIN,PECOFFあたりはエミュレーションとは言えませんね。
                実際PECOFFはエミュレーションじゃありませんと言ってますが:-)
                誰かドキュメント修正してくれたら良いのかもしれませんがね:-)
                親コメント
              • by redbrick (4865) on 2003年01月29日 1時36分 (#245701) 日記
                >これは「redbrickが言うところのエミュレータ」の定義の確認。

                わたしより詳しい人がもう書いてるので、とりあえずわたしの中での
                定義の明確化だけ、書きます。
                #自分の中の勝手な定義なので、全ての呼称がこうでなきゃ、とかは
                #全く思ってません。
                #定義の明確化、とかいいつつ自分で書いてないせいで要らぬ混乱を
                #招いてしまった事に対する謝罪のつもりです。
                #すみませんでした>all

                実行形式の違う、CPUアーキテクチャから違う場合にCPUエミュレータと呼びたい。
                理由:他アーキテクチャのCPUの動作を真似るか、バイナリ変換処理をかけるので。

                ハードウェア全体を仮想化する場合はハードウェアエミュレータと 呼びたい。
                理由:物理的には存在しないハードウェア動作を真似るため。

                どちらも、物理的に存在しないものの動作を真似ることが中心にある、と
                認識してます。

                で、NetBSDが言うところのバイナリエミュレータでは、CPUの中で
                実行される命令はnativeなので、物理的にはCPUで普通に命令を
                実行しているに過ぎない。
                真似ているのは入出力のインターフェースの切り口の形状、と
                言ったらいいのかな?
                #もちろん、pathの切り替え、必要なsystem callの切り口の準備、
                #という仮想的な環境の下準備と実行時の切り口の変換操作は
                #あるわけだけど。
                #ソフトウェア側でLinux環境が物理的に存在しない??
                #いや、でもLinux emulator使うときにはlibraryとかも準備するはずだし・・・。

                オーバーヘッドというよりは、CPUがnative命令を受け取るかどうか、
                その前に変換操作でバイナリ実行形式自体をいじらなければならなかったり、
                仮想化したCPUを動かす必要があるかどうか、ってのが気になります。
                #オーバーヘッドがない、というのはNetBSDの言うバイナリエミュレータの
                #宣伝文句から引っ張ってきたんだけど、それが頭に強く残っていた
                #ので使いました。
                #実行形式の違いを先に言っておけばよかったかな?
                #結局、CPUアーキテクチャの制限から抜け出せないものを
                #バイナリエミュレータとは呼びたくないって思いもあるのだけど、
                #それはわたしの思い込みだけだし・・・。

                それで、NetBSDが言うところのバイナリエミュレータ(長い・・)は、
                他のCPUのバイナリが実行できるエミュレータと混同しないためには
                別の呼称、もしくはもっと実際に即した、「Linux環境エミュレータ」とか
                「Linux system callエミュレータ」というようにした方がいいと
                思ってるんですよ。
                #実はm68k使ってて、
                #「Linuxのバイナリエミュレータ? うそぉ、Linux(当然i386)の
                #バイナリがこれでも動くんか?」
                #って、ぬか喜びしたクチなので(苦笑)。
                #その時にはm68kってLinuxは全然開発進んでなくってね・・。
                #わたしももっと無知で、Linuxってーとi386しか思いつかなんだ。
                --
                ---- redbrick
                親コメント
      • by Anonymous Coward
        まともに国際化された X 環境。

        # NetBSD がまともかというと、まだまだ機能が足りないが。
  • by Anonymous Coward on 2003年01月27日 2時59分 (#244162)
    最近のトピックでは Scheduler Activation のほうが重要だと思うのだが……
    • by haraoka (13737) on 2003年01月27日 13時56分 (#244419)
      私はNetBSD/macppcでCOMPAT_DARWINを有効にしてkernelを作ってましたが、
      SAが入ってからCOMPAT_MACHが壊れていたので外してました。
      しかし、今朝あたりmach_thread.cが出来てるからひょっとしたらなおったのかも?
      でも、SA入ったおかげでCOMPAT_DARWINも期待大ですね:-)

      SAが入る前にNetBSD/macppcでCOMAT_DARWINを試した所、date,lsあたりは
      使えてました。
      wは/mach_kernelを見にいくので使えなかったです。
      一部のコマンドはCommand not found.だったかな?
      javaは途中で固まってしまいました。
      って、NetBSD/powerpc系でjava使いたかったらCOMPAT_LINUXでblackdown-jdk
      使った方が良さそうかな?(^^;

      COMPAT_MACH,EXEC_MACHO,COMPAT_DARWINを有効にしてGNUstepを
      使えばEnglish.lprojだけであれば使えそうかも?(^^;

      そうするとあと欲しいのがCarbonLib for NetBSDだよなぁ(^^;
      あとCOMPAT_ほげつかわないでNetBSDでjdk-1.4使いたいですよねぇ…
      親コメント
    • by Anonymous Coward
      まぁ「ちょっと古い本家の記事から」だし。

      ちなみにsrc/sys/compat/darwin/Makefile ができたのは'02/11
      src/sys/arch/i386/GENERICにCOMPAT_DARWINが入ったのもほぼ同時

      src/sys/arch/macppc/GENERICにはCOMPAT_DARWINは*はいってない*
typodupeerror

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

読み込み中...