Comment créez-vous un module kernel chargeable pour Android?

Je connais un certain nombre de tutoriels et de tutoriels qui flottent là-bas qui décrivent cette activité, mais après avoir lu beaucoup d'entre eux, je ne peux toujours pas fonctionner. Si quelqu'un a la patience de parcourir les étapes que j'ai prises (postées ci-dessous) et de suggérer où je me suis peut-être quitté, je serais très reconnaissant. J'ai passé environ un jour et demi à regarder des fichiers et à lire des instructions, de sorte que toutes les suggestions seraient utiles.

Environnement:

  • Android System App 101
  • Les téléphones Redmi ne demandent pas les autorisations SMS et ne lisent donc pas les sms
  • Téléchargement de l'image vers le serveur en Multipart avec les données JSON dans Android
  • Utilisez SharedPreferences en mode multiprocessus
  • Manifest Merger a échoué avec de multiples erreurs dans Android Studio
  • Quand String.split renvoie un tableau vide?
    • J'utilise un Ubuntu 10.04 32 bit vm.
    • J'habite à partir d'une fenêtre 64 bits 7
    • Mon Core 2 Duo n'a pas le support matériel pour les machines virtuelles 64 bits, alors j'essaie de compiler sur le noyau Android 2.1
    • J'ai installé Java 1.5 à partir du compte de rechange de Dapper et supprimé mon installation 1.6
    • Le reste de l'outillage a été acquis selon la documentation Android dev …

    Selon Initialisation d'un environnement de construction :

    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 

    Autre requis:

     $ 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 

    Ensuite, depuis le téléchargement de l'arbre source :

    Repo:

     $ 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) 

    Et de Building the System :

    Initialiser:

     $ source build/envsetup.sh 

    Choisissez une cible:

     $ lunch generic-user 

    Construisez le code:

     $ make -j4 

    Ajoutée! Sortie de 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 

    Ajoutée!

    Il s'avère que j'ai des problèmes ici. Je suppose qu'une fois que j'ai surmonté ces problèmes, j'aurai un environnement capable de compiler les modules du noyau. Veuillez me corriger si je me trompe.

    Ensuite, je me dirige vers mon répertoire contenant mon fichier module.c et c'est makefile. Contenu du makefile ci-dessous:

     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 

    J'ai très peu d'expérience avec make and makefiles, mais cela m'a semblé raisonnable. Ma principale préoccupation avec ce fichier est la variable KERNEL-DIR . J'ai essayé quelques valeurs différentes pour cette variable, mais j'ai eu toutes sortes d'erreurs où je ne le fais pas avec sa valeur actuelle. Bien sûr, cela pourrait toujours être faux, donc tout commentaire ici est le bienvenu.

    Donc, pour autant que je sache, je devrais pouvoir exécuter make with no args ou quoi que ce soit, et je vais comprendre ce qu'il faut faire. J'ai essayé de faire, faire -f à la fois avec et sans sudo. Les quatre permutations donnent les mêmes résultats:

     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 

    Vous remarquerez quelques avertissements vifs, mais autant que je peux le dire, ce ne sont pas des problèmes réels. Si quelqu'un se sent différemment à ce sujet, dites-le.

     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 

    Je suppose que la dernière ligne semble assez méfiante, mais je n'ai aucune idée de ce qu'il faut faire à ce sujet. En dehors des quelques choses étranges que j'ai mentionnées, il semblerait que tout cela s'est bien déroulé. Cependant, une fois que tout est terminé, je ne trouve pas le fichier * .ko. J'ai fait un ls -alRg | grep *.ko ls -alRg | grep *.ko sur mon répertoire personnel et il ne génère rien. Je suis perplexe. Si je peux fournir plus d'informations ou effectuer des tests ou essayer quelque chose différemment, je vérifierai fréquemment.

  • Android Studio Impossible de charger la classe 'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'
  • Comment puis-je obtenir des commandes de remboursement Google?
  • Les onglets personnalisés Android Chrome / Fitbit Web API ne seront pas redirigés si l'application est déjà autorisée. (OAuth2.0)
  • Comment faire une simple tâche asynchrone à l'aide de la librairie Volley Library
  • Comment tester une application Android dans plusieurs activités?
  • Arrêt d'un bouton d'action flottant sur les marges de vue
  • 3 Solutions collect form web for “Comment créez-vous un module kernel chargeable pour Android?”

    Désolé d'être en retard, mais j'espère que cela vous aidera:

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

    J'ai écrit et testé le code sur mon Sony Ericsson Xperia Arc S et ça marche (en général devrait fonctionner pour n'importe quel téléphone Android).

    Connexion via adb et USB et "su" à root, le "lsmod" répertorie tout le module noyau (en général, l'article à http://developer.sonyericsson.com/wp/2011/05/06/how-to -build-a-linux-kernel / a donné une très bonne couverture de ce qu'il faut faire dans la compilation du noyau Linux pour le téléphone SonyEricsson):

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

    "Android_module" était celui que j'avais inséré via insmod android_module.ko .

    Voici comment le faire:

    Tout d'abord, le programme original a été copié à partir de:

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

    Ou reproduit comme suit:

    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 

    Le répertoire où se trouve le noyau ("-C" ci-dessus) est l'endroit où j'ai téléchargé l'image du noyau SonyEricsson à partir d'ici:

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

    Et la commande suivante utilisera le Makefile ci-dessus:

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

    Comme indiqué ci-dessus, le compilateur croisé que j'avais utilisé est de CodeSourcery.

    Et après insmod android_module.ko vous pouvez voir le message de débogage dans la sortie 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... 

    Et le "Au revoir" est lorsque rmmod android_module est exécuté. Entre les deux, le message de débogage d'autres composants du noyau est passé.

    Je pense que j'ai un rouge que le noyau d'émulateur ne prend pas en charge le module, donc vous devez compiler également le noyau avec le support de modules.

    J'espère que ce lien vous aidera

    Il y a deux choses que vous devrez faire. Tout d'abord, créez un noyau d'émulateur prenant en charge les modules de noyau pouvant être chargés.

    Il existe une publication complète couvrant le processus de configuration du noyau émulateur.

    Il y a 2 parties des instructions à modifier:

    1. Je trouve le plus facile de garder le noyau dans la zone de pension (dans ce cas, ~ / WORKING_DIRECTORY), de la manière suivante:

       cd ~/WORKING_DIRECTORY mkdir kernel cd kernel git clone git://android.git.kernel.org/kernel/common.git 
    2. L'information de la branche n'est plus correcte, cependant, alors, où elle dit:

       git checkout -t origin/android-goldfish-2.6.29 -b goldfish 

    Utilisez-le à la place:

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

    Comme vous l'avez découvert, le noyau par défaut n'est pas configuré avec un support de module chargeable. Activer avant de compiler. Après, cette étape:

     make ARCH=arm goldfish_defconfig 

    faire cela:

     make ARCH=arm menuconfig 

    Un menu basé sur le texte apparaîtra. Utilisez les touches fléchées Haut / Bas pour naviguer, Espace pour sélectionner une option, Entrée pour agrandir un menu (les menus ont —>) à la fin de la ligne, et Esc-Esc pour revenir à un menu.

    1. Sélectionnez "Activer le support du module chargeable" en faisant défiler vers le bas et en touchant l'espace
    2. Appuyez sur Esc-Esc pour quitter, puis appuyez sur Entrée pour enregistrer la nouvelle configuration

    Maintenant, créez. En utilisant votre configuration, ce serait:

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

    Maintenant que cela se fait, vous pouvez faire la deuxième partie, qui crée un module kernel chargeable. Vous étiez presque là-bas, mais parce que vous n'aviez pas la source du noyau pour l'émulateur, cela ne fonctionnait pas. Il suffit de prendre le makefile que vous avez et de modifier KERNEL_DIR à:

     KERNEL_DIR ?= /home/<myuser>/WORKING_DIRECTORY/kernel/common 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.