Nokia N900上のMonoおよびWindowsフォーム? はい、質問なし!

この素晴らしいデバイスのリポジトリにモノが表示されていないことに少し驚いた。 しかし、それは必死に必要だったので、私はそれをすべて同じように集めることに決めました。 そして、Maem SDKの非常に面白い機能に遭遇しましたが、これを行うことができませんでした。 しかし、まず最初に。 その間、何が起こったかの小さな画面:

画像



デバイスの通常のエミュレーターとアセンブリ用のツールチェーンの代わりに、ノキアのスタッフはこのビジネスにスクラッチボックスを適合させ、qemu-userを使用して、現在のOSのカーネルで直接アームバイナリを起動します。 そして、もしそれがうまくいくなら、すべてが素晴らしいでしょう。 実際、ビルド中にqemuは「サポートされていないsyscall 242」を生成し、その後ビルドは停止します。 モノは、ブートストラップ手順の最高の伝統(靴ひもで自分を持ち上げる)で、最初にコンパイラをコンパイルし、残りのすべてを使用するため、通常のクロスコンパイラでは何もすることが困難です。 これをデバイス上でコンパイルするだけでは対処方法はあまり明確ではありませんが、そこには何年もかかります。 N800モノの場合、一部のヒーローは組み立てることができましたが、n900での作業を拒否し、SIGSEGVで落ちました。 誰かがこの問題の解決方法に興味がある場合、または自分でデバイスのモノに触れることができる場合(その場合はVisual Studioに直接書き込むことができます)、猫を求めます。





始めるために、 それがうまくいかなかった方法を説明します。 それにもかかわらず、実験が得られ、その情報は非常に役立ちます。

SDKについては説明しません。インストールと構成については多くのことが書かれています。



最初のくそ。 デバイスでコンパイルします。



  1. /etc/apt/sources.listを次の形式にします。

    deb http_s_://downloads.maemo.nokia.com/fremantle/ssu/apps/ ./

    deb http_s_://downloads.maemo.nokia.com/fremantle/ssu/002 ./

    deb http_s_://downloads.maemo.nokia.com/fremantle1.2/ovi/ ./



    deb http_://repository.maemo.org/extras/ fremantle-1.3 free non-free

    deb http_://repository.maemo.org/extras-testing/ fremantle-1.3 free non-free

    deb http_://repository.maemo.org/extras-devel/ fremantle-1.3 free non-free



    deb http_://repository.maemo.org/ fremantle/sdk free non-free

    deb http_://repository.maemo.org/ fremantle/tools free non-free




    _リンクから削除します。これは、パーサーが吸盤であり、コードタグさえも理解しないという単純な理由のためです。
  2. build-essential、bison、gettext、m4を配置します
  3. ./configure && make && make install
  4. プロセスには数十年かかることを認識しており、他の方法を探しています




2番目のくそ。 エミュレーターでコンパイルします。



開始するには、切り取られていないrootfs自体を取り出す必要があります。 2つの方法があります。 最初に、フラッシャー(flasher-3.5 -u -F IMAGE)でファームウェアを解凍し、rootfs.jffsをマウントできます。 ちなみに、実際にはjffではなくubifsがあります。 このマニュアルでここに行きました。



ここで説明するように、回復システムをロードすることもできます 。 そこで、彼らはセクションを移動するためにこの画像を使用しますが、私たちはそれを必要としません。 その後、内部コンソールでmount -t ubifs ubi:rootfs / mntを実行し、すべてをUSBフラッシュドライブにマージします。 ちなみに、適切なバックアップ方法を強くお勧めします。



さらにマニュアルでは、qemuのubuntuのイメージを作成します。



生活を楽にし、腕の環境にchrootする機会を得るには、qemu-kvm-extras-staticパッケージが必要です。 / usr / bin / qemu-arm-staticをインストールした後、システムの/ binにコピーし、chrootが魔法のように動作を開始します。 これがどのように起こるかに興味がある人は、binfmt_miscとLinuxでできるその他の利点について読むことができます。 理論的には、これはchroot環境のubuntu x86デバイスで開始でき、そこでワインを開始できます。 ただし、サポートされていないすべての同じシステムコールに遭遇するため、ほとんどの場合機能しません。



マウントし、maemoディレクトリを作成し、ダビングしたイメージを展開してから、最初のパンケーキのすべてを展開します。



その結果、コンパイル中にmcsが内部エラーでクラッシュし始め、それに対して私ができることは何もありませんでした。 それにもかかわらず、ビルド環境はスクラッチボックスから独立して取得されました(他のすべてに加えて、i386専用です )。



ついに成功!



3日目に、警戒の目は納屋に壁がなかったことに気づいた。 つまり、ほぼすべてのモノはマネージドDLLであり、どのプラットフォームで起動してもまったく同じです。 その結果、次の計画が成熟しました。



  1. apt-srcのインストールにより、生のモノを引き出します。 同時に、それらはすでにパッケージに配置されているため、後で配置するのに便利です。
  2. ディレクトリの内容をDebianアセンブリスクリプトでcontents笑して、すべてのファイルが/ optにあるようにします(Nokiaでは、誰も知らない場合は非常に小さなrootfsがあります)
  3. amd64で収集します
  4. p。2からchroot環境でプラットフォームに依存するバイナリを収集します(エラーは再びスクラッチボックスに入り、理解できませんでした)
  5. これらのバイナリを変更し、依存関係を修正し、松葉杖を挿入するパッケージを徹底的にat笑します




実際、第4ステップは、オプション--disable-mcs-buildの存在によって促進されました。このオプションは、そのような場合のためにNovellの叔父が特別に考案したものです。 今回は(5回失敗した後!)アセンブリプロセスについては説明しません。非常に簡単なことがわかりました。



Maemoとubuntのパッケージセットとライブラリのバージョンは多少異なるため、入手する必要がありました。 しかし、それは価値があります../configure && makeで生成される260メートルのtarballの代わりに、パッケージに散在するライブラリの通常のシステム(まだ完全ではありませんが、作業中です)をデバイスに転送することができました。 実際、パケットウェイト12で約27メートル/オプトでモノラルになりました。さらに、ほぼすべての.NET 2.0が利用可能になりました。

System.dll、System.ServiceProcess.dll、System.Drawing.Design.dll、System.Transactions.dll、mscorlib.dll、System.Drawing.dll、System.EnterpriseServices.dll、System.Web.dll、System.ComponentModel。 DataAnnotations.dll、System.IdentityModel.dll、System.Web.DynamicData.dll、Mono.Data.SqliteClient.dll、System.Configuration.dll、System.IdentityModel.Selectors.dll、System.Web.Extensions.Design.dll、 Mono.Data.Sqlite.dll、System.Configuration.Install.dll、System.Management.dll、System.Web.Extensions.dll、System.Core.dll、System.Messaging.dll、System.Web.Routing.dll、 System.Data.DataSetExtensions.dll、System.Runtime.Serialization.dll、System.Web.Services.dll、Mono.Messaging.dll、System.Data.dll、System.Security.dll、System.Windows.Forms.dll、 System.Data.Linq.dll、System.ServiceModel.dll、System.Xml.dll、Mono.Security.dll、System.Design.dll、System.ServiceModel.Web.dll、System.Xml.Linq.dll




次の行をsources.listに追加することで、この奇跡をデバイスにインストールできます。

deb http_://archive.kebrum.com/n900/ all main





パッケージlibmono-winforms2.0-cilをインストールすると、他のすべてがプルされます。 残念ながら、まだ午前4時になっているため、まだパッケージを転送していませんが、後でそれを実行することを確認します(gtkソフトウェアを転送する必要があります)。



誰かがこのビルドを使用してソフトウェアをN900のC#に転送したい場合は、必ず連絡してください。



また、句読点を使用したスペルを厳密に判断しないでください。夜は庭にあり、目は赤く、本当に眠りたいです。そして、私はかろうじてキーに乗ります。



UPD:クローバーと何らかの母親の助けを借りて、GTK#が譲渡されました(まだすべてではありません)。 さて、mono-develパッケージに必要な、このような健全なモノです。



All Articles