资源描述
Fedora14移植步骤
一、 交叉编译环境
1.安装arm交叉工具,解压arm-linux-gcc-4.4.3-20100728.tar.gz到根目录
tar –vxzf arm-linux-gcc-4.4.3-20100728.tar.gz -C /
2.配置arm交叉工具环境变量:使用root用户修改/etc/profile文件,添加
export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
source /etc/profile
二、 U-boot编译与移植
1.解压u-boot源码: tar -vxf u-boot-2009.11.tar.bz2
2.编译u-boot :进入u-boot所在目录 配置u-boot:make mini2440_config
编译u-boot:make
3.使用dnw将u-boot.bin烧写到nand flash里面
4.配置u-boot的ip地址,服务器地址,子网掩码,网关
5.配置u-boot的环境变量:setenv bootargs “noinitrd init=/linuxrc console=ttySAC0 root=/dev/nfs rw nfsroot=192.168.1.200:/opt/studyarm/rootfs ip=192.168.1.201:192.168.1.200:192.168.1.254:255.255.255.0”(具体参数值参考qt移植文档),注意,要启动,需要等到根文件系统做完。
setenv bootcmd “nand read 30008000 80000 500000;bootm 30008000”
三、 配置nfs服务器和tftp服务器:
nfs:
1.安装:yum install nfs*
2.配置:编辑/etc/exports,写入:/opt/studyarm/ 192.168.1.*(rw,sync,no_root_squash)
3.重启nfs服务:service nfs restart
tftp:
1.关闭SELinux:打开“系统”->管理->SELinux,应用模式:disable
2.安装xinetd-2.3.14-32.fc14.i686.rpm, tftp-server-0.49-6.fc14.i686.rpm(注意,必须先安装xinetd,再安装tftp-server,双击即可安装);
3.配置tftp:修改/etc/xinetd.d/tftp文件,
4.重启tftp服务:/etc/init.d/xinetd restart
验证安装成功:netstat -a | grep tftp
showmount -e 127.0.0.1
四、 内核编译与移植
1.解压内核源码:tar –vxf linux-2.6.32.2.tar.gz
2.进入内核源码目录,配置内核环境:make menuconfig(运行后,保存退出,将内核目录中config_mini2440_t35拷贝为.config
3.编译内核:make zImage
4.使用编译u-boot时产生的 mkimage工具(在u-boot路径下的tools文件夹下)制作u-boot专用的映像文件 uImage.
mkimage -n 'linux-2.6.32-arm2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage (''是单引号。)。并将uImage拷贝到/home/User/tftp/目录下。
5.将开发板nand flash启动,在u-boot命令行执行:
tftp 30008000 uImage;
6.烧写nand flash
nand erase 8000 size
nand write 30008000 80000 size
备注:TFTP下载内核映像时传输的数据总量会在完成时显示(down_size),而烧写 nand_flash时数据大小必须是2k对齐的,所以我们要对下载的数据大小做一点小小的改变以适应nand_flash,如果down_size百位>8,则size = down_size+1000 后把低3位清零;如果down_size百位<8,则size = down_size低3位清零+800。比如 down_size **a967,则size = **b000;down_size **a567,则size = **a800。
五、 根文件系统制作和移植:
1.根文件目录中,各个文件目录的作用:
目录 内容
bin 存放所有用户都可以使用的、基本的命令。
sbin 存放的是基本的系统命令,它们用于启动系统、修复系统等。
usr 里面存放的是共享、只读的程序和数据。
proc 这是个空目录,常作为proc文件系统的挂载点。
dev 该目录存放设备文件和其它特殊文件。
etc 存放系统配置文件,包括启动文件。
lib 存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。
boot 引导加载程序使用的静态文件
home 用户主目录,包括供服务账号锁使用的主目录,如FTP
mnt 用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。
opt 给主机额外安装软件所摆放的目录。
root root用户的主目录
tmp 存放临时文件,通常是空目录。
var 存放可变的数据。
2. 建立根文件系统目录 :创建/opt/studyarm目录,并进入
新建建立根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。
#!/bin/sh
echo "------Create rootfs directons start...--------"
mkdir rootfs
cd rootfs
echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home usr
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "-------make direction done---------"
3. 交叉编译Bosybox
Bosybox是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,它是个轻型的linux命令工具集,使用Busybox可以自动生成根文件系统所需的各种命令和linuxrc文件。
a) 解压busybox: tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm
b) 修改Makefile文件:
CROSS_COMPILE ?=arm-none-linux-gnueabi- //第164行
ARCH ?=arm //第189行
去掉421行前面的config
去掉1269行前面的/
c) 配置busybox:输入make menuconfig进行配置
(1)、Busybox Settings--->
Build Options--->
[*] Build BusyBox as a static binary(no shared libs)
[*] Build with Large File Support(for accessing files>2GB)
Installation Options->
[]Don’t use /usr
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing
(1024)Maximum length of input
[*] vi-style line editing commands
(15) History size
[*] History saving
[*] Tab completion
[*]Fancy shell prompts
(4) Copy buffer size ,in kilobytes
[*]Use ioctl names rather than hex values in error messages
[*]Support infiniband HW
Linux System Utilities --->
[*]Support /etc/mdev.conf
[*]Support command execution at device addition/removal
d) 编译busybox到指定目录:make CONFIG_PREFIX=/opt/studyarm/rootfs install
e) 建立etc目录下的配置文件
1、etc/mdev.conf文件,内容为空。
2、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。
3、etc/sysconfig目录下新建文件HOSTNAME,内容为”H3-Studio”。
4、etc/inittab文件:
#etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
5. etc/init.d/rcS文件:
#!/bin/sh
ifconfig eth0 192.168.1.201
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
echo "----------mount all----------------"
mount -a
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo "***********************************************"
echo "****************Studying ARM*********************"
echo "Kernel version:linux-2.6.32"
echo "Techer:Mr Wan”
echo "Date:2011.12"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
修改文件权限:chmod +x rcS
6. etc/fstab文件:
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
7. etc/profile文件:
#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\u@\h=W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
8.将交叉编译工具中目录为/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib下的库拷贝到lib下:cp /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib/* lib/ -d(其中lib为制作根文件系统中的lib)
9. 制作根文件系统映像文件(可选,如果需要烧写到nandflash中则操作,否则boot)
使用以下命令安装好yaffs文件系统制作工具:
tar –zxvf mkyaffs2image.tgz –C /
在/opt/studyarm目录下,使用命令mkyaffs2image-128M rootfs rootfs.img生成根文件系统映像文件。
tftp 30008000 rootfs.img
nand erase 580000 size1
nand write.yaffs 30008000 580000 size2
备注: size1 要做处理(处理方法和内核移植的移植)
size2 不做处理,mkyaffs2image-128m打包根文件系统使已经把文件大小针对nand_flash和yaffs文件系统做了变换,烧写时直接使用tftp下载后显示的文件大小
六、Tslib移植(Tslib是触摸屏校准库,qt要用到,否则点屏幕qt没反应。前提是将*/arm-none-linux-gnueabi/lib下的文件拷贝到rootfs/lib目录下).
1. 解压tslib-1.4.tar.gz:tar -zxvf tslib-1.4.tar.gz
2. 执行tslib-1.4目录下的autogen.sh:
./autogen.sh
3. echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache
4. ./configure --host=arm-linux --prefix=/opt/studyarm/rootfs/mytslib --cache-file=$ARCH-linux.cache
5.make
6.make install
7.配置mytslib下的etc目录中ts.conf文件
在终端上设置一下环境变量: 在/etc/profile 中加入
export TSLIB_ROOT=/mytslib
export TSLIB_TSDEVICE=/dev/event0
export LD_LIBRARY_PATH=/mytslib/lib:$LD_LIBRARY_PATH
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/mytslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/mytslib/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_SIZE=320x240
export QWS_MOUSE_PROTO="Tslib:/dev/event0 IntelliMouse:/dev/mice"
export QWS_DISPLAY="LinuxFB:/dev/fb0"
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export TSLIB_TSEVENTTYYPE=H3600
8.执行mytslib/bin目录中的ts_calibrate文件,对屏幕进行校准(程序运行时,需要根据屏幕上的提示,点击出现的点)。
七、Qt移植:
1.解压qt-everywhere-opensource-src-4.6.2.tar.gz源码包(方法同上)。
2.配置qt:./configure \
-prefix /opt/arm-qt4 \
-opensource -confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs -nomake demos \
-qt-mouse-pc \
-qt-mouse-tslib -I/opt/mytslib/include -L/opt/mytslib/lib
3.编译qt : gmake
4.安装qt: gmake install
5.在文件/etc/profile中添加export PATH=/opt/arm-qt4/bin:$PATH
然后source /etc/profile
6.将/opt/arm-qt4/lib中的所有链接库拷到*/rootfs/lib/目录下
7. 使用qmake编译qt程序
qmake *.pro(*为工程名)
make
8.将生成的可执行文件拷到*/rootfs/mnt/program/目录中,若没有此目录,则新建一个。
9.由minicom 启动到开发板根目录中,找到要执行的程序,执行
./文件名 -qws
展开阅读全文