嵌入式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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习嵌入式Linux内核源码的最佳方式是通过阅读内核源码。你可以从官方网站https://www.kernel.org/下载Linux内核源码,选择适用于嵌入式系统的版本,比如linux-3.0.20。阅读内核源码是一个漫长的过程,所以不要被源码的复杂性吓倒。你可以使用source insight等辅助工具来加载源码,并进行适当的裁剪,以便更好地理解和阅读。对于嵌入式系统,你可以主要关注和研究与你所使用的处理器相关的arch目录和与内核驱动相关的drivers目录。你可以裁剪掉一部分暂时不需要的文件,只保留与你所关注的内容相关的部分。另外,嵌入式Linux内核的配置文件中包含了很多功能选项,这些选项的目的是为了满足不同用户的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Linux内核源码总体介绍—1](https://blog.csdn.net/weixin_43708235/article/details/124740937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [嵌入式Linux内核编译步骤和经验](https://blog.csdn.net/m0_50662680/article/details/128432039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值