本来以为不难,结果还是跟以往一样,有点麻烦。
记录遇到的问题,现在我尝试的是将bbb从TF卡启动,是成功的。参考:
这之后,TF卡会有两个分区,一个是FAT16的引导分区,存放MLO文件,uboot等。另一个是EXT4,存放根文件系统。
这一步比较简单,之后是希望把openwrt放到TF卡上,然后让bbb从板子上启动。
记录一下官方更新的镜像路径:
http://downloads.angstrom-distribution.org/demo/beaglebone/testing/
第一次尝试:
这次的做法是失败的,我没有重新分区,直接从openwrt的snapshots中下载已经编好的给bbb用的所有镜像文件和根文件系统,替换掉TF卡中原来的。参考的是:http://wiki.openwrt.org/toh/beaglebone/black#installation
暂时也不清楚openwrt提供的MLO和uboot和出厂提供的版本有什么区别,基本我想也是失败的,但是没想到失败到连一点log都没打印出来,估计是uboot都没有跑起来吧。
估计是不应该替换MLO文件也不需要。
第二次尝试:
不替换MLO文件,只改一样,就是uEvn.txt。
起码这次uboot起来了,估计是openwrt社区提供的MLO还是有问题,用原厂提供就好。再另外加入了am335x-boneblack.dtb zImage这两个文件。现在问题是无法load dtb文件。
串口打出log:
gpio: pin 53 (gpio 53) value is 1
mmc0 is current device
micro SD card found
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 0
reading uEnv.txt
438 bytes read in 3 ms (142.6 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
Running uenvcmd ...
reading zImage
2051400 bytes read in 238 ms (8.2 MiB/s)
reading am335x-boneblack.dtb
** Unable to read file am335x-boneblack.dtb **
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
gpio: pin 55 (gpio 55) value is 1
** File not found /boot/uImage **
文件是放进去了,对比了路径应该也是没问题,所以还要再查查别的原因。
现在看来还是因为dtb文件对不上板子的原因,具体为什么我也不清楚,尝试用原厂的吧。
用原厂的,就是在文件系统下boot分区中的am335x-boneblack.dtb拷贝出来,放到fat32的分区里,就可以boot到kernel了,但是kernel目前启动不成功,因为我暂时没有替换rootfs成openwrt的。
第三次尝试:
替换rootfs。还是用snapshots上的版本。
结果是系统kernel无法start。怀疑是snapshots上的zImage有问题。决定开始自己编译一个版本出来试用。最好不要用root用户去编。
最重要是config。我用snapshot上的config之后再去改。
从svn上抓code:
svn co svn://svn.openwrt.org/openwrt/trunk --revision=45238
把feeds.conf.default拷贝成feeds.conf
之后获取最新feeds:
./scripts/feeds update -a
./scripts/feeds install -a
从snapshots上下载config,改成.config放在trunk目录下,
make menuconfig 做一下小改动即可。
之后make V=99
等待漫长的编译。。。
我的是失败的,我改了几个地方,首先usb.mk,修改了,看上去是svn自动merge失败的产物。zy1201驱动模块去掉,因为编不过,暂时也用不上,要用以后再移植。
然后改了nettle库的makefile,用最新的3.1.1否则会引起别的编不过。
之后就遇到安装privoxy时,提醒需要非根用户执行。
还有如果在国内网络的话shflags包下载不了,因为在google code上的,google code早已被禁。。。
本来想找一个git版的连接替换掉,或者自己下载一个版本放进去,才发现最新更新已经干掉这个库了,所以我也干掉了。。。奇怪的是41170就已经干掉这个版本,我用45238为什么还会获取到呢。。。
仍然还有编不过的问题,有点后悔了,虽然文档上指定了版本,我觉得应该用最新的版本去编才对。
不过已经弄了那么久,只能继续将就下去,又在继续编译了,希望能编过,实在太麻烦了。
还是不过,去掉libnetconf,只要放在googlecode我都下不了,所以建议最好弄一个已经*的linux环境去编译。
神奇的地球,最后因为虚拟机空间不足编不下去了,要了12g多,后悔一开始只分配了20g给虚拟机啊。。。
暂时总结一次,虚拟机的话硬盘空间要够大,最少留20g给编译用,用完删掉源码包应该不会太大。抓最新的代码编译,linux环境要先*,不要用根用户编译。其他的只能听天由命了。
----------------------------------------------------------------------------------------------------------
装了一个新的虚拟机,给了40g空间,64bit,用最新的代码编译,重新设置了编译选项,不编译那么多包进去了,本来想用bbb提供的gcc,后来发现自己多余地用了64bit而无法使用。不过用了最新的trunk的代码编译还是遇到了问题,反正现在遇到问题就修的能力已经大大提高了,只要不是空间不足这样的问题我都还是能解决的。目前也就只能等待编译了。
只要编译过了,放到板子能跑,一定提供一个config文件出来。