1 / 24

オープンソースの Darwin は Mac OS X に何をもたらすのか

オープンソースの Darwin は Mac OS X に何をもたらすのか. 今日話すこと. Darwin とは何か? Darwin の入手方法 Darwin があると、どうメリットがあるのか. Darwin とは?. Mac OS X の基盤部分 APSL というライセンスに基づいたオープンソースの OS. Darwin とは?. Darwin に含まれるもの カーネル Mach BSD UNIX IOKit 基本ライブラリ LibC OpenSSL, zlib コマンドラインツール ls, cat, tcpdump

Download Presentation

オープンソースの Darwin は Mac OS X に何をもたらすのか

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. オープンソースのDarwin は Mac OS Xに何をもたらすのか

  2. 今日話すこと • Darwin とは何か? • Darwin の入手方法 • Darwin があると、どうメリットがあるのか

  3. Darwin とは? • Mac OS X の基盤部分 • APSL というライセンスに基づいたオープンソースのOS

  4. Darwin とは? • Darwinに含まれるもの • カーネル • Mach • BSD UNIX • IOKit • 基本ライブラリ • LibC • OpenSSL, zlib • コマンドラインツール • ls, cat, tcpdump • GCC, bison, flex... • CoreService ( の一部 ) • CoreFounation • OpenDirectory • Rendezvous アプリケーション Finder OS X 独自 Aqua Classic Cabon Cocoa CoreServices コマンドライン ツール ライブラリ Darwin カーネル Darwin BSD IOKit Machカーネル

  5. Darwin とは? • その気になれば、こういう事も、一応、可能 アプリケーション GNOME KDE Gtk + Qt XLib コマンドライン ツール ライブラリ Darwin カーネル BSD IOKit Machカーネル

  6. Darwin の入手方法 • Apple Developer Connection からダウンロード • Apple ID の入手 • Apple Developer Connection • .Mac • AppleStore • iTunes Music Store • APSL の承認 • Open Darwin 等からダウンロード • http://www.oopendarwin.org • http://www.gnu-darwin.org • etc...

  7. Darwin と OpenDarwin • OpenDarwin.org • Appleの配布物をベースに独自のOSとしてメンテナンス、リリースを行うコミュニティ • ISCや Apple が出資しているが、それら組織から独立性を保っている • インストール可能なDarwin の CDやフルセットのCVSツリーを提供 • Darwin として便利なツールの提供 • DarwinPorts • rync_hfs • darwine • Apple の Darwin に比べバージョンが少々古い • Apple Darwin : 7.5.5 ( Mac OS X 10.3.5 ) • Open Darwin : 7.2.1 ( AppleDarwin 7.2 ベース )

  8. Apple Developer Connection からのDarwin の取得 • Web ベースのソース閲覧 • tarball によるソースのダウンロード • ともに全てのソースにアクセス出来る • 履歴を追っかけにくい • CVS でのソースのダウンロード • SSH (APSLライセンスのもの) • pserver (それ以外のもの) • 履歴が追いかけやすい • 全てのソースがある訳ではない • 基本的にバイナリ配布はない • たまにインストールCDが配布される事がある

  9. Demo - download

  10. ソースのコンパイル方法 • Xcode でビルド • make

  11. Demo - build

  12. Darwin の利点 • (一部とはいえ) Mac OS X のソースコードが手に入る • ソースを見る自由 • ソースを直す自由

  13. ソースが手にはいると何が嬉しいか? • 挙動を調べる事ができる • OS X のバグを直す事ができる!! • Apple へ具体的な形でバグを示唆することができる • Mac OS X がよりよくなる • OS そのものの改善 • よりよい 3rd party のソフトウェアの開発促進

  14. Demo - mount_webdav

  15. Demo - mount_webdav (1) /* Either way, decoded_dir_ref contains a full uri, utf8_decoded * now lets get past the prefix for the uri we will put in the inode * cache */ cache_uri = &decoded_dir_ref[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = &cache_uri[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = strchr(after_dir_ref_hostname, '/');

  16. Demo - mount_webdav (2) /* Either way, decoded_dir_ref contains a full uri, utf8_decoded * now lets get past the prefix for the uri we will put in the inode * cache */ cache_uri = &decoded_dir_ref[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = &cache_uri[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = strchr(after_dir_ref_hostname, '/'); #define _WEBDAVPREFIX “http://” strlen(_WEBDAVPREFIX) == 7 7文字スキップ cache_uri http://water.local/dir01/subfolder/ http://water/dir01/subfolder/

  17. Demo - mount_webdav (3) /* Either way, decoded_dir_ref contains a full uri, utf8_decoded * now lets get past the prefix for the uri we will put in the inode * cache */ cache_uri = &decoded_dir_ref[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = &cache_uri[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = strchr(after_dir_ref_hostname, '/'); #define _WEBDAVPREFIX “http://” strlen(_WEBDAVPREFIX) == 7 cache_uri 7文字スキップ after_dir_ref_hostname http://water.local/dir01/subfolder/ http://water/dir01/subfolder/

  18. Demo - mount_webdav (4) /* Either way, decoded_dir_ref contains a full uri, utf8_decoded * now lets get past the prefix for the uri we will put in the inode * cache */ cache_uri = &decoded_dir_ref[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = &cache_uri[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = strchr(after_dir_ref_hostname, '/'); cache_uri after_dir_ref_hostname http://water.local/dir01/subfolder/ http://water/dir01/subfolder/

  19. Demo - mount_webdav (5) • PROPFINDに対して返されるフォルダ自身の情報が URL の解釈ミスでフォルダ自身ではなくファイルと認識される • 実際にアクセスするとそんなファイルはないためにアイコンが消える フォルダ一覧を要求 (PROPFIND) rbo water.local フォルダ内の一覧とフォルダ自身の情報を返答

  20. Demo - mount_webdav (6) /* Either way, decoded_dir_ref contains a full uri, utf8_decoded * now lets get past the prefix for the uri we will put in the inode * cache */ cache_uri = &decoded_dir_ref[strlen(_WEBDAVPREFIX)]; //after_dir_ref_hostname = &cache_uri[strlen(_WEBDAVPREFIX)]; after_dir_ref_hostname = strchr(cache_uri, '/'); cache_uri after_dir_ref_hostname http://water.local/dir01/subfolder/ http://water/dir01/subfolder/

  21. 直せたとしてどうするの? • 喜びましょう • Apple に報告しましょう • すると、みんなが幸せになれます

  22. Demo - BugReporter

  23. まとめ • Darwin : オープンソースになった Mac OS X の一部 • Apple のサイトなどからソースコードがダウンロードできる • ソースをアクセスすることで挙動や原理を知る • 自身のプロダクトへの反映させる事ができる • ソースをアクセスすることでバグを捕らえ、治せる • 具体的にバグレポートする事でバグが早期に直される(事もある) • Mac OS X がより良くなる

  24. See Also • Apple Developer Connection • http://developer.apple.com/ja/ • Darwin トップページ • http://developer.apple.com/darwin/ • CVS を使ったソースアクセス HOWTO • http://developer.apple.com/darwin/tools/cvs/howto.html • BugReporter • http://developer.apple.com/bugreporter/ • OpenDarwin • http://www.opendarwin.org/

More Related