ElementalX Kernel開発者Flar2氏インタビュー 前編

ElementalX カーネルの開発者である flar2 にインタビューし、彼の私生活や開発業務などのトピックを掘り下げます。

私は最近、有名な ElementalX カーネルと、彼のさらに人気のある ElementalX Kernel Manager アプリケーションの開発者である flar2 にインタビューすることができました。 彼は、次のような膨大な数のデバイス向けにカーネルのバージョンをリリースしました。 ワンプラス Nexus デバイス。

このパートでは、Android のパフォーマンスのボトルネックについての flar2 さんの考えや、私生活について詳しくお聞きします。 チェックアウトできます このインタビューのパート2はこちら.


ちょっと、そこ! 質問に入る前に、まず自己紹介をしてください。

私の名前はアーロン・セガールト、別名 flar2 です。 ほとんどの人は私を ElementalX カーネルの開発者として知っています。 アプリもいくつか持っています。

それまでにコンピューターや開発の経験はありましたか? コンピューターサイエンスの学位か何かのようなものですか?

私は幼い頃からコンピューターを使い始めました。 私の最初のコンピューターは Texas Instruments TI-99/4A でした。 私は BASIC でコードを書く方法を学び、自分のプログラムをカセットテープに保存しました (そうです、私は年をとりました)。 その後、家族が 286 IBM クローンを購入しました。その時点で私はコーディングから離れていました。 インターネットは広く知られていましたが、私にはリソースがなく、インターネットを持っている人を他に知りませんでした。 コンピューター。 私は大学でコンピューターサイエンスを始めましたが、1年目で落ちてしまいました。 楽しんだり、バンドでギグをしたりするのが忙しかったので、ほとんど授業には出ていませんでした。 その後、学校に戻り、社会学の博士号を取得しました。 学生時代に Linux とオープンソースに興味を持ちましたが、本格的なプログラミングにはあまり興味がありませんでした。 私はあちこちで小さな部分を提供しましたが、ほとんどは自分の目的のためにスクリプトと小さなプログラムを作成しただけでした。 私が最初の Linux カーネルを構築したのはおそらく 2002 年頃だと思います。 当時、私は独自のコードを書いておらず、パフォーマンスを向上させるためにさまざまなパッチやビルド オプションを試しただけでした。 私はコンピューターを構築したり、オーバークロックしたり、一般にハードウェアに想定されていないことを実行させようとしたりすることに興味がありました。

Android アプリ開発とカーネル開発以外に興味のある開発はありますか?

そうではありませんが、コンピューター上で必要なほぼすべてのことを実行できる優れたツールを見つけました。 私が Android 用のカーネルとアプリに取り組み始めた理由は、既存のツールに特定の機能の必要性と改善の余地があると感じたからです。 たとえば、私が Button Mapper を作成したのは、Samsung 製携帯電話のホーム キーにもっと多くの機能を持たせたかったからですが、戻るキーと最近のキーが逆になっているのが気に入らなかったからです。 他のシステム情報アプリでは、私が見たい情報が明確かつ簡潔に表示されなかったため、DevCheck を作成しました。 ElementalX カーネルは新しいハードウェア機能を追加し、EX カーネル マネージャーはそれらの機能を制御し、開発を容易にするために使用するいくつかのツールを追加します。 私は問題を解決するのが好きで、物事をリバース エンジニアリングしたり、電話に新しいハードウェア機能を追加したりするのは楽しい挑戦です。

Android 開発、特にカーネル開発とはどのようにして出会ったのですか?

私はずっと携帯電話が大嫌いで、長い間抵抗していました。 妻と私は、主に緊急時に使用する最小限のプランを備えた基本的な折りたたみ式携帯電話を共有しました。 2012年に自宅で火災が発生し、3か月近く停電しました。 公共料金はすべて遮断され、固定電話は再接続しないことにしたので、スマートフォンを購入しました。それはおそらく LG P のものだったと思います。 これはミニコンピューターのようなものだと気づき、自分専用のミニコンピューターが必要だと判断し、HTC One V を購入しました。

私はほとんどすべてのものをいじったり改造したりしているので、すぐに XDA を発見し、Android スマートフォンは Linux を実行できるだけでなく、オーバークロックできることを知りました。 私は長い間 Linux ユーザーだったので、カーネルの 1 つをフォークして、すっかり虜になってしまいました。 私はすぐに安価な Acer タブレットを入手し、USB OTG を搭載したかったのでそのハードウェアとカーネルをいじり始めました。 結局、そのハードウェアには能力がないことがわかりましたが、それが私がモバイル ハードウェアについてさらに学び始めたきっかけです。 私は LG、Acer タブレット、または One V のカーネルを公にリリースしたことはありませんでしたが、Android がまだ成熟していなかったので、それぞれに独自のカーネルを構築し、当時必要だったカスタム ROM をインストールしました。

私はすぐに One V を手放し、HTC One XL に買い替えました。そのときに ElementalX が誕生しました。

ElementalX の当初の目標は何でしたか? それは近年どのように変化しましたか?

