GNU / LinuxおよびRockchip 2918デバイス

まず、少しの背景。 GV2Bメディアプレーヤーでのストーリーの小さな続き。これについては、前にtu / tで説明しました。 最初は、このボックスはテレビのAndroidセットトップボックスとして購入されたのではなく 、4月にアプリケーションを残したが8月にしか届かないRaspberry Piのより強力な代替品として購入されたことを思い出させてください。 そして、GV2Bは注文から8日後に私の手元にあり、わずか100ドルで、ケーブル一式(充電、コード、ケース付きのRaspberry Piキットよりもわずか5ドル高い)でした。
YoutubeやPlayと共にインストールされた他のアプリケーションが正常に機能し、デバイスにこれ以上の欠点は見つからなかったという以前の投稿から、意地悪な人々を安心させます。

最近では、Puppy Linux、Arch Linux、UbuntuがARMデバイスにどのようにインストールされたかを説明するトピックがいくつか登場しました。 これはAllwinner A10のユニークな機能であり、過小評価することは困難ですが、システムは内蔵フラッシュではなく、SDカードから物理的に起動されます。 私はこの問題にもっと積極的に取り組み始め、デバイスのフラッシュメモリに何かをフラッシュするための3つの方法に出会いました。これは励みになり、おそらく、本格的なGNU / Linuxを埋めるための抜け穴を開きます。 this慢なことに、これはSDカードからわずかにドッピングされた画像の通常の起動後の次のステップであることに注意してください。

目的


-デバイスにLinuxカーネルをインストールします。 最新のものが望ましい。 または、すべてのデバイス固有のドライバーを含む最新のもの。
-GNUを置きます。
-デスクトップ環境を置きます。
-何か問題が発生した場合にデバイスを元の状態に戻すことができるように、バックアップを作成します。
-チャレンジを楽しんでください(WiiにUSBダウンローダーの最初のバージョンをインストールし、NetHackまたはDwarf Fortressを通過するのに匹敵します)。

手段


Rockchip 2918(略してRK29)(CPU ARM Cortex A8 1GHz + GPU Vivante GC800 600MHz)をベースにした未知の中国メーカーのGV-2Bデバイス、4GBフラッシュメモリ、512MB RAM、および多数のコネクタ。
SDカード16GBクラス10。
Arch Linuxを搭載したPC。
キーボード
モニター
モニターを接続するためのHDMI-DVIコード。
多数のUSBコード、アダプターなど。

注意と自己不満


確かに多くの読者は、トピックで説明されていること、または少なくとも特定の部分をより速く、より良くしたでしょうが、ネットワークの広大さでそのような偉業についての言及は見つかりませんでした。 トピックには多くの実践と非常に少ない理論が含まれていますが、議論されていることと起こっていることを理解するために最も必要なものだけです(正直に言うと、私と説明された領域の理論自体では十分ではありません)。 学術的な観点から、彼は3時間の実験室作業に引き付けられます。 また、デスクトップコンピューターにプレインストールされたUbuntuのディスクとPC104 x86互換のシングルボードの接続を除外すると、初めてこのすべてを行うことになります。

デバイス選択


Gラインナップには 、異なるプロセッサ上に、異なる数のコネクタを備えた約20の異なるデバイスがありますが、機能はほぼ同じです。

最初はAllwinner A10でデバイスを使用しなかったのではないかと心配していましたが、カーネルソースのオープン性に関するいくつかのレビューを読んだ後、Rockchipの場合、状況はそれほど悪くないことに気付きました。

同じモデル範囲のデバイスを注文するオプションがありましたが、Cortex A9、つまりAmLogic 8726-Mで既に使用されていましたが、Rockchip 2918よりも異常な利点はなく、AmLogic Webサイトによると、最新のチップのソースコードもあります悲しいことに。

方法


そのため、デバイスのファームウェア(同じ4GBフラッシュメモリの内容)を更新する3つの方法が見つかりました。

1つ目-GVラインOEMモデルのいずれかを使用しているメーカーの場合、動作しませんでした。ファームウェアは3つのUSBポートを備えたわずかに異なるデバイス用であり、両者の違いは非常に深刻であるため、通常はファームウェアがデバイスを回すレンガに。

残り2つです。 2つ目は、 AndroidForumsを使用するハッカーの場合、電源ボタンを数秒間押したまま、ボックス内にある追加の2つ目のリセットボタンをクリックする必要があるということです。 この方法は、興味深い機能、すなわちAndroidシステム回復ユーティリティv1.3.37メニュー(明らかに1337 )を開きました。
-今すぐシステムを再起動します
-工場出荷時リセット
-システム回復
-SDCARDからの更新
-uDiskからの更新
-工場テスト



残念なことに、デバイスに接続され、Androidをロードした後でも正常に動作するキーボードは、システム回復メニュー、およびボード上の3つのボタン(電源、リセット、まだリセット)には影響しませんでした。リセット。これにより、デフォルトのアクティブアイテムのリブートシステムが選択されるか、単に意図した目的で機能するようになりました。 残りのカーソルボタンは、残念ながら移動しませんでした。 この方法は、SDメモリカードからファームウェアを正確に入力することでしたが、どの方法でも機能しませんでした。

fat32でSDカードをフォーマットした後、ファイルストレージからほとんどダウンロードしなかったAndroid用のダウンロードされた更新プログラムを注ぎました(神様、Dropboxについて聞いていないのですか?) 通常の起動時に、Androidは間違ったupdate.imgがSDカードにあると呪いました。 しかし、バックアップはstill病者によって行われるだけでなく、ある著者が獲得した1つまたは別のupdate.imgを同様のデバイスに注ぐと、別の著者からレンガに変わることが頻繁に報告されたため、私はまだそれを満たそうとしませんでした。

三番目の方法の 息子は、私がやろうとしていたことに近いことが判明しました 。 これは、USBケーブルを使用してデバイスをコンピューターに接続することにありました。

最初は、システム回復モードでは、必要なすべてのワイヤを適切な場所に接続したにもかかわらず、USBを介して対向電源を4.57Vおよび5.08Vに向けたにもかかわらず、コンピュータからデバイスがまったく検出されなかったことは非常に恥ずかしかったです結果にならなかった)。 後で判明したように、そうする必要があります。なぜなら、彼らはそこに独自のプロトコルを持っているからであり、外部メディアの接続との違いは重要です。

