您的位置:首页 > 编程语言

树莓派折腾之烧录系统、下载源代码、编译内核

2015-12-05 21:24 204 查看
好了,既然说是折腾,那就不是一两下子就顺利搞下来的,且听我把它一一道来。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: