制作根文件系统

1、首先下载BusyBox(我用的是busybox-1.20.0)

 #make menuconfig    //进入
    Busybox Settings  --->
        Build Options  --->
             (arm-linux-) Cross Compiler prefix //制定交叉编译器
 #make         //编译
  #make install CONFIG_PREFIX = /root/nfs/roofs      //安装到你制定的目录

2、再将交叉编译器目录里面的库文件拷贝到相应的lib目录(参照韦东山的毕业班第3课第2节视频教程)

3、新建etc目录

  3.1新建文件inittab文件内容:

#etc/inittab  
::sysinit:/etc/init.d/rcS    #进入init.d目录执行rsS文件中的命令
::askfirst:-/bin/sh     #打开命令行程序是我们可以使用命令
::ctrlaltdel:/sbin/reboot    #关机相关的命令
::shutdown:/bin/umount -a –r  

  3.2新建init.d目录在里面新建rcS文件内容:

#!/bin/sh  
PATH=/sbin:/bin:/usr/sbin:/usr/bin  
runlevel=S  
prevlevel=N  
umask 022  
  
export PATH runlevel prevlevel  

#mount -a 时会执行 etc/fstab文件中的挂载选项
mount -a 
#支持热插拔
echo /sbin/mdev>/proc/sys/kernel/hotplug  
mdev -s  
#设置用户名
/bin/hostname cxd

  3.3新建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 

  3.4新建mdev.conf文件内容为空,复制友善之臂文件系统中的group、passwd、profile文件

4、新建dev目录

//在dev目录下创建两个节点mknod console c 5 1 
# mknod null c 1 3

5、创建home、mnt、proc、root、sys、tmp目录

6、挂在根文件系统后在系统中执行

#mkdir -p /lib/modules/$(uname -r)

  现在的内核模块在插入卸载时都会要转到 “/lib/modules/内核版本号/ ” 这个目录里。所以只要建立这个目录

  否则使用rmmod卸载驱动模块时会出现 rmmod : chdir(/lib/modules): No such file or directory    但是有时会出现这种错误rmmod: chdir(2.6.38-cxd-g696d0ab-dirty): No such file or directory于是我又在/lib/modules下建立这个文件夹 2.6.38-cxd-g696d0ab-dirty 就可以了;

7、移植QtE,首先说明一下Qtopia和QtE的区别:

  网友彬ye介绍:

值得特别注意的是在版本4之前,Qt/E和Qtopia是不同的两套程序,Qt/E是基础类库,Qtopia是构建于Qt/E之上的一系列应用程序。但从版本4开始,Trolltech将Qt/E并入到了Qtopia产品线中去了,并推出了新的Qtopia4。但实际上原来的Qt/E仍然作为基础类库,只是改名为Qtopia Core了,也许又感觉Qtopia Core跟Qtopia容易让人搞混,所以又改名为qt-embedded-linux-opensource-linux/wince(QT也支持Wince )。它作为嵌入式版本的核心,既可以与Qtopia配合,也可以独立使用。而原来的Qtopia则被分成几层,核心的应用框架和插件系统被称为 Qtopia Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,Qtopia Phone。

Qte的改名过程,Qte-->Qtopia Core-->Qt-embedded-linux-xxxx --> qt-everywhere-opensource-src-xxxxx(目前是这样的,博主注

这几个其实差不多是一个东西,名称很容易搞混。

记住在QT4版本前要安装Qtopia需要先装Qt/E,但之后的就不需要了。4之后的Qtopia 已经带有QT/E库了。

所以总的来说,QT也就三种:面向桌面的x11、面向嵌入式的Qt/E、以及面向嵌入式带各种应用程序的Qtopia桌面系统!!!

  其实也不叫什么移植,只是拷贝友善文件系统中库文件而已;

  首先在/bin目录下新建一个qt脚本文件内容如下:

#!/bin/sh
# tell the program the qt lib's path
export QTDIR=/opt
export QTDIRLIB=/opt/Qt_lib
export LD_LIBRARY_PATH=$QTDIRLIB:$LD_LIBRARY_PATH
export PATH=$PATH:$QTDIR/bin
export QWS_KEYBOARD=TTY:/dev/tty1
export QWS_SIZE=800*480
export QT_QWS_FONTDIR=/opt/Qt_lib/fonts 

cd /opt
./hospital -qws

  然后再/opt目录下新建一个Qt_lib目录然后把qt测试程序考到/opt目录下,运行命令 #qt

  会出现错误说找不到共享库,你就在友善的文件系统里去一个一个的搜索相应的库文件拷贝到Qt_lib目录下就行,

注:这几天收获的有点多要好好记录下来,此文件系统还有很多需要完善,呵呵!

原文地址:https://www.cnblogs.com/cxd2014/p/4477612.html