嵌入式Linux内核编译

实验环境

  • VMware Workstation Player
  • Ubuntu16.04
  • s5p4418-kitkat.tar.bz2.aas5p4418-kitkat.tar.bz2.abandroid-patch.tgzarm-2009q3.tar.bz2系统源码压缩包

【注意】虚拟机安装分配硬盘内存应当50G以上。

Linux内核配置与编译

  • 将系统源码(s5p4418-kitkat.tar.bz2.aas5p4418-kitkat.tar.bz2.abandroid-patch.tgzarm-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

猜你喜欢

转载自blog.csdn.net/liuyh73/article/details/89176769