配置tftp
配置tftp服务的步骤:
一、安装相关软件包:tftpd(服务端),tftp(客户端),xinetd
sudo apt-get install tftpd tftp xinetd 二、创建配置文件
在/etc/xinetd.d/下创建一个配置文件tftp
sudo vi tftp
在文件中输入如下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
保存退出 三、创建tftp服务文件目录(上传文件与下载文件的位置),而且更改其权限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R 四、从新启动服务
sudo /etc/init.d/xinetd restart
至此tftp
服务已经安装完成了,下面能够对其进行一下测试。(假设在当前目录下有一个测试文件
test.txt)
$tftp 127.0.0.1
tftp> put test.txt
Sent 1018 bytes in 0.0 seconds
tftp> get test.txt
Received 1018 bytes in 0.1 seconds
tftp> quit
$
经过put命令,能够把当前目录下的test.txt文件,经过tftp上传到它的服务文件目录。这时,在/tftpboot下面会出现test.txt文件。经过get命令,能够从/tftpboot下,下载test.txt文件。这样就验证了tftp服务配置的正确性。当文件上传与下载结束后,能够经过quit命令退出。
严格按照以上步骤配置tftp服务,通常均可以成功。若是出现没法get或者put的时候,能够查看一下防火墙是否关闭。
安装配置nfs服务器
在ubuntu下安装、配置nfs服务的步骤以下:
一、安装nfs
Ubuntu上默认是没有安装nfs服务器的,所以咱们首先安装nfs服务器端:
$sudo apt-get install nfs-kernel-server
在一些文档中,提出还须要使用apt-get来手动安装nfs的客户端nfs-common,以及端口映射器portmap,但其实这是没有必要的,由于在安装nfs-kernel-server时,apt会自动为咱们把它们安装好。
二、配置/etc/exports
nfs容许挂载的目录及权限在文件/etc/exports中进行了定义。例如,咱们要将根目录下的rootfs目录共享出来,那么咱们须要在/etc/exports文件末尾添加以下一行:/rootfs *(rw,sync,no_root_squash)
其中:/rootfs是要共享的目录,*表明容许全部的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是nfs客户端分享目录使用者的权限,若是客户端使用的是root用户,那么对于该共享目录而言,该客户端就具备root权限。
其它nfs经常使用的参数有:
ro 只读访问
rw 读写访问sync 全部数据在请求时写入共享
async nfs在写入数据前能够响应请求
secure nfs经过1024如下的安全TCP/IP端口发送
insecure nfs经过1024以上的端口发送
wdelay 若是多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 若是多个用户要写入nfs目录,则当即写入,当使用async时,无需此设置。
hide 在nfs共享目录中不共享其子目录
no_hide 共享nfs目录的子目录
subtree_check 若是共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的全部请求映射成如anonymous用户同样的权限(默认)
no_root_squas root用户具备根目录的彻底管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID
三、重启服务
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
四、测试nfs
此时能够运行如下命令来显示一下共享出来的目录:
$showmount -e
或者可使用如下命令把它挂载在本地磁盘上,例如将/rootfs挂载到/mnt下:
$ sudo mount -t nfs localhost:/rootfs /mnt
能够运行df命令查看是否挂载成功。查看后可使用如下命令卸载:
$ sudo umount /mnt QT4向s3c2410平台移植
1.开发平台:ubuntu 8.10,交叉编译器版本3.4.5(arm-linux-gcc),qt-embedded-linux-
opensource-src-4.4.3.tar.gz。
2.目标平台:s3c2410,320*240触摸屏 ,linux-2.6.26.5,u-boot-1.3.4
3.移植步骤以下:
(1)首先配置linux内核,支持LCD驱动,而后点亮你的屏,而且支持framebuffer,具体的内核配置以下:
Device Drivers ---> Graphics support ---> <*> Support for frame
buffer devices --->
<*> S3C2410 LCD
framebuffer support
固然里面还涉及一些细节。
(2)若是你想支持USB鼠标和USB键盘,只需配置内核既可:
Device Drivers ---> [*] HID Devices ---> <*> USB Human Interface
Device (full HID) support (3)编译内核进行测试。
(4)接下来在以上工做的基础上开始移植QT4。首先下载源码:
ftp://ftp.trolltech.no/qt/source/qt-embedded-linux-opensource-src-4.4.3.tar.gz,放在你普通用户的一个目录,好比/home/xxx/qt4_port,解压。
(5)进入解压好的目录。 (6)而后就是很关键的配置,QT4的移植是经过配置来是否支持某种特性,好比openssl等等。那么根据你本身的需求呢进行相应的配置就能够了,这里参考网站的一篇文章进行,具体以下:
./configure \
-prefix /home/yoyoili/qt4_port/qt/build \
//指定安装的目录,与开发板上运行的目录一致
-release -shared \
-fast \
-pch \
-no-qt3support \
-qt-sql-sqlite \
-no-libtiff -no-libmng \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-openssl \
-nomake examples -nomake demos -nomake tools\
-optimized-qmake \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm\
-no-xinerama -no-xshape \
-no-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-no-armfpa
这里没有去实现触摸屏的校准,若是支持触摸屏,再加一个: qt-mouse-tslib。
这个过程若是涉及不少问题,通常都是你的系统缺乏了某些库的问题,个人ubuntu 8.10
相应的库都安装的比较齐全,没有错误,若是你是fedroa,只须要彻底安装。(7)而后就是make && make install,编译和安装了,若是好的话,就会在你的安装目录,也就是 /home/xxx/qt4_port/qt/build 有相应的以下目录:bin include lib mkspecs plugins translations,你们能够看看里面的内容。这里咱们关心的是一个lib,就是库文件,之后交叉编译好的程序在板子上跑起来之后都须要这些库。把所须要的库 cp /home/xxx/qt4_port/qt/build/lib/libQt* /home/xxx/w/rootfs/home/qt/build/lib,
固然有的库你能够不须要拷贝的。注:这里/home/xxx/w/rootfs是目标机nfs挂载点 (8)而后拷贝显示中文的文泉驿字体,这里好比:cp /home/xxx/qt4_port/qt/build/lib/fonts/wenquanyi_160_75.qpf /home/xxx/w/rootfs/home/qt/build/fonts (前面的路径就是编译并安装之后的目录,这个字体就是这个目录的lib/fonts下面 ,固然后面就是咱们开发板根文件系统的目录) (9)测试,咱们用源码自带的程序来进行测试,好比在源码的example里有不少,只需qmake && make就能够了,而后把可执行文件拷贝开发板上用的根文件系统。 (10)设置相应的环境变量,这个环境变量是给开发板使用的,不是给你的PC
机!具体以下:
export QTDIR=/home/qt/build
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH //(不然找不到库)
export PATH=$QTDIR/bin:$PATH
export QT_QWS_FONTDIR=/home/qt/build/fonts // (不然字体没法显示)
固然若是你用触摸屏还有相关的设置,你也须要在这里添加! (11)运行咱们的程序:
./test -qws -fn /home/qt/build/fonts/wenquanyi_160_75.qpf
而后你的屏上就有了显示。 (12)而后你能够在开发板上插上你的USB鼠标就能够来操做这个小QT程序了。
(13)若是你想玩键盘:
设置你的console=tty0既能够操做你的开发板了,你就能够玩命令了,那么这个console
的参数的指定有两种方法,一个能够经过u-boot传递,这里好比:setenv bootargs root
=/dev/nfs nfsroot=192.168.1.110:/home/yoyoili/source/rootfs ip=192.168.1.120
init=/linuxrc console=tty0,
另外一个就是经过内核,你只需配置内核既能够:具体以下:
Boot options ---> (root=/dev/nfs nfsroot=192.168.1.2:/home/yoyoili/
source/rootfs ip=192.168.1.3 init=/linuxrc console=tty0)! (14)这里说一下可能出现的问题:
1.在编译你的QT程序的时候会有一个collect错误,应该是链接的qt4的库不是arm
交叉编译工具编译的,二者链接有冲突。在file.pro中去掉对qt4
库的链接便可,增长一行CONFIG -= qt,便可去掉。