Tiny4412的linux_kernel编译

Tiny4412移植linux-kernel

查看官方手册,支持对应的linux-3.5版本

#使用tar命令进行解压
tar -xvf #+文件路径

解压linux内核

编译成功,进入文件夹查看

chris@sys_geek:linux-3.5$ ls   #官方提供了内核裁剪的配置环境,并且还提供了安卓,ubuntu,linux,QT的开发环境,这里直接选择linux
arch           ipc             samples
block          Kbuild          scripts
COPYING        Kconfig         security
CREDITS        kernel          sound
crypto         lib             tiny4412_android_defconfig
Documentation  MAINTAINERS     tiny4412_core-qt_defconfig
drivers        Makefile        tiny4412_linux_defconfig
firmware       mm              tiny4412_ubuntu_defconfig
fs             net             tools
include        README          usr
init           REPORTING-BUGS  virt
chris@sys_geek:linux-3.5$ cp tiny4412_linux_defconfig .config #直接复制官方提供的config来生成menuconfig需要的配置信息

在使用make menuconfig时会读取.config和内核各个目录下的Kconfig文件。Kconfig文件用于决定配置界面会有哪些配置选项
而.config文件用于决定每个配置项的值(Y、M、N)

make menuconfig依赖于ncurses这个软件库和内核目录下script/kconfig下的一些软件,在使用make menuconfig命令时会编译如下几个软件。

内核config

如果没有安装ncurses这个库,可以敲以下命令

sudo apt-get install ncurses-dev

再次编译:

chris@sys_geek:linux-3.5$ make menuconfig
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/mconf
scripts/kconfig/mconf Kconfig
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
/home/chris/src_pack/linux-3.5/scripts/kconfig/Makefile:21: recipe for target 'menuconfig' failed
make[1]: *** [menuconfig] Error 1
Makefile:490: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2

ncurses这个库下载成功之后没有报错但是这里提示“display is too small”,意思就是留给图形化界面menu太小了,可以全屏,或者" ctrl " + " - "来解决,界面需要大于19 lines * 80 rows才能完整打开

linux_kernel_menu_config

三星的这个exynos虽然说是三星自己做的,但是依然使用了高通的一些方案,而这个方案里面有高通的trust-zone支持,裁剪内核的时候关闭掉,否则会影响到后续的驱动编写

ARM的trust-zone技术:

trustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界,所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加解密、安全认证等),其余操作在非安全世界执行(如用户操作系统、各种应用程序等),安全世界和非安全世界通过一个名为Monitor Mode的模式进行转换

处理器架构上,TrustZone将每个物理核虚拟为两个核,一个非安全核(Non-secure Core, NS Core),运行非安全世界的代码;和另一个安全核(Secure Core),运行安全世界的代码。

两个虚拟的核以基于时间片的方式运行,根据需要实时占用物理核,并通过Monitor Mode在安全世界和非安全世界之间切换,类似同一CPU下的多应用程序环境,不同的是多应用程序环境下操作系统实现的是进程间切换,而Trustzone下的Monitor Mode实现了同一CPU上两个操作系统间的切换

关闭ARM的信任空间使能

chris@sys_geek:linux-3.5$ make menuconfig
scripts/kconfig/mconf Kconfig
#
# configuration written to .config
#


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

chris@sys_geek:linux-3.5$ make -j4

再次编译报错

编译linux内核出现报错

都编译到这个时候了总不能从头来一边吧,编译显示,kernel/timeconst.pl这个文件报错,😭

上网查了一下错误,发现是perl旧版问题:https://www.cnblogs.com/tid-think/p/10929435.html

直接把379行的defined给去掉,再次编译

chris@sys_geek:linux-3.5$ vim ./kernel/timeconst.pl +373
chris@sys_geek:linux-3.5$ make -j4

编译完成!

chris@sys_geek:linux-3.5$ vim ./kernel/timeconst.pl +373
chris@sys_geek:linux-3.5$ make -j4

编译完成!

linux内核编译完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值