Windowsで、Rockchip Flasherツールが発見されました。これは、言語がすばらしいと呼ぶことはありません。なぜなら、それはひどく行われたため、新しいupdate.imgをフラッシュすることしかできないからです。 しかし、何かが突然うまくいかなかった場合に備えて、フラッシュするだけでなく、既存のものをダウンロードする必要があったため、中国のプログラマーの仕事を拒否しなければなりませんでした。

足で、ところで、あなたは注意する必要があります。


バックアップ


何か問題が発生した場合、フラッシュメモリに保存されているすべてのものを保存して、すべてを元のバージョンに復元できるようにします。 これにはいくつかの異なる方法があります。

チタンのバックアップ 。 システムパーティションの写真を撮り、SDカードにコピーできるAndroidアプリケーション。 すべて問題ありませんが、このためにデバイスをルート化する必要があります(管理者権限を取得します)。 Android 2.3.1でデバイスをルート化するために、Universal Androotはもはや適切ではなく、その著者は、HTC電話にのみ適したUnrevokedを使用するすべての人に適しているがデバイスをルート化するSuperOneClickを使用することを選択することを提案しますコードでWindowsコンピューターに接続する必要があります。 すべてがいいでしょうが、彼はファームウェアをダウンロードし、そこにいくつかのファイルを追加し、それをアップロードし直します。 バックアップコピーを作成するためにファームウェアを変更するのは狂気です。

Android SDKのAndroid Debug Bridgeを引き続き活用しましたが、これはこの特定のデバイスで動作するという事実ではなく、かなりの数の依存関係を引き継いでいたので、まったく望みませんでした。 それ以外は、ソースからこれらすべてを収集する必要がありました(Arch LinuxのAURを読んでください)。

すでに悲しいことでしたが、突然、 ここで発表された素晴らしいユーティリティRK29kitchenを見つけました。これは、説明から判断すると、USBを介してトリッキーなデバイス通信プロトコルを分解した作者から他の多くの素晴らしいユーティリティを吸収し、パーティションテーブルを備えたややトリッキーなファイルです。

打ち上げ


それほど単純ではないことが判明しました。 デバイスはシステム回復モードではなく、オフ状態である必要がありますが、常に電源がオンになっている必要があります。 問題は、USB経由で接続されたことを検知するとすぐに電源をオンにしようとすることです。 しかし、これは制御できます。 両方のリセットボタンを5秒間押したまま、最初に内部ボタンを離し、3秒後に内部ボタンを離します。 私は立ち上げて辛抱強くなろうとします。
$ ./flashdump.sh Check that your tablet is in the firmware flash mode and connected to computer rkflashtool: info: interface claimed rkflashtool: info: reading flash memory at offset 0x00000100 unpacking...OK Dumping misc (rkflashtool29 r 0x00002000 0x00002000 ) Dumping kernel (rkflashtool29 r 0x00004000 0x00004000 ) Dumping boot (rkflashtool29 r 0x00008000 0x00002000 ) Dumping recovery (rkflashtool29 r 0x0000a000 0x00004000 ) Dumping system (rkflashtool29 r 0x0000e000 0x00080000 ) Dumping backup (rkflashtool29 r 0x0008e000 0x00082000 ) 

少し紛らわしいのは、flashdumpのソースコードが次のように言っていることです。
 rkflashtool29 r 0 0x200 

そして結論として:
 reading flash memory at offset 0x00000100 

parm.imgの読み取り元が完全に明確ではありません。

したがって、5〜10分間とゴールデンキーで 、フラッシュメモリのイメージをすべてのセクションから完全に個別に取得します。
 $ ls -l flashdump/Image/ 4194304 Jun 29 18:15 boot.img 8388608 Jun 29 18:15 kernel.img 4194304 Jun 29 18:14 misc.img 8388608 Jun 29 18:16 recovery.img 268435456 Jun 29 18:18 system.img $ ls -l flashdump 272629760 Jun 29 18:21 backup.img 4096 Jun 29 18:16 Image 583 Jun 29 18:13 parameter 262144 Jun 29 18:13 parm.img 

どうしたの? RK29kitchenのフォーラムとソースコードを詳しく調べると、デバイスのフラッシュメモリの内容を読んでいることが明らかになります。パーティションテーブルから始め、棚に分類してパラメーターテキストファイルに記録し、それを使用してパーティションテーブルを個別に記録しました。
ここで、RK2918上のデバイスのフラッシュメモリの更新に固有の信じられないほどの量の情報が見つかりました。 説明されているすべてのデバイスはタブレットであり、更新のためにコンピューターに接続するのは多少簡単です(組み込みのmicroUSBポートを考えると、USB OTGでもあります)。

これは、パラメータファイルの外観です。
 FIRMWARE_VER:1.2.3 MACHINE_MODEL:SUNVEK MACHINE_ID:007 MANUFACTURER:rock-chips MAGIC: 0x5041524B ATAG: 0x60000800 MACHINE: 2929 CHECK_MASK: 0x80 KERNEL_IMG: 0x60408000 CMDLINE: console=ttyS1,115200n8n androidboot.console=ttyS1 init=/init initrd=0x62000000,0x300000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00004000@0x00004000(kernel),0x00002000@0x00008000(boot),0x00004000@0x0000A000(recovery),0x00080000@0x0000E000(system),0x00082000@0x0008E000(backup),0x0003a000@0x00110000(cache),0x00100000@0x0014a000(userdata),0x00002000@0x0024a000(kpanic),-@0x0024c000(user) 

16進法を使用した最後の行には、長さ、セクションの先頭、および括弧内の名前が含まれています。 パーティションテーブル自体を実際に格納する必須セクションがありません。 解読しようとします。

読み取られるパラメーターブロックのサイズは0x200(RK29kitchenのソースファイルから)、512、およびファイルサイズは262144バイトです。 条件ブロックのサイズは262144/512、つまり512バイトであり、rkflashtoolのドキュメントで確認されています。
0x200から0x2000の間でメモリを占有するもの、これは3.75MBにも及ぶ謎です。

パラメーター(パーティションテーブル)256KB
その他4MB
カーネル8MB
ブーツ4MB
回復8MB
システム256MB
バックアップ260MB
キャッシュ116MB
ユーザーデータ512MB
パニック4MB
ユーザー残りのすべてのスペース

