文档章节

玩转树莓派-RaspBerry,操作系统的源码编译

openthings
 openthings
发布于 2015/03/23 17:00
字数 931
阅读 4422
收藏 15

源码编译是玩转树莓派的终极修炼,下面我们开始闯关。

1、获取升级所需源码

1)下载地址:
官方网址:
上面列出了树莓派所有的开源软件:

firmware:树莓派的交叉编译好的二进制内核、模块、库、bootloader
linux:内核源码
tools:编译内核和其他源码所需的工具——交叉编译器等

我们只需要以上三个文件即可,下面的工程可以了解一下

documentation:树莓派离线帮助文档,教你如何使用、部署树莓派(树莓派官方使用教程)
userland:arm端用户空间的一些应用库的源码——vc视频硬浮点、EGL、mmal、openVG等
hats:Hardware Attached on Top,树莓派 B+型板子的扩展板资料
maynard:一个gtk写成的桌面环境
scratch:一个简易、可视化编程环境
noobs:一个树莓派镜像管理工具,他可以让你在一个树莓派上部署多个镜像
weston:一个应用程序
target_fs:树莓派最小文件系统,使用busybox制作
quake3:雷神之锤3有线开发源码firmwareb

2)下载方法:
a、网页直接下载:
点到所需要下载的工程,左上角选版本,右方有一个download ZIP按钮可直接下载(笔者下载完成后,在linux中解压提示出错,windows又非常慢切内核建议不要在windows环境解压,所以笔者不建议使用这种办法)
b、使用git下载

$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git

会得到三个文件夹:firmware、linux、tools。

2、编译、提取内核及其模块

1)获得内核配置文件
在运行的树莓派中运行:

$ls /proc/

可看到一个叫config.gz的文件,他是当前的树莓派配置选项记录文件,我们将他拷出,放入我们的内核源码目录树下

$cp /proc/config /home/pi

我们这里使用前面交过的samba拷出并拷入内核源码目录下,不熟悉的人可参考前面文章

在linux内核源码下执行:

$zcat config.gz > .config

2)配置、编译内核
a、修改内核源码makefile ARCH类型和编译器路径

$vi Makefile +195

找到以上类似代码,改为如图所示

b、查看、修改配置选项

$make menuconfig

可出现以下界面

如果不做修改,直接选中exit即可(注意使用键盘操作)

c、编译内核镜像

$make

在arch/arm/boot目录下可以看到一个叫zImage的文件,就是我们新的内核

但是树莓派需要另外一种格式的镜像,需要进行处理一下,执行以下命令

$cd tools/mkimage
$./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage

即可在当前文件夹下看到一个叫:kernel.img的文件,就是我们需要的新内核了

d、提取modules
上一步其实不但编译出来了内核的源码,一些模块文件也编译出来了,这里我们提取一下

$cd raspberrypi_src
$mkdir modules
$cd linux
$ make modules_install INSTALL_MOD_PATH=../modules

即可在modules得到我们需要的模块文件

2、升级RPi的kernel、Firmware、lib

将SD卡拔下插在电脑上(可使用读卡器)
1)升级内核
将新编好的内核拷入SD卡,改名为:kernel_new.img
打开boot目录下
找到config.txt文件,加入:kernel=kernel_new.img这一行

2)升级boot
将firmware/boot/目录下 以下文件拷入SD卡boot目录:fbootcode.bin fixup.dat fixup_cd.dat start.elf

3)更新vc库及内核modules
将第3步d步中编译出来的modules/lib/modules拷入树莓派文件系统/lib下



© 著作权归作者所有

openthings
粉丝 320
博文 1129
码字总数 675031
作品 1
东城
架构师
私信 提问
树莓派使用入门:树莓派上的模拟器和原生 Linux 游戏

树莓派是一个很棒的游戏平台。在我们的系列文章的第九篇中学习如何开始使用树莓派。 回到我们关于树莓派入门系列文章的第五篇,我提到 Minecraft 是一种教孩子们使用游戏平台进行编程的方法。...

作者: Anderson Silva
04/04
0
0
树莓派笔记02—树莓派硬件环境准备

在开始玩转树莓派之前,我们需要了解下树莓派的硬件配置以及所需要的配件。跟电脑PC机类似,树莓派也需要必要的输入输出设备才能工作。 1. 树莓派3B+ 2018年3月14日,树莓派基金会正式发布新...

TonyCode
2018/08/03
0
0
将树莓派 3B+ 变为 PriTunl VPN

PriTunl 是一种 VPN 解决方案,适用于希望私密的访问其网络的小型企业和个人。 PriTunl 是一款出色的 VPN 终端解决方案,非常适合希望以简单快捷的方式私密的访问网络的小型企业和个人。它是...

作者: Stephen Bancroft
01/30
0
0
PiShrink:使树莓派镜像更小

树莓派不需要过多介绍。它是一款小巧、价格实惠,只有信用卡大小的电脑,它可以连接到显示器或电视。我们可以连接一个标准的键盘和鼠标,并将其用作一台成熟的台式计算机来完成日常任务,如互...

作者: Sk
05/24
0
0
树莓派使用入门:如何购买一个树莓派

在我们的《树莓派使用入门》系列文章的第二篇中,我们将介绍获取树莓派的最佳途径。 在本系列指南的第一篇文章中,我们提供了一个关于 你应该购买哪个版本的树莓派 的一些建议。哪个版本才是...

作者: Anderson Silva
03/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊Tomcat中的连接器(Connector)

上期回顾 上一篇文章《Tomcat在SpringBoot中是如何启动的》从main方法启动说起,窥探了SpringBoot是如何启动Tomcat的,在分析Tomcat中我们重点提到了,Tomcat主要包括2个组件,连接器(Conne...

木木匠
48分钟前
3
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
1K
20
SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
33
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部