2011年5月11日 星期三

Beagleboard-XM NFS HOWTO

一般开发都事基于NFS,所以,Beagleboard-XM也不例外。

我的环境:Beagleboard-XM板子一块;laptop一台,一个USB移动硬盘,因为laptop硬盘不够大,所以,rowboat关于bb的代码和编译生成的文件系统均放在引动硬盘里面的一个分区里面。


挂载USB移动硬盘,有权限限制:

sudo umount 200-1

sudo /sbin/mount.ntfs /dev/sdb1 /media/200-1 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0022,fmask=0022

目录起码应该有755,文件有755的权限,不然可能有如下的问题

Init: cannot execve('/system/bin/keystore'): Permission denied

init: cannot execve('/system/bin/dbus-daemon'): Permission denied

其实这个事权限的问题,如果不是在外置的移动硬盘或者U盘上,直接进入NFS挂载的那个文件系统里面,chmod 777 某些bin文件就可以了,但是因为我的是移动硬盘,并且是ntfs的,所以,被限制了,所以,重新umount,然后mount上,给与足够的权限,NFS才可能正常工作。

NFS挂载分区:/media/200-1/tftpboot/rootfs/bb/froyo

froyo的代码编译过后,执行命令
“cp -a /media/200-1/lntsz/beagleboard/rowboat/froyo-dsp/froyo/out/target/product/beagleboard/root/* /media/200-1/tftpboot/rootfs/bb/froyo”

“rm -rf /media/200-1/tftpboot/rootfs/bb/froyo/system”

“mv /media/200-1/lntsz/beagleboard/rowboat/froyo-dsp/froyo/out/target/product/beagleboard/system /media/200-1/tftpboot/rootfs/bb/froyo”

“ln -s /media/200-1/tftpboot/rootfs/bb/froyo/system /media/200-1/lntsz/beagleboard/rowboat/froyo-dsp/froyo/out/target/product/beagleboard/system”

“cd /media/200-1/tftpboot/rootfs/bb/froyo”

编辑init.rc文件,把mkdir /system注释掉。


编辑笔记本上系统里面的/etc/exports 文件,在后面添加一行

/media/200-1/tftpboot/rootfs/bb/froyo *(rw,sync,no_root_squash,no_subtree_check)


最后重新启动NFS服务。

sudo /etc/init.d/nfs-kernel-server restart


BB的启动参数

touch bb

编辑bb文件,添加如下几行:

if fatload mmc 0 80200000 uImage

then

echo ***** Kernel: /dev/mmcblk0p1/uImage *****

fi

echo ***** RootFS: /dev/mmcblk0p2 *****

setenv bootargs 'console=ttyS2,115200n8 androidboot.console=ttyS2 mem=256M init=/init omap_vout.vid1_static_vrfb_alloc=y omapdss.def_disp=dvi omapfb.mode=dvi:720x480MR-16 mpurate=1000 root=/dev/nfs rw nfsroot=192.168.0.56:/media/200-1/tftpboot/rootfs/bb/froyo ip=192.168.0.59:192.168.0.1:255.255.255.0 rootdelay=1 rootwait'

bootm 0x80200000


然后执行命令

mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Beagleboard-xM boot script" -d bb boot.scr


最后把boot.scr件放到SD卡里面的boot分区,替换原来的boot.scr文件。


再未替换NFS文件系统的boot.src文件之前,一定先给BB设置固定IP192.168.0.59,不要使用dhcp。接着把sd卡取出插到电脑,替换带有NFSboot.src,插上网线,插上SD卡,重新启动BB,就可以开始NFS 开发了。


标签:NFS Beagleboard-XM boot.scr rowboat boot develop

2011年5月9日 星期一

ubuntu 10.10 build android 出现 error: CSSParser.cpp:4219: undefined reference to `WebCore::CSSParser::lex()'

系统由ubunut9.10升级到10.10后,才出现这样的问题。原因是flex,生成的文件
out/target/product/messi/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/tokenizer.cpp
缺少了很多东西,具体可以以对比一下beagleboard-XM 平台rowboat的这个文件的代码。这个文件在froyo源代码里面是没有的,是在
编译的过程中,由“prebuilt/linux-x86/flex/flex-2.5.4a”根据
external/webkit/WebCore/css/tokenizer.flex
external/webkit/WebCore/css/maketokenizer
两个文件生成。

external/webkit/WebCore/css/maketokenizer
提到:
To regenerate, run flex on tokenizer.flex. After this, copy the
data tables and the YY_DECL method over to this file. Remove the
init code from YY_DECL and change the YY_END_OF_BUFFER to only call
yyterminate().

https://lists.webkit.org/pipermail/webkit-dev/2007-September/002418.html
提到
The function is generated from tokenizer.flex and ends up in
tokenizer.cpp, which CSSParser.cpp #include's. On the Mac build this
file is generated to WebKitBuild/Debug/DerivedSources/WebCore/
tokenizer.cpp. I'm not sure precisely where it would end up with the
Gdk build. If you're seeing a link error with this function missing
it would suggest that the file is not being generated correctly due to
an error in either flex or the WebCore/css/maketokenizer script which
post-processes the flex output.

解决方法:
out/target/product/messi/obj$ vi ./STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/tokenizer.cpp
out/target/product/messi/obj$ rm ./STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/tokenizer.cpp
out/target/product/messi/obj$ rm -rf ./STATIC_LIBRARIES/libwebcore_intermediates

prebuilt/linux-x86/flex$
prebuilt/linux-x86/flex$ mv flex-2.5.4a flex-2.5.4a.orig
external/webkit/WebKitTools/android/flex-2.5.4a$ ./configure
external/webkit/WebKitTools/android/flex-2.5.4a$ make
external/webkit/WebKitTools/android/flex-2.5.4a$ cp flex ../../../../../prebuilt/linux-x86/flex/flex-2.5.4a

////////////////////////////////////////////////////////////////////////////////////////
补充:因为我编译平台是ubuntu10.10 32bit的,所以得把flex拷贝到linux-x86,其它系统的话相应放到“darwin-x86 darwin-x86_64 linux-x86 linux-x86_64”等相应目录的flex里面。
////////////////////////////////////////////////////////////////////////////////////////

最后再查看文件
out/target/product/messi/obj$ vi ./STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/tokenizer.cpp
发现生成的tokenizer.cpp跟rowboat的一模一样,所以正常了,编译链接当然就通过了。

ref:
1. Issue 4485: CSSParser.cpp:4219: undefined reference to `WebCore::CSSParser::lex()'
http://code.google.com/p/android/issues/detail?id=4485
2. Regarding lex( ) function in WebKit
http://blog.gmane.org/gmane.os.opendarwin.webkit.devel/month=20070901
https://lists.webkit.org/pipermail/webkit-dev/2007-September/002418.html

标签:
ubuntu 10.10 10.04 WebCore build error CSSParser.cpp:4219: undefined reference to `WebCore::CSSParser::lex()' tokenizer.cpp maketokenizer flex-2.5.4a

ubuntu以可写模式挂载移动硬盘

前几天因为原先ubuntu9.10老是出现问题,一挂载外置移动硬盘,然后整个系统就卡住,home目录下的分区大小不断减少 ,最后一直减少为0。找了一段时间,找不出问题,再加上编译android有某些特别需求,所以,干脆就升级了事。又因为11.04那个界面变化太大,而且可能不稳 定,工作还事需要稳定一点的系统,再三权衡,最后升级ubuntu10.10.
ubuntu10.10对于我来说,最重要的是工作。但最让我郁闷的事,现在这个新系统一挂载U盘或者引动硬盘你竟然都不可写,这个问题好郁闷,以前9.10的时候是没有这个问题的。所以,花了很多时间找问题,最后,没办法啦,哥那么努力解决,能不好嘛,丢!
先看9.1010.10挂载后的情况:
michael@cowboy:/tmp$ ps -ef > mount.9.10_usb

michael@cowboy:/tmp$ grep mount mount.9.10_usb

root 1296 1 0 14:24 ? 00:00:00 /usr/sbin/rpc.mountd --manage-gids

root 2325 1 0 14:29 ? 00:00:00 /sbin/mount.ntfs /dev/sdc2 /media/usb-1 -o rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,dmask=0077

root 2365 1 0 14:29 ? 00:00:00 /sbin/mount.ntfs /dev/sdc1 /media/usb-1 -o rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,dmask=0077

root 2367 1 0 14:29 ? 00:00:00 /sbin/mount.ntfs /dev/sdc3 /media/usb-3 -o rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,dmask=0077

root 2369 1 0 14:29 ? 00:00:00 /sbin/mount.ntfs /dev/sdc5 /media/usb-4 -o rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,dmask=0077

michael@core:/tmp$ ps -ef > mount.10.10_usb

michael@core:/tmp$ grep mount mount.10.10_usb

root 2886 1 0 12:03 ? 00:00:00 /sbin/mount.ntfs /dev/sdc1 /media/usb-1 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0177

root 2867 1 0 12:03 ? 00:00:00 /sbin/mount.ntfs /dev/sdc2 /media/usb-2 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0177

root 2880 1 0 12:03 ? 00:00:00 /sbin/mount.ntfs /dev/sdc3 /media/usb-3 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0177

root 2884 1 0 12:03 ? 00:00:00 /sbin/mount.ntfs /dev/sdc5 /media/usb-4 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0177

michael@core:/tmp$

两个系统对比,有两个区别: fmaskuhelper。其中10.10fmask=0177,这样,里面的那个1就让使移动硬盘挂载时候没有可写权限了。而9.10没有这个标识,默认 fmask=0000,所以,什么权限都有,所以,你打开你在9.10进入usb移动硬盘的分区后,很明显,各个文件,各个目录都是绿色的,让眼睛也挺难受的。 Uhelper10.10变成了 udisks,其实我也不知道 devkit和 它有什么区别。后面经过我查阅, udisks把挂载的参数(类似“rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0177 ”)传递给mount.ntfs(其实就事mount.ntfs-3g的符号链接),然后由mount.ntfs-3g挂载。


虽然找到了这两个区别,但是,一开始我一直想找到一个配置文件,以为直接配置一下挂载权限就可以了,比如说:

方法一:直接修改/etc/fstab, 见参考文档“Mount Partitions Automatically”,在 fstab 最后面添加几行

#Entry for USB harddisk(sudo blkid):

#UUID=74909E1990456789 /media/usb-1 ntfs rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077 0 0

#UUID=9A4080094345678 /media/usb-2 ntfs rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077 0 0

#UUID=2C644D3F6423456 /media/usb-3 ntfs rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077 0 0

#UUID=1E4C86404C123456 /media/usb-4 ntfs rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077 0 0

效果呢,见下面的方法二。


方法二:使用 ntfs-config

sudo apt-get install ntfs-config

The following NEW packages will be installed:

libntfs-3g79 ntfs-3g ntfs-config

….......

sudo ntfs-config

配置了,但是最后呢,还是去修改 /etc/fstab,要是我是我下次开始不接移动硬盘的话,开机登录画面就说挂载不上,问你要不 要跳过的提示,当你按shift+sS)然后进入系统后,再手工点击挂载usb硬盘盘符,会提示“error mounting: mount exited with exit code 1:helper Failed with: mount: only root can mount /dev/sdb1 on /media/usb-1”。到现在为止,我都不知道ntfs-config到底是怎么使用的,郁闷。


方法三:修改/etc/hal/fdi/policy/preferences.fd文件,更改权限。见下面参考链接“自动挂载移动设置的问题”。可是,当我想修改的时候。我发现我的这个文件没有了,本来好像是有的,不知道怎么搞来搞去,就不见了。最后我也没知道怎么让这个文件生出来,所以,不想太多了。


方法四: 使用gconf-editor 修改挂载ntfs文件系统的权限。执行下面一条命令

gconftool-2 -t list --list-type string -s /system/storage/default_options/ntfs-3g/mount_options "[defaults, exec]"


可是,如果你先用命令gconf-editor 观察,根本就没有storage这个项,不知道哪里来的,至少我这个10.10的系统见不到这个项了。所以,原来老系统可以生效的,现在新系统,强加进去不一定药到病除呢。


所以说,折腾来折腾去,指标不治本,干脆,直接改udisks的代码吧。参考“How to set Gnome automount permissions?”。里面说得挺详细了,我也把整个过程复制一下过来吧.


michael@core:~/work/tools/ntfs/udisks$ ls

michael@core:~/work/tools/ntfs/udisks$ apt-get source udisks

Reading package lists... Done

Building dependency tree

Reading state information... Done

NOTICE: 'udisks' packaging is maintained in the 'Git' version control system at:

git://git.debian.org/git/pkg-utopia/udisks.git

Need to get 736kB of source archives.

Get:1 http://mirrors.163.com/ubuntu/ maverick/main udisks 1.0.1+git20100614-3 (dsc) [2,427B]

Get:2 http://mirrors.163.com/ubuntu/ maverick/main udisks 1.0.1+git20100614-3 (tar) [715kB]

Get:3 http://mirrors.163.com/ubuntu/ maverick/main udisks 1.0.1+git20100614-3 (diff) [18.5kB]

Fetched 736kB in 2s (296kB/s)

gpgv: Signature made Tue 28 Sep 2010 01:02:30 AM CST using RSA key ID 26B47B9F

gpgv: Can't check signature: public key not found

dpkg-source: warning: failed to verify signature on ./udisks_1.0.1+git20100614-3.dsc

dpkg-source: info: extracting udisks in udisks-1.0.1+git20100614

dpkg-source: info: unpacking udisks_1.0.1+git20100614.orig.tar.gz

dpkg-source: info: unpacking udisks_1.0.1+git20100614-3.debian.tar.gz

dpkg-source: info: applying 00git-fix-luks-forced-removal.patch

dpkg-source: info: applying 01-mkfs-tempdir.patch

dpkg-source: info: applying 02-defer_smart_probing.patch

dpkg-source: info: applying 05-german-translations.patch

dpkg-source: info: applying 10-ide-cd-support.patch

dpkg-source: info: applying 11-remove-unused-probers.patch

michael@core:~/work/tools/ntfs/udisks$

michael@core:~/work/tools/ntfs/udisks$

michael@core:~/work/tools/ntfs/udisks$ ls

udisks-1.0.1+git20100614 udisks_1.0.1+git20100614-3.debian.tar.gz udisks_1.0.1+git20100614-3.dsc udisks_1.0.1+git20100614.orig.tar.gz

michael@core:~/work/tools/ntfs/udisks$

michael@core:~/work/tools/ntfs/udisks$ cd udisks-1.0.1+git20100614/

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$ vi src/device.c


修改代码:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static const char *vfat_defaults[] = { "uid=", "gid=", "shortname=mixed", "dmask=0077", "utf8=1",/*"showexec",*/ NULL };
static const char *vfat_allow[] = { "flush", "utf8=", "shortname=", "umask=", "dmask=", "fmask=","codepage=", "iocharset=", "usefree", /*"showexec",*/ NULL };
static const char *vfat_allow_uid_self[] = { "uid=", NULL };
static const char *vfat_allow_gid_self[] = { "gid=", NULL };
/* ---------------------- ntfs -------------------- */ /* this is assuming that ntfs-3g is used */
static const char *ntfs_defaults[] = { "uid=", "gid=", "dmask=0077", "fmask=0077,*/ NULL };
static const char *ntfs_allow[] = { "umask=", "dmask=", "fmask=", NULL };

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$ sudo apt-get install devscripts

[sudo] password for michael:

Reading package lists... Done

Building dependency tree

Reading state information... Done

devscripts is already the newest version.

0 upgraded, 0 newly installed, 0 to remove and 38 not upgraded.

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$ sudo apt-get build-dep udisks

Reading package lists... Done

Building dependency tree

Reading state information... Done

0 upgraded, 0 newly installed, 0 to remove and 38 not upgraded.

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$ debuild

dpkg-buildpackage -rfakeroot -D -us -uc


…..................


dpkg-deb: building package `udisks' in `../udisks_1.0.1+git20100614-3_i386.deb'.

dpkg-genchanges >../udisks_1.0.1+git20100614-3_i386.changes

dpkg-genchanges: not including original source code in upload

dpkg-source --after-build udisks-1.0.1+git20100614

dpkg-buildpackage: binary and diff upload (original source NOT included)

Now running lintian...

W: udisks: binary-without-manpage sbin/umount.udisks

Finished running lintian.

Now signing changes and any dsc files...

Could not find a signing program (pgp or gpg)!

debuild: fatal error at line 1258:

running debsign failed

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$

michael@core:~/work/tools/ntfs/udisks/udisks-1.0.1+git20100614$ cd ..

michael@core:~/work/tools/ntfs/udisks$ ls

udisks-1.0.1+git20100614 udisks_1.0.1+git20100614-3.dsc udisks_1.0.1+git20100614-3_i386.changes udisks_1.0.1+git20100614.orig.tar.gz

udisks_1.0.1+git20100614-3.debian.tar.gz udisks_1.0.1+git20100614-3_i386.build udisks_1.0.1+git20100614-3_i386.deb udisks-doc_1.0.1+git20100614-3_all.deb

michael@core:~/work/tools/ntfs/udisks$

michael@core:~/work/tools/ntfs/udisks$ sudo dpkg -i udisks_1.0.1+git20100614-3_amd64.deb


安装之前,不用”sudo apt-get remove udisks”dpkg会“升级”原先的udisks。安装完毕后,重新启动,插入usb移动硬盘,一切ok!


启动后:执行ps -ef | grep mount 命令

michael@core:~$ ps -ef | grep mount

root 2920 1 0 00:16 ? 00:00:00 /sbin/mount.ntfs /dev/sdb1 /media/usb-1 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077

root 2920 1 0 00:16 ? 00:00:00 /sbin/mount.ntfs /dev/sdb2 /media/usb-2 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077

root 3028 1 0 00:16 ? 00:00:00 /sbin/mount.ntfs /dev/sdb3 /media/usb-3 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077

root 3047 1 0 00:16 ? 00:00:00 /sbin/mount.ntfs /dev/sdb5 /media/usb-4 -o rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0077


或者michael@core:~$ tail -f /var/log/syslog命令也可以观察。


另外补充点其他的:

apt-get source udisks 后,会自动帮你把补丁打进源码。但是某些代码就不一定帮你打补丁,比如说ntfs-config。需要你手工打入补丁。手工打补丁下载的源码有个特点,就是有个“*.diff.gz”文件。但不知道是不是这个原理。最好的方法还是用meld对比一下orig解压出来的源码。

还有一个比较讨厌的事就是:移动硬盘自动挂载分区后,回自动打开盘符。这个方式老弹出来,不好,所以,可以参考“Disable/Enable Auto-Mount in Ubuntu 10.04/10.10”,执行命令gconf-editor,进入“apps --> nautilus --> preferences”,把“media_automount_open”后面的勾去掉。


参考链接:

1. 自动挂载移动设置的问题[已解决] http://www.linuxsir.org/bbs/showthread.php?t=355802

2. Disable/Enable Auto-Mount in Ubuntu 10.04/10.10 http://www.liberiangeek.net/2010/09/disableenable-auto-mount-ubuntu-10-0410-10-maverick-meerkat/

3. Mount Partitions Automatically https://help.ubuntu.com/community/AutomaticallyMountPartitions

4. How to set Gnome automount permissions? http://ubuntuforums.org/showthread.php?p=10033108


标签: Howto auto mount external hard drive, USB udisks, fmask, dmask, ntfs, ntfs-3g, ubuntu, 10.10, 10.04,可写,移动硬盘


2011年5月1日 星期日

Beagleboard-xM的HDMI输出

几个月前就买了beagleboard-xM,一直都没什么时间弄。最近终于腾出点时间,折腾了一下它。因为我平时用的是本本,没有液晶显示器,也没有电视,这些都是大个的东西,所以,为了以后方便,我买了个带HDMI输入的车载显示器,当然,它还可以接DVI,VGA,AV等输入,最大分辨率1920×1080P,可喜的是,它还带了个电阻屏。牌子是LILIPUT,型号是869GL。800多块RMB。买这个显示器主要实现两个功能:第一,让beagleboard-xM能通过HDMI线(非HDMI转DVI)接到屏幕,正常显示;第二,移植LILIPUT的触摸屏驱动进入rowboat的项目,使触摸屏在android上正常工作。
现在HDMI已经工作。主要注意的是,因为beagleboard-xM没有oneNand,所以,u-boot启动后的那些环境变量都不能保存,真正起作用的是在你SDCard里面boot分区的boot.scr。它在xm_BootMSDU里面默认有一个,如果你的是一般的液晶显示器,不用改,都能显示,但是我的比较特别,所以,需要修改,修改boot.scr不能直接vim,而要使用mkimage工具。需要更外注意的是,我的分辨率是720x480,其他分辨率好像有些不工作,也没怎么尝试。

howto edit boot.src
michael@core:/tmp/test$ cat << EOF > bb
> if fatload mmc 0 80200000 uImage
> then
> echo ***** Kernel: /dev/mmcblk0p1/uImage *****
> fi
> echo ***** RootFS: /dev/mmcblk0p2 *****
> setenv bootargs 'console=ttyS2,115200n8 androidboot.console=ttyS2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init rootwait ip=off omap_vout.vid1_static_vrfb_alloc=y omapdss.def_disp=dvi omapfb.mode=dvi:720x480MR-16 mpurate=1000'
>
>
>
> bootm 0x80200000
> EOF
michael@core:/tmp/test$

michael@core:/tmp/test$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Beagleboard-xM boot script" -d bb boot.scr
Image Name: Beagleboard-xM boot script
Created: Thu Apr 14 00:40:16 2011
Image Type: ARM Linux Script (uncompressed)
Data Size: 404 Bytes = 0.39 kB = 0.00 MB
Load Address: 0x00000000
Entry Point: 0x00000000
Contents:
Image 0: 396 Bytes = 0 kB = 0 MB
michael@core:/tmp/test$ ls
abc bb boot.scr
michael@core:/tmp/test$
再接着就是把生成的boot.scr复制到你的SDCard里面相应的地方,重新启动就可以了。

如果不按照上面方法制作boot.src, 启动时候会出现:

Environment size: 1196/131068 bytes
OMAP3 beagleboard.org # boot
mmc1 is available
reading boot.scr

468 bytes read
Running bootscript from mmc ...
## Executing script at 82000000
Bad data crc

参考链接:
1. saveenv at xM
http://groups.google.com/group/beagleboard/browse_thread/thread/9d2387da3f56f30d
2. Building_and_Testing_DSP_stack
http://code.google.com/p/rowboat/wiki/DSP#Building_and_Testing_DSP_stack
3. how to use mkmmc-android.sh
http://www.beagleboard.tw/techdocs/beagleboard-xmbuildrowboatwithdspmakebootablemicrosd

2009年8月28日 星期五

无非是经历故事

    就算整个世界都改变,也不改变人生的追求。
    一个多月前,我来到这里,过着忙碌的工作和生活,这样的习惯对于我来说,丝毫没有任何的压力,因为我已经非常非常适应了,当然,那些工作也是我乐意干的。Linux内核,至少现在还是我很是想学习和精通的东西。兴趣广泛而已也有专攻都会让一个年轻人感觉自己有奋斗的目标。房子,车子,那些暂时我没想过,我要那么多钱干什么,生不带来,死不带去,人生只是为了经历而已,能不能帮助别人,让别人也起码生活在幸福中。
    岁岁年年,我们俨然已经不再是孩子了,好多以前老师教的东西你会不断质疑。我们在思考中,过多的让自己随波逐流了,不管是非,别人即使那么做是不应该的,但他们得到了利益得到了名声,我们为什么不能趋之若骛。浮躁和功利,我们把哪天住更大的房子,开更贵的车子,让更多的人欣赏你的成功作为目标,而不断地努力,为自己拼命地疯狂的工作找借口,或者为自己的违反规则开脱……我不想为这些工作和学习,主导的应该是我的兴趣。如果没有了兴趣,再多的利益我也将转向另外一个我认为会让我快乐,让我奋斗的地方。我知道,以前我真很可能不工作,我想我有能力自由的而且愉快地生活着。
    啦啦啦,我在这里经历故事,呵呵。

2009年7月1日 星期三

突然,我们失去了最亲的人

    为什么,他们竟然不再言语,悄无声息地离我们而去。

    他们还未年迈,他们生活有份憧憬,却遭受如此病痛。他们对儿女的期待啊,本应该在幸福中慢慢变老,可是,上天并不呵护他们,而让他们不断地挣扎,在混沌的痛苦中使劲回忆儿女的点滴。然后,这个世界,有时候生命不饶人,生命不珍重。您离我们而去,突如其来,叫我们如何面对。

    那个世界是什么样的,你们去的那个天堂。以后不再有叔叔您跟我们喝酒了,不再有爽朗的笑声了,我们兄弟姐妹们一起卖的东西您也不再来给我们建议了。我们,我们鼻子真的会酸,叔叔,您为什么要走那么快。

    叔叔,你走好,您的孩子很努力,会让阿姨一直好好的,愉悦的生活到老,还有我们这些您的孩子。祝您在新的地方也能高高兴兴,返老还童,过着无忧无虑的生活。我们爱您。

2009年6月21日 星期日

时刻坚信前进的方向

    在Linux Kernel Development Second Edition( By Robert Love) Preface那部分有一句话:Developing code in the kernel does not require genius, magic, or a bushy Unix-hacker beard.Robert Love写的书很幽默风趣,读起来"如沐春风".看这本书边看代码和码代码,不会感觉累,呵呵。