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根文件系统映像
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根文件系统映像
相关文章推荐
- linux移植开发简单步骤
- pcDuino的linux移植四简单驱动开发
- 在Linux系统中搭建Node.js开发环境的简单步骤讲解
- Linux驱动开发学习的简单步骤
- 【Linux开发】【Qt开发】ARM QT移植详细步骤教程
- pcDuino的linux移植四简单驱动开发
- 在Linux系统中搭建Node.js开发环境的简单步骤讲解
- ARM+linux驱动开发步骤的简单演示
- 简单介绍Linux下安装Tomcat的步骤
- 初探Tensorflow(一)简单介绍其在Linux下的安装步骤和MNIST的使用准备
- 轻松简单搭建Linux下的c#开发环境(转)
- [Linux驱动开发] mini2440开发板u-bbot移植
- cocos2d游戏开发中简单人物动画开发步骤
- 嵌入式Linux开发及移植的学习建议
- 详解Red Hat Enterprise Linux 6共享Windows打印机最简单步骤
- 嵌入式开发七:实验二:本人实践:嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之内核
- 嵌入式linux系统移植开发视频教程
- struts 框架简单应用的开发步骤
- Linux下编译安装Mysql 5.5的简单步骤
- Onvif开发之Linux下gsoap的使用及移植