準備する


これで、ダウンロードした一連のimgファイル、ディスクイメージが手に入りました。 何が入っているのだろうか。 以前の知識から、変更することを意図していないファイル(OSのカーネルなど)をフラッシュメモリに書き込むには、 cramfs形式で作成されますが、非常にunningな中国人がこれらの画像にヘッダーとフッターを追加してからgzipを使用することを知っていますどうやら自分自身を読んで自分の画像を作成することを困難にしようとしているようです。

私が見たのは、この奇跡であり、人々から名付けられました。
 $ sudo mount -t cramfs Image/boot.img /media/cramfs mount: wrong fs type, bad option, bad superblock on /dev/loop0 $ dmesg |tail [41549.071136] cramfs: wrong magic 

同じRK29kitchenと接続しようとすると、結果はほぼ同じです。
 /sbin/e2fsck: Bad magic number in super-block while trying to open system.img 

imgファイルから最初の8バイトをトリミングする必要があります。
 $ dd if=boot.img of=bootimg.gz skip=8 bs=8 count=20000000 524280+0 records in 524280+0 records out 4194296 bytes (4.2 MB) copied, 4.41275 s, 950 kB/s 

素晴らしい。 ファイルがgzipで圧縮され、不合理なヘッダーとフッターがそれらに追加されるというまさにそのケースに出くわしました。そこにはCRCと、おそらく何か他のものがあります。

さらに-より興味深い:
 $ mkdir myboot $ cd myboot $ gunzip < ../bootimg.gz | sudo cpio -i --make-directories $ ls data dev init_battery.sh init.rc proc sbin system ueventd.rc default.prop init init.goldfish.rc init.rk29board.rc rk29xxnand_ko.ko sys ueventd.goldfish.rc ueventd.rk29board.rc 

内部には多数のファイルがありますが、それらが必要かどうかはあまり明確ではありません。 このビジネスを逆順で収集するには、さらに正確にする必要があります。ファイルの日付をリセットする必要があります。
 $ find . -exec touch -d "1970-01-01 01:00" {} \; $ find . ! -name "." | sort | cpio -oa -H newc | gzip -n >../customboot.gz $ cd .. $ rkcrc -k customboot.gz customboot.img 


イメージのアセンブリには、cpioが伝統的に使用されます。 より一般的なtarと比較して、cpioには多くの利点がありますが、このトピックでは詳しく説明しません。

そして今、手元に自分で組み立てたcustomboot.imgがあり、それをデバイスに戻すことができます。
kernel.imgでは、このような準備は機能しません。

そして、system.imgで何が起こったのかを次に示します。
 $ sudo mount -t cramfs system.img /media/cramfs $ ls /media/cramfs/ app bin build.prop etc fonts framework lib media tts usr xbin 

Androidアプリファイル(実行可能ファイルアーカイブ)がアプリフォルダーに見つかりました。 つまり、迷惑で退屈なものを含め、新しいプログラムをそこに追加したり、削除したりできます。 suとbusyboxをbinに追加できますが、これはデバイスをルート化するのに十分だと理解しています。 などで、構成を変更します。 などなど。 理論的に。 実際には、マウントされたcramfsイメージにそのように書き込むことができないという事実を少しいじる必要があります。

さて、私はなんとか分析することができました。

新しい外観


もちろん、誰かが慎重に準備した画像を読み込んでSDカードから起動しようとするのは素晴らしいことですが、RK29にはそのような機会がないため、画像を作成してデバイスのフラッシュメモリに直接フラッシュする必要があります。 バックアップがあることを願っています。

前の段落で作成された画像は、すべて異なる形式でした。つまり、
boot.imgの形式はcra p fsであり、残りはそれ以降に既に読み込まれており、より消化しやすい形式でした。 したがって、タンバリンと踊るのはこのboot.imgのみであり、残りの画像ではすべてが多かれ少なかれ普通だと思います。

記憶を更新し、Linuxのインストールに必要なセクションを書きます。
/ルートセクション。 カーネルイメージを含む重要な/ブートフォルダーが含まれています。 / bootは、他の非ジャーナリングファイルシステム上の別のパーティションにすることもできます(カーネルのロードおよび更新時にのみ使用されるため)。 ただし、簡単にするために、ルートパーティションに保持することができます。 もう1つの重要なフォルダー/ homeにはユーザーデータが含まれており、個別のパーティションを作成しておくと便利です。 スワップは、メモリが1GB未満のデバイスの仮想メモリに必要です。ただし、この問題に限定された読み取り/書き込みサイクルで内蔵フラッシュメモリを使用することは、少なくとも賢明ではありません。これらの目的には、外部SDカードを使用することをお勧めします。 / usrは、すべてのユーザーに共通のファイルを保存します。 / var、ログを保存します。また、外部SDカードに保存する方が論理的です。

したがって、作業を少なくするために、3つのセクションで構成されるイメージを作成します。
/ブート、cra p fsファイルシステムで16 MB
/、ルートファイルシステムの下に〜4GBの残りのスペース
/ homeを作成しません。これまでのところ、rootとして待機し、外部SDカードをマウントするとどうなるか、マウントします。
/スワップは外部フラッシュカードにもマウントされます

Rockchip 2918で開発された最新のオープンソースカーネルをodys.deからダウンロードして解凍しました。 カーネルバージョン2.6は悲しくなりました。 Archlinux ARMコアのクロスコンパイル手順により、あなたは馬鹿げていると感じ、サポートされているデバイスのリストを混乱させました。 Yoctoprojectは少し混乱しています。 Linaroアセンブリの豊富さと、サポートされているデバイスの限られたリスト、およびサポートされているデバイスでさえかなりの数のバグが紛らわしいです。 すでにLFSに目を向け始めました。 Cortex A8 / A9に基づいた多かれ少なかれ標準的な機器で、ハーフビットで起動する普遍的なものは本当にありませんか? うわ

選択の余地はありませんでした。ソースからカーネルをクロスコンパイルし、自分でイメージを収集する必要があります。 linux-linaro-3.5-rc3-2012.06.tar.bz2カーネルソースコードとgcc-linaro-arm-linux-gnueabihf-2012.06-20120625_linux.tar.bz2クロスコンパイルツールキットをダウンロードしました。 唯一の迷惑は、コンパイルにデバイス固有の.configファイルが必要なことです。LinaroにはRK2918にはありません。 幸いなことに、前述のodysカーネルにはRockchip固有のファイルがあり、easypix.euの新しいソースにも含まれていました。 つまり、Linaroのソースにコピーしました。
-フォルダーアーチ/アーム/ mach-rk29
-50キロバイトのarch / arm / configs / rk29_ddr3sdk_defconfigと多数のデバイス固有オプション
-アーチ/アーム/ツール/マッハタイプの最終行
-arch / arm / KconfigからのセクションARCH_RK29
-ソースルートからのmkkrnlimg

カーネルのクロスコンパイル



3.5.0-rc3 by Linaro

 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rk29_ddr3sdk_defconfig $ PATH=$PATH:~/linaro/gcc-linaro-arm-linux-gnueabihf-2012.06-20120625_linux/bin $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage ... kernel/cgroup.c:470:2: error: 'saved_link' undeclared (first use in this function) ... make: *** [kernel] Error 2 

