スキップしてメイン コンテンツに移動

Android x86 をビルドする(カーネル編)

カーネルのビルドですが、特筆すべきことはありませんね。
ITProの記事、そのままです。


$ cd kernel
$ make i386_defconfig ※x86系のデフォルトに設定
$ make menuconfig ※設定編集メニューを起動

以下は必要最小限と思われるものだけです。
ネットワーク関連は省略。
Framebuffer Console は必要に応じてEnable/Disableしてください。

General setup --->
[*] Enable the Anonymous Shared Memory Subsystem
Power Management Option --->
[*] Wake lock
Device Drivers --->
[*] Misc Devices --->
[ ] Android pmem allocator ※drivers/misc/pmem.cでコンパイルエラーが出るのでチェックを外す
Graphics support --->
Support for frame buffer device --->
[*] VESA VGA graphics support
Console display driver support --->
<*> Framebuffer Console support ※デバッグ用に起動時のログを表示させる.
<*> Real Time Clock --->
[ ] Android alarm driver ※drivers/rtc/alarm.cでコンパイルエラーが出るのでチェックを外す


さて、カーネルのビルドも通り、USBフラッシュメモリに焼いて起動させてみましたが・・・
案の定、途中でフリーズします。

まず最初に怒られるのは、mountdが無いこと。
これは init.rc で mountd を使っているところを vold に置き換えることで解決.

次に、dalvikvm の起動でリセットが掛かり、延々と ZygoteInit が起動と停止を繰り替えす症状が発生。
これは、x86 では使用しないクラスが frameworks/base/preload-classes に登録されているからで
不要なクラスを削除することで解決。

で、こうした修正は、じつは こちら のサイトでパッチが公開されていることを知りました。
次回は、パッチ編です。

コメント

このブログの人気の投稿

iPhoneアプリを作る上でのモヤモヤを解消したい

フレームワークなんか使わなくてもガリガリコード書いちゃえばいいんだけど、なんか損してるんじゃないかと気になるのですよ。 でもフレームワークが自動的に色々やってくれてるのはありがたいのだけれど、何をやっているのか気になってモヤモヤしてしまう、というジレンマがあったりなかったり。 という訳でまずは、Xcode で Empty Application と Single View Application (Storyboard付き)で何か違うのかを調べてみた。 単純にコードの差分を比較すると以下の違いがあることがわかる。 追加されているファイル: ViewController.h ViewController.m MainStoryboard.storyboard ViewControllerはUIViewControllerからの派生で、viewDidLoadとdidReceiveMemeoryWarningだけがオーバーライドされただけのひな形。 MainStoryboard.storyboardは、ViewControllerとFirstResponder, Exit ViewControllerにはUIVIewが1つだけ配置されている。 ここまでは、ひな形が追加されているというだけなので、特にモヤモヤはなし。 次に差分のあるファイル:  app-info.plist  AppDelegate.m app.xocdeproj/project.pbxproj app.xocdeproj/project.xcworkspace/xcuserdata/cozy.xcuserdatad/UserInterfaceState.xcuserstate app.xocdeproj/xcuserdata/cozy.xcuserdatad/xcschemes/test.xcscheme  app.xocdeproj/xcuserdata/cozy.xcuserdatad/xcschemes/xcschememanagement.plist とりあえず、app.xcodeproj中身については脇に置いておこう。 app-info.plistは、以下の2行が追加されている。     <key>UIMainStoryboardFi

repo init の使い方覚書

Androidのソースコード管理ツール repo についての覚書. 使用例 repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake -u URL "URL"にはマニフェストファイルのリポジトリのURLを指定する. 通常は git://android.git.kernel.org/platform/manifest.git を指定する. -b REVISION マニフェストファイルのブランチまたはリビジョンを指定する. どんなブランチやリビジョンがあるかは、 http://android.git.kernel.org/platform/manifest.git を参照. 省略すると"master"になる. 一度作成したrepoクライアントのマニフェストファイルのブランチは repo init -b で変更できる. ただし、変わるのはマニフェストファイルのブランチのみ. ソースコードに反映させるには, repo sync が必要. -m NAME.xml 初期化時にrepoクライアントに作成されるマニフェストファイルのファイル名. 省略すると default.xml になる.

Ubuntu で emacs の Ctrl + Space で Mark set できない問題

Ubuntu 9.04 のデフォルト環境で emacs を使っているとき、 Ctrl + Space でマークをセットしようとすると SCIM(IME) が 立ち上がってマークができません。 Ctrl + @でもマークを設定できるバインディングになっているみたいですが 長年、Ctrl + Space を使ってきたので、SCIMを起動させなくする方法を調べました。 1.[System] -> [Preferences] -> [SCIM Input Method Setup]を起動。 2.左のリストから、[FrontEnd : Global Setup] を選択。 3.[Hotkeys] の [Trigger] の [...] ボタンを押して、Select the trigger keys を起動。 4."Control + space" を選択して、[Delete] ボタンを押す。 5."Control + space" が消えたら、[OK] 6.更に SCIM Input Method Setup も [OK] で閉じる。(ダイアログが出ても[OK]でOK) これで、スッキリしました。