树莓派折腾之烧录系统、下载源代码、编译内核
2015-12-05 21:24
204 查看
好了,既然说是折腾,那就不是一两下子就顺利搞下来的,且听我把它一一道来。
所以这里我建议使用
https://www.raspberrypi.org/downloads/
把系统下载下来之后,可以选择用windows或者linux环境把系统烧录进SD卡里, 下面我介绍一下linux下的方法吧,windows的就不提了。
可以在SD卡插入前后,
看插入的SD卡为哪一个设备文件,假如是sdb1,那么就执行
接着,我下的RASPBIAN系统是raspbian-jessie-lite,下载后的文件名为2015-11-21-raspbian-jessie-lite.zip
在linux下解压:
你就能发现有一个
接下来就使用
bs代表一次写入多大的块,是blocksize的缩写,4M一般都没问题,如果不行,试试改成1M,if参数为下载的镜像的路径(应该是input file缩写),of后参数为设备地址(应该是output file的缩写,linux上一切都是文件)千万不要写错这里的参数,否这你可能丢失硬盘所有数据。
这里要注意,
当然如果你非常想看到此时的拷贝进度也是可以的。
好了,到这里系统就烧录到SD卡里了,移除SD卡,把SD卡插入Pi中吧。
上面网址上介绍了如何下载源代码,和编译内核等,一开始一看是用git clone,我就没想下,因为实在是太慢了,后来想到下载ZIP,但是下载下来的ZIP文件的md5和压缩包里带的md5对不上,编译又老是报缺少什么文件,所以ZIP文件的方法不可取。
我这里贴上自己的方法,供大家参考:
这个方法,请耐心等待,我当时的下载平均速度大概在30Kbit/s左右,大概下了几个小时,而且是三个终端同时下载。
下载完之后,就有三个文件夹了,firmware, tools, linux.
清干净之后,就需要
那么如何获取
进入烧录好的树莓派,
好了,
然后我们进入到tools文件夹,找到交叉编译链,
如果直接用刚刚拷贝的
如果需要自己再配置,可以执行下面的命令:
配置完之后,就可以编译了,执行下面的命令:
好了,这个过程,可以等一段时间了,喝杯茶什么的。
编译完之后,你就可以在
1 烧录系统
关于烧录系统,一开始我是用的NOOBS,因为里面囊括了几大系统,任君选择,但是当我后面编译完内核,想把内核更新到SD卡里的时候,就悲剧了,怎么想也没想到这个系统居然会使得linux下无法识别SD卡的分区。所以这里我建议使用
RASPBIAN下载地址如下:
https://www.raspberrypi.org/downloads/
把系统下载下来之后,可以选择用windows或者linux环境把系统烧录进SD卡里, 下面我介绍一下linux下的方法吧,windows的就不提了。
a. 格式化SD卡
不管SD卡里面是否已经有系统了,建议用windows下的SDFormatter,打开SDFormatter,Drive中选择你的SD卡,不用管Size多大,直接点格式化,格式化完之后,有系统的就会恢复到完整的大小。
b. linux下如何烧录SD卡
将SD卡插入电脑,确认SD卡是否有挂载,如果有挂载需要先unmount,
可以在SD卡插入前后,
ls /dev/ | grep sd
看插入的SD卡为哪一个设备文件,假如是sdb1,那么就执行
umount /dev/sdb1
接着,我下的RASPBIAN系统是raspbian-jessie-lite,下载后的文件名为2015-11-21-raspbian-jessie-lite.zip
在linux下解压:
unzip 2015-11-21-raspbian-jessie-lite.zip cd 2015-11-21-raspbian-jessie-lite/ ls
你就能发现有一个
2015-11-21-raspbian-jessie-lite.img文件。
接下来就使用
dd命令将镜像写到SD卡中
bs代表一次写入多大的块,是blocksize的缩写,4M一般都没问题,如果不行,试试改成1M,if参数为下载的镜像的路径(应该是input file缩写),of后参数为设备地址(应该是output file的缩写,linux上一切都是文件)千万不要写错这里的参数,否这你可能丢失硬盘所有数据。
这里要注意,
dd命令没有进度显示的。耐心等待几分钟吧。
sudo dd bs=4M if=2015-11-21-raspbian-jessie-lite.img of=/dev/sdb1
当然如果你非常想看到此时的拷贝进度也是可以的。
CRTL+
ALT+
T打开另一个终端,执行下面命令
sudo pkill -USR1 -n -x dd
好了,到这里系统就烧录到SD卡里了,移除SD卡,把SD卡插入Pi中吧。
2 下载源代码
说到下载源代码,真是折腾不息。http://elinux.org/Raspberry_Pi_Kernel_Compilation#Use_the_provided_compiler
上面网址上介绍了如何下载源代码,和编译内核等,一开始一看是用git clone,我就没想下,因为实在是太慢了,后来想到下载ZIP,但是下载下来的ZIP文件的md5和压缩包里带的md5对不上,编译又老是报缺少什么文件,所以ZIP文件的方法不可取。
我这里贴上自己的方法,供大家参考:
git init git clone --depth 1 git://github.com/raspberrypi/linux.git git clone --depth 1 git://github.com/raspberrypi/firmware.git git clone --depth 1 git://github.com/raspberrypi/tools.git
这个方法,请耐心等待,我当时的下载平均速度大概在30Kbit/s左右,大概下了几个小时,而且是三个终端同时下载。
下载完之后,就有三个文件夹了,firmware, tools, linux.
3 编译内核
进入linux文件夹,保证内核文件夹干干净净,cd linux/ make mrproper
清干净之后,就需要
.config文件了,没有
.config,要自己配置,比较麻烦,我们可以用已经在跑的树莓派的
.config,这样不需要重新配置内核了。
那么如何获取
.config呢?
进入烧录好的树莓派,
uname -r cd /lib/modules/|uname -r|/build make mrproper sudo modprobe configs #这会生成 /proc/config.gz gzip -dc /proc/config.gz > .config
好了,
.config已经搞到手了,将
.config复制到刚刚的linux文件夹下,
然后我们进入到tools文件夹,找到交叉编译链,
ls ../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-
如果直接用刚刚拷贝的
.config的话,执行以下命令:
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- oldconfig
如果需要自己再配置,可以执行下面的命令:
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- menuconfig
配置完之后,就可以编译了,执行下面的命令:
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-
好了,这个过程,可以等一段时间了,喝杯茶什么的。
编译完之后,你就可以在
arch/arm/boot/里面找到编译出来的
zImage。
相关文章推荐
- asp+access错误
- 【java学习笔记s】数据类型
- Spring cache资料(三。注释驱动的 Spring cache 缓存介绍)
- JavaScprit刷新8种方法
- java线程池学习
- java并发编程实战学习笔记之基础知识与对象的共享
- C#之飞行棋
- WPF C# 命令 学习
- c语言常用数据类型转换整理
- Spring cache资料(二 ,详解)
- matlab之bsxfun与repmat
- Spring MVC 入门示例讲解
- C# 特性 Attribute
- C++:基于LL(1)方法的语法分析程序-3
- 关于matlab绘图中字体及图片大小等的设置
- java解析XML四种方法
- python核心编程-诊断函数
- java设计模式(三)—单例模式
- python基础教程共60课-第10课变量2
- C++:基于LL(1)方法的语法分析程序-2