かなり甘いですが、修正可能です。 誰かが慎重に2行とコメントを消去したことがわかります。 これはメモリ使用率の最適化とリファクタリングと呼ばれますが、今回は私には合わないので、元の場所に戻さなければなりません。
 static void __put_css_set(struct css_set *cg, int taskexit) { struct cg_cgroup_link *link; struct cg_cgroup_link *saved_link; 

うまくいきました。 興味深いことに、Linaroの安定したアセンブリは一般に収集を試みますが、どのようにコンパイルエラーが発生しますか?

別の間違い:
 fs/yaffs2/yaffs_vfs.c:46:28: fatal error: linux/smp_lock.h: No such file or directory 

ファイルはOdysのソースで見つかりましたが、別のエラーが発生しました。
 fs/yaffs2/yaffs_vfs.c:317:3: error: assignment of read-only member 'i_nlink' ... fs/yaffs2/yaffs_vfs.c:1995:9: error: ?struct mtd_info? has no member named ?sync? fs/yaffs2/yaffs_vfs.c:1996:6: error: ?struct mtd_info? has no member named ?sync? fs/yaffs2/yaffs_vfs.c:2097:2: error: ?struct mtd_info? has no member named ?erase ... 

yaffs2をアセンブリから除外しますか? 何も理解できないCコードを編集しますか? 最初の間違いをなんとかして、少し助けにならないパッチを見つけたので、inode.cに焦点を当ててランダムに修正する必要がありました。 struct mtdにエラーがありました。Android3.4のカーネルバージョンでは、 すべてが同じであり、希望を待つ場所がないと感じました。 早朝の日が賢明だと感じた。 しかし、.configからYAFFSに関連するすべての行を削除して続行したいという要望は強かった。 次に、フラッシュメディア用ではなく、UBIFS、または極端な場合にはext3を使用できます。

賞は迅速でした。
 Image Name: Linux-3.5.0-rc3 Created: Tue Jul 3 05:35:58 2012 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2258064 Bytes = 2205.14 kB = 2.15 MB Load Address: fffffff2 Entry Point: fffffff2 echo ' Image arch/arm/boot/uImage is ready' Image arch/arm/boot/uImage is ready 

どうぞ
 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules ... CC drivers/media/video/gspca/gspca_main.mod.o LD [M] drivers/media/video/gspca/gspca_main.ko CC drivers/scsi/scsi_wait_scan.mod.o LD [M] drivers/scsi/scsi_wait_scan.ko 

すべてがうまくいき、特定のRK29がコンパイルされていないことを警告するだけで、これは非常に疑わしいものです。 uImageを受信しました。

easypix.euの3.0.8以降

念のため、easypix.euからソースをコンパイルすることにしました。 ここで、RK29のソースコードがコンパイルされていることがはっきりとわかります。 .configおよびUBIFSにはYAFFSはありません。 / bootに適した読み取り専用のcramfsのみがありますが、ルートパーティションにはまったく適していません。 アセンブリは次のとおりです。
  CC drivers/net/wireless/bcm4329/wl_iw.o drivers/net/wireless/bcm4329/wl_iw.c: In function 'wl_iw_set_pmksa': drivers/net/wireless/bcm4329/wl_iw.c:5069:5: error: array subscript is above array bounds [-Werror=array-bounds] 

.configを修正し、そこからBCM4329 WiFiモジュールを削除し、フラッシュメモリ用のすべての可能なファイルシステムを追加しました。 RTL8192ドライバーがコンパイルされるかどうかはわかりませんでした。 私は続けて成功します:
  OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready UIMAGE arch/arm/boot/uImage Image Name: Linux-3.0.8+ Created: Thu Jul 5 13:29:41 2012 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 7028772 Bytes = 6864.04 kB = 6.70 MB Load Address: 60408000 Entry Point: 60408000 Image: arch/arm/boot/uImage is ready 


モンスター

フランケンシュタイン博士は自然に挑戦し、easypixが私たちに投げつけた遺物で最後のコアを渡ります。

Linaro用のHWpackを作成するのは非常に魅力的ですが、この問題に関する経験はなく、単独でサポートすることは望みません。 したがって、最後のコアをLinaro gitから取得し、RK29の通常の操作に必要なものを徐々にロールオーバーします。

これで、easypix.euの.configとKconfigができました。 前回arch / arm / Kconfigに行を追加するのを忘れたことがわかりました。
 source "arch/arm/mach-rk29/Kconfig" 


そしてMakefileで:
 machine-$(CONFIG_ARCH_RK29) := rk29 <source>  : <source> $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rk29_ddr3sdk_defconfig 


以下を.configに追加しました:
 CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y 

しかし、それはすべてとは程遠い。 ソースごとに「rk29」を検索すると、358個のファイルで10,707個の一致があり、その中にはオーディオドライバー、コーデック、Makefile、Kconfigがプロジェクト全体に均等に散らばっています。

このトピックの舞台裏に置いておきます。 できるだけ早くトピックを更新し、ソースと結果をレイアウトしてください。 あなたが私の衝動に参加したい場合-書き込みます。

配布


ご存じのように、単一のカーネルにうんざりすることはありません。GNUをカーネルに提出することになっています。 カーネルを本格的なオペレーティングシステムに変える必要がある理由と理由を説明します。

理想的には、Arch Linuxが欲しいです。彼らのウェブサイトに書かれているように、他のデバイス用の配布キットを入手して、自分のカーネルを追加するだけです。 私はすでにカーネルを持っているので、ダウンロードしたArchLinuxARM-am33x-latest.tar.gzを解凍し、そこから削除/ブートし、独立して取得したカーネル(約7MB)がBeagleBoneカーネル(2.7MB)と比較してどれだけ大きいか驚嘆します。 ルートパーティションのイメージを作成するルートフォルダーには約421MBが必要であり、その10%はカーネルソース(linux-3.2.18-1)では完全に不要です。

組み立てとプライミング



準備する


したがって、ブートとルートの2つのフォルダーがあり、そこから2つのイメージを作成する必要があります。1つ目はcra p fsで、2つ目はカーネルに馴染みのあるファイルシステムで、できればフラッシュメモリ用です。 easypix.euのカーネルはJFFS2、UBIFS、EXT [2 | 3 | 4]、VFATおよびMSDOSをサポートするようにアセンブルされているため、ルートパーティションのファイルシステムの選択は広範です。 ネットワーク上で、彼らはYAFFS2を称賛します。これはUBIFSよりもわずかに高速で、RAMの使用量がわずかに少なくなりますが、アセンブリが.configに接続しようとすると再びエラーが発生します。

イメージの収集に加えて、新しいパーティションテーブルとカーネルへのエントリポイント、つまりパラメーターファイルを作成する必要があります。パラメーターファイルは、トピックの冒頭で引用したフラッシュメモリの先頭で256 KBのメモリを占有します。

KERNEL_IMGは、カーネルがアセンブリの最後に発行したものと一致するため、変更する必要はありません。 CHECK_MASKは、私が見たすべての画像で同じです。また、触れません。 残りの行も、CMDLINEを除き、MTDパーティションテーブルとロード引数を含みます。
U-Bootウェブサイトで 、MTDパーティションテーブルは簡単な形式で設定できると述べていますが、リスクを冒すことはなく、可能な限りオリジナルに近いものにします。

そのため、デバイスのメモリは次のように割り当てられます。
パラメータファイルごとに256 KB
16MB on / boot(突然カーネルのみをリロードしたいが、8MBを超える場合)
バランス/

次のようになります。
 mtdparts=rk29xxnand:0x00008000@0x00002000(kernel),-@0x0000a000(system) 

宛先:
 CMDLINE: console=ttyS1,115200n8n androidboot.console=ttyS1 init=/init initrd=0x62000000,0x300000 mtdparts=... 

3.0以降のLinuxカーネルでは、コンソールは別の方法(tty01など)で呼び出され始めたようですが、そのままにしておきます。
androidboot.consoleおよびinitは必要ありません。 Initrd(モジュールのアセンブリと動的読み込みに使用されるメモリ内のディスク)私は、おそらく無駄にしないことを決めました。 目的のmtdパーティション(0から始まる番号)にルートパーティションを配置して、ルートパーティションの場所を確立する必要があります。 また、ルートパーティションのファイルシステムのタイプを指定する必要があります。

合計は:
 CMDLINE: console=ttyS1,115200n8n root=/dev/mtdblock1 rootfstype=ubifs noinitrd mtdparts=rk29xxnand:0x00008000@0x00002000(kernel),-@0x0000a000(root) 


組立



パーティションテーブルMTDおよびカーネル起動パラメーター

RK29kitchenからmkkrnlimgを実行します。
 $ mkkrnlimg -a parameter parameter.img F535BA01 $ ls -l 316 Jul 5 22:56 parameter 328 Jul 10 20:27 parameter.img 

デバイスから抽出された元のparm.imgのサイズが256KBであり、そこにあるコンテンツがすでに5つの異なる場所にあることは紛らわしいです。 そして、ここではファイルの先頭にのみ。 おそらく、U-Bootがこのデータをメモリ内の異なるオフセットでロードしようとする場合に備えて、中国が保険に加入し、+ 16KB、+ 32KB、+ 48KB、および+ 64KBの追加オフセットで埋めました。 パーティションテーブルで判断すると、ビジー状態ではない残りの3.75MBにも同じピースが含まれている可能性があります。
違いはわずか12バイトで、そのうち8バイトが先頭に追加されます。 残念ながら、元のparm.imgとの比較により、mkkrnlimgは
 KRNL< 
および0x01、およびparm.imgでは
 PARMG 
および0x02。
mcの16進エディターが役立ちます。タイトルをオリジナルのように微調整します。

コア


 $ mkkrnlimg -a uImage kernel.img 7DDF79C6 $ ls -l 7139328 Jul 5 22:49 uImage 7139340 Jul 10 20:42 kernel.img <source>    12 , 8   ,  ,  4  . ,    boot.img (  8,  gzip'  cpio)   . <h5>  UBIFS</h5>     ,    <a href="http://www.linux-mtd.infradead.org/faq/ubifs.html#L_mkfubifs"></a> ( ), <a href="http://lists.infradead.org/pipermail/linux-mtd/2008-April/021189.html"></a>. ,      erase       NAND  .        Samsung 201 K9GBG08U0A SCB0,  <a href="http://gxwy.en.alibaba.com/product/530746803-213362683/IC_Samsung_Nand_Flash_Flash_Memory_K9GBG08U0A_SCBO.html"></a>  4,  erase   128+4,    2.        UBIFS     UBI   ubinize.cfg: <source> [ubifs] mode=ubi image=ubifs.img vol_id=0 vol_size=4000MiB vol_type=dynamic vol_name=rootfs vol_flags=autoresize 


 $ mkfs.ubifs -q -r ~/gv2b/root -m 2048 -e 131072 -c 32767 -o ubifs.img $ ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg $ ls -l 221904896 Jul 10 01:14 ubifs.img 229376000 Jul 10 01:17 ubi.img 

UBIFSはデータ圧縮をサポートしており、同じサイズの物理メディアで4GBボリュームのサイズを制限しましたが、これが正しいソリューションかどうかはわかりません。

ファームウェア


UBI画像を記録するために特別なアルゴリズムを使用することをお勧めしますが、少し混乱します。

rkflashtoolの開始位置とサイズのパラメーターは、512バイトブロックで設定されます。
中国語のように、5つの異なるオフセットでパーティションテーブルparameter.imgのイメージを記述します。 残りはパーティションテーブルに基づいています。
 $ rkflashtool29 w 0 1 < parameter.img $ rkflashtool29 w 0x00000020 1 < parameter.img $ rkflashtool29 w 0x00000040 1 < parameter.img $ rkflashtool29 w 0x00000060 1 < parameter.img $ rkflashtool29 w 0x00000080 1 < parameter.img $ rkflashtool29 w 0x00002000 0x00008000 < kernel.img $ rkflashtool29 w 0x0000a000 0x0006d600 < ubi.img <source>    ,       4     ,        ,  50 .         .       : <source> $ rkflashtool29 b 


試行錯誤



最初の打ち上げ


最初の打ち上げは成功しなかったということではありませんでしたが、率直に言って失敗だったと言います。 デバイスはダイオードをオンにせず、ボタンを押しても反応せず、HDMI経由で何も出力しませんでした。 バックアップを作成したことは非常に成功しています。 デバイスがまだデータを受信できることは非常に幸運です。 元の状態に復元します。
 rkflashtool29 w 0 0x00082000 < backup.img 

デバイスは引き続き失敗します。

RK29kitchenから./menu.shを実行し、バックアップの/システムパーティションのサイズを変更してフラッシュします。 デバイスがオンになり、「Loading ...」という行が表示されますが、それ以上は進みません。 もう悪くない。 2回目の再起動後、Androidが元の形式でロードされた後、元のバックアップを復元します。

何をしたのか、何が間違っていたのか


RK29kitchenのソースコードを掘り下げて、rkflashtoolが発表されたフォーラムで、このイメージを5つの異なるオフセットに帰することに無駄がなく、必要であることがわかりました(90.flash.sh)。

parameter.imgファイルの最初の4バイトには「PARM」が含まれ、次の2つは元のparm.imgから誤ってコピーしたもので、パラメーターファイルの長さは583バイトです。 これは何もロードされなかった理由を説明します(MTDパーティションテーブルが決定されず、U-Bootがカーネルをロードできませんでした)が、ライトが点灯しない理由を説明しませんでした。 16進エディターで片付ける代わりに、ユーティリティrkcrcが発見されました。これは、パラメーターファイルから、正しいヘッダーと合計サイズ16Kのイメージを作成し、-pオプションで実行されます。 「-k」オプションは、「KRNL」というラベルの画像を作成するためのものです。

元のbackup.imgで混乱しました。 パーティションテーブルを大幅に変更する価値があるかどうかは明らかではありません。ファイルは、パーティションのサイズ、オフセット、順序(セクションはオフセットの順序でなければなりません)を変更できることを明確に読み取り、新しいパーティションを作成することもできますが、パーティションの名前は変更できません。誰がこの制限を正確に設定するかは明確ではありませんが、おそらくブートローダー(U-Boot?)です。
そこには、RK29xxLoader(L)_V2.08.binが使用されていることがわかりました(明らかに後のバージョン2.04バイナリが適用されます)一方で、バージョン2.12、2.14、および2.18もRK29kitchenブートローダーリストとNextbookで見つかりました使用2.20。NORフラッシュメモリ(1 MB程度)にあるブートローダーを更新する方法と、実行する価値があるかどうかは明らかではありません。ローダーに加えて、多くの興味深い情報を含むパッケージファイルもあります。

2番目の試み、パニックと落胆


ファームウェアの手順全体を繰り返しますが、正しいparameter.imgを使用しています。うまくいきません。復元します。
ある時点で、愚かなことに、RK29kitchenを使用する代わりに、backup.imgをオフセット0で直接書き込みました。その後、バックアップを復元し、ダンプを再度削除して、余​​分なバックアップを消去しました。ある時点でバックアップからファームウェアを更新しても機能しませんでした。元のバックアップを正しいbackup.imgで消去したように思えたため、パニックが発生しました。個々のイメージから復元するスクリプトを作成しましたが、それも役に立ちませんでした。少なくとも、デバイスの電源を入れるとライトが点灯します。しかし、HDMIには信号がありません。
extundeleteについて考えましたが、chrootとumountが必要であることを認識し、安価な中国のデバイスだけでなくシステムを台無しにすることを恐れてこの考えを拒否しました。ここに
あるファームウェアメソッドの作成者から、gbox(わずか3つのUSBポートを持つわずかに異なるデバイス)から、可能なすべてのファームウェアをフラッシュしていまし何も助けませんでした。とにかく、レンガは、時にはLEDが点灯し、時にはまったく点灯しません。早朝だったので、また早朝の夕方が賢明だと思いました。

そして、私がどうだったか。デバイスをモニターに接続すると、すべてが機能していることがわかりました。

結論と調査

このような経験は、あまり快適ではありませんが、ネットワーク上で次の結論と発見に至り
ました。-デバイスには、ファームウェアの後にパーティションを再フォーマットする時間が必要
です フラッシュする場所は明確ではありません。RK29kitchenの作者はこの質問に対する答えを得ることができませんでした
-謎のパッケージファイルは、おそらくパラメーターとカーネルの間の謎の空間にあります。また

、ファームウェアの1つからデバイスパラメーターを説明するブートローダーと劣らない謎のHWDEFも存在する可能性があります:
 HWDEF 0x00000800 0x0000031B package-file 0x00001000 0x00000216 RK29xxLoader(L)_V2.08.bin 0x00001800 0x000225BE parameter 0x00024000 0x00000251 


試行番号3


最初にしたことは、4GBのフラッシュメモリすべての完全なダンプでした。

カーネルをアンパックして再パックすることにより、バックアップからカーネルを埋めようとします。動作しない場合は、何かが正しくありません。

開梱、梱包、フラッシュ:
 mkkrnlimg -r kernel.img kernelimg mkkrnlimg -a kernelimg kernel2.img rkflashtool29 w 0x00004000 0x00004000 < kernel2.img 

過負荷-それは動作します。自己取得uImageの同じトリックは失敗します。

RK29kitchenを使用して元のkernel.imgを解凍した場合でも、イメージ内の署名がU-Bootバージョン 27 05 19 56 の標準の署名と異なることがわかりました。異なるファームウェアの異なるカーネルイメージはすべて同じヘッダーを持っています。
 D3 F0 21 E3 10 9F 10 EE xx xx 00 EB 05 A0 B0 E1 xx xx 00 0A 

最初の考え-画像ではXOR'omになりました。私はチェックしますが、残念ながら、8ビットと16ビットは適切ではなく、4番目のカルテットの32ビットは画像のサイズには大きすぎる数を与え、3番目のカルテットには多すぎるため、時間が必要です異なる画像間で一致します。

「D3 F0 21 E3」の検索クエリでは、非常に少数の結果が表示されますが、その中にはあまり興味深い結果もありません。ここイタリアのフォーラムのこのスレッドでは、Anypadのこれらのカーネルソースとは異なり、Odysソースは正しいイメージを作成しないと述べられています
Odysとeasypixのソースは(同じですが)mrkrnlimgを持っているので、問題はRK29kitchenのmkkrnlimgを使用している可能性があります。mrkrnlimgはサイズが大きく異なり、一方向にのみ変換できます。いいえ、3つのユーティリティすべてによって作成されたイメージに違いはありません。

Anypadからコアを収集します。 2.6ですが、uImageの機能を見るのは面白いです。 bcm4329モジュールで同じエラーを取り除きました。

.configファイルで、ある種のLCDパネルへの出力をオンにし、DEFAULT_OUT_HDMIオプションがオフになっていることに誤って気付きました。これは大きなパンクです。 Linuxが起動したとしても驚かないでしょうが、HDMI経由で何も表示されず、起動したこともわかりません。このDEFAULT_OUT_HDMIに関連する問題はrk29_fb.cで見つかりました。hdmi_get_default_resolution関数は見つかりませんでした。また、easypixのソースにもありません。私はタッチでそれを書かなければなりませんでした。この関数が埋める構造には、RGBカラーチャンネルを交換するための面白いパラメーターがあります。

画像は集まっていますが、その中には同じ不運な標準「27 05」があります。そして、私は周りを見回しましたが、同じディレクトリでImageイメージに気付きました。これには待望のタイトル「D3 F0」が含まれています。 easypixカーネルアセンブリの結果を見ました-そしてそれもあります。嬉しい驚き。

カーネルイメージを含む自己解凍アーカイブであるzImageのような興味深いことを無視することはできません。興味のために、zImageを収集し、サイズの違いが印象的です。カーネルのあるパーティションの場合、8MBの大きなマージンがあれば十分です。ちなみに、デバイスのカーネルイメージ(5.8MB)から抽出されたいわゆる「zImage」(実際には単なるイメージ)とはほぼ2倍異なります。
 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage $ ls -l arch/arm/boot 7135268 Jul 13 03:37 Image 7139328 Jul 5 21:41 uImage 3408472 Jul 12 00:20 zImage 

さて、今あなたがしなければならないのは、結果の画像にヘッダーとフラッシュを追加することです。rkcrc -kとmkkrnlimg -aの結果は同じであることに注意してください。
私はそれを要求し、オンにしました-ダイオードはオフです。カーネルに何かが出てこない。彼は元の(もちろんCRCの前にあった)から逸脱したヘッダーのバイトを修正し、ヘッダーを追加し、それを要求しましたが、機能しませんでした。彼は古いコアをその場所に戻しました。

/ kpanicセクションを見るために考えが忍び込んで、割り当てられたのは無駄ではありませんでした私はそれをダウンロードしましたが、残念ながら、通常のカーネル2.6.32.27のパニックに関連するものしかありません。

私は自分のカーネルをフラッシュすることに絶望しました。

試行番号4


さて、カーネルをフラッシュできなかったため、カーネルのみを残して残りをフラッシュできる可能性があります。襲撃がうまくいかなかった限り、私は小さな一歩を踏み出します。理論への

小さな余談。 Androidは通常どのようにデバイスにロードされますか?
1. NORメモリをオンにすると(インプレース実行をサポートしているため、直接)、ブートローダーU-Bootが起動します。
2. U-BootはMTDパーティションテーブルをロードし、Linuxカーネルをイメージからメモリにロードします。
3. Linuxはデバイスドライバーを初期化し、パーティションをマウントするなどしてから、/からinitを実行します。
4. init ...
これはもう面白くありません。Androidのinitであるため、Arch Linuxから独自に作成したいだけです。

initはルートにあり、Arch Linuxディストリビューションでは/ sbinにあります。ルートにコピーする以外に何もする必要はありません。

元のAndroidでは、initファイルはシステムセクションではなく、起動中です。つまり、ルートにマウントされるのはこのブートパーティションであり、システムは/ systemにマウントされます。それで私はそのままにします。

元のブートセクションにはrk29xxnand_ko.koがあり、これは明らかにNANDフラッシュメモリで動作するように設計されたモジュールです。残りのモジュールは/lib/modules/3.2.18-1/kernelにあり、それらへのリンクは/lib/modules/3.2.18-1/modules.orderに登録されています。同封のkoをgzipでパックし、nandに関連する他のモジュールをkernel / drivers / mtd / nandに入れ、その上にroot.rootを置き、modules.orderとmodules.depに書き込みます。これによりカーネルが適切なモジュールを見つけるのに役立つとは考えられませんが、depmodを使用して異なるアーキテクチャのELFを掘り下げて依存関係を見つけることはできませんでした。

元のカーネルはUBIFSについて何も認識していないため、以前に作成したイメージを脇に置いておく必要があります。cpio、gzip、mkkrnlimgを使用して収集します。
 $ find . -exec touch -d "1970-01-01 01:00" {} \; $ find . ! -name "." | sort | sudo cpio -oa -H newc | gzip -n >../boot.gz $ cd .. $ mkkrnlimg -a boot.gz boot.img $ ls -l boot.img 155166888 Jul 13 20:55 boot.img 

残念ながら、ブートセクションは少し小さく、パラメーターを少し調整し、それを拡張して残りのセクションを移動する必要があります。編集しやすくするために、512MB(0x00100000)に拡張します。
 CMDLINE: console=ttyS1,115200n8n androidboot.console=ttyS1 init=/sbin/init initrd=0x62000000,0x300000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00004000@0x00004000(kernel),0x00082000@0x00008000(boot),0x00004000@0x0008A000(recovery),0x00080000@0x0008E000(system),0x00082000@0x0010E000(backup),0x0003a000@0x00190000(cache),0x00100000@0x001ca000(userdata),0x00002000@0x002ca000(kpanic),-@0x002cc000(user) 

同時に、initファイルへのパスを見つけて、/ sbin / initにも修正しました。私はパックします:
 $ rkcrc -p parameter parmnew.img $ ls -l 16384 Jul 13 21:13 parmnew.img 

ちなみに、キャッシュ、kpanic、およびuserdataパーティションから最初の256KBを消去し、RK29kitchenのソースから学んだように、ユーザーパーティションにはまったく触れないのが一般的ですが、システムの後に続くパーティションはほとんど気になりません。miscおよびkernelセクションは変更されていません。Arch Linuxをブートにアップロードし、残りを完全に粉砕します。
 $ rkflashtool29 w 0 1 < parmnew.img $ rkflashtool29 w 0x00000020 1 < parmnew.img $ rkflashtool29 w 0x00000040 1 < parmnew.img $ rkflashtool29 w 0x00000060 1 < parmnew.img $ rkflashtool29 w 0x00000080 1 < parmnew.img $ rkflashtool29 w 0x00008000 0x00082000 < boot.img $ rkflashtool29 e 0x0008a000 0x006f6000 $ rkflashtool29 b 

私は、boot.imgのサイズと消去のためのさらなるオフセットで、ほとんどうっとうしく間違われました。私はすでにいくつの同様のエラーを犯したのだろうか。非ネイティブカーネルが正常に起動する可能性がありますか?

再起動後、10秒が経過すると、LEDが点灯します。そして、lo!ペンギンが画面の左上隅に現れ、10分間吊るされた後、暗い青色の背景が残り、それ以外は何も起こりませんでした。その後のダウンロードでは、ペンギンはほぼ瞬時に表示されます。接続されたキーボードは効果がありません。kpanicは純粋です(00とFF以外)。


おわりに


このようなデバイスにドキュメントやソースなしで対処するには、優れたレベルの専門家である必要があり、この専門家は明らかに私ではありません。または、デバイスは絶対に必要なものではありません。

取得した画像をレイアウトし、スクリーンショットと短いビデオを新しい3Dゲームでアップロードしたかったのですが、運命ではありませんでした。同意する、悪い経験も経験です。

参照資料


何らかの理由でトピック自体へのリンクに該当しないことを読んだ興味深いものの短縮リストを提示します。

ファームウェア、イメージ、ハードウェア


androidforums.com/google-tv/505559-flashing-android-tv-box-one-four-usb.html
androidforums.com/google-tv/506298-rk2918-android-tv-box-4x-usb-rooted-firmware-manual.html
androidforums.com/google-tv/413090-r-box-rockchip-2918-google-tv-3.html

sites.google.com/site/rk2918tools

thomaspolasek.blogspot.com/2012/04/arch-linux-lxde-w-xorg-mouse-keyboard_16.html

cxem.net/comp/comp70.php
github.com/OlegKyiashko/RK29kitchen

4pda.ru/forum/lofiversion/index.php?t337784-50.html
4pda.ru/forum/index.php?showtopic=319345
4pda.ru/forum/index.php?showtopic=313261

forum.xda-developers.com/showthread.php?t=1286305

www.androidtablets.net/forum/rockchip-rk2818-tablets/21291-problems-getting-image-dumped-rkdump.html
www.androidtablets.net/forum/rockchip-based/439-how-unpack-repack-custom-firmwares-rockchip-rk28xx.html

www.freaktab.com/showthread.php?287-RockChip-ROM-Building-Tips-and-Tricks-by-Finless
www.freaktab.com/showthread.php?401-Dumping-ROM-using-ADB-guide

www.arctablet.com/wiki/index.php/Rockchip_2918_devices_MTD_partitions_mapping

yanzicjustnubie.wordpress.com/2011/09/10/linux-installer-easy-way-to-install-debianubuntu-on-android chroot linux on android
wiki.debian.org/DebianInstaller/Arm/OtherPlatforms
www.arm.com/community/software-enablement/linux.php
code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat

www.yoctoproject.org — build custom linux distro
www.freaktab.com/showthread.php?1053-RK2918-set-top-box-linux-installation
github.com/wendal/teclast_tools
wiki.archlinux.org/index.php/Partitioning#Partitions_in_a_GNU.2FUnix_system
素晴らしい検索クエリ

その他



特に注目に値するのはwww.cnx-software.comです。これは、ARMに関連するすべてに関する興味深いサイトです。

その他の興味深いハードウェア



価格の
選択
olimex.com/dev/index.html rhombus-tech.net/allwinner_a10
www.hardkernel.com/renewal_2011/products/prdt_info.php?g_code=G133999328931
www.technexion.com/index.php/products/developmentキット/ infernopack
www.advantech.com/products/ROM-1210/mod_D5882807-78CE-4A64-AADA-FAEAA099F2CB.aspx
www.sigmadesigns.com/products.php?id=38
www.renesas.com/press/news/2012 /news20120110.jsp
のプロトタイプ上記のすべてのHDMI stick'ovプロセッサライン。
www.cnx-software.com/2012/07/10/ippea-tv-android-4-0-3-hdmi-stick-based-on-ingenic-jz4770-mips-sells-for-50-usd

www.uplaytablet.com/compare-soc-cpus-used-in-ainol-elf-aurora-ii-amlogic-8726-mx-wopad-i7-i8-rock-chip-rk-2918-and-wopad-a10- allwinner-a10
rhombus-tech.net/evaluated_cpus-コンパクトデバイスで使用するためのさまざまなプロセッサの概要

en.qi-hardware.com/wiki/Main_Page

www.wits-tech.com/pages/board-en.jsp
www.pineriver.cn /eshowProDetail.asp?ProID=1527
www.calao-systems.com/articles.php?lng=en&pg=6186

www.st.com/internet/mcu/product/251211.jsp
www.st.com/internet/evalboard/製品/ 253211.jsp

IronにGNU / Linuxをインストールする



archlinuxarm.org/forum/viewtopic.php?f=27&t=2709 Mele A1000 Archlinux
rhombus-tech.net/allwinner_a10/hacking_the_mele_a1000
www.cnx-software.com/2012/06/13/hardware-packs-for-allwinner-a10 -デバイスと簡単な方法で起動可能なubuntu- 12-04 -sd-card
gitorious.org/ac100/abootimg/blobs/master/READMEを作成する

Source: https://habr.com/ru/post/J147793/


All Articles