linux移植开发简单步骤
Linux移植开发准备工作:准备交叉编译工具链:这里我们选择DENX软件工程提供的ELDK交叉编译环境,参考地址:http://ftp.denx.de/pub/eldk/4.2/,我们使用其中的一套工具。准备工作步骤如下:1. 建立工作文件夹NewMsg2410,并建立子目录sources works toolsmkdir NewMsg2410mkdir sources wor
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)