Fireduck OS
東海道LUG有志によるLinuxディストリビューションプロジェクト
事の始まりは
• 事の始まりは、東海道LUG懇親会での3人の雑談
プライバシー保護のため、名前を伏せてお送りしています。
モバイル向けのLinuxディストロがAndroidだけでは
面白くない。タブレット向けを作りたい!!
某おーぷんこここんメンテナー
某タブレットでLinuxを動かす第一人者
某組み込みLinux/Yoctoマニア
とりあえず基盤づくり
• GitHubに、東海道LUGのorganizationを(勝手に)作成
• 事のはじまりの3人が全員GitHubアカウントを持っていたので、共同開発
の場としてorganizationを作成
• 共有リポジトリは、メンバーならだれでも直接pushできる点が良い
• メンテナーがいちいちプルリクエストを処理しなくていい
• Tokaido LUG関係者の参加を募集中です
• 希望者には招待を飛ばしますので教えてください
• Organizationのページから直接参加リクエストを出せるようにする方法を
知っていたら教えてください。。。
なぜFireduck OSか?
• 東海道LUGといえば○○焼き
• きつね焼き?
• Fire fox ? → どこかで聞いたことがある・・・・
• 鹿焼き?
• Fire deer ? → なんかdeerがビールみたいだ
• アヒル焼き?
• Fire duck ? → これだ!
そういえば
• 自己紹介
• 名前: wata2ki (watatuki)
• 東海道LUG一般参加者です
• 決して逸般ではありません!!
• 元はハードウェアで画像処理をやっていましたが、現在は組み込み屋を
やっています
• たまに背広を着てLinux/組み込み系のイベントに出没することがあります
• Fireduck OSの開発プロジェクトに参加しています
• 今日はその発表です
• GitHub
• https://github.com/watatuki
Fireduck OSで目指したい物
• Fireduck OSはタブレット向けLinuxディストリビューションを目指す
• タブレット向けのUIを採用/開発する
• タブレットの物理サイズ(7~9インチ)に合わせたUI
• ソフトキーボード等ディスクトップLinuxにはない機能の搭載
• Linuxのアプリケーションが動かせる
• ウインドウマネージャはX.orgかwayland?
• ARMタブレットはGPUドライバが入手できない事が多いので、GPUがなく
ても使えるように
• コマンドラインはどうしよう
• いろいろなタブレットに乗せられるようにしたい
• Intelタブレット最大の課題、UEFI32 bootに対応する
• ARMタブレットはbootローダやカーネルがばらばらなので、個体にあった
動作イメージを作ることができるようにする
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
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種類を開発
対象としている
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
始まったばかりなので、
まだまだです!
Fireduck OSの悩み事
• Systemd vs Sysvinit
• 機能を考えるとInitはsystemdになるが、jounaldが邪魔(なんでもかんでも
吸い込むから重いよ!!)など、課題も多い
• Enlightenment-mobile
• GNOME/KDEではないものを、ということでEnlightenmentを採用したが、
mobileプロファイルが存在するだけだった(壁紙が表示されるだけのディ
スクトップ)。
• Jack vs Pulseaudio
• Pulseaudoは個人的に苦労したことがあるのでJackを選択。ただ、
Enlightenmentと連動しなさそう&適当なUIがない。。。
• OSMのアプリなんかないかな。。。
• こんなのがあるよ、とかあれば教えてください!
ケーススタディ 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拡張を使用する
ケーススタディ 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
これを使えばできるんじゃね??
ケーススタディ 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を選択
した場合に常にビルド・インストールする設定
ケーススタディ 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/
参加をお待ちしております!

Fireduck

  • 1.
  • 2.
  • 3.
    とりあえず基盤づくり • GitHubに、東海道LUGのorganizationを(勝手に)作成 • 事のはじまりの3人が全員GitHubアカウントを持っていたので、共同開発 の場としてorganizationを作成 •共有リポジトリは、メンバーならだれでも直接pushできる点が良い • メンテナーがいちいちプルリクエストを処理しなくていい • Tokaido LUG関係者の参加を募集中です • 希望者には招待を飛ばしますので教えてください • Organizationのページから直接参加リクエストを出せるようにする方法を 知っていたら教えてください。。。
  • 4.
    なぜFireduck OSか? • 東海道LUGといえば○○焼き •きつね焼き? • Fire fox ? → どこかで聞いたことがある・・・・ • 鹿焼き? • Fire deer ? → なんかdeerがビールみたいだ • アヒル焼き? • Fire duck ? → これだ!
  • 5.
    そういえば • 自己紹介 • 名前:wata2ki (watatuki) • 東海道LUG一般参加者です • 決して逸般ではありません!! • 元はハードウェアで画像処理をやっていましたが、現在は組み込み屋を やっています • たまに背広を着てLinux/組み込み系のイベントに出没することがあります • Fireduck OSの開発プロジェクトに参加しています • 今日はその発表です • GitHub • https://github.com/watatuki
  • 6.
    Fireduck OSで目指したい物 • FireduckOSはタブレット向けLinuxディストリビューションを目指す • タブレット向けのUIを採用/開発する • タブレットの物理サイズ(7~9インチ)に合わせたUI • ソフトキーボード等ディスクトップLinuxにはない機能の搭載 • Linuxのアプリケーションが動かせる • ウインドウマネージャはX.orgかwayland? • ARMタブレットはGPUドライバが入手できない事が多いので、GPUがなく ても使えるように • コマンドラインはどうしよう • いろいろなタブレットに乗せられるようにしたい • Intelタブレット最大の課題、UEFI32 bootに対応する • ARMタブレットはbootローダやカーネルがばらばらなので、個体にあった 動作イメージを作ることができるようにする
  • 7.
    Fireduck OSの構成管理 • FireduckOSは、ビルドシステムに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.
    Fireduck OSのレイヤアーキテクチャ • FireduckOSは、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.
    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.
    Fireduck OSの悩み事 • Systemdvs Sysvinit • 機能を考えるとInitはsystemdになるが、jounaldが邪魔(なんでもかんでも 吸い込むから重いよ!!)など、課題も多い • Enlightenment-mobile • GNOME/KDEではないものを、ということでEnlightenmentを採用したが、 mobileプロファイルが存在するだけだった(壁紙が表示されるだけのディ スクトップ)。 • Jack vs Pulseaudio • Pulseaudoは個人的に苦労したことがあるのでJackを選択。ただ、 Enlightenmentと連動しなさそう&適当なUIがない。。。 • OSMのアプリなんかないかな。。。 • こんなのがあるよ、とかあれば教えてください!
  • 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.
    ケーススタディ 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.
    ケーススタディ 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.
    ケーススタディ 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.