博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
玩转树莓派-RaspBerry,操作系统的源码编译
阅读量:5957 次
发布时间:2019-06-19

本文共 1907 字,大约阅读时间需要 6 分钟。

hot3.png

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

1、获取升级所需源码

1)下载地址:

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

firmware:树莓派的交叉编译好的二进制内核、模块、库、bootloaderlinux:内核源码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下

转载于:https://my.oschina.net/u/2306127/blog/390438

你可能感兴趣的文章
java面试ssm6_面试题 - osc_m616vxy7的个人空间 - OSCHINA - 中文开源技术交流社区
查看>>
java过滤器往后传参数_Spring security 自定义过滤器实现Json参数传递并兼容表单参数(实例代码)...
查看>>
python3网络爬虫实战测验3_[Python3网络爬虫开发实战] 3.3(3)
查看>>
java求数的读法_Java练习题:数的读法。求救
查看>>
java封装任务调度_任务调度开源框架石英动态添加,修改和删除定时任务
查看>>
glide加载圆角和自定义圆角view_Android中Glide加载圆形图片和圆角图片实例代码
查看>>
java中数据库连接_在java中使用jdbc的数据库连接大全
查看>>
php后门文件处理方式_PHP后门隐藏的一些技巧总结
查看>>
MYSQL图形化界面4,Ubuntu 16.4中搭建MySQL数据库,设置远程登录,SQLyog图形化界面展示...
查看>>
fedora matlab 中文,Fedora 8下安装配置Matlab全过程
查看>>
matlab的超松弛迭代法,基于MATLAB的超松弛迭代法的电位研究
查看>>
gstreamer matlab,3 Matlab 与 Psychtoolbox 的安装
查看>>
php中4种算法的区别,php的4种基础排序算法
查看>>
php引用网页 的两种方式,网页外部引用CSS之link和@import两种方式
查看>>
matlab怎么做字体孔,如何用 matlab 在图片上绘制矩形框 和 添加文字 ?
查看>>
php用来删除当前目录的函数,PHP删除当前目录及其目录下的所有文件
查看>>
oracle 多个分组函数,oracle之4多行函数之分组函数
查看>>
禅道怎么连接oracle数据库,禅道项目管理系统整合Selenium IDE的思路
查看>>
linux 禁止文件修改时间,linux 修改文件的时间属性
查看>>
x86 linux 根文件系统6,Linux系列六之根文件系统
查看>>