实验环境
- VMware Workstation Player
- Ubuntu16.04
s5p4418-kitkat.tar.bz2.aa
、s5p4418-kitkat.tar.bz2.ab
、android-patch.tgz
、arm-2009q3.tar.bz2
系统源码压缩包
【注意】虚拟机安装分配硬盘内存应当50G以上。
Linux内核配置与编译
- 将系统源码(
s5p4418-kitkat.tar.bz2.aa
、s5p4418-kitkat.tar.bz2.ab
、android-patch.tgz
、arm-2009q3.tar.bz2
)上传到虚拟机/tmp
目录下
- 创建文件夹
/usr/local/src/s4418
,并设置其权限为777
- 解压目标文件
$ cd /usr/local/src/s4418
$ cat /tmp/s5p4418-kitkat.tar.bz2.a* |tar jxv
$ tar jxvf /tmp/android-patch.tgz
$ tar zxvf /tmp/arm-2009q3.tar.bz2
解压成功之后/usr/local/src/s4418
目录如下:
- 进入
s5p4418-kitkat
文件夹下,开始编译u-boot
$ cd /usr/local/src/s4418/s5p4418-kitkat
$ ./mk -u
等待一段时间,成功编译之后,即可在/usr/local/src/s4418/s5p4418-kitkat/out/release
目录下生成镜像文件ubootpak.bin
-
开始进行内核配置,拷贝
drivertest
将提供的drivertest
拷贝到/usr/local/src/s4418/s5p4418-kitkat/kernel/drivers
文件夹内
-
修改
drivers/Kconfig
修改/usr/local/src/s4418/s5p4418-kitkat/kernel/drivers/Kconfig
文件,添加以下内容:> source “drivers/drivertest/Kconfig”
-
修改
kernel/drivers/Makefile
文件
修改/usr/local/src/s4418/s5p4418-kitkat/kernel/drivers/Makefile
文件,添加以下内容:> Obj-$(CONFIG_DRIVER_VMALLOC) += drivertest/
-
在kernel目录下使用
make menuconfig
重新配置内核,其中包括重载我们编写的新设备myalloc
,具体设置分支时:Device drivers – > DRIVER KMALLOC support
,选择添加myalloc
设备。在选择DRIVER KMALLOC support
后,按空格键使得<*>
出现,表示选择该驱动。
Device drivers
目录如下:
从Device drivers
目录,选择DERIVER KMALLOC support
展开后如下图所示,按空格键,使<*>
出现:
-
编译Linux内核
首先进入到kernel
文件夹下,执行以下命令:$ export PATH=../uboot/tools:$PATH $ cp arch/arm/configs/x4418_defconfig .config
然后使用以下命令进行编译:
$ make uImage ARCH=arm CROSS_COMPILE=../prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-
编译成功后,会在在/usr/local/src/s4418/kernel/arch/arm/boot/
目录下看到编译生成的镜像文件uImage
。
可能遇到的问题
如果提示make menuconfig
命令找不到,可以使用以下命令安装
$ sudo apt-get install libncurses5
$ sudo apt-get install libncurses5-dev