惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
B
Blog
N
Netflix TechBlog - Medium
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
M
MIT News - Artificial intelligence
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
Vercel News
Vercel News
T
Tenable Blog
Security Latest
Security Latest
C
Check Point Blog
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
雷峰网
雷峰网
IT之家
IT之家
H
Hacker News: Front Page
Microsoft Security Blog
Microsoft Security Blog
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Last Week in AI
Last Week in AI
G
Google Developers Blog
Forbes - Security
Forbes - Security
The Register - Security
The Register - Security
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Martin Fowler
Martin Fowler
K
Kaspersky official blog
P
Proofpoint News Feed
T
Threatpost
Google Online Security Blog
Google Online Security Blog
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - Andy Yang

SharePoint中Event Handler的触发 扩展SharePoint链接字段 树莓派的连接 树莓派版的家用NAS服务器 修改树莓派更新源及设置代理配置 开启树莓派的硬件看门狗功能 树莓派上安装2.8寸TFT触摸屏 树莓派上使用蚂蚁矿机挖矿 代码导出Reporting Services报表文件 Bit-Coin收入的一分钱 如何在树莓派上运行雷神之锤III 新树莓派入手 如何通过PowerShell在Visual Studio的Post-build中预热SharePoint站点 将SharePoint 2010的快速启动改成弹出菜单样式 在SharePoint 2010的Team Site首页上显示Flash文件 SharePoint 2010搜索起步(下) SharePoint 2010搜索起步(上) 2009上班第一天 软件开发与心理张力
如何编译树莓派内核
Andy Yang · 2014-04-18 · via 博客园 - Andy Yang

老实说,对于从来没有用过玩过Linux(甚至没有基本的Linux管理经验)的我来说,编译内核实在是一个比较挑战的事情。

不过结果还是好的,最终完成了一次完整的编译,在这里记录一下(参考网页在这里这里

主要步骤如下

  1. 虚机:[可选]新建交叉编译平台
  2. 下载:源代码、编译器、固件文件和一些关联工具
  3. 编译:内核、模块
  4. 拷贝:将生成的各种文件替换原树莓派系统的文件
  1. 虚机

树莓派上编译内核实在是太慢,所以重装了一个Ubuntu的虚拟机,虚拟机的安装可以参考这里

同时为了后续拷贝文件的方便,需要安装SSH服务,可以参考这里

-install ssh services

sudo apt-get install openssh-server openssh-client

sudo gedit /etc/ssh/sshd_config

sudo /etc/init.d/ssh stop

sudo /etc/init.d/ssh start

sudo /etc/init.d/ssh restart

-examples:

ssh localhost

ssh user@your-server-ip-address

ssh vivek@userver.mydomain.com

  1. 下载

在虚拟机中新建目录后,分别下载固件,源码,编译器(分别新建指定的文件夹)

mkdir rasperberrypi

cd raspberrypi

git clone git://github.com/raspberrypi/firmware.git PRiFirmware

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

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

不过,如果在虚拟机中下载太慢也可以在主机中使用下载工具下载,例如使用以下地址下载3.6版本的内核

对于虚拟机和树莓派中的文件操作,对于我来说,推荐使用Win SCP,点击这里下载

如果网络环境需要代理,虚拟机中可以如下设置

sudo nano /etc/apt/apt.conf

Acquire::http::Proxy "http://web-proxy.corp.company.com:8080";

  1. 编译

以下操作都在root用户下执行

使用Win SCP递归的方式将源代码文件夹的运行属性添加上

清空原先的配置信息

make mrproper

cd /home/andy/raspberrypi/RpiLinux/

添加两个环境变量

export KERNEL_SRC=/home/andy/raspberrypi/RpiLinux/

export CCPREFIX=/home/andy/raspberrypi/RpiTools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-

导出树莓派上的配置信息,并拷贝到内核源代码的根目录

zcat /proc/config.gz > .config

在此基础上设置一次树莓派的配置信息(如果不明白意义,直接回车保留默认值即可)

apt-get install libncurses5-dev

ARCH=arm CROSS_COMPILE=${CCPREFIX} make oldconfig

对配置还可以进行微调

ARCH=arm CROSS_COMPILE=${CCPREFIX} make menuconfig

开始编译内核,如果CPU多核,可以添加-j参数(数字为内核数+1)

ARCH=arm CROSS_COMPILE=${CCPREFIX} make -j5

如果需要详细的日志

ARCH=arm CROSS_COMPILE=${CCPREFIX} make -j5 &>log

--undefined reference to 'sin'; add '-lm' to make file command line

编译模块

ARCH=arm CROSS_COMPILE=${CCPREFIX} make modules

  1. 拷贝

生成内核文件,并拷贝到树莓派根目录的boot文件夹

cd /home/andy/raspberrypi/RpiTools/mkimage

./imagetool-uncompressed.py /home/andy/raspberrypi/RpiLinux/arch/arm/boot/zImage

copy .img to RPI's boot folder

生成模块文件,并将这些文件覆盖掉树莓派的/boot/lib文件夹下的文件

export MODULES_TEMP=~/modules

ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=${MODULES_TEMP} make modules_install

copy and overwrite files from lib to RPI's /root/lib

拷贝下载的固件包firmware/boot中文件,替换树莓派中boot文件夹下的文件

bootcode.bin

fixup.dat

start.elf

copy and overwrite files from firmware/boot to RPI's boot folder

拷贝下载的固件包firmware/hardfp/opt/中VC文件夹,覆盖树莓派的boot/opt/VC文件夹

VC

copy and overwirte folder from firmware/hardfp/opt/ to RPI's boot opt folder

结束

重启树莓派,输入uname –a命令就可以看到编译后内核的版本(我的是越变越小,呵呵呵)

原来的版本

现在的版本

Andy Yang

2014-4-18