很久没有写博客了,关键是最近比较烦。在做博创杯的比赛,由于参考资料不多,而且全是英文的(万恶的英文啊),整的一开始方向错了。
浪费了很多时间,所以很长时间没有成果。不过现在还好,原来我们是只无头的苍蝇,现在总算有头了,嘿嘿。
说说最近的收获吧。不得不提,收获很多。
初做嵌入式,我们总会遇到第一步,搭建交叉编译环境。无非就是现在一个交叉编译器,arm-linux-gcc-。。。。。等等之类的,然后在主机
上添加环境变量,之后测试一下编译一下测试程序,好使了,便一切OK。
可是在一个较大的工程中呢,我们总会想到很多的问题。比如第一个兼容性,第二个软件的升级。
由于linux开源世界太多软件版本不断升级,相互兼容极差,不同的软件由不同的志愿者维护,互相根本没有考虑到兼容性,这导致在嵌入式
linux上开发的工程师的噩梦。在这种情况下,少数高人干起整合这些乱七八糟开源软件的事情,目标当然是尽量提供一个方便使用的软件包,避
免那些琐碎繁杂的配置安装工作。这样便产生了两个比较突出的开发包。LTIB(
Linux Target Image Builder)和ELDK(Embedded Linux Development Kit)
我们先来说一下关于LTIB
1、LTIB的介绍
2、LTIB的安装方法
3、LTIB的使用方法
一、LTIB的介绍
关于LTIB的介绍我想还是大家查看官网上的介绍比较好,首先感谢飞斯尔卡公司
http://savannah.nongnu.org/projects/ltib/
his project is not part of the GNU Project.
The LTIB (Linux Target Image Builder) project is a simple tool that can be used to develop and deploy BSPs (Board Support Packages) for various target platforms. Using this tool a user will be able to develop a GNU/Linux image for their target platform. The
following features are supported:
Main features
- Open source (GPL)
- Runs on most popular Linux host distributions (x86 and some PPC)
- Command line interface, with curses configuration screens (using LKC)
- Support for multiple target architectures (PPC, ARM, Coldfire)
- Target platforms selectable from a menu (CVS version)
- More than 200 userspace packages selectable
- Common root filesystem package set across architectures
- Supports building of bootloaders and kernel images
- All package building is done as non-root user
- Configuration/selection of individual packages from a menu
- Auto package dependency resolution
- Auto file conflict resolution by package order build scaling
- Auto re-install/de-install of packages by changes in dependency tree
- Toolchain selectable at configuration time
- Configuration of the Linux kernel using it's native config language
- Kernel selection can easilty be changed from choicelist during configuration
- Configuration of target system from host (IP address, services etc)
- Supports preconfigs which allow developers to store different system configurations (e.g. toolchain selection, kernel selection, package selection etc).
- Supports profiles this allows just the userspace package set to be re-configured. This is excellent for autobuilding or exchanging the non platform specific configuration between targets.
- All packages are built as rpms and managed using rpm
- Target image files managed using a private rpm database per LTIB instance on the host
- Supports single package developer mode using prep/scbuild/scdeploy analogs
- Provides a means of source capture (patches) and auto update of spec files
- Shell mode available to run all commands in ltib's spec environment
- Incremental deployment (over NFS) supported
- RAMDISK and JFFS2 Flash image creation supported
- Read-only root filesystem supported.
- LTIB is meta-data only, all sources are pulled using http and locally cached in a common area per-host.
- Remote source pulls support proxys
- Support for glibc and uclibc
- All meta-data formats are open source (rpm, Linux Kernel Config)
- Modular BSP architecture (easy to add new BSPs)
- Support batch mode and --continue for auto-builders
- Support --dry to preview ltib's actions
- Provides --dltest to check for availability of sources/patches
- Provides listpkgs mode to show all available packages, whether selected and their individual licenses.
- Provides a release mode, this encapsulates an LTIB project into an iso images that will not require network access.
Registration Date: Fri Aug 12 11:21:10 2005
License:
GNU General Public License v2 or later
Development Status: 4 - Beta
这段话大家翻译一下,就一切了然了。正如我所说LTIB(Linux的目标图像生成器)是一个简单的开发工具包,可用于各种目标平台的开发和
部署的BSP(板级支持包)。使用这个工具的用户将能够开发出了他们的目标平台的GNU / Linux的镜像。支持以下功能:。。。。。。。。
2.ltib工具的安装
ltib工具的安装方法有两种
引用**************************************************************************************
1: FREESCALE的LTIB包的安装
约定.0 当前用户为paul
约定.1 下载MCFV4M_20090710_ltib.iso文件到/home/paul
约定.2 当前工作目录为/home/paul
约定.3 安装目的目录为/home/paul/tools
约定.4 挂载目的目录为/home/paul/ltib
1.1 首先将ISO文件挂载到一个临时目录
#cd /home/paul
#mkdir temp
#mount –o loop ltib.iso /home/paul/temp
1.2 然后将ltib目录下的所有文件复制到ltib目录下,然后卸载ISO文件。
#cd /home/paul
#cp -rf /home/paul/temp /home/paul/ltib
#umount /home/paul/temp
#rm –dr temp
1.3 修改paul权限,进入tools目录下执行install,完成后执行./ltib
#su – root
#vim /usr/sbin/visudo
在最后一行添加下面一行内容:
Paul ALL = NOPASSWD: /bin/rpm, /opt/freescale/ltib/usr/bin/rpm
保存,并返回paul用户
#su paul
#cd /home/paul/ltib
#./ltib
输入安装的目的路径:/home/paul/tools
如果出现error,请按照提示进行操作。
Install成功后,进入/home/paul/tools/下进行build.
#cd /home/paul/tools
#./ltib
安装过程中如果出现缺少文件,请上网络下载并放到SOURCE目录即可。
***********************************************************************************************************
这种方法我没有试过,不过写的挺详细应该没有问题。
我用的是另外一种方法
1.进入找个网站http://www.bitshrine.org/ltib/resources-download
接着你就可以按照网站上的说明一步步执行ltib的安装了。
在linux终端执行以下命令
cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/ltib co -P ltib
$ cd ltib
$ ./ltib
这样在你终端的当前目录下(这个我没有太注意,我的是在根目录下边)生成了一个ltib,然后cd ltib进入,执行
./ltib
接下来时间就很漫长了。因为需要在网上下载很多东西,我从开始执行这步,到最后编译完成,大概是7个小时吧。
还让我逃了两节课,有时间再不吧,嘻嘻。
problem
你在执行过程中遇到的第一个问题便是权限问题
根据ltib的提示:你需要用到 /usr/sbin/visudo
这是一个精确调整用户权限的工具,你每次执行sudo都是调用的这个工具。
执行
/usr/sbin/visudo
在最后一行添加下面一行内容:
root ALL = NOPASSWD: /bin/rpm, /opt/freescale/ltib/usr/bin/rpm
最前面的内容,跟你用哪个用户执行的有关,你用的root用户那么就写root你用的普通用户,
就写普通用户的名字。
problem2
你遇到的第二个问题就是某某包没有,或者是下载不成功之类的。
这个不用着急,在超级用户权限下安装即可。
我用的是fedora9.0那么就执行yum install *********就可以了。
接着就没有什么问题了。安装时间主要是取决与你的网速,
这中间会有三个图像界面出现(就是我们makemenuconfig后出现的界面)
分别是第一个选择架构,我用的是lpc3152(NXP公司的)所以便选择这个,当然也有别的选项。
根据你的选项做决定。还有就是选择内核版本,诸如此类的
第二个界面是就是你之前选择的内核版本的配置单
第三个界面就是你的busybox的配置单。
选择完了之后其他的时间就是编译了。编译完成之后会生成一个rootfs目录在ltib目录下
在rootfs目录中有一个boot目录,里面存放的就是你编译出来的镜像文件。
编译完成之后的目录结构图就是这样。当然你在这里面是找不到你所下载的内核版本,uboot压缩文件的。
因为在/opt目录下也生成了两个文件夹。
下面是从ltib的技术手册中摘出来的,这里就不做翻译了。google一下吧
./rpmdb
• RPM database for this LTIB instance
► ./rpm
• Where sources, source RPMs and binary RPMs live
• Packages are built in ./BUILD/
• Binary RPMs will be created in ./RPMS/ for all
up-to-date packages
► ./rootfs
• root file system tree for the target, created by installation
of binary RPMs
► ./dist/lfs-5.1
• package spec files
► ./config/platform/
•• main.lkc defines the BSP top level
menu
• default configuration files :