全志平台Android rootfs切换调试记录

以下技术在盈鹏飞嵌入式的A40I/T3核心板(CoM-X40I)和主控板(SBC-X40I)上经过验证,欢迎 交流! CoM-X40I核心板和SBC-X40I主板见下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述




1. 前言

由于场景需求,需要切换不同的rootfs进行挂载

如下记录了调试过程

2. chroot 切换原理

Linux 3.4版本内核支持chroot系统调用,

chroot可以改变进程froot directory 到新的文件系统挂载路径,

current->fs->root = { new path,包含root vfsmount和root dentry}。

busybox工具包支持chroot shell命令:


 
 
  1. chroot [OPTION] NEWROOT [COMMAND [ARG]...]
  2. chroot OPTION
  3. NEWROOT: 切换到新的root目录,在新的root目录下执行命令

3.adb shell rootfs切换

(1)获取rootfs2烧录文件

lichee编译linux方案,拷贝lichee/out/sun8iw7p1/linux/common/rootfs.ext4,

将拷贝后的rootfs.ext4重命名为rootfs2.ext4

{注:lichee/out/sun8iw7p1/linux/common/buildroot/target目录下放着rootfs.ext4原文件和目录}。

lichee编译android方案,将rootfs2.ext4文件拷贝到lichee/out/sun8iw7p1/android/common/目录下。

(2) 添加rootfs2分区

修改lichee/tools目录下pack文件和方案对应的sys_partition.fex文件,添加rootfs2分区。


 
 
  1. diff --git a/pack/chips/sun8iw7p1/configs/dolphin-p2/sys_partition.fex b/pack/chips/sun8iw7p1/configs/-
  2. -dolphin-p2/sys_partition.fex
  3. index e3453e5..2890a09 100755
  4. --- a/pack/chips/sun8iw7p1/configs/dolphin-p2/sys_partition.fex
  5. +++ b/pack/chips/sun8iw7p1/configs/dolphin-p2/sys_partition.fex
  6. @@ -89,6 +89,14 @@ size = 16384
  7. keydata = 1
  8. user_type = 0x8000
  9. +;------------------------------> mmcblk0p10/nandg
  10. +[partition]
  11. + name = rootfs2
  12. + size = 286720
  13. + downloadfile = "rootfs2.fex"
  14. + keydata = 1
  15. + user_type = 0x8000
  16. +
  17. ;------------------------------> mmcblk0p11/nandh
  18. [partition]
  19. name = Reserve0
  20. diff --git a/pack/pack b/pack/pack
  21. index 4a2afde..a199b5a 100755
  22. --- a/pack/pack
  23. +++ b/pack/pack
  24. @@ -599,6 +599,7 @@ function do_pack_android()
  25. ln -s ${ANDROID_IMAGE_OUT}/boot.img boot.fex
  26. ln -s ${ANDROID_IMAGE_OUT}/system.img system.fex
  27. ln -s ${ANDROID_IMAGE_OUT}/recovery.img recovery.fex
  28. + ln -s ${LICHEE_OUT}/rootfs2.ext4 rootfs2.fex

(3) 手动挂载rootfs2分区

调试主板烧录android方案固件,系统启动初始化后,

查看block块与分区的映射关系,检查rootfs分区块设备是否已经创建,

如下蓝色标示所示。


 
 
  1. # ls -l /dev/block/by-name
  2. lrwxrwxrwx root root 1970- 01- 01 08: 00 Reserve0 -> /dev/block /nandi
  3. lrwxrwxrwx root root 1970-01-01 08:00 Reserve1 -> /dev /block/nandk
  4. lrwxrwxrwx root root 1970- 01- 01 08: 00 Reserve2 -> /dev/block /nandl
  5. lrwxrwxrwx root root 1970-01-01 08:00 UDISK -> /dev /block/nandn
  6. lrwxrwxrwx root root 1970- 01- 01 08: 00 boot -> /dev/block /nandc
  7. lrwxrwxrwx root root 1970-01-01 08:00 bootloader -> /dev /block/nanda
  8. lrwxrwxrwx root root 1970- 01- 01 08: 00 cache -> /dev/block /nandm
  9. lrwxrwxrwx root root 1970-01-01 08:00 env -> /dev /block/nandb
  10. lrwxrwxrwx root root 1970- 01- 01 08: 00 klog -> /dev/block /nandj
  11. lrwxrwxrwx root root 1970-01-01 08:00 misc -> /dev /block/nande
  12. lrwxrwxrwx root root 1970- 01- 01 08: 00 private -> /dev/block /nandg
  13. lrwxrwxrwx root root 1970-01-01 08:00 recovery -> /dev /block/nandf
  14. lrwxrwxrwx root root 1970- 01- 01 08: 00 rootfs2 -> /dev/block /nandh
  15. lrwxrwxrwx root root 1970-01-01 08:00 system -> /dev /block/nandd

