web-dev-qa-db-ja.com

Android用のロード可能なカーネルモジュールをどのように作成しますか?

このアクティビティを説明する多くのウォークスルーとチュートリアルがそこにありますが、それらの多くを読んだ後でも、これを機能させることはできません。私が取った手順(以下に投稿)を忍耐強く忍耐強く持ち、私が道を外れた可能性がある場所を提案した場合、私は非常に感謝します。私は約1日半かけてメイクファイルを見つめ、ウォークスルーを読んでいるので、文字通りの提案は役に立ちます。

環境:

  • Ubuntu 10.04 32ビットVMを使用しています。
  • 私は64ビットWindows 7からホスティングしています
  • Core 2 Duoには64ビットVMのハードウェアサポートがないため、Android 2.1カーネルに対してコンパイルしようとしています
  • Java 1.5をDapperリポジトリからインストールし、1.6インストールを削除しました
  • 残りのツールは、Android dev documentation ...に従って取得されました。

ごと ビルド環境の初期化

Java:

$ Sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ Sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ Sudo apt-get update
$ Sudo apt-get install Sun-Java5-jdk

その他必要:

$ Sudo apt-get install git-core gnupg flex bison gperf build-essential Zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libz-dev libgl1-mesa-dev
$ Sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386

Then from Downloading the Source Tree

レポ:

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u https://Android.googlesource.com/platform/manifest -b Eclair
$ repo sync
$ gpg --import (imported the huge key)

And Building the Systemから

初期化:

$ source build/envsetup.sh

ターゲットを選択してください:

$ lunch generic-user

コードを作成します:

$ make -j4

追加!make -j4の出力

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_Arch=arm
Host_Arch=x86
Host_OS=linux
Host_BUILD_TYPE=release
BUILD_ID=Eclair
============================================
build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory
Install: out/Host/linux-x86/bin/acp
target Generated: libclearsilver-jni <= out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar
target Generated: libclearsilver-jni <= out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar
Host SharedLib: libneo_cs (out/Host/linux-x86/obj/lib/libneo_cs.so)
Host C++: aapt <= frameworks/base/tools/aapt/AaptAssets.cpp
Host C++: aapt <= frameworks/base/tools/aapt/Command.cpp
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; error in opening Zip file
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; error in opening Zip file
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; cannot read Zip file
error: cannot access org.clearsilver.HDF
class file for org.clearsilver.HDF not found
javadoc: error - Class org.clearsilver.HDF not found.
Error: No classes were specified on the command line.  Try -help.
make: *** [out/Host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/org_clearsilver_HDF.h] Error 15
make: *** Waiting for unfinished jobs....
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; cannot read Zip file
error: cannot access org.clearsilver.CS
class file for org.clearsilver.CS not found
In file included from frameworks/base/tools/aapt/AaptAssets.h:18,
                 from frameworks/base/tools/aapt/AaptAssets.cpp:5:
frameworks/base/tools/aapt/ZipFile.h:65: warning: ‘typedef’ was ignored in this declaration
javadoc: error - Class org.clearsilver.CS not found.
Error: No classes were specified on the command line.  Try -help.
In file included from frameworks/base/tools/aapt/AaptAssets.h:18,
                 from frameworks/base/tools/aapt/Main.h:14,
                 from frameworks/base/tools/aapt/Command.cpp:6:
frameworks/base/tools/aapt/ZipFile.h:65: warning: ‘typedef’ was ignored in this declaration
make: *** [out/Host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/org_clearsilver_CS.h] Error 15

追加!

だから私はここでいくつかの問題を抱えていることがわかりました。これらの問題を克服したら、カーネルモジュールをコンパイルできる環境ができると思います。私が間違っている場合は私を修正してください。

次に、module.cファイルとmakefileを含むディレクトリに移動します。以下のメイクファイルの内容:

obj-m += mymodule.o

CROSS_COMPILE=~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
KERNEL_DIR ?= /home/<myuser>/WORKING_DIRECTORY
VERSION = v1.1



all:
    make -C $(KERNEL_DIR) M=$(PWD) Arch=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
    rm -rf *.c~
    rm -rf *.mod*
    rm -rf *.o
clean:
    make -C $(KERNEL_DIR) M=$(PWD) clean

私はmakeとmakefileの経験がほとんどありませんが、これは私には合理的に見えました。このファイルに関する私の主な懸念は、KERNEL-DIR変数です。その変数にいくつかの異なる値を試してみましたが、現在の値ではないのにあらゆる種類のエラーが発生しました。もちろん、それでもまだ間違っている可能性があるため、ここでのコメントは歓迎します。

だから、私が知る限り、引数なしでmakeを実行でき、何をする必要があるかを理解することができます。私はmakeとmake -fをSudoの有無にかかわらず試しました。 4つの順列はすべて同じ結果になります。

make -C /home/<myuser>/WORKING_DIRECTORY M=/home/<myuser>/Desktop/<MyModuleDir> Arch=arm CROSS_COMPILE=~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- modules
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_Arch=arm
Host_Arch=x86
Host_OS=linux
Host_BUILD_TYPE=release
BUILD_ID=Eclair
============================================
make[1]: Entering directory `/home/<myuser>/WORKING_DIRECTORY'
build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory
Available sub-modules:
01-test                     dumpsys                     libminui                    LotsOfApps
20-dns.conf                 dvz                     libminzip                   lowstoragetest
95-configured                   dx                      libmp4recognizer_utility            lsd
aapt                        dx-tests                    libmtdutils                 LunarLander
acc                     edify                       libnativehelper                 LunarLanderTests
AccountAndSyncSettings              Email                       libneo_cgi                  MagicSmokeWallpapers
accRuntimeTest                  EmailTests                  libneo_cs                   make_cfst
acp                     emma                        libneo_util                 makedict
adb                     emmalib                     libnetutils                 make_g2g
adbd                        emulator                    libocr                      makekeycodes
add-property-tag                emulator-arm                    libomx_aac_component_lib            make_ve_grammar
afar                        emulator-hw                 libomx_aacdec_sharedlibrary         mediaframeworktest
aidl                        emulator-tcg                    libomx_amr_component_lib            MediaProvider
AlarmClock                  EnabledTestApp                  libomx_amrdec_sharedlibrary         mediaserver
AliasActivity                   etc1tool                    libomx_amrenc_component_lib         memtest
am                      eventanalyzer                   libomx_amrenc_sharedlibrary         minigzip
Android                     event-log-tags                  libomx_avc_component_lib            mkbootfs
Android.core.tests.annotation           exc_dump                    libomx_avcdec_sharedlibrary         mkbootimg
Android.core.tests.archive          ext                     libomx_baseclass_lib                mksdcard
Android.core.tests.concurrent           Fallback                    libomx_common_lib               mkstubs
Android.core.tests.crypto           fastboot                    libomx_m4v_component_lib            mkyaffs2image
Android.core.tests.dom              FixedGridLayout                 libomx_m4vdec_sharedlibrary         Mms
Android.core.tests.logging          flash_image                 libomx_mastercore_lib               MmsTests
Android.core.tests.luni.io          FontLab                     libomx_mp3_component_lib            monkey
Android.core.tests.luni.lang            framework                   libomx_mp3dec_sharedlibrary         monkeyrunner
Android.core.tests.luni.net         FrameworkPermissionTests            libomx_queue_lib                mtpd
Android.core.tests.luni.util            framework-res                   libomx_sharedlibrary                MultiResolution
Android.core.tests.math             FrameworkTest                   libop                       Music
Android.core.tests.nio              framework-tests                 libopencore_author              MusicTests
Android.core.tests.nio_char         FrameworkTestTests              libopencore_common              nc
Android.core.tests.prefs            fsck_msdos                  libopencore_download                netcfg
Android.core.tests.regex            fs_config                   libopencore_downloadreg             netperf
Android.core.tests.runner           fs_get_stats                    libopencore_mp4local                netserver
Android.core.tests.security         Gallery                     libopencore_mp4localreg             ninepatch
Android.core.tests.sql              Gallery3D                   libopencore_net_support             NinePatchLab
Android.core.tests.text             GalleryTests                    libopencore_player              NoShareUidApp
Android.core.tests.xml              gdbserver                   libopencore_rtsp                NotePad
Android.core.tests.xnet             genext2fs                   libopencore_rtspreg             NotePadTests
Android.cts.dpi                 GestureBuilder                  libosclbase                 opcontrol
Android.cts.refapp              GL2JNI                      libosclerror                    openssl
Android.policy                  GLJNI                       libosclio                   OpenWnn
Android.policy_mid              GlobalSearch                    liboscllib                  oprofiled
Android.policy_phone                GlobalSearchBenchmarks              libosclmemory                   org.Eclipse.core.commands_3.4.0.I20080509-2000
androidprefs                    GlobalSearchPermissionTests         libosclproc                 org.Eclipse.equinox.common_3.4.0.v20080421-2006
Android.test.runner             GlobalSearchTests               libosclregcli                   org.Eclipse.jface_3.4.2.M20090107-0800
AndroidTests                    GlobalTime                  libosclregserv                  org-netbeans-api-visual
angeles                     GoogleContactsProvider              libosclutil                 org-openide-util
ant                     GoogleContactsProviderTests         libpagemap                  osgi
antlr-2.7.7                 google-framework                libpassthru_oma1                PackageInstaller
anttasks                    googlelogin-client              libpcap                     parseStringTest
apicheck                    GoogleSearch                    libpixelflinger                 perm_checker
ApiDemos                    gpustate                    libpixelflinger_armv6               perm_checker.conf
ApiDemosReferenceTest               gralloc.default                 libpixelflinger_static              Phone
ApiDemosTests                   groovy-all-1.6.5                libplatform_library_jni             PicoTts
apkbuilder                  grxmlcompile                    libpng                      ping
ApplicationsProvider                gtest-filepath_test             libpopt                     PinyinIME
applypatch                  gtest-linked_ptr_test               libprotocolenginenode_base          PlatformLibraryClient
applypatch_static               gtest-message_test              libprotocolenginenode_common            platform.xml
app_process                 gtest-options_test              libprotocolenginenode_download_common       pm
AppWidgetHostTest               gtest-port_test                 libprotocolenginenode_pdl           post_trace
AppWidgetProvider               gtest_pred_impl_unittest            libprotocolenginenode_ps            pppd
apriori                     gtest_prod_test                 libpv_aac_dec                   preload
archquery                   gtest-test-part_test                libpvaacffparsernode                ProcessTests
asm-3.1                     gtest-typed-test2_test              libpvaacffrecognizer                procmem
atree                       gtest-typed-test_test               libpvaacparser                  procrank
AudioHardwareRecord             gtest_unittest                  libpvamrffparsernode                profile_pid
AudioHardwareRecordLoop             gzip                        libpvamrffrecognizer                profile_trace
AudioInRecord                   HelloActivity                   libpv_amr_nb_common_lib             Provision
backup_helper_test              HelloActivityTests              libpvamrwbdecoder               pvplayer
BackupTest                  hierarchyviewer                 libpvauthorengine               q2dm
BatteryWaster                   hist_trace                  libpv_avc_common_lib                q2g
bb2sym                      Home                        libpvavcdecoder                 qemud
bb_dump                     hosttestlib                 libpvavifileparser              qemu-props
bbprof                      hprof-conv                  libpv_config_parser             qwerty2.kcm
bison                       HTMLViewer                  libpvdecoder_gsmamr             qwerty.kcm
Bluetooth                   icache                      libpvdownloadinterface              racoon
BluetoothChat                   icudata                     libpvdownloadmanagernode            radiooptions
BluetoothDebug                  idegen                      libpvdownloadreginterface           read_addr
bmgr                        ime                     libpvencoder_gsmamr             read_method
bookmarks.xml                   ImfTest                     libpvfileoutputnode             read_pid
bootanimation                   ImfTestTests                    libpvfileparserutils                read_trace
Browser                     imgdiff                     libpvframemetadatautility           recovery
BrowserPowerTests               init                        libpvgendatastruct              required_hardware.xml
BrowserTestPlugin               input                       libpvgsmamrparser               rgb2565
BrowserTests                    installd                    libpv_http_parcom               rild
bsdiff                      invoke_mock_media_player            libpvid3parcom                  rsg-generator
bspatch                     iptables                    libpvjitterbuffer               RSSReader
btool                       ip-up-vpn                   libpvjitterbuffernode               run-core-tests
bugreport                   iself                       libpvjitterbufferrtp                run-core-tests-on-ri
BusinessCard                    isprelinked                 libpvlatmpayloadparser              safe_iop_test
Calculator                  jarjar                      libpvmediadatastruct                SampleBrowserPlugin
CalculatorTests                 jarutils                    libpvmediainputnode             schedtest
Calendar                    jasmin                      libpvmedialayernode             scp
CalendarProvider                jasmin.jar                  libpvmediaoutputnode                screenshot2
CalendarProviderTests               javax.obex                  libpvmf                     sdklib
CalendarTests                   jcommon-1.0.12                  libpvmfrecognizer               sdkmanager
Camera                      jdiff                       libpvmimeutils                  SdkSetup
CameraTests                 jdwpspy                     libpvmioaviwavfileinput             sdkstats
CertInstaller                   JETBoy                      libpvmiofileinput               sdkuilib
cfassembler                 jfreechart-1.0.9                libpvmiofileoutput              sdutil
check-lost+found                jfreechart-1.0.9-swt                libpvmp3                    SearchableDictionary
check_prereq                    junit                       libpvmp3ff                  sensors.goldfish
check_stack                 jython                      libpvmp3ffparsernode                service
check_trace                 kcm                     libpvmp3ffrecognizer                servicemanager
clearsilver                 keystore                    libpvmp4decoder                 services
cmu2nuance                  keystore_cli                    libpvmp4ff                  Settings
com.Android.inputmethod.pinyin.lib      KeyStoreTests                   libpvmp4ffcomposer              SettingsProvider
com.example.Android.platform_library        kxml2-2.3.0                 libpvmp4ffcomposernode              SettingsTests
commons-compress-1.0                latencytop                  libpvmp4ffparsernode                sh
Compass                     LatinIME                    libpvmp4ffrecognizer                ShareUidApp
ContactManager                  Launcher                    libpvmp4interface               showlease
Contacts                    Launcher2                   libpvmp4reginterface                showmap
ContactsProvider                launchperf                  libpvomxaudiodecnode                showslab
ContactsProviderTests               layoutlib                   libpvomxbasedecnode             sig
ContactsTests                   layoutlib_api                   libpvomxencnode                 sig-check
core                        layoutlib_create                libpv_omx_interface             sig-create
core-tests                  layoutlib_utils                 libpvomx_proxy_lib              signapk
CoreTests                   layoutopt                   libpvomxvideodecnode                SignatureTest
coverage                    libabi                      libpvplayer_engine              SignatureTestTests
cpueater                    libacc                      libpvpvxparser                  signature-tools
cpufeatures                 libaes                      libpvrtsp_cli_eng_node              SimpleJNI
crasher                     libandroidpv                    libpvrtspinterface              SkeletonApp
create_test_dmtrace             libandroidpvauthor              libpv_rtsp_parcom               SkeletonAppTests
cts                     libandroid_runtime              libpvrtspreginterface               skia_bench
CtsAccessibilityServiceTestCases        libandroid_servers              libpvsdpparser                  skia_gm
CtsAccountManagerTestCases          libapplypatch                   libpvsocketnode                 SlowSuggestions
CtsAppAccessData                libarity                    libpvstreamingmanagernode           SmokeTest
CtsAppSecurityTests             libastl                     libpvthreadmessaging                SmokeTestApp
CtsAppTestCases                 libaudioflinger                 libpvwav                    Snake
CtsAppWithData                  libaudiointerface               libpvwavffparsernode                SnakeTests
CtsBluetoothTestCases               libaudiopolicygeneric               libpvwavffrecognizer                SoftKeyboard
CtsContentTestCases             libbinder                   librank                     soslim
cts-dalvik-buildutil                libbz                       libreference-cdma-sms               sound
CtsDatabaseTestCases                libc                        libreference-ril                SoundRecorder
CtsDelegatingAccessibilityService       libcameraservice                libril                      SpammySuggestions
CtsDpiTestCases                 libcamerastub                   libRS                       SpareParts
CtsDpiTestCases2                libc_common                 librs_jni                   spec-progress
CtsExampleTestCases             libc_debug                  librtppayloadparser             sqlite3
CtsGestureTestCases             libclearsilver-jni              librtprtcp                  SRecTest
CtsGraphicsTestCases                libc_nomalloc                   libsafe_iop                 SRecTestAudio
CtsHardwareTestCases                libcolorconvert                 libsampleplugin                 ssh
CtsInstrumentationAppDiffCert           libcpm                      libSDL                      SslLoad
CtsJniTestCases                 libcrypto                   libSDLmain                  stack_dump
CtsLocationTestCases                libctest                    libsimplejni                    StatusBarTest
CtsMediaTestCases               libcts_jni                  libskia                     Stk
CtsNetTestCases                 libctspermission_jni                libskiagl                   strace
CtsOsTestCases                  libcutils                   libsonivox                  stringtemplate
CtsPerformance2TestCases            libdb                       libsoundpool                    su
CtsPerformance3TestCases            libdbus                     libspeex                    surfaceflinger
CtsPerformance4TestCases            libdbus-tools-common                libsqlite                   svc
CtsPerformance5TestCases            libdex                      libsqlite3_Android              swing-worker-1.1
CtsPerformanceTestCases             libdl                       libsqlite3_phone_number_utils_test      swt
CtsPermission2TestCases             libdrm1                     libsqlite3_phonetic_string_utils_test       system_server
CtsPermissionDeclareApp             libdrm1_jni                 libSR_AcousticModels                tcpdump
CtsPermissionTestCases              libdrm2                     libSR_AcousticState             TelephonyProvider
CtsProviderTestCases                libdvm                      libSR_AudioIn                   telephonytest
CtsSharedUidInstall             libebl                      libSR_Core                  temp_layoutlib
CtsSharedUidInstallDiffCert         libebl_arm                  libsrec_jni                 Term
CtsSimpleAppInstall             libedify                    libSR_EventLog                  test_defs.xml
CtsSimpleAppInstallDiffCert         libEGL                      libSR_G2P                   TestDeviceSetup
CtsSpeechTestCases              libelf                      libSR_Grammar                   test-fb-refresh
CtsTargetInstrumentationApp         libelfcopy                  libSR_Nametag                   test-fb-simple
CtsTelephonyTestCases               libembunit                  libSR_Recognizer                test_g2g
CtsTestStubs                    libemoji                    libSR_Semproc                   test-mdp
CtsTextTestCases                libESR_Portable                 libSR_Session                   test-opengl-codegen
CtsUsePermissionDiffCert            libESR_Shared                   libSR_Vocabulary                test-opengl-fillrate
CtsUtilTestCases                libETC1                     libssl                      test-opengl-filter
CtsViewTestCases                libexif                     libstagefright                  test-opengl-finish
CtsWebkitTestCases              libexpat                    libstagefright_omx              test-opengl-gl2_basic
CtsWidgetTestCases              libext                      libstdc++                   test-opengl-gl_basic
CubeLiveWallpapers              libfdlibm                   libsurfaceflinger               test-opengl-gralloc
CustomLocale                    libFFTEm                    libsvoxpico                 test-opengl-linetex
daemonize                   libfst                      libsystem_server                test-opengl-swapinterval
dalvikvm                    libft2                      libsysutils                 test-opengl-textures
dasm                        libgetactualaacconfig               libterm                     test-opengl-tritex
dbus-daemon                 libgif                      libtestplugin                   test-progress
dbus-monitor                    libgl2jni                   libthread_db                    test-progress-new
dbus-send                   libGLES_Android                 libthreadsafe_callback_ao           test_swiarb
ddmlib                      libGLESv1_CM                    libtinyxml                  test_zipfile
ddms                        libGLESv2                   libtomcrypt                 timeinfo
ddmuilib                    libgljni                    libtommath                  timetest
debuggerd                   libgoogleclient                 libttspico                  toolbox
DensityTest                 libgtest                    libttssynthproxy                traceview
descGen                     libgtest_main                   libui                       TransformTest
DeskClock                   libhardware                 libunz                      TtsService
Development                 libhardware_legacy              libutil                     tuttle2.kcm
dexdeps                     libhost                     libutils                    uix
dexdump                     libicudata-default              libvorbisidec                   updater
dexlist                     libicudata-eu                   libwbxml                    UpgradeExample
dexopt                      libicudata-jp                   libwbxml_jni                    usbtest
dexopt-wrapper                  libicudata-large                libwebcore                  UserDictionaryProvider
dexpreopt                   libicudata-us                   libwnndict                  VisualizationWallpapers
dex-tools                   libicui18n                  libWnnEngDic                    vm-tests
dhcpcd                      libicuuc                    libWnnJpnDic                    VoiceDialer
dhcpcd-run-hooks                libiptc                     libwpa_client                   Voiper
dictTest                    libjavacore                 libxml2                     vold
DisabledTestApp                 libjni_latinime                 libxml2wbxml                    VpnServices
dmtracedump                 libjni_pinyinime                libz                        wbxmltest
DownloadProvider                libjnitest                  libzipfile                  wdsclient
draw9patch                  libjpeg                     LightingTest                    webkitmerge
DrmProvider                 liblog                      line_endings                    Wiktionary
droiddoc                    libm                        linker                      WiktionarySimple
dumpeventlog                    libm4v_config                   LiveWallpapers                  xmlwriter
dumpkey                     libmedia                    LiveWallpapersPicker                yuv420sp2rgb
dump_regions                    libmedia_jni                    localize                    zipalign
DumpRenderTree                  libmediaplayerservice               logcat
dumpstate                   libmincrypt                 logwrapper
make[1]: Leaving directory `/home/<myuser>/WORKING_DIRECTORY'
rm -rf *.c~
rm -rf *.mod*
rm -rf *.o

いくつかのねじれた警告に気づくでしょうが、私が知る限り、それらは実際の問題ではありません。これらについて誰かが違うと感じている場合は、そのように言ってください。

make[1]: Entering directory `/home/<myuser>/WORKING_DIRECTORY'
build/core/copy_headers.mk:15: warning: overriding commands for target     `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target     `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory

最後の行はかなり疑わしいと思いますが、どうすればいいのかわかりません。私が言及したいくつかの奇妙なことを除いて、これはすべて順調に進んだように見えます。しかし、すべてが完了した後、*。koファイルが見つかりません。ホームディレクトリでls -alRg | grep *.koを実行したところ、何も表示されません。私は困惑しています。さらに情報を提供したり、テストを実行したり、別の方法で試したりできる場合は、頻繁にチェックインします。

16
Brian Sweeney

遅くなってすみませんが、それが役に立てば幸いです:

http://tthtlc.wordpress.com/2011/12/29/how-to-write-a-kernel-module-on-Android-sony-ericsson-xperia-arc-s/

私は自分のSony Ericsson Xperia Arc Sでコードを作成してテストしましたが、正常に機能します(通常、Android電話)で機能するはずです)。

AdbとUSBを介して接続し、ルートに「su」すると、「lsmod」にすべてのカーネルモジュールがリストされます(一般に、記事 http://developer.sonyericsson.com/wp/2011/05/06)/how-to-build-a-linux-kernel / は、SonyEricsson電話用のLinuxカーネルコンパイルで何をすべきかを非常によくカバーしています):

lsmod
Android_module 654 0 - Live 0x7f007000 (P)
sdio 16532 0 - Live 0x7f000000

「Android_module」は、insmod Android_module.koを介して挿入したものです。

方法は次のとおりです。

最初に、元のプログラムが以下からコピーされました。

http://rechtzeit.wordpress.com/2011/03/21/77/

または次のように複製します:

Android_module.c

#include"linux/module.h"
#include"linux/kernel.h"
//replace the "" with angular brackets
int init_module(void)
{
  printk(KERN_INFO "Hello Android kernel...\n");
  return 0;
}

void cleanup_module(void)
{
  printk(KERN_INFO "Goodbye Android kernel...\n");
}

Makefile

obj-m += Android_module.o

all:
make -C /home/tteikhua/Android/sony_ericsson_src/58/kernel/ M=$(PWD) modules
clean:
make -C /home/tteikhua/Android/sony_ericsson_src/58/kernel/ M=$(PWD) clean

カーネルが配置されているディレクトリ(上記の「-C」)は、SonyEricssonカーネルイメージをここからダウンロードした場所です。

http://developer.sonyericsson.com/wportal/devworld/downloads/download/30a2181182tarbz2?cc=gb&lc=en

次のコマンドは、上記のMakefileを使用します。

Arch=arm CROSS_COMPILE=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- make

上記のように、私が使用したクロスコンパイラはCodeSourceryのものです。

そしてinsmod Android_module.koの後、dmesg出力にデバッグメッセージが表示されます。

 <6>[11184.063507] Hello Android kernel...
 <7>[11619.209655] msmrtc_timeremote_set_time: 11/29/2011 10:09:36 (04)
 <6>[11619.210418] RPC CALL -- TOD TIME UPDATE: ttick = 404244221
 <6>[11619.210418] stamp=52910543933046785, freq = 0
 <7>[11619.211578] msmrtc_tod_proc_result: 12/29/2011 10:09:36 (03)
 <6>[11619.211578] rs30000048 rs30000048.262144: setting system clock to 2011-12-29 10:09:36 UTC (1325153376)
 <6>[11662.112365] device rmnet0 left promiscuous mode
 <6>[11662.112579] device rmnet0 entered promiscuous mode
 <6>[11669.958221] device rmnet0 left promiscuous mode
 <6>[11669.958435] device rmnet0 entered promiscuous mode
 <7>[11698.181060] msmrtc_timeremote_set_time: 11/29/2011 10:10:55 (04)
 <6>[11698.187622] RPC CALL -- TOD TIME UPDATE: ttick = 406832008
 <6>[11698.187652] stamp=52910548228014081, freq = 0
 <7>[11698.193939] msmrtc_tod_proc_result: 12/29/2011 10:10:55 (03)
 <6>[11698.194030] rs30000048 rs30000048.262144: setting system clock to 2011-12-29 10:10:55 UTC (1325153455)
 <6>[11814.442901] bq27520 0-0055: bq27520_handle_soc_worker() capacity=97 (100) flags=0x229 ctrl_status=0x28b soh_state=0x3, valid=1
 <6>[11984.057373] Goodbye Android kernel...

そして、「さようなら」はrmmod Android_moduleが実行されるときです。その中間には、カーネル内の他のコンポーネントからのデバッグメッセージがあります。

7
Peter Teoh

エミュレーターカーネルがモジュールをサポートしていないと思うので、モジュールサポート付きのカーネルもコンパイルする必要があります。

このリンク がお役に立てば幸いです

3
Marco Grassi

やらなければならないことが2つあります。まず、ロード可能なカーネルモジュールをサポートするエミュレータカーネルを作成します。

包括的な ここに投稿 があり、エミュレーターカーネルのセットアッププロセスをカバーしています。

変更する手順には2つの部分があります。

  1. 次のように、カーネルをリポ領域(この場合は〜/ WORKING_DIRECTORY)内に保持するのが最も簡単です。

    cd ~/WORKING_DIRECTORY
    mkdir kernel
    cd kernel
    git clone git://Android.git.kernel.org/kernel/common.git
    
  2. ただし、ブランチ情報は正しくないため、次のように記載されています。

    git checkout -t Origin/Android-goldfish-2.6.29 -b goldfish
    

代わりにこれを使用してください:

    git checkout -t archive/Android-gldfish-2.6.29 -b goldfish

ご存知のように、デフォルトではカーネルはロード可能なモジュールのサポートで構成されていません。コンパイルする前に有効にします。後、このステップ:

make Arch=arm goldfish_defconfig

これを行う:

make Arch=arm menuconfig

テキストベースのメニューが表示されます。上/下矢印キーを使用して移動し、スペースを使用してオプションを選択し、Enterキーを押してメニューを展開します(メニューには--->があります)、Esc-Escを使用してメニューに戻ります。

  1. 下にスクロールしてSpaceを押し、「ロード可能なモジュールのサポートを有効にする」を選択します
  2. Esc-Escキーを押して終了し、Enterキーを押して新しい構成を保存します

ビルドします。あなたの設定を使用すると、それは次のようになります:

make Arch=arm CROSS_COMPILE=/home/<myuser>/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-

これで、ロード可能なカーネルモジュールを作成する2番目の部分を実行できます。もう少しで完了ですが、エミュレータのカーネルソースがないため、機能しませんでした。あなたが持っているmakefileを取り、KERNEL_DIRを次のように変更してください:

KERNEL_DIR ?= /home/<myuser>/WORKING_DIRECTORY/kernel/common
2
alkalinity