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

推荐订阅源

N
Netflix TechBlog - Medium
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
NISL@THU
NISL@THU
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
The Register - Security
The Register - Security
Jina AI
Jina AI
Spread Privacy
Spread Privacy
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
J
Java Code Geeks
S
Securelist
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
W
WeLiveSecurity
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
Martin Fowler
Martin Fowler
TaoSecurity Blog
TaoSecurity Blog
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
L
LINUX DO - 热门话题
T
Tailwind CSS Blog
T
Tor Project blog
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
I
Intezer
V
V2EX
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
量子位
AI
AI
Cyberwarzone
Cyberwarzone
T
Troy Hunt's Blog
N
News | PayPal Newsroom
H
Help Net Security

博客园 - 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