ElementalX の目標は常に、安定性やパフォーマンスを損なうことなく便利なハードウェア機能を追加し、人々が作業に依存できるものをリリースすることでした。 携帯電話は信頼できるものである必要があるため、私は常に安定性を第一に考えています。 ランダムに再起動したり、カメラが動作しなくなったりすることはありません。 その哲学は何年にもわたって同じままです。 私は物事をシンプルに保ち、便利だと思うハードウェア機能を追加します。 ウェイクジェスチャー、高輝度モード、振動調整、サウンドコントロール、より多くのファイルシステムのサポート、ジョイスティックなど。

私は、カーネルを最新の状態に保ち、インストールが簡単で、可能な限り幅広い互換性を保つように努めています。 私が CAF やアップストリーム Linux からのパッチをあまり追加しないことに失望するユーザーもいますが、私の主な目標は、奇妙な問題のない非常に安定した製品を提供することです。 私のユーザーの多くは XDA に頻繁に投稿する人ではなく、特定のニーズを満たしているパワー ユーザーです カスタム カーネル、または時々ハードウェアをいじりたいがハードコアではない人々 フラッシュホリック。 最新の Android 開発をすべてフォローしていない人でも、問題なく ElementalX を使用できるようにしたいと考えています。

上流のパッチを試しているカーネルは他にもたくさんあります。 ElementalX では、慎重に選択されたパッチと最適化のセットを使用しています。 Android 以外のキャリアでは、測定が難しいものを測定し、証拠を使用してポリシーを構築し、アドバイスを提供しています。 私はカーネル開発にも同じ原則を適用しており、測定可能なメリットがない限り、通常はパッチを使用しません。 EX Kernel Manager のバッテリー モニターはこの例です。 これは、バッテリーの調整やカーネルの変更の影響を客観的に測定する方法を提供します。 DevCheck のフローティング モニターは、私が開発に使用するもう 1 つのツールで、主に CPU を監視するために使用されます。 ゲームやビデオやウェブの視聴など、さまざまな使用例での周波数と温度 ブラウジング。

過去数年間の Android への変更はあなたの仕事にどのような影響を与えましたか?

多くのセキュリティ変更に対処するのが難しい場合もありますが、私はそれらを理解しています。 確か、現在では Windows よりも Android の方が広く使われているので、ターゲットになっていると思います。 悪い人たちは、あらゆる角度から Android ユーザーを搾取しようとします。

システム パーティションの変更を防止することが、デバイスの完全性を保護するための鍵であることは明らかです。 2012 年か 2013 年に HTC がこれを始めたときのことを覚えていますが、それは世界の終わりのように思えました。 当時、/system への書き込みは、root、build.prop の編集、特権アプリのインストール、ブロートウェアの削除、およびほとんどすべての人気のある MOD に必要でした。 当時のカスタマイズの多くには、デオデックスやフレームワークの変更などが含まれていました。 長い間、HTC からカーネル ソースが入手できなかったため、ストック カーネルのシステム書き込み保護を無効にするカーネル モジュールを作成しました。これにより、私は初めて開発者として有名になりました。 しかし、時間が経つにつれて、verity のような保護機能が Android の標準部分になるにつれて、イノベーションとより良いものを強いられるようになりました。 Chainfire のシステムレス ルートのようなソリューションがあり、今ではあらゆる種類のことを行う Magisk が存在します。 システムレス的に。

もう 1 つの大きな問題は SELinux で、これにより大量のアプリが動作しなくなりました。 多くのユーザーはこれを嫌っていましたが、今でも SELinux を許可モードで実行している人がいますが、これは非常に悪い考えです。 SELinux は Android の最も重要なセキュリティ機能だと思います。 SELinux の重要性の例を挙げると、私が最初に Pixel XL を入手したとき、利用可能なルートはありませんでしたが、Dirty Cow エクスプロイトがニュースになっていました。 私はカーネル開発を始めたいと思っていました。つまり、sysfs ファイルを検索したり変更したりする必要があり、これには root が必要です。 Dirty Cow の概念実証の 1 つをコンパイルし、root としてコマンドを実行できましたが、SELinux のせいで興味深いことは何もできませんでした。 SELinux を許可するために boot.img を変更する必要がありました。 カーネルを変更せずにフル アクセスを達成できたかもしれませんが、それには何時間もかかっていたでしょう。 以上のことから、SELinux の強制はそのままにしておき、それがマルウェアに対する主な防御線となります。 sepolicy-inject を使用して、必要に応じて特定のポリシーを変更する方法を学習します。

Nougat が登場したとき、当初はほぼすべての /sys と /proc がユーザー アプリから見えなくなりました。 変更を加えるには常に root が必要でしたが、/sys と /proc を読み取るためだけに root が突然必要になりました。 これらのファイルシステムにはデバイスの悪用に使用できる情報が確実に存在するため、制限を追加する必要がありました。 しかし、ユーザーが見ることができるべき情報もたくさんあります。 現在の I/O スケジューラ、GPU 周波数、またはパネル ハードウェアのタイプを確認するために root が必要なのはなぜですか? これに対処するために DevCheck に多くの変更を加える必要がありましたが、Nougat に更新した後に情報が利用できなくなった理由について多くのユーザーが混乱していました。 最終的に、sysfs パスに対する制限の一部が解除されました。

それ以外では、アプリ開発の観点から見ると、たとえアプリに多くの変更を加える必要があるとしても、Android に対する API の変更のほとんどは気に入っています。 これらの変化は通常、良い方向に進みます。


このインタビューのパート 2 をご覧ください。