Linux内核移植

移植目标

  1. 获取Linux内核源码;
  2. 修改内核,使内核启动能正确挂载根文件系统rootfs(即选择内核支持的文件系统格式);
  3. 修改驱动,裁剪内核;
  4. 编译生成uImage,下载体验。

设置环境变量

配置或编译内核之前,首先要确定目标CPU架构,以及编译时采用什么工具链。
方法一:通过修改根目录下的Makefile中ARCH和CROSS_COMPILE值。
方法二:修改环境变量。修改/etc/profile文件,对所有用户生效,执行source /etc/profile后立刻生效;或修改~/.bashrc,对当前用户有效(推荐此方法),修改过后执行source ~/.bashrc立刻生效。
例如:vim ~/.bashrc,在文件最后添加,
export ARCH=arm
export CROSS_COMPILE=/usr/local/arm-linux-gcc/bin/arm-linux-
执行指令:source ~/.bashrc
查看环境变量:echo $ARCH
在这里插入图片描述

下载解压内核

  1. Linux 官网为 https://www.kernel.org,一般芯片厂商会从官网下载某个版本Linux内核移植到自己的CPU上。所以也可以从厂商提供的Linux内核移植到自己的产品中,比如Atmel的AT91系列kernel可以在https://github.com/linux4sam地址下载。
  2. 下载解压,ubuntu下的zip软件有问题,编译时可能会弹出:File name too long错误。可以执行“sudo apt-get install p7zip-full”和“7za x xxxx.zip”进行解压。

配置并编译内核

  1. 内核配置,配置支持文件系统的格式。将内核文件/arch/arm/configs目录下的sama5_defconfig配置文件拷贝到内核文件第一级目录下。打开命令行终端,输入“make sama5_defconfig”命令对其进行编译。
    在这里插入图片描述

  2. 执行make menuconfig指令进入配置界面,我们使用文件系统为ramdisk格式,需要修改内核支持该文件系统。进入“General setup”目录下,选中“Initial RAM filesystem and RAM disk (initramfs/initrd) support”选项(按空格键选中),如下所示:
    在这里插入图片描述

  3. 修改kernel的版本信息。进入“General setup”目录下,选中“Local version –append tp kernel release”选项,输入版本信息。
    在这里插入图片描述

  4. 设置ramdisks编译格式为bzip2:选中“General setup”->” Support initial ramdisks compressed using bzip2”。

  5. 设置ramdisk的数量为1和大小为128M。
    在这里插入图片描述

  6. 根目录下执行make uImage(生成uboot专用的镜像文件,现在新的uboot已经支持zImage了);在arch/arm/boot目录下生成uImage文件,即为kernel镜像文件。
    在这里插入图片描述

  7. 编译下载过后,可以看到uboot已正确启动kernel
    在这里插入图片描述

常见问题

1.编译错误: libmpc.so.3: cannot open shared object file: No such file or directory
答:缺少库的路径,export LD_LIBRARY_PATH=/usr/local/arm-linux-gcc/lib:$LD_LIBRARY_PATH
在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值