您的位置:首页 > 运维架构 > Linux

linux移植开发简单步骤

2010-05-25 09:11 330 查看
http://blog.csdn.net/linucos/archive/2010/01/22/5223615.aspx

Linux
移植开发

准备工作:

准备
交叉编译工具链:这里我们选择DENX软件工程提供的ELDK交叉编译环境,参考地址:http://ftp.denx.de/pub/eldk/4.2/

我们使用其中的一套工具。准备工作步骤如下:

1. 建立工作文件夹NewMsg2410,并建立子目录sources works
tools

mkdir NewMsg2410

mkdir sources works
tools


2. 准备arm-2008-11-24.iso
到sources目录,并切换到sources目录,建立临时目录tmp挂载使用

mkdir tmp

3.
挂载iso并安装

挂载iso

mount -o loop arm-2008-11-24.iso
./tmp


切换到tmp下

cd tmp

执行安装脚本,-d指定安装文件
夹,我们选择 ../../tools/eldk42文件夹

./install –d ../../tools/eldk42

卸载iso

umount tmp

4. 设置系统环境变量

vi
~/.bashrc


最后一行添加

PATH = $PATH:
用户选择的目录
/NewMsg/tools/eldk42/usr/bin

此时设置了当前用户的环境变量,为了不混淆,可以重新登录root用户,使环境变量加载,当然也可以source 命令导出

5.
确认安装

查看环境变量

echo $PATH

查看编译器版本

arm-linux-gcc
–v


4.1
编译
u-boot

Uboot是德国DENX小组
的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD,
VxWorks, QNX, RTEMS, ARTOS,
LynxOS嵌入式操作系统。UBoot除了支持PowerPC系列的处理器外,还能支持MIPS、
x86、ARM、NIOS、XScale等诸多常用系列的处理器。

在此,我们选择较新版本:u-boot-2009.11,编译步骤如
下:

1.准备源代码

cd NewMsg2410/sources

cp
u-boot-2009.11.tar.bz2 ../works/


进入作品目录

cd
../works/


解压源代码

tar vxjf u-boot-2009.11.tar.bz2

此时,当前目录下,生成u-boot-2009.11文件夹

2. 编译uboot

cd
u-boot-2009.11


清理文件

make clean distclean

执行配置

make ARCH=arm CROSS_COMPILE=arm-linux-
NewMsg2410_config


编译uboot

make ARCH=arm
CROSS_COMPILE=arm-linux-


当前目录下生成uboot.bin,烧写系统用

4.2

编译
linux
内核

嵌入式
Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。

在此,我们使用较新版本:,步骤如下:

1. 准备源代码

cd
NewMsg2410/sources/


cp linux-2.6.30.tar.bz2 ../works/

解压源代码

tar vxjf
linux-2.6.30.tar.bz2


时,在当前目录下,生成linux-2.6.30文件夹

2. 编译linux内核

cd
linux-2.6.30


清理中间文件

make clean distclean mrproper

可以自行配置内核

make ARCH=arm CROSS_COMPILE=arm-linux-
menuconfig


也可以直接加载配置文件

cp NewMsg2410_config
.config


编译内核,生成uboot可以加载的格式uImage,同时也生成了其他格式映像文件

make
ARCH=arm CROSS_COMPILE=arm-linux- uImage


一段时间后,在arch/arm
/boot/目录下生成uImage映像

4.3
根文件系统制作

当前存在
很多格式文件系统,我们在此仅以jffs2文件系统为例子,说明根文件系统的制作工程和方法,详细的教程请参加威步科技出品的嵌入式linux开发从入门
到精通pdf文件即可。我们知道,要保证内核能够挂载到文件系统,要保证内核能够找到一个初始化用的init程序和inittab脚本,其中init程序
可以位于根文件系统的bin,sbin,usr/bin,usr/sbin下,init启用inittab的脚本配置,所以我们构建最小的根文件系统,至
少要包含一个init程序和一个inittab的脚本。BusyBox工具,集大多数unix工具于一身,在嵌入式linux根文件系统中使用广泛,我们
以此为例,开始最小根文件系统的制作。步骤如下:

1. 准备BusyBox源码

cd
NewMsg2410/sources/


cp busybox-1.15.3.tar.bz2 ../works/

解压源代码

tar vxjf busybox-1.15.3.tar.bz2

解压后得到目
录busybox-1.15.3

2. 编译BusyBox

cd busybox-1.15.3

make clean distclean mrproper

配置busybox

make
ARCH=arm CROSS_COMPILE=arm-linux- oldconfig


编译busybox

make
ARCH=arm CROSS_COMPILE=arm-linux-


安装到当前目录_install 文件夹

make
make ARCH=arm CROSS_COMPILE=arm-linux- install


3. 构建最小根文件系统

回到works目录

cd NewMsg2410/works/

建立根文件系统目录

mkdir rootfs

cd rootfs

复制busybox生成的
_install文件夹到rootfs

cp –r ../busybox-1.15.3/* .

ls
查看生成的只包含基本程序的文件系统

发现只有 bin usr sbin三个文件夹和linuxrc文件

查看bin
,usr/bin,usr/sbin, sbin发现,init程序在sbin文件夹可以找到

下面构建初始化脚本inittab,步
骤如下:

mkdir etc

cd etc

mkdir
init.d


touch inittab

vi inittab


加以下内容:指定系统初始化脚本

::sysinit:/etc/init.d/rcS

::respawn:-/bin/sh

tty2::askfirst:-/bin/sh

::ctrlaltdel:/bin/umount -a -r

所以接下来,建立init.d目录和rcS脚本

mkdir init.d

cd
init.d


touch rcS

vi rcS

添加以下内
容:

#! /bin/sh

echo “initing the system……”

rcS添加可
执行权限

chmod a+x rcS

添加设备文件目录

mkdir dev

添加设备文件

mknod console c 5 2

mknod null c 1 3

mknod
zero c 1 5

至此,最小文件系统根目录,已经建成,下面打包成jffs2映像,用来烧录

回到works目


cd NewMsg2410/works/

mkfs.jffs2 -d rootfs/
-o rootfs.jffs2


在当前目录下,生成rootfs.jffs2根文件系统映像
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: