实验环境
- 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