从Java到嵌入式(二)——升级内核,安装libdc1394库

  本以为安装内核并不是什么大不了的事,但最后的结果证明我太自信了(过度的自信等于自负!)。升级内核等于是给Linux做心脏手术,对于我这个新手来说,虽然玩过几天的Redhat,却对内核全然无知,先Google一下,找到了几个blog,讲得还挺详细的。但是为什么要这么做,不知道!反正作者是这么写的。如果要学一个新东西,如何下手?当然是官方的使用手册!Linux内核中也有官方的文档,那就是Document目录下的文档,以及内核根目录README文档,我是从2.4.20-8升级到2.6.32详细过程如下:
  1.下载内核源代码
    从Linux内核官方FTP站点下载内核源代码压缩包linux-2.6.10.tar.bz2。
  2.软件包更新
    打开下载的内核源代码压缩包中的Documentation/Changes,找到需要的软件包列表,如下所示:
   
o  Gnu C                  3.2                     # gcc --version
o  Gnu make               3.80                    # make --version
o  binutils               2.12                    # ld -v
o  util-linux             2.10o                   # fdformat --version
o  module-init-tools      0.9.10                  # depmod -V
o  e2fsprogs              1.41.4                  # e2fsck -V
o  jfsutils               1.1.3                   # fsck.jfs -V
o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs
o  xfsprogs               2.6.0                   # xfs_db -V
o  squashfs-tools         4.0                     # mksquashfs -version
o  btrfs-progs            0.18                    # btrfsck
o  pcmciautils            004                     # pccardctl -V
o  quota-tools            3.09                    # quota -V
o  PPP                    2.4.0                   # pppd --version
o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version
o  nfs-utils              1.0.5                   # showmount --version
o  procps                 3.2.0                   # ps --version
o  oprofile               0.9                     # oprofiled --version
o  udev                   081                     # udevinfo -V
o  grub                   0.93                    # grub --version
o  mcelog		  0.6
o  iptables               1.4.1                   # iptables -V

  使用提供的命令查看各工具的版本,版本低的就上Google,找到其官网然后下载,解压后阅读README或INSTALL文件,终于知道如何安装它们了,这些工具有些会依赖其它的库,比如GCC依赖gmp及mpfr这两个库,每个INSTALL文档,从头看到尾,又从尾看到头,连蒙带猜的陆续安装着,光升级这些工具,就已经是一项超级大工程了,差不多能赶上人类基因组测序了,好不容易理清头绪哦,差不多花了两个多星期才将部分工具升级完成,还有几个工具编译通不过,那个叫人抓狂呀!也不清楚到底是怎么回事,Google遍了,还是没找到解决办法,也懒管它,能装的尽量先装上再说。

  下一步就开始编译内核了,内核根目录下的README文档里写得很清楚了,直接 make menuconfig,屏幕上显示出图形界面了,列了一堆的英文,不知所云,对照着别人的blog,再连蒙带猜的配置了一下,但是关键问题不能忘了--我升级内核是为了安装支持1394设备的模块,对着 libdc1394-HOWTO.pdf 中的步骤,不过这手册中的内核版本有点老了,和2.6.10版本显示的内容不一样,也就连蒙带猜的配置了一通,然后就开始 make,命令如下:
  # make
  # make modules
  # make install
编译后自动生成内核镜像文件,然后reboot,启动界面显示出了新编译的内核,然后选择引导新编译的内核,看着一行行的加载信息,有的还带有红色的错误信息,突然卡着不动了,不知道怎么回事,继续Google未果,我想,可能是内核配置的问题,可那内核配置比起那工具升级,就更让人晕了,不知是什么意思,到底哪些需要选,哪些不需要选,无从得知。真的要让人崩溃了,继续找内核升级的博客,对着中文解释,还是不懂,还是连蒙带猜的配置一通了,make, reboot 还是启动的时候有报错信息,并卡着不动了,反复尝试了N次,差不多又花了两个星期,那个叫人崩溃呀,心理的承受力已经降低到了极低点,每天弄到半夜三点,第二天还要继续上班,由于睡眠不足,上下班的途中,脑袋都是木的,就这样日复一日,整整坚持了一个月,心力憔悴到了极点,脑中在纠结着放弃还是继续??幸好还有GF身边鼓励我“加油!我相信你,永远都是最棒的!”听着这话,倍受挫折、遍是创伤的心灵终于得到了一点抚慰。熬夜的日子终于挺不住了,周末休息了一天,麻木的脑袋似乎有点清醒了,于是开始怀疑,我是不是走错方向了(事实证明我确实走错方向了)?

  后来看了些资料才知道,内核升级需要从主版本打补丁打到和最终的主版本一致,然后在同主版本的情况下升级次版本,回想我的升级经历,那样做肯定不对,而且Redhat9的内核都老掉牙了,版本跨度太大。本来mini2440用户手册上是建议安装Fedora9,是不是该试试Fedora9了?于是先安装上Fedora9试试,先配置个VSFTP!Shit!居然配置和Redhat的不一样!!刚开始就是因为觉得Fedora用不习惯,才决定在Redhat上大展身手的,可Redhat上升级内核已经到了绝路了,没办法,只得硬着头皮上,就像是抛弃了Win7那华丽的迷你裙,穿上Linux宽厚的大棉袄,抱着试一试的心态,照着mini2440用户使用手册将Fedora配置好后,将libdc1394压缩包直接解压,大至瞅了瞅README和INSTALL,Shit!libdc1394库居然还依赖libraw1394和libusb这两个库,管他呢,先down下来再说,解压后使用如下命令:
  ./config --prefix=......
  make; make install
居然无错误信息,心中大喜,马上使用libdc1394自带的example,接上相机,运行example程序,好家伙,没有像上次报错,打开拍的照片一开,哦!My god!终于成功啦!!!!久违的成就感!抱着GF狂呼,哈哈!相机驱动终于搞定了!突然间想起了“肖申克的救赎”中的主人公,凭借雕刻石头的小锥子,凿壁十年,终于逃出囚禁了他十年的“肖申克”监狱!在重获自由的那一刹那,他仰天长嘯,任凭雨水敲击着脸庞...

  回头看看旧日的脚印,曾经的累累伤痕,多少个不眠之夜,虽然这已经过去了三个多月了,至今乃至一生都无法令人忘却,一路摸索过来,要不是有GF相伴,恐怕中途就退缩了。有句话“每个成功的男人背后,一定有一个伟大的女人”确实不假,由衷的感谢GF,感谢CCTV,感谢MTV,感谢......,感谢所有支持我的人!

  相机驱动算是安装好了,接下来就要用QT编写GUI程序了。关于QT编程,且听下回分解~~

猜你喜欢

转载自johnson-lee.iteye.com/blog/875093