linux移植开发简单步骤

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根文件系统映像

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux移植、驱动编写最详细教程,Linux 操作系统的安装以及配置............................................................................................3 1 如何安装RedHat9.0 ................................................................................................3 2 在RedHat 中添加新用户.......................................................................................16 3 配置PC 机Linux 的ftp 服务...................................................................................16 4 配置PC 机Linux 的telnet .....................................................................................17 5 建立交叉编译环境...................................................................................................17 6 编译内核..................................................................................................................17 Linux移植.......................................................................................................................19 1 Bootloader 的移植.................................................................................................19 1.1 vivi 的配置与编译..........................................................................................19 1.2 配置和编译vivi .............................................................................................20 1.3 vivi 代码分析..................................................................................................21 1.4 vivi 的运行.....................................................................................................21 1.5 启动代码执行流程图.....................................................................................45 1.6 vivi 的配置文件..............................................................................................45 2 Linux 内核
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值