rootfs2 分区对应block设备创建成功后,通过adb工具执行以下命令进行手动挂载rootfs2分区:


 
 
  1. adb shell e2fsck -y /dev/block/nandh
  2. adb 控制台打印如下:
  3. e2fsck 1.41 .14 ( 22-Dec -2010)
  4. /dev/block /nandh: clean, 996/ 7168 files, 24876/ 28672 blocks

 

mkdir /mnt/tmps mount -o rw,noatime,nosuid,nodev,nomblk_io_submit,barrier=1,noauto_da_alloc -t ext4 /dev/block/nandh /mnt/tmps


 
 
  1. adb 控制台打印如下:
  2. root @dolphin-fvd- p1:/ # mount
  3. .... ...
  4. /dev/block /nandh /mnt /tmps ext4 rw,nosuid,nodev,noatime,nomblk_io_submit,noauto_da_alloc,data=ordered 0 0
  5. ... ....
  6. # ls -l /mnt /tmps
  7. -rwxr-xr-x root root 2809 2016-07-28 15:21 autorun.sh
  8. drwxr-xr-x root root 2012-09-26 15:20 bin
  9. drwxr-xr-x root root 2012-07-02 16:21 dev
  10. drwxr-xr-x root root 2016-07-28 15:21 dragonboard
  11. drwxr-xr-x root root 2014-03-15 20:26 etc
  12. drwxr-xr-x root root 2012-07-02 16:21 home
  13. lrwxrwxrwx root root 2012-07-02 16:21 init -> bin/busybox
  14. drwxr-xr-x root root 2016- 07- 28 15: 21 lib
  15. lrwxrwxrwx root root 2012- 07- 02 16: 21 linuxrc -> bin/busybox
  16. drwxr-xr-x root root 2012- 07- 02 16: 21 mnt
  17. drwxr-xr-x root root 2012- 07- 02 16: 21 opt
  18. drwxr-xr-x root root 2012- 07- 02 16: 21 proc
  19. drwxr-xr-x root root 2012- 07- 02 16: 21 root
  20. drwxr-xr-x root root 2012- 07- 02 16: 21 sbin
  21. drwxr-xr-x root root 2012- 07- 02 16: 21 sys
  22. drwxr-xr-x root root 2012- 07- 02 16: 21 tmp
  23. drwxr-xr-x root root 2012- 07- 02 16: 21 usr
  24. drwxr-xr-x root root 2012- 07- 02 16: 21 var

(4) adb shell手动切换 / 目录


 
 
  1. chmod 777 /mnt/tmps/bin busybox-smp
  2. chroot /mnt/tmps /bin/busybox
  3. mount -t proc newproc /proc
  4. busybox-smp
  5. chroot /mnt/tmps /bin/busybox
  6. cat /proc/self/mountinfo


将当前adb shell 进程rootfs / 目录切换到/mnt/tmps挂载路径,挂载proc文件系统到新的 / 目录下,并重命名newproc,最后通过cat /proc/self/mountstats 命令打印出adb shell空间mountinfo 信息,查看rootfs是否切换成功。

命令执行后,从adb控制台打印可以看到adb shell进程空间的 / 目录已经切换到/dev/block/nandh块设备对应的挂载分区,且newproc挂载在当前进程空间的 /proc 路径。


 
 
  1. adb 控制台打印如下:
  2. 292 1 93: 56 / / rw,nosuid,nodev,noatime shared: 19 - ext4 /dev/block/nandh -
  3. -rw,nomblk_io_submit,noauto_da_alloc,errors=remount-ro, data=ordered
  4. 512 292 0: 3 / / proc rw,relatime shared: 20 - proc newproc rw

为了进一步证明adb shell rootfs已经切换成功,

此时通过console shell执行命令: cat /proc/self/mountstats 命令执行后,

从console 控制台打印可以看到,/dev/block/nandh块设备已经成功挂载在系统/mnt/tmps 目录下,而newproc挂载到了/mnt/tmps/proc目录下,

说明adb shell rootfs切换成功。


 
 
  1. console 控制台打印如下:
  2. .... ..... ....
  3. 292 1 93: 56 / /mnt/tmps rw,nosuid,nodev,noatime shared: 19 - ext4 /dev/block/nandh-
  4. -rw,nomblk_io_submit,noauto_da_alloc,errors=remount-ro,data=ordered
  5. 512 292 0: 3 / /mnt/tmps/proc rw,relatime shared: 20 - proc newproc rw
  6. .... ..... ....

4. android init rootfs切换

参照实验操作细节,准备以下实验条件和步骤:

(1) 添加rootfs2分区

(2) 修改android init代码,添加切换rootfs代码


 
 
  1. --- a/init/boostup.c
  2. +++ b/init/boostup.c
  3. @@ -726,6 +726,13 @@ static int aw_media_karaok_boost_cpus(int pid, int index)
  4. active = 0;
  5. }
  6. + B_LOG("\n\n ++++++++++++ boost pid %d changeroot\n",getpid());
  7. + if (execl("/system/bin/busybox-smp", "/system/bin/busybox-smp", "chroot",
  8. + "/mnt/tmps", "/bin/busybox", "init", NULL)) {
  9. + ERROR("pid%d start exec failed %s \n", getpid(), strerror(errno));
  10. + }

(3) 编译、烧录android固件和启动android系统

(4)手动挂载rootfs2分区, 修改rootfs2分区/bin目录和/sbin目录下的文件可执行权限

(5) 发送init rootfs切换命令

setprop media.boost.pref modem1:2
 
 

发送完命令后,android init进程首先通过chroot命令将进程的rootfs切换到/mnt/tmps分区,

然后通过exec命令加载/mnt/tmps/bin/busybo ELF可执行文件,最后执行busybox init。

注意:此处的init rootfs切换只是初步试验,由于busybox init过程会涉及解析initab,挂载分区等操作,所以android init 直接切换到linux小系统的busybox init不会执行完整过程。

接下来需要验证android init进程切换rootfs后,进程状态会发生哪些变化.

a. 系统Init进程名发生变化 通过adb shell ps-p命查看系统init进程名称已经变更成/bin/busybox,如下:

b. 系统console控制台发生变化 通过串口console 控制台可以看到linux小系统登录的shell界面,

c. 系统init进程信息变化 通过adb shell cd /proc/1 命令切换到系统init进程在/proc debug目录,

查看切换后的init进程状态变化,如下,系统init进程cwd对应到/mnt/tmps目录,

运行的ELF文件对应到exec /mnt/tmps/bin/busybox可执行文件,

root目录指向root -> /mnt/tmps 目录。

adb shell debuggerd命令查看系统init进程backtrace

adb shell 命令查看系统init进程mountinfo信息,/目录切换到/dev/block/nandh块设备区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
bpi_a64_android初步编译为LCD显示20170309_1442.7z banana pi a64 android6.0.1初步编译为LCD显示。初步设置。 bpi_a64_android的编译配置文件排版.txt 2017/3/9 14:33 0、压缩包的处理: rootroot@cm-System-Product-Name:/home/wwt/a64$ tar zxvf BPI-A64-Android_SourceCode.tar.gz 增加3个编译链 Notice: Please download this file to the correct path https://drive.google.com/open?id=0B_YnvHgh2rwjaVRrc2VoR0xLTlE (1)gcc-linaro-aarch64.tar.xz ==> /lichee/buildroot/dl (2)gcc-linaro-aarch64.tar.xz ==> /lichee/brandy/toolchain (3)gcc-linaro-arm.tar.xz ==> /lichee/brandy/toolchain 重新分块压缩: rootroot@cm-System-Product-Name:/home/wwt/a64$ tar zcvf - bpi_a64_android/ | split -b 3900000000 - bpi_a64_android_wyb_patch1.tar.gz 1、编译lichee内核 rootroot@cm-System-Product-Name:/home/wwt/a64$ rootroot@cm-System-Product-Name:/home/wwt/a64$ cd bpi_a64_android/ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android$ cd lichee/ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun50iw1p1 Choice: 0 All available platforms: 0. android 1. dragonboard 2. linux 3. camdroid 4. secureandroid Choice: 0 All available kernel: 0. linux-3.10 1. linux-3.4 Choice: 0 All available boards: 0. bpi-m64-hdmi 1. bpi-m64-lcd Choice: 1 rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ ./build.sh Copy boot.img to output directory ... Copy modules to target ... sun50iw1p1 compile Kernel successful INFO: build kernel OK. INFO: build rootfs ... INFO: skip make rootfs for android INFO: build rootfs OK. INFO: ---------------------------------------- INFO: build lichee OK. INFO: ---------------------------------------- rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ 2、编译Android rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ cd ../android/ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ source build/envsetup.sh including device/asus/deb/vendorsetup.sh including device/asus/flo/vendorsetup.sh including device/asus/fugu/vendorsetup.sh including device/generic/mini-emulator-arm64/vendorsetup.sh including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh including device/generic/mini-emulator-mips/vendorsetup.sh including device/generic/mini-emulator-x86_64/vendorsetup.sh including device/generic/mini-emulator-x86/vendorsetup.sh including device/htc/flounder/vendorsetup.sh including device/lge/hammerhead/vendorsetup.sh including device/moto/shamu/vendorsetup.sh including device/softwinner/bpi-m64-hdmi/vendorsetup.sh including device/softwinner/bpi-m64-lcd/vendorsetup.sh including device/softwinner/common/vendorsetup.sh including sdk/bash_completion/adb.bash rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ lunch You're building on Linux Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_arm64-eng 3. aosp_mips-eng 4. aosp_mips64-eng 5. aosp_x86-eng 6. aosp_x86_64-eng 7. aosp_deb-userdebug 8. aosp_flo-userdebug 9. full_fugu-userdebug 10. aosp_fugu-userdebug 11. mini_emulator_arm64-userdebug 12. m_e_arm-userdebug 13. mini_emulator_mips-userdebug 14. mini_emulator_x86_64-userdebug 15. mini_emulator_x86-userdebug 16. aosp_flounder-userdebug 17. aosp_hammerhead-userdebug 18. aosp_hammerhead_fp-userdebug 19. aosp_shamu-userdebug 20. bpi_m64_hdmi-eng 21. bpi_m64_hdmi-user 22. bpi_m64_hdmi-userdebug 23. bpi_m64_lcd-eng 24. bpi_m64_lcd-user 25. bpi_m64_lcd-userdebug Which would you like? [aosp_arm-eng] 23 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=6.0.1 TARGET_PRODUCT=bpi_m64_lcd TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm64 TARGET_ARCH_VARIANT=armv8-a TARGET_CPU_VARIANT=generic TARGET_2ND_ARCH=arm TARGET_2ND_ARCH_VARIANT=armv7-a-neon TARGET_2ND_CPU_VARIANT=cortex-a15 HOST_ARCH=x86_64 HOST_OS=linux HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=MMB29M OUT_DIR=out ============================================ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ extract-bsp /home/wwt/a64/bpi_a64_android/android/device/softwinner/bpi-m64-lcd/bImage copied! /home/wwt/a64/bpi_a64_android/android/device/softwinner/bpi-m64-lcd/modules copied! rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ make -j12 Creating filesystem with parameters: Size: 2147483648 Block size: 4096 Blocks per group: 32768 Inodes per group: 8192 Inode size: 256 Journal blocks: 8192 Label: system Blocks: 524288 Block groups: 16 Reserved block group size: 127 Created filesystem with 2422/131072 inodes and 260574/524288 blocks Install system fs image: out/target/product/bpi-m64-lcd/system.img out/target/product/bpi-m64-lcd/system.img+out/target/product/bpi-m64-lcd/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=2192446080 blocksize=4224 total=1034077436 reserve=22146432 #### make completed successfully (57:57 (mm:ss)) #### rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ 3、打包img镜像 rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ pack -d /home/wwt/a64/bpi_a64_android/lichee/tools/pack/sun50iw1p1_android_bpi-m64-lcd_card0.img pack finish rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ pack /home/wwt/a64/bpi_a64_android/lichee/tools/pack/sun50iw1p1_android_bpi-m64-lcd_uart0.img pack finish rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/android$ 4、编译uboot(可选) rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/brandy$ ./build.sh -p sun50iw1p1 CC external/openssl_ext.c ... make -C /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/spl/ CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/ss_spl.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/spc_spl.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/smc_spl.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/gic_spl.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/debug.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/ctype.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/eabi_compat.c ... CC /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/efuse_spl.c ... make -C /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/spl/lib/ make[3]: 没有什么可以做的为 `all'。 /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/../gcc-linaro/bin/arm-linux-gnueabi-gcc -E -include /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/include/u-boot/u-boot.lds.h -DSBROMSWADDR="(0x10480)" -ansi -D__ASSEMBLY__ -P - </home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/main/sboot.lds >/home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/sboot.lds /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/../gcc-linaro/bin/arm-linux-gnueabi-ld /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/dram/libchipid.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/dram/libdram.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/mmc/libmmc.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/nand/libnand.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/flash/libflash.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/libs/libgeneric.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/load/libload.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/main/libmain.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/openssl/libopenssl.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/spl/libsource_spl.o /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/spl/lib/libgeneric.o -L /home/wwt/a64/bpi_a64_android/lichee/brandy/gcc-linaro/bin/../lib/gcc/arm-linux-gnueabi/4.6.3 -lgcc -T/home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/sboot.lds -o sboot.axf -Map sboot.map /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/../gcc-linaro/bin/arm-linux-gnueabi-objcopy -O binary /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/sboot.axf /home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/sunxi_spl/sbrom/sboot.bin "sboot_sun50iw1p1.bin" -> "/home/wwt/a64/bpi_a64_android/lichee/brandy/u-boot-2014.07/../../tools/pack/chips/sun50iw1p1/bin/sboot_sun50iw1p1.bin" rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/brandy$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/brandy$ 5、配置menuconfig(裁剪内核) rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun50iw1p1 Choice: 0 All available platforms: 0. android 1. dragonboard 2. linux 3. camdroid 4. secureandroid Choice: 0 All available kernel: 0. linux-3.10 1. linux-3.4 Choice: 0 All available boards: 0. bpi-m64-hdmi 1. bpi-m64-lcd Choice: 1 rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee$ cd linux-3.10/ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/linux-3.10$ cp .config bak1_orig.config rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/linux-3.10$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/linux-3.10$ rootroot@cm-System-Product-Name:/home/wwt/a64/bpi_a64_android/lichee/linux-3.10$ make ARCH=arm64 menuconfig (1)改大打印缓存 General setup ---> (17) Kernel log buffer size (16 => 64KB, 17 => 128KB) 修改为: (18) Kernel log buffer size (16 => 64KB, 17 => 128KB) (2)只保留博通/正基的WIFI/BT:AP6212等 Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> <M> Broadcom FullMAC wireless cards support (/system/vendor/modules/fw_bcmdhd.bin) Firmware path (/system/vendor/modules/nvram.txt) NVRAM path Enable Chip Interface (SDIO bus interface support) ---> Interrupt type (Out-of-Band Interrupt) ---> <M> Realtek 8723B SDIO or SPI WiFi <M> Realtek 8723BS_VQ0 WiFi <M> Realtek 8189F SDIO WiFi 修改为: < > Realtek 8723B SDIO or SPI WiFi < > Realtek 8723BS_VQ0 WiFi < > Realtek 8189F SDIO WiFi (3)关闭SELinux安全内核方便调试 Security options ---> [*] NSA SELinux Support [*] NSA SELinux boot parameter (1) NSA SELinux boot parameter default value [ ] NSA SELinux runtime disable [*] NSA SELinux Development Support [*] NSA SELinux AVC Statistics (1) NSA SELinux checkreqprot default value [ ] NSA SELinux maximum supported policy format version 修改为: [ ] NSA SELinux Support (4)在内核中增加USB摄像头/打开UVC的驱动 Device Drivers ---> <*> Multimedia support ---> [ ] Media USB Adapters ---> 修改为: [*] Media USB Adapters ---> --- Media USB Adapters *** Webcam devices *** < > USB Video Class (UVC) 修改为: <M> USB Video Class (UVC) [*] UVC input events device support (NEW)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值