第一次接触Android源码,很多地方都不了解,所以下载和编译源码也格外费时费力。故将遇到的问题和步骤记录下来,以备将来复习使用:
==================================华丽的分割线================================================================
1.下载源码常见问题
jefby@jefby-P45VJ:~/arndale-octa$ repo sync -f -j16Fetching projects: 7% (24/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/packages/wallpapers/MusicVisualization/info/refs
fatal: HTTP request failed
Fetching projects: 21% (70/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/jack/info/refs
fatal: HTTP request failed
error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/libselinux/info/refs
fatal: HTTP request failed
Fetching projects: 27% (90/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/srtp/info/refs
fatal: HTTP request faile
Fetching projects: 28% (93/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/packages/apps/VoiceDialer/info/refs
fatal: HTTP request failed
Fetching projects: 54% (179/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/hardware/qcom/wlan/info/refs
fatal: HTTP request failed
Fetching projects: 55% (182/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/packages/apps/SpeechRecorder/info/refs
fatal: HTTP request failed
error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/freetype/info/refs
fatal: HTTP request failed
Fetching projects: 99% (327/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/info/refs
fatal: HTTP request failed
Fetching projects: 100% (330/330), done.
Syncing work tree: 100% (330/330), done.
错误1:
Fetching projects: 99% (327/330) error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/info/refs
是因为google对源码下载做了限制,解决方法:
在网站android.googlesource.com/new-password上使用google帐号登录,并拷贝信息到~/.netrc文件中.
==============================================华丽的分割线===================================================
2.编译源码具体步骤截图和错误分析
./vendor_samsungxxx.run
./vendor_insignalxx.run
3.编译andorid源码,内核和u-boot就省略了(不太容易出问题)
jefby@jefby-P45VJ:~/arndale-octa$make kernel-binaries
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.2
TARGET_PRODUCT=full_arndale_octa
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.5.0-23-generic-x86_64-with-Ubuntu-12.04-precise
HOST_BUILD_TYPE=release
BUILD_ID=JDQ39
OUT_DIR=out
============================================
Checkingbuild tools versions...
external/bluetooth/bluedroid/Android.mk:8:NO BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR, using only genericconfiguration
find:`../../vendor/unbundled_google/libs/gcm/gcm-client/src‘: 没有那个文件或目录
find:`../../vendor/unbundled_google/libs/gcm/gcm-server/src‘: 没有那个文件或目录
find:`../../vendor/unbundled_google/libs/gcm/gcm-client/src‘: 没有那个文件或目录
find:`../../vendor/unbundled_google/libs/gcm/gcm-server/src‘: 没有那个文件或目录
find:`src‘: 没有那个文件或目录
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressStandard.ogg:system/media/audio/ui/KeypressStandard.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/VideoRecord.ogg:system/media/audio/ui/VideoRecord.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/camera_click.ogg:system/media/audio/ui/camera_click.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/LowBattery.ogg:system/media/audio/ui/LowBattery.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/Dock.ogg:system/media/audio/ui/Dock.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/Lock.ogg:system/media/audio/ui/Lock.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/Unlock.ogg:system/media/audio/ui/Unlock.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Sceptrum.ogg:system/media/audio/ringtones/Sceptrum.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressStandard_120.ogg:system/media/audio/ui/KeypressStandard.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressSpacebar_120.ogg:system/media/audio/ui/KeypressSpacebar.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressDelete_120.ogg:system/media/audio/ui/KeypressDelete.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/effects/ogg/KeypressReturn_120.ogg:system/media/audio/ui/KeypressReturn.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/notifications/ogg/Capella.ogg:system/media/audio/notifications/Capella.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/notifications/ogg/CetiAlpha.ogg:system/media/audio/notifications/CetiAlpha.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/notifications/ogg/Polaris.ogg:system/media/audio/notifications/Polaris.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/notifications/ogg/Pollux.ogg:system/media/audio/notifications/Pollux.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/notifications/ogg/Procyon.ogg:system/media/audio/notifications/Procyon.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Aquila.ogg:system/media/audio/ringtones/Aquila.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/ArgoNavis.ogg:system/media/audio/ringtones/ArgoNavis.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Carina.ogg:system/media/audio/ringtones/Carina.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Centaurus.ogg:system/media/audio/ringtones/Centaurus.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Cygnus.ogg:system/media/audio/ringtones/Cygnus.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Draco.ogg:system/media/audio/ringtones/Draco.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Machina.ogg:system/media/audio/ringtones/Machina.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Orion.ogg:system/media/audio/ringtones/Orioabin.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Pegasus.ogg:system/media/audio/ringtones/Pegasus.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Pyxis.ogg:system/media/audio/ringtones/Pyxis.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Rigel.ogg:system/media/audio/ringtones/Rigel.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Scarabaeus.ogg:system/media/audio/ringtones/Scarabaeus.oggignored.
PRODUCT_COPY_FILESframeworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.oggignored.
!!WARN !! Skip set arndale_octa_android_defconfig. will use .config!
!!WARN !! Skip build zImage. will use prebuilt one!
mkdir-p /home/jefby/arndale-octa/out/target/product/arndale_octa
mkdir-p /home/jefby/arndale-octa/out/target/product/arndale_octa/system
cp /home/jefby/arndale-octa/kernel/arch/arm/boot/zImage /home/jefby/arndale-octa/out/target/product/arndale_octa/kernel
Buildingkernel modules...
make[1]:正在进入目录 `/home/jefby/arndale-octa/kernel‘
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[2]:“include/generated/mach-types.h”是最新的。
CALL scripts/checksyscalls.sh
Building modules, stage 2.
MODPOST 26 modules
make[1]:正在离开目录 `/home/jefby/arndale-octa/kernel
错误2:
/bin/bash:mkimage: can‘t find the directory
targetSharedLib: libbcinfo(out/target/product/arndale_octa/obj/SHARED_LIBRARIES/libbcinfo_intermediates/LINKED/libbcinfo.so)
targetSharedLib: libcorkscrew(out/target/product/arndale_octa/obj/SHARED_LIBRARIES/libcorkscrew_intermediates/LINKED/libcorkscrew.so)
make:*** [out/target/product/arndale_octa/ramdisk.img.ub] 错误 127
make:*** 正在等待未完成的任务....
targetSharedLib: libhardware(out/target/product/arndale_octa/obj/SHARED_LIBRARIES/libhardware_intermediates/LINKED/libhardware.so)
DroidDoctook 374 sec. to write docs to out/target/common/docs/doc-comment-check
‘out/target/common/obj/APPS/Contacts_intermediates/classes.dex‘as ‘classes.dex
原因:缺乏构建镜像的工具,解决方法:
sudo apt-get install uboot-image
编译镜像文件的输出:
make -j16//配置高的话可以再调高一些,例如make -j32等。
这一步需要耐心等待,我电脑core i5 3230,4G内存,编译了3个小时。
输出:
make_ext4fs-s -l 314572800 -a systemout/target/product/arndale_octa/obj/PACKAGING/systemimage_intermediates/system.imgout/target/product/arndale_octa/system
+make_ext4fs -s -l 314572800 -a system out/target/product/arndale_octa/obj/PACKAGING/systemimage_intermediates/system.imgout/target/product/arndale_octa/system
Creatingfilesystem with parameters:
Size: 314572800
Block size: 4096
Blocks per group: 32768
Inodes per group: 6400
Inode size: 256
Journal blocks: 1200
Label:
Blocks: 76800
Block groups: 3
Reserved block group size:23
Createdfilesystem with 1086/19200 inodes and 57701/76800 blocks
+‘[‘ 0 -ne 0 ‘]‘
Running: simg2imgout/target/product/arndale_octa/obj/PACKAGING/systemimage_intermediates/system.imgout/target/product/arndale_octa/obj/PACKAGING/systemimage_intermediates/unsparse_system.img
Running: e2fsck -f -nout/target/product/arndale_octa/obj/PACKAGING/systemimage_intermediates/unsparse_system.img
e2fsck1.41.14 (22-Dec-2010)
Pass1: Checking inodes, blocks, and sizes
Pass2: Checking directory structure
Pass3: Checking directory connectivity
Pass4: Checking reference counts
Pass5: Checking group summary information
out/target/product/arndale_octa/obj/PACKAGING/systemimage_intermediates/unsparse_system.img:1086/19200 files (0.0% non-contiguous), 57701/76800 blocks
Installsystem fs image: out/target/product/arndale_octa/system.img
out/target/product/arndale_octa/system.img+maxsize=321159168 blocksize=4224 total=232984688 reserve=3244032
错误3:
bionic/libm/arm/e_pow.S:Assembler messages:
bionic/libm/arm/e_pow.S:139:Error: selected FPU does not support instruction -- `vmov.i64d31,#0xffffffff00000000‘
bionic/libm/arm/e_pow.S:142:Error: D register out of range for selected VFP version -- `fconstd d28,#0x70‘
bionic/libm/arm/e_pow.S:151:Error: selected processor does not support ARM mode `vshl.i64 d30,d31,#20‘
bionic/libm/arm/e_pow.S:152:Error: selected processor does not support ARM mode `vshr.u64 d29,d31,#63‘
bionic/libm/arm/e_pow.S:173:Error: selected processor does not support ARM mode `vbic.i64 d16,d0,d30‘
bionic/libm/arm/e_pow.S:176:Error: selected processor does not support ARM mode `vand.i64 d2,d0,d30‘
bionic/libm/arm/e_pow.S:191:Error: VFP single precision register expected -- `vldm r10!,{d24,d25,d26,d27}‘
bionic/libm/arm/e_pow.S:194:Error: selected processor does not support ARM mode `vorr.i64 d16,d16,d28‘
bionic/libm/arm/e_pow.S:198:Error: D register out of range for selected VFP version -- `vsub.f64d19,d16,d4‘
bionic/libm/arm/e_pow.S:199:Error: D register out of range for selected VFP version -- `vadd.f64d20,d16,d4‘
bionic/libm/arm/e_pow.S:204:Error: D register out of range for selected VFP version -- `vdiv.f64 d16,d19,d20‘
bionic/libm/arm/e_pow.S:207:Error: D register out of range for selected VFP version -- `vldrd21,.Ltwooverthreeln2‘
bionic/libm/arm/e_pow.S:210:Error: selected FPU does not support instruction -- `vsub.i64 d2,d2,d28‘
bionic/libm/arm/e_pow.S:215:Error: D register out of range for selected VFP version -- `vmul.f64d17,d16,d16‘
bionic/libm/arm/e_pow.S:218:Error: D register out of range for selected VFP version -- `vmul.f64d18,d17,d17‘
bionic/libm/arm/e_pow.S:221:Error: D register out of range for selected VFP version -- `vmul.f64d21,d21,d1‘
bionic/libm/arm/e_pow.S:224:Error: selected processor does not support ARM mode `vshr.s64 d2,d2,#52‘
bionic/libm/arm/e_pow.S:227:Error: D register out of range for selected VFP version -- `vmla.f64 d25,d17,d24‘
bionic/libm/arm/e_pow.S:230:Error: D register out of range for selected VFP version -- `vmla.f64d27,d17,d26‘
bionic/libm/arm/e_pow.S:233:Error: D register out of range for selected VFP version -- `vmul.f64d21,d16,d21‘
bionic/libm/arm/e_pow.S:236:Error: D register out of range for selected VFP version -- `vadd.f64 d0,d0,d17‘
bionic/libm/arm/e_pow.S:241:Error: D register out of range for selected VFP version -- `vmla.f64d27,d18,d25‘
bionic/libm/arm/e_pow.S:247:Error: D register out of range for selected VFP version -- `vmla.f64d0,d18,d27‘
bionic/libm/arm/e_pow.S:250:Error: D register out of range for selected VFP version -- `vmul.f64 d0,d21,d0‘
bionic/libm/arm/e_pow.S:255:Error: selected processor does not support ARM mode `vshl.u64 d4,d29,#1‘
bionic/libm/arm/e_pow.S:264:Error: selected processor does not support ARM mode `vshr.s64 d16,d0,#62‘
bionic/libm/arm/e_pow.S:265:Error: selected processor does not support ARM mode `vshr.s64 d19,d3,#62‘
bionic/libm/arm/e_pow.S:268:Error: selected FPU does not support instruction -- `vmov d17,d0‘
bionic/libm/arm/e_pow.S:273:Error: selected FPU does not support instruction -- `vmov d18,d3‘
bionic/libm/arm/e_pow.S:277:Error: VFP single precision register expected -- `vldm r10!,{d20,d21,d22,d23,d24,d25,d26,d27}‘
bionic/libm/arm/e_pow.S:280:Error: selected processor does not support ARM mode `vshl.u64 d1,d29,#2‘
bionic/libm/arm/e_pow.S:283:Error: selected processor does not support ARM mode `vorr.u64 d16,d16,d29‘
bionic/libm/arm/e_pow.S:284:Error: selected processor does not support ARM mode `vorr.u64 d19,d19,d29‘
bionic/libm/arm/e_pow.S:287:Error: selected FPU does not support instruction -- `vadd.s32 d0,d0,d16‘
bionic/libm/arm/e_pow.S:288:Error: selected FPU does not support instruction -- `vadd.s32 d3,d3,d19‘
bionic/libm/arm/e_pow.S:291:Error: selected processor does not support ARM mode `vbic.s32 d0,d0,d29‘
bionic/libm/arm/e_pow.S:293:Error: selected processor does not support ARM mode `vbic.s32 d3,d3,d29‘
bionic/libm/arm/e_pow.S:295:Error: selected FPU does not support instruction -- `vadd.s64 d31,d3,d0‘
bionic/libm/arm/e_pow.S:297:Error: selected processor does not support ARM mode `vshl.i64 d2,d31,#49‘
bionic/libm/arm/e_pow.S:299:Error: selected processor does not support ARM mode `vand.u64 d4,d4,d31‘
bionic/libm/arm/e_pow.S:300:Error: selected processor does not support ARM mode `vand.u64 d1,d1,d31‘
bionic/libm/arm/e_pow.S:308:Error: selected processor does not support ARM mode `vqshl.u64 d1,d1,#62‘
bionic/libm/arm/e_pow.S:310:Error: selected processor does not support ARM mode `vqshl.u64 d4,d4,#63‘
bionic/libm/arm/e_pow.S:313:Error: D register out of range for selected VFP version -- `vsub.f64d17,d17,d0‘
bionic/libm/arm/e_pow.S:315:Error: D register out of range for selected VFP version -- `vsub.f64d18,d18,d3‘
bionic/libm/arm/e_pow.S:318:Error: D register out of range for selected VFP version -- `vadd.f64d16,d17,d18‘
bionic/libm/arm/e_pow.S:324:Error: D register out of range for selected VFP version -- `vmul.f64d16,d5,d16‘
bionic/libm/arm/e_pow.S:329:Error: D register out of range for selected VFP version -- `vmul.f64d17,d16,d16‘
bionic/libm/arm/e_pow.S:332:Error: selected processor does not support ARM mode `vand.u64 d1,d1,d6‘
bionic/libm/arm/e_pow.S:334:Error: selected processor does not support ARM mode `vand.u64 d4,d4,d6‘
bionic/libm/arm/e_pow.S:337:Error: D register out of range for selected VFP version -- `vadd.f64 d0,d0,d16‘
bionic/libm/arm/e_pow.S:340:Error: D register out of range for selected VFP version -- `vmla.f64d21,d16,d20‘
bionic/libm/arm/e_pow.S:343:Error: D register out of range for selected VFP version -- `vmul.f64d18,d17,d17‘
bionic/libm/arm/e_pow.S:346:Error: selected processor does not support ARM mode `vorr.u64 d1,d1,d28‘
bionic/libm/arm/e_pow.S:348:Error: selected processor does not support ARM mode `vorr.u64 d4,d4,d28‘
bionic/libm/arm/e_pow.S:354:Error: D register out of range for selected VFP version -- `vmul.f64d19,d17,d16‘
bionic/libm/arm/e_pow.S:357:Error: D register out of range for selected VFP version -- `fconstd d28,#0x60‘
bionic/libm/arm/e_pow.S:360:Error: selected processor does not support ARM mode `vand.i64 d2,d2,d30‘
bionic/libm/arm/e_pow.S:368:Error: D register out of range for selected VFP version -- `vmla.f64d23,d16,d22‘
bionic/libm/arm/e_pow.S:371:Error: D register out of range for selected VFP version -- `vmla.f64d25,d16,d24‘
bionic/libm/arm/e_pow.S:374:Error: D register out of range for selected VFP version -- `vmla.f64d27,d16,d26‘
bionic/libm/arm/e_pow.S:380:Error: D register out of range for selected VFP version -- `vmla.f64d23,d17,d21‘
bionic/libm/arm/e_pow.S:383:Error: D register out of range for selected VFP version -- `vmla.f64d27,d17,d25‘
bionic/libm/arm/e_pow.S:386:Error: D register out of range for selected VFP version -- `vmla.f64d0,d17,d28‘
bionic/libm/arm/e_pow.S:389:Error: selected FPU does not support instruction -- `vadd.i64 d7,d2,d7‘
bionic/libm/arm/e_pow.S:392:Error: D register out of range for selected VFP version -- `vmla.f64d27,d18,d23‘
bionic/libm/arm/e_pow.S:395:Error: D register out of range for selected VFP version -- `vmla.f64d0,d19,d27‘
make:***[out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates/arm/e_pow.o]错误 1
解决方法:
重新构建内核和android源码。
3:将编译好的镜像文件烧写到开发板上,有两种方法:一种是烧写到eMMC上,一种是烧写到SD/MMC上。默认配置是eMMC,若要修改则需重新配置并编译。
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash fwbl1 vendor/insignal/arndale_octa/exynos5420/arndale_octa.bl1.bin
<waiting for device >
sending‘fwbl1‘ (15 KB)...
OKAY[ 0.005s]
writing‘fwbl1‘...
OKAY[ 0.151s]
finished.total time: 0.157s
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash bl2 vendor/insignal/arndale_octa/exynos5420/arndale_octa.bl2.bin
sending‘bl2‘ (14 KB)...
OKAY[ 0.005s]
writing‘bl2‘...
OKAY[ 0.150s]
finished.total time: 0.156s
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash bootloader u-boot/u-boot.bin
sending‘bootloader‘ (253 KB)...
OKAY[ 0.046s]
writing‘bootloader‘...
OKAY[ 0.131s]
finished.total time: 0.178s
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash tzswvendor/insignal/arndale_octa/exynos5420/arndale_octa.tzsw.bin
sending‘tzsw‘ (256 KB)...
OKAY[ 0.048s]
writing‘tzsw‘...
OKAY[ 0.134s]
finished.total time: 0.182s
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash kernel kernel/arch/arm/boot/zImage
sending‘kernel‘ (4024 KB)...
OKAY[ 0.683s]
writing‘kernel‘...
OKAY[ 0.726s]
finished.total time: 1.409s
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash ramdisk out/target/product/arndale_octa/ramdisk.img.ub
sending‘ramdisk‘ (179 KB)...
OKAY[ 0.035s]
writing‘ramdisk‘..
OKAY[ 0.057s]
finished.total time: 0.091s
jefby@jefby-P45VJ:~/arndale-octa$fastboot flash system out/target/product/arndale_octa/system.img
sending‘system‘ (227524 KB)...
OKAY[ 38.528s]
writing‘system‘...
OKAY[ 39.636s]
finished.total time: 78.164s
jefby@jefby-P45VJ:~/arndale-octa$ fastboot erase userdata
erasing‘userdata‘...
OKAY[ 7.638s]
finished.total time: 7.638s
jefby@jefby-P45VJ:~/arndale-octa$fastboot erase cache
erasing‘cache‘...
OKAY[ 3.252s]
finished.total time: 3.252s
jefby@jefby-P45VJ:~/arndale-octa$fastboot reboot
rebooting...
finished.total time: 0.019s
可能会出现如下错误4:
<waitingfor device>,一直死在这儿没有反应,
解决方法:
google后在StackOver上得到了解答,摘录如下:
The short version of the pagelinked by D Shu (and without the horrible popover ads) is that this"waiting for device" problem happens when the USB device node is notaccessible to your current user. The USB id is different in fastboot mode, soyou can easily have permission to it in adb but not in fastboot.
To fix it (on Ubuntu; othersystems may be slightly different):
Run lsusb -v | less and find the relevant section which will look something likethis:
Bus 001 Device 027: ID 18d1:4e30 Google Inc.
Couldn‘t open device, some informationwill be missing
Device Descriptor:
...
idVendor 0x18d1 Google Inc.
Now do
sudo vi /etc/udev/rules.d/11-android.rules
it‘s ok if that file does not yetexist; create it with a line like this, inserting your own username and vendorid:
SUBSYSTEMS=="usb",ATTRS{idVendor}=="18d1", MODE="0640", OWNER="mbp"
then
sudo service udev restart
then verify the device nodepermissions have changed:
ls -Rl /dev/bus/usb
The even shorter cheesy version isto just run fastboot asroot.
5、安装完成后,界面如下图:
可以看到内核版本(kernel version)处的信息是jefby@jefby-P45VJ#1,也就是自己所编译的内核和镜像。
但是比较让人失望的是eth0网卡的问题依旧没有解决掉,这就有点让人不太理解了。