树莓派编译新版内核

2014-07-071万
AI 快速预览详细 收起
本文介绍了如何在树莓派上编译新版内核。首先,在树莓派上执行rpi-update命令升级到最新版内核,然后在PC机或虚拟机的Debian环境下通过git克隆获取内核源代码。接着,使用make命令进行多线程编译,生成内核镜像文件。最后,将新编译完成的内核和模块复制到SD卡中,完成新内核的安装。通过这些步骤,你可以轻松实现内核更新与自定义。
一、树莓派上的操作
#以下操作以管理员身份运行
sudo su
#升级到最新版内核保证与下载的内核源码版本一致。截止20140214是3.10.29+,也可以不执行此步,因为我们就是在编译新内核。
rpi-update
#升级完整后重启
reboot
#查看内核版本
uname -r
#把最新版本的内核配置保存到.config中,以备以后编译内核使用
zcat /proc/config.gz > .config

二、PC机或者虚拟机的Debian下操作
#获取内核源代码
mkdir rpi
cd rpi
#以下步骤时间很长,可以在睡觉前开三个putty窗口连接到电脑或者虚拟机进行下载。
git clone git://github.com/raspberrypi/firmware.git RpiFirmware
git clone git://github.com/raspberrypi/linux.git RpiLinux
git clone git://github.com/raspberrypi/tools.git RpiTools
#把PI上的内核配置传到本地 192.168.1.6为Rpi的IP地址
cd RpiLinux
scp pi@192.168.1.6:/home/pi/.config .config
#设定使用PI内核原有的配置进行编译
make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- oldconfig
#或者设定使用自定义内核配置进行编译(可以在此过程中选上触摸屏驱动InputDevice touchscreen usbtouchscreen eGalax...)
#make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- menuconfig
#开始正式编译内核,最后的数字改成比你的CPU核心数量+1以提交多线程编译效率。
make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- -j5
#生成内核镜像文件
cd ../RpiTools/mkimage/
./imagetool-uncompressed.py ../../RpiLinux/arch/arm/boot/zImage
#编译modules
cd ../..
mkdir modules
cd RpiLinux/
make modules_install ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- INSTALL_MOD_PATH=../modules -j5
#此后如果有自己的驱动程序需要编译可以把驱动的Makefile中的KDIR修改指向RpiLinux,然后再运行一次和内核编译一模一样的命令即可。

三、新内核的安装
#在PC机上或者虚拟机中进行以下操作,首先需要挂载SD卡
mkdir /mnt
mkdir /mnt/sdb1
mkdir /mnt/sdb2
mount /dev/sdb1 /mnt/sdb1
mount /dev/sdb2 /mnt/sdb2
cp RpiTools/mkimage/kernel.img /mnt/sdb1/kernel_new.img
cd RpiFirameware/boot
cp bootcode.bin fixup.dat fixup_cd.dat start.elf /mnt/sdb1
cd ../hardfp/opt/
#复制例程代码
cp -r vc/ /media/sdb2/opt
#复制新编译完成的modules到SD卡
cp -r modules/lib /media/sdb2
umount /mnt/sdb1
umount /mnt/sdb2
好了,把SD卡拔出来挺到树莓派 体验新版内核吧。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -