Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Fireduck

2,640 views

Published on

Fireduck OS project

Published in: Mobile
  • Be the first to comment

Fireduck

  1. 1. Fireduck OS 東海道LUG有志によるLinuxディストリビューションプロジェクト
  2. 2. 事の始まりは • 事の始まりは、東海道LUG懇親会での3人の雑談 プライバシー保護のため、名前を伏せてお送りしています。 モバイル向けのLinuxディストロがAndroidだけでは 面白くない。タブレット向けを作りたい!! 某おーぷんこここんメンテナー 某タブレットでLinuxを動かす第一人者 某組み込みLinux/Yoctoマニア
  3. 3. とりあえず基盤づくり • GitHubに、東海道LUGのorganizationを(勝手に)作成 • 事のはじまりの3人が全員GitHubアカウントを持っていたので、共同開発 の場としてorganizationを作成 • 共有リポジトリは、メンバーならだれでも直接pushできる点が良い • メンテナーがいちいちプルリクエストを処理しなくていい • Tokaido LUG関係者の参加を募集中です • 希望者には招待を飛ばしますので教えてください • Organizationのページから直接参加リクエストを出せるようにする方法を 知っていたら教えてください。。。
  4. 4. なぜFireduck OSか? • 東海道LUGといえば○○焼き • きつね焼き? • Fire fox ? → どこかで聞いたことがある・・・・ • 鹿焼き? • Fire deer ? → なんかdeerがビールみたいだ • アヒル焼き? • Fire duck ? → これだ!
  5. 5. そういえば • 自己紹介 • 名前: wata2ki (watatuki) • 東海道LUG一般参加者です • 決して逸般ではありません!! • 元はハードウェアで画像処理をやっていましたが、現在は組み込み屋を やっています • たまに背広を着てLinux/組み込み系のイベントに出没することがあります • Fireduck OSの開発プロジェクトに参加しています • 今日はその発表です • GitHub • https://github.com/watatuki
  6. 6. Fireduck OSで目指したい物 • Fireduck OSはタブレット向けLinuxディストリビューションを目指す • タブレット向けのUIを採用/開発する • タブレットの物理サイズ(7~9インチ)に合わせたUI • ソフトキーボード等ディスクトップLinuxにはない機能の搭載 • Linuxのアプリケーションが動かせる • ウインドウマネージャはX.orgかwayland? • ARMタブレットはGPUドライバが入手できない事が多いので、GPUがなく ても使えるように • コマンドラインはどうしよう • いろいろなタブレットに乗せられるようにしたい • Intelタブレット最大の課題、UEFI32 bootに対応する • ARMタブレットはbootローダやカーネルがばらばらなので、個体にあった 動作イメージを作ることができるようにする
  7. 7. Fireduck OSの構成管理 • Fireduck OSは、ビルドシステムにYocto/Openembededを採用 • ベースは2016夏のLILO東海道で発表したrepo/bitbakeの階層管理構成 • https://www.slideshare.net/wata2ki/yoctodistro • 複数のボード(intel-mobile, jetson-tk1, allwiner)に対応できるよう、セット アップスクリプトを追加 • ベース(パクりもと)は AGL • https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta- agl.git;a=tree;f=scripts;h=29553138674570a102f7e4c5d3c0a75e549da9a1;hb=HEAD • ビルドまで4コマンド • repo init -u https://github.com/TokaidoLUG/fireduckos • repo sync • source meta-fireduck/scripts/fireducksetup.sh -m intel-mobile-64 • bitbake fireduck-image
  8. 8. Fireduck OSのレイヤアーキテクチャ • Fireduck OSは、Yoctoをベースに汎用レイヤを束ねる構成 • meta-openemmbeded • 汎用パッケージの集合体 • meta-browser • web browserのレイヤで、firefoxのビルドに使用 • meta-efl-rebuilding • メンテナンスが止まっているenlightenment/eflのサポートレイヤmeta-eflを再構築 して最新バージョンに追従するようにしたもの • BSP-Layer • meta-intelやmeta-jetson-tk1等ボード依存のカーネルやイメージ作成機能を提供 • meta-fireduck • Fireduck OSの共通構成や共通設定を担う • Fireduck-bsplayer • 各ボード向けのFireduck OS カスタム設定を担う meta-openemmbeded meta-efl-rebuilding meta-browser BSP-layer ・・・ Fireduck OS Fireduck OSプロジェクトでは、 Fireduck OS固有レイヤ、必要と する汎用レイヤの2種類を開発 対象としている
  9. 9. Fireduck OSのソフトアーキテクチャ Fireduck core Sys. Management systemd cgroups Graphics X.org Sound Network OpenGL/GLX GLES/EGL ALSA(back end) Jack audio Network Manager Media gstreamer libav Fireduck Framework Window Managemer Enlightenment UI ToolKit dfl/rpm efl GTK Web Gecko Embedded runtime ruby Fireduck Application mikutter 始まったばかりなので、 まだまだです!
  10. 10. Fireduck OSの悩み事 • Systemd vs Sysvinit • 機能を考えるとInitはsystemdになるが、jounaldが邪魔(なんでもかんでも 吸い込むから重いよ!!)など、課題も多い • Enlightenment-mobile • GNOME/KDEではないものを、ということでEnlightenmentを採用したが、 mobileプロファイルが存在するだけだった(壁紙が表示されるだけのディ スクトップ)。 • Jack vs Pulseaudio • Pulseaudoは個人的に苦労したことがあるのでJackを選択。ただ、 Enlightenmentと連動しなさそう&適当なUIがない。。。 • OSMのアプリなんかないかな。。。 • こんなのがあるよ、とかあれば教えてください!
  11. 11. ケーススタディ UEFI32 -1 • Fireduck OSの開発アイテムで、Yocto/oeでUEFI 32のサポートがある • UEFI 32サポートのために必要な開発項目 • bootia32.efiのビルド • grub-efiの32bitビルド • 課題:ターゲットが64bit(AMD64)の状態で32bit Buildが必要 • Yocto/OEでは、レシピはアーキテクチャ設定を持たず、設定ファイル (conf)でアーキテクチャを決める • 無理やりレシピにパッチを当てれば32bitビルドができなくはないが、今 度は64bitのビルドができなくなる • Multilib拡張を使用する
  12. 12. ケーススタディ UEFI32 -2 • multilibとは? • Linuxの64bit環境で32bitのアプリケーションをビルド・実行するために用 いる、32bitライブラリ • Yocto/OEのmultilib拡張 • Yocto/OEでmultilib環境をつくるのに使う機能 • つまり、64bit環境で32bitができる環境 • 参考: • http://www.yoctoproject.org/docs/current/dev-manual/dev- manual.html#combining-multiple-versions-library-files-into-one-image これを使えばできるんじゃね??
  13. 13. ケーススタディ UEFI32 -3 • multilib設定を置くのに適しているのはMACHNE設定なので、新規にmeta- intel-mobileを作成 • Intelが作っているmeta-intelを拡張するレイヤとして作成 • 本当はmeta-intlのいろいろなレシピをカスタムして使うつもりだったのですが、 現状MACHINE設定しかないレイヤになってしまっている。。。 • UEFI32をサポートするMACHINE設定はintel-mobile-64.conf • multilibのための設定 require conf/machine/intel-corei7-64.conf require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "x86" MACHINE_EXTRA_RRECOMMENDS += " lib32-grub-efi lib32-systemd-boot " EFI_PROVIDER = "grub-efi" Intel-corei7-64(meta-intel)の設定を継承 multilibの設定をインポート multilibのプレフィクス(lib32)を指定 multilib(lib32)をビルドする場合に使うアー キテクチャ設定をx86に設定 grub-efiとsystemd-bootのlib32版をintel-mobile-64を選択 した場合に常にビルド・インストールする設定
  14. 14. ケーススタディ UEFI32 -3 • 試行結果 • lib32を使うことで、bootia32.efiとgrub-efiの32bitビルドに成功 • 課題 • ターゲットイメージのうち、wicイメージ以外にはbootia32.efiとgrub-efiが インストールされない • wicはmeta-intelの追加機能なのでイメージを作る仕組みを解析して、他の形 式でもインストールできる必要がある • ビルドが遅い • 32bitビルドをするために、glibcなどのビルドに時間がかかるコンポーネン トがビルド対象になってしまうため、ビルド時間が長くなってしまう • 不要なものが極力ビルドされないようにする調査が必要 • 実例と参考 • 今回のレイヤはgithubで公開中 • https://github.com/TokaidoLUG/meta-intel-mobile • 最近LineoさんがYoctoのコミュニティを作っており、参考になります • https://yoctobbq.lineo.co.jp/
  15. 15. 参加をお待ちしております!

×