linux系统移植要点

1,Boot Loader 编译环境搭建
第一步: 在编译Boot Loader之前,首先要确保已经安装了交叉编译工具链,可以利用which arm-linux-gcc 命令进行检测.进

入/mnt/cdrom/Toolchain 目录下,将xscalev1_liod_qt_2.3.7.tar.gz 工具链解压到/usr/local/ 目录下面,如下图2 所示。
第三步: 利用export命令将交叉编译工具的路径加入到系统PATH环境变量中。(也可以直接修改“root”目录下的“.bash_profile”文件)

然后利用which命令查看交叉编译工具是否已在系统搜索路径中。
 利用make命令在Blob 源码所在的目录中对源码进行编译,编译成功后在该目录中产生Blob 映象文件boot。

总之,先安装好编译工具链,导入环境变量,再修改UBOOT源代码,配置一些必要的硬件参数:例如:系统时钟信号,SDRAM内存使能,外设:

GPIO,串口,flash,网口,sdraM。

2、修改 Makefile 文件当中的 ARCH 和 CROSS_COMPILE 。
   修改linux-2.6.22.10目录下的顶层Makefile文件,设置编译linux操作系统的CPU体系架构变量ARCH 和所使用的交叉编译工具链变量

CROSS_COMPILE(注:实验使用arm-linux交叉编译工具链4.2.1版本,可从http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/下载

arm-linux-tools-20070808.tar.gz压缩文件)。
现在 arm-linux-工具链已经解压在 /work/usr/bin目录下。
将 linux-2.6.22.10 的arch/arm/mach-pxa/xsbase270.c文件拷贝到 linux-2.6.22.10 目录下的/arch/arm/mach-pxa/目录下,并修改

Makefile 文件,如视频所示。并修改 该目录下的 Kconfig 文件。
将drivers/mtd /maps 的flash 驱动源码,并修改 该目录下的 Makefile 和 Kconfig 文件。
3,文件系统的制作
(1)、Busybox介绍
  Busybox是Debian GNU/Linux著名的Bruce Perens 首先开发,主要使用在 Debian 的安装程序中。后来又有许多 Debian 开发者对Busybox贡献力量。Busybox 编译成一个叫做 busybox独立执行程序,并且可以根据配置,执行 ash shell 的功能,以及几十个小应用程序。这其中包括一个迷你的 vi 编辑器,系统不可或缺的 /sbin/init 程序,以及其他诸如 sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等,所有这些都是一个正常的系统必不可少的,但如果把这些程序的原件拿过来的话,大小在一个嵌入式系统中无法承受。busybox 具有全部这些功能,大小也不过 100K 左右。而且用户还可以根据自己的需要对busybox的应用程序功能进行配置选择。这样可以使busybox 的大小进一步缩小。
 BusyBox支持多种体系结构,它可以静态或动态链接glic或者uclibc库,以满足不同的需要,也可以修改BusyBox默认的编译配置以移除不想使用的命令的支持。
(2)、busybox的编译
第1步、 从网上下载BusyBox软件包,这里下载的是busybox-1.15.0tar.tar。首先把它放在/root/Xsbase270_Linux/Filesystem目录下并进行解压缩。
用户可以根据需要对文件系统的功能选项进行配置,这样可以减少文件系统的大小,以节省存储空间,。
编译和安装完后生成_install目录。并且可以看到bin、sbin和usr 三个目录,在这三个目录,可以看到一个busybox应用程序和许多符号链接,并且还可以看出所有这些符号链接都指向busybox应用程序。
2、配置文件系统
在_install下建立etc目录:
[root@localhost _install]# mkdir etc
下面我们要在此etc下分别建立rc,inittab,motd三个文件。
进入刚新建的etc,在其下用"vi rc"命令建立rc文件:
#!/bin/sh
hostname emdoor
mount -t proc proc /proc
cat /etc/motd
保存后退出,用chmod命令改变rc文件属性
[root@localhost etc]$chmod  777  rc
在etc下新建一个inittab文件,内容如下
::sysinit:/etc/init.d/rcS
# Start an "askfirst" shell on the console (whatever that may be)
::askfirst:/bin/sh
# /sbin/getty invocations for selected ttys
tty4::respawn:/sbin/getty 38400 tty5
tty5::respawn:/sbin/getty 38400 tty6
# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
继续在etc下建立motd文件,其内容用户随意。
Welcome to
========================================
            ARM-LINUX WORLD
========================================
Base on : Xsbase270-EDR
Partner : emdoor(www.emdoor.com)
在etc下建立init.d目录,而后在init.d目录下建立rc文件的符号连接文件rcS。
[root@localhost etc]$ ls
 inittab motd  rc 
[root@localhost etc]$ mkdir init.d
[root@localhost etc]$cd init.d
[root@localhost init.d]$ ln -s ../rc rcS
 在_install下建立dev目录,创建设备文件。在本实验中一些设备文件是必需的,比如系统控制台console,MTD 块设备 mdblock3等,可以使用mknod命令来创建。
#mknod console c 5 1
#mknod mdblock3 b 31 3
 除了使用mknod命令来手工创建设备文件外,还可以复制主机平台/dev目录下一些必要的设备文件/root/Xsbase270_Linux/Filesystem/busybox-1.00-pre5/_install/dev目录下:
# cp -dpR /dev/* /root/Xsbase270_Linux/Filesystem/busybox-1.00-pre5/_install/dev
-dp参数表示复制过程中保证链接文件保持不变,但不会复制链接所指的原文件,而且属性不变,然后删除不必要的设备文件。
制作JFFS2文件映像
 将光盘的filesystem下的mkfs.jffs2拷贝到buybox下
返回到busybox的根目录下,运行命令mkfs.jffs2
# ./mkfs.jffs2 -o rootfs270.img -e 0x40000 -r _install -p -l
生成映像文件rootfs270.img,拷贝到/tftpboot中烧写到flash中,启动后运行结果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值