在ubuntu上编译树莓派的kernel.img

网上真是坑B多。都没试过 一顿照抄。真是服


我的树莓派是树莓派B

ubuntu是14.04 x64 4G RAM 8core

1下载kernel源码

git clone https://github.com/raspberrypi/linux.git

2下载交叉编译工具

git clone https://github.com/raspberrypi/tools




我下载的内核版本是 rpi-4.1.y.tar.gz


tar -xf rpi-4.1.y.tar.gz
 cd linux-rpi-4.1.y/
make mrproper 第一次不需要清理。但是每次重新编译以前最好先执行这个命令清理一下


可能缺少的一些库 安装一下
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5


内核需要的配置文件。如果配置不当。编译过程中各种问题。
我们直接从运行的树莓派中获取这个config文件
拷贝树莓派 /proc/config.gz 到linux-rpi-4.1.y目录下
如果树莓派中/proc目录里面没有config.gz
那么先运行 sudo modprobe configs
这样/proc/config.gz就存在了
解压到.config里面
zcat config.gz >.config
配置编译的变量 主要是编译器路径。
也就是前面https://github.com/raspberrypi/tools下载的目录里面的东西
ARCH=arm
export ARCH
CCPREFIX=/home/XXXX/RPi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
export CCPREFIX


开始编译 j8根据你的核心来。
CROSS_COMPILE=${CCPREFIX} make -j8


编译完毕后会在arch/arm/boot目录下生成zImage这些
这个还不是kernel.img
还需要tools/mkimage目录里面的mkknlimg (需要perl)
进入这个目录执行
./mkknlimg /home/xxxxxx/RPi/rpikernel/linux-rpi-4.1.y/arch/arm/boot/zImage kernel_new.img
会在当前目录生成kernel_new.img
这个是就是可以放到SD卡里面 去的kernelimg了


为了更好研究 我把SD fat分区里面不要的都删除了
只留下了
bcm2708-rpi-b.dtb(这个是根据你的板子要留下来的)
bootcode.bin
cmdline.txt
config.txt
kernel.img(原来的)
start.elf




============
为了让树莓派加载我们的kernel_new.img
拷贝kernel_new.img到fat分区
修改config.txt
在最后面添加一行
kernel=kernel_new.img
然后 启动 就是我们的kernel了


原来的kernel.img就做个备份吧

但是我编译出来 无法识别WIFI。应该是modules模块没有安装好。这个到时候再解决。


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值