2012-05-15
1.ARM开发板环境的搭建,nor启动,通过suppervivi,下载vivi---下载Kernel----下载文件系统,然后Nandflash启动即可。
2.在/etc/init.d/rcS 中注释开机启动qtopid, #/bin/qtopid;需要启动的就是用命令 #/bin/qtopid &
如果此命令不行,就进入bin目录中执行 #./qtopid & //&符号是表示后台运行2012-05-16
1.git clone /e/git/.git ./test #将E盘下的git目录下的内容 克隆到当前目录下的test目录中
2.从主机拷贝文件到虚拟机上--ftp, samba, ISO, USB, Vwmare tools share. ssh.
3.虚拟机下Linux与主机共享上网,使用NAT方式,在主机下中的服务中开启DHCP,虚拟机软件设置为 NAT方式,在Linux下设置为DHCP,然后使用 #/etc/init.d/network restart 即可
如果要使用ftp传输文件,NAT方式需要开启虚拟网卡2012-05-17
1.嵌入式qt开发环境的搭建
开发环境 Ubuntu8.04, VmWare Workstation, arm-linux-gcc4.4.3 软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz ----114MB
qt-x11-opensource-src-4.5.1.tar.gz----------------111MB
tslib-1.4.tar.gz----------------------------------64KB (qt-x11用于在Linux系统下开发Qt程序用的,开发出的程序只能在PC机上运行,包含了designer,qvfb等工具)
(qt-embedded用来进行嵌入式LinuxQt应用程序开发的,开发出来的程序最终目的是要在开发板上运行)
(qt-embedded也可以利用qvfb这个工具在PC机上模拟运行,此压缩文件解压成两个文件夹-)
(-----------分别作为开发板Qt环境以及PC机上QT的模拟环境)
(其实编译qt-x11的主要目的是为了得到qvfb这个工具)
(tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能
(---通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在Qtopia 4.*版本中
(---默认的Tslib版本为Tslib 1.4。在Qtopia 2.*版本中,默认的Tslib版本为Tslib 1.3)***安装arm-linux-gcc编译器
#mkdir /usr/local/arm/;mkdir /usr/localhost/arm/toolschain
#tar xzvf arm-linux-gcc-4.4.3.tar.gz -C /usr/localhost/arm/toolschain
此时在/usr/local/arm/toolschain/中有4.4.3目录中有个bin目录
增添环境变量
1.#export PATH=$PATH:/usr/local/arm/toolschain/4.4.3/bin/ ---零时添加,关闭该窗口后失效
2.#vim /root/.bashrc
//在最后一行 export PATH=$PATH:/usr/local/arm/toolschain/4.3.2/bin
#vim /home/dongliang/.bashrc
//在最后一行 export PATH=$PATH:/usr/local/arm/toolschain/4.3.2/bin
重启即生效
#arm-linux-gcc -v 可以看到版本信息 ***编译tslib(这是个触摸屏的库文件)
(据网上说qt4只支持tslib-1.4。我没有实验别的,就用了这个,可以成功)
把tslib-1.4.tar.gz放到/home目录下
首先应安装automake,autoconf,libtool
#sudo apt-get install automake autoconf libtool #tar xvzf tslib-1.4.tar.gz
#cd tslib
#./autogen.sh
#./configure --prefix=/home/qte/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
#make
#make install
可以看到/home/mytslib/下有了库文件,移植时会用到!***编译安装qt-x11(编译后大小:2.1GB+0.71GB; 编译所用的时间:3h15min+6min)
# tar -zxvf qt-x11-opensource-src-4.5.1.tar.gz
# cd qt-x11-opensource-src-4.5.1
# ./configure
# make
# make install
qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.1 编译qvfb:
# cd qt-x11-opensource-src-4.5.1/tools/qvfb
# make
把生成的qvfb复制到/home/dongliang/tmp/目录下暂存;等安装好,在拷贝到qt-embedded的bin下,如
# cp /home/dongliang/tmp/qvfb /usr/local/Trolltech/QtEmbedded-4.5.1/bin
至此,qt-x11安装完毕完毕
(由于安装完后,编译源码的目录没有用处,所以删除#rm -rf */qt-x11* ;可以让出2G多的空间) ***编译配置QtEmbedded-4.5.2(x86版本, 耗时:10min+2h40min;占据磁盘空间:800MB+1.7GB)
(之所以要编译x86版本的Qt,是要在PC机下模拟运行为开发板开发出来的程序) #tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
#cd qt-embedded-linux-opensource-src-4.5.2-x86
#./configure -prefix=/usr/local/Trolltech/QtE-x86 -embedded x86 -qvfb
#make
#make install
(安装到/usr/local/Trolltech/QtE-x86目录下) 建立脚本文件:setenv_x86.sh,输入以下内容:
export QTEDIR=/usr/local/Trolltech/QtE-x86/
export PATH=/usr/local/Trolltech/QtE-x86/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtE-x86/lib/:$LD_LIBRARY_PATH
编译x86版QT应用程序前,先执行此脚本文件:
#source setenv_x86.sh
编译(或编译后拷贝)qvfb
#cp qt-x11-opensource-src-4.5.1/tools/qvfb /usr/local/Trolltech/QtE-x86/bin
(或我已将qvfb拷贝到/usr/local/Trolltech/Qt-4.5.1/bin目录下,从这个目录下拷贝也可以) 编译应用程序clock
#qmake -project
#qmake
#make 测试
#cd */books
#qvfb -width 640 -height -480 &
#./books -qws
(注意:如果在终端上source setenv.sh,后该终端窗口上即可关联相应的环境变量,不要跳到其他窗口中)
(开启qvfb,不能切换到其他用户,也就是运行qvfb和books应用程序必须是同一个用户,不然出错)
(常见错误:)
ERROR1: Qt for Embedded Linux data directory is not owned by user 1000
Aborted
Connected to VFB server :0: 240 x 320 x 32 85x113mm (72x72dpi)
--------运行qvfb和应用程序books,不是同一个用户,必须是同一用户才可以 ERROR2: QWSSocket::connectToLocalFile could not connect:: Connection refused
No Qt for Embedded Linux server appears to be running.
If you want to run this program as a server,
add the "-qws" command-line option.
--------运行books应用程序,要加参数-qws ERROR3: QWSSocket::connectToLocalFile could not connect:: No such file or directory
-------- ERROR4: $./qvfb *
QShMemViewProtocol::QShMemViewProtocol: Invalid argument
Cannot get shared memory 0x62050010
--------运行qvfb,所加的参数有错误 或自己动手编写,测试运行 helloQt.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc,argv); QLabel label("Hello World !");
label.show(); return app.exec();
}
然后重新打开终端窗口,依次输入如下命令:
$ source /usr/local/Trolltech/Qt-x86/setenv.sh
$ qmake –project
$ qmake
$ make
$ ./helloQt (可以不运行在帧缓存中) ***编译配置QtEmbedded-4.5.2(arm版本)
#tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
#cd qt-embedded-linux-opensource-src-4.5.2-arm
#./configure -prefix=/usr/local/Trolltech/QtE-arm
-embedded arm
-release -shared -fast
-no-largefile
-qt-sql-sqlite
-no-qt3support
-no-xmlpatterns
-no-mmx
-no-3dnow
-no-sse
-no-sse2
-no-svg
-no-webkit
-qt-zlib
-qt-gif
-qt-libtiff
-qt-libpng
-qt-libmng
-qt-libjpeg
-make libs
-nomake tools
-nomake examples
-nomake docs
-nomake demo
-no-nis
-no-cups
-no-iconv
-no-dbus
-no-openssl
-xplatform qws/linux-arm-g++
-little-endian
-qt-freetype
-depths 16,18
-qt-gfx-linuxfb
-no-gfx-transformed
-no-gfx-multiscreen
-no-gfx-vnc
-no-gfx-qvfb
-qt-kbd-usb
-no-glib
-qt-mouse-tslib
-I/usr/local/tslib/include
-L/usr/local/tslib/lib
(如果以上配置项,configure后出错,使用./configure --help查看选择项,对照有无,删除)
#make
#make install
(安装到/usr/local/Trolltech/QtE-arm目录下) 打包编译安装好的QtEmbedded库文件:
tar czvf QtEmbedded-4.5.2-arm.tar.gz QtE-arm
/usr/local/Trolltechsz QtEmbedded-4.5.2.tgz
建立脚本文件:setenv_arm.sh,输入以下内容:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$LD_LIBARY_PATH 如果要在arm 环境下执行helloQT(先在Linux中,利用QtE-x86工具测试,QtE-arm工具编译目标程序)
~$ cd /home/dongliang/QtE/arm/
~$ source /usr/local/Trolltech/QtE-arm/setenv.sh
~$ qmake –project
~$ qmake
~$ make 在Linux下开启nfs服务,将/home/dongliang/QtE/arm/设为共享目录
在开发板上,执行挂载nfs命令,
拷贝挂载的目录下的可执行程序文件到其他目录(eg:/home/)下,运行如下命令:
~$ ./home/helloQT -qws
常见错误:
ERROR1:./qt_clock: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory ./qt_clock: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: Error 40
------这是主要是ARM 上的运行环境设置不当, 由于缺共享库文件所造成的
使用软连接方式,一般在缺少的库文件一般在/usr/local/lib/, /usr/local/Trolltech/lib目录下
使用软连接命令 # ln -s src des
缺少什么库文件就找到那个库文件,然后软连接到/lib/目录下 ***在ARM板上运行DEMO
在ARM板上,建立配置脚本
# mkdir /usr/local/QtE-arm/
# cd /usr/local/QtE-arm/
# vi setenv-arm.sh
添加如下内容:
export QTDIR=/usr/local/QtE-arm
export QPEDIR=/usr/local/QtEarm
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
/usr/local/QtE-arm/analogclock -qws &
保存退出,并执行。
#mkdir lib/
#mkdir lib/fonts/
把以下的库文件从编译生成的QtEmbedded-4.5.2.tgz文件包的/lib复制
到目标板的/usr/local/QtE-arm/lib
libQtCore.so.4
libQtGui.so.4
libQtNetwork.so.4
libQtSql.so.4
把例子程序analogclock从编译生成的QtEmbedded-4.5.2.tgz文件包的/examples/widgets/analogclock复制到 目标板的/usr/local/QtEmbedded-4.5.2/
常用字库文件从从编译生成的QtEmbedded-4.5.2.tgz文件包的lib/fonts/复制到目标板 的/usr/local/QtEmbedded-4.5.2/lib/fonts/ 运行例子
[root@FriendlyARM QtEmbedded-4.5.2]# ./analogclock -qws
在arm开发板上,添加开机自动启动。
[root@FriendlyARM /]# vi /etc/init.d/rcS
在文件中加入:
/usr/local/QtEmbedded-4.5.2/setenv-arm.sh
#/bin/qtopia & ***tslib配置并加入到根文件系统
vi /usr/local/tslib/etc/ts.conf
//修改tslib/etc目录下的ts.conf文件,将module_raw input前面的注释去掉。
最后内容如下:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear 然后打包整个tslib的内容,下载到开发板里的对应路径下(/usr/local下)。
在开发板上 编辑/etc/profile文件中加入运行tslib的环境变量
vi /etc/profile
添加如下内容:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib 修改触摸屏库的配置文件etc/ts.conf,去掉module_raw input前的#号,开启该项功能,初始化触摸屏,
主要是生成定位文件,运行tslib/bin/ts_calibrate ,然后在屏上点五下,实现定位. 这样就设置好了. 检查ts/etc/ts.conf 内容:
module_raw input #把第二行前面的“# ”去掉
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
(注意去掉“#”号时,前面的空格一定要去掉,否则后面会出段错误) 测试
以上都配置好后,在终端下,运行ts_calibrate进入触摸屏的五点校准. 至此,tslib的安装移植成功完成。
2.Ubuntu常用命令
#sudo su //切换到root用户
#df -h
#fdisk -
#du -sh ./
#du -sh ./*
#ls | wc -l3.删除虚拟机磁盘中的文件,虚拟磁盘的大小仍然不会缩小,使用vmware-vdiskmanager工具缩小磁盘
1.c:\> vmware-vdiskmanager -r "F:\Ubuntu8.04\Ubuntu8.04.vmdk" -t 0 "G:\Ubuntu8.04.vmdk"
(此方法为克隆,可以有效缩小虚拟磁盘的大小,基本达到你用了多少占用多少的效果) 2.另外创建一个新的虚拟磁盘,在虚拟机下,使用该盘存放文件,过大后在xp下删除该文件
启动虚拟机,选择"Edit virtual machinesettings",点按钮"adding",按照向导默认添加一块磁盘,一般都 是SCSI设备。 指定硬盘容量,然后重启进入系统fdisk -l 会看到有一块新的设置,如果你先前有一块硬盘 (sda1,sda2...),新加的这块应该是(/dev/sdb)。看到就说明系统已经识别出这块硬盘了,接下来我们给这块硬 盘分区,格式化fdisk /dev/sdb (当然如果你添加的IDE设置,会是 hdx) x代表数字,1到4指主分区编号,5以上 指逻辑分区 分区格式化 在终端输入:fdisk -l ,可以看到
Disk /dev/sdb: 5368 MB, 5368709120 bytes2
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partitiontable
这里可以看到/dev/sdb 就是我们新添加的硬盘,我们需要给新的硬盘分区
在终端输入:fdisk /dev/sdb //fdisk 对sdb硬盘分区
之后键入:m,可以看到帮助信息
键入:n,添加新分区
键入:p,选择添加主分区
键入:l,选择主分区编号为1,这样创建后的主分区为sdb1 之后,fdisk会让你选择该分区的开始值和结束值,直接回车
最后键入:w,保存所有并退出,完成新硬盘的分区
格式化磁盘
在终端输入:mkfs -t ext3 /dev/sdb1
用ext3格式对/dev/sdb1 进行格式化 挂载该分区:
手动挂载,在终端输入:mkdir /data ,创建新的硬盘的挂载点
在终端键入:mount /dev/sdb1 /data ,将该新分区挂载到/data/这个目录下 开机自动挂载
修改/etc/fstab文件,添加如下行:
/dev/sdb1 /data ext3 defaults, 0 1 3.在xp主机上虚拟一个磁盘,使用Vmware Workstation挂载该盘即可使用。
2012-05-19
1.在虚拟机下挂载U盘
如果在虚拟机软件的菜单栏(VM->deviecs)中没有"USB **",则需要在xp服务中"VMware USB Arbitration Service"开启该服务,这样前面的就有了USB选项,选择连接,即可将xp下的U盘挂载到虚拟机下的Linux下.
(如果开启服务后还没有USB选项,可以挂起Vmware,后在开启即可)
#fdisk -lh //所挂硬盘个数及分区 #df -lh 目前磁盘空间和使用情况
#mkdir /mnt/usb
#mount {-t vfat,ntfs} /dev/sd* /mnt/usb
#ls | /mnt/usb
#umount /mnt/usb2012-05-21
1.在虚拟机下上传文件到windows主机,在主机上开启ftp服务器,在虚拟机下终端
$ftp IP
$put /home/dongliang/test test.txt2.运行第一个qt---hellworld程序,在ARM开发板上
3.Linux中修改环境变量
设置到环境变量:sudo vim /etc/environment
(在其中按照格式添加(arm-linux-gcc 路径):(:/usr/local/arm/3.4.1/bin )
即:PATH="/bin:/sbin/:*****:/usr/local/arm/3.4.1/bin"
保存后source /etc/environment (使刚才的环境变量生效)
在终端 $arm-linux-gcc -version 或只输入arm-,然后按table键,即可显示所有以arm-开头的命令 2012-05-22
1.嵌入式图形设计流程
在QtCreator上编写qt程序和测试--->然后在Linux下使用QtE-x86测试(使用帧缓存)--->在Linux中使用 QtE-arm编译--->在Linux下搭建nfs服务器,在开发板上挂载nfs共享目录,拷贝共享目录中qt应用程序, 到开发板上并执行 2012-05-23
1.修复Ubuntu
光碟启动Ubuntu,在终端下
grub> help 查看grub帮助
grub> find /boot/grub/stage1 使用该命令会显示:(hd0,0)
grub> root (hd0,0)
grub> setup (hd0)
grub> quit 退出grub #reboot 重启Ubuntu系统
2.加快Ubuntu软件下载速度
在网上搜索 eg:“Ubuntu8.04的更新源”
复制内容暂存,在Linux终端下
#vim /etc/apt/sources.list 删除所有的内容,然后添加暂存的内容
#apt-get update 更新软件列表3.查看文件编码
(Windows中默认的文件格式是GBK(gb2312),而LINUX一般都是UTF-8) vim直接查看文件编码
:set fileencoding
即可显示文件编码格式。 将gb2312编码格式转化为utf-8
将文件用vim打开,命令模式下 :set fileencoding=utf-8
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936 这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试。
2012-05-24
1.在Linux中添加环境变量
--临时生效方式
$export PATH=$PATH:/*/*
--永久生效方式2012-05-25
1.搭建nfs服务,使得开发板与虚拟机下Linux共享
(在Ubuntu8.04下)
#sudo apt-get install nfs-kernel-server
#vim /etc/exports
在最末位添加一行: /nfs/share 192.168.16.*(rw,sync,no_root_squash)
/nfs/share---要共享的目录
192.168.16.*---允许访问的网段,也可以是ip地址、主机名(能够被服务器解析)、* (所有人都能访问)
rw:读/写权限
sync:数据同步写入内存和硬盘
no_root_squash:服务器允许远程系统以root特权存取该目录 其他选项可以通过man exports查阅man文档
重启portmapper(端口映射)服务
#/etc/init.d/portmap restart
重启NFS服务
#/etc/init.d/nfs-kernel-server
#mount -t nfs -o nolock 129.168.16.128:/nfs/share/ /mnt/ (本机IP为192.168.16.128) 出现如下错误:
mount.nfs:access denied by server when mounting(null)
解决办法:
将/etc/exports文件中客户端的IP指定完整即可,即
/nfs/share 192.168.16.128(rw,sync,no_root_squash)
(以上是在本地测试) (网上大多修改/etc/hosts.deny和hosts.allow,对此操作没有帮助)
(如果需要本机下测试,先修改exports文件中IP为本机的IP,在mount挂载时必须使用服务器的IP,即本机 的IP,必须指定清楚,不可使用localhost或127.0.0.1) 在开发板上使用#mount -t nfs -o nolock 192.168.1.128 (在export文件中已经指定了IP为开发板的IP)
挂载nfs文件系统失败的原因
(1)主机和网络不通:看看网线连接.主机和开发板ip是否在同一网段.XP和Linux防火墙有没有关闭等。
(2)使用的mount命令不正确。
(3)nfs配置文件/etc/exports配置不正确。
(4)必要时重新启动NFS和portmap服务。2.Ubuntu下解压出错
#tar -zxvf xxxxx.tar.gz
出现下面的错误提示:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors 我出现这个错误时,就是把指令改为:
tar -xvf xxxx.tar.gz
然后指令就运行了。。
若此法不管用,只能再想别的方法了
3.ubuntu与主机共享上网
虚拟机使用NAT,XP开启DHCP,Vmware DHCP,Vmware NAT服务
Linux下网络使用DHCP, 然后#/etc/init.d/networking restart
如果出现:
DHCPOFFER of IP1 from IP2
DHCPREQUEST of IP1 on the eth0 to IP2 port 67
DHCPPACK of IP1 from IP2
bound to IP1 --renewal in 702 seconds
说明共享成功 如果出现:
NO DHCPOFFER received.
NO working leases in persistent database - sleeping
说明共享失败 测试是否可以访问网络
#ping sina.com.cn (如果挂起虚拟机下Linux,开启时不能上网,按上述操作即可解决)
4.在Ubuntu下编译内核出现错误
#make menuconfig
HOSTCC scripts/kconfig/kxgettext.o
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2
错误原因:gcc 库的支持不全
解决办法: sudo apt-get install libncurses5-dev 或者:sudo apt-get install ncurses-dev5.VM虚拟机Ubuntu8.04配置tftp服务
(tftp服务经常在u-boot上下载内核或文件系统使用) 安装相关软件包
apt-get install tftpd (服务端)
apt-get install tftp (客户端)
apt-get install xinetd 建立配置文件
cd /etc/xinetd.d/
(如果没有tftp文件,就新建一个tftp)
vi tftp
加入以下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /test_disk/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
} 存盘退出
建立tftp服务文件目录
mkdir /test_disk/tftpboot (chmod 777 /test_disk/tftpboot/)
重新启动服务
/etc/init.d/xinetd restart 安装完成!测试方法:
在/test_disk/tftpboot 以外的目录下随便放个文件hello
然后 到其他的目录下运行#tftp ip 进入tftp命令行
tftp> get hello
看看是不是能把文件下下来,如果可以就可以了,也可以put 文件上去 注意:
1.只安装了TFTP服务器是不支持tftp命令的,但是作为服务器已经可以用了.
2.如果输入tftp 192.168.1.108 会出现命令找不到的现象,还有必须把防火墙关了还有selinux关闭,
重新启动网络,使配置生效.
3.tftpboot文件夹权限改成777.在windows上输入 tftp 192.168.1.108 put d:\1.txt 就可以了 .
4.如果出现timeout。则是Linux tftp服务器没有配置好.
5.如果出现permission deny 则是防火墙或selinux没有关.
6.如果你还连着无线网,请禁用。否则tftp与开发板进行不了文件传输。 (ftp是tcp协议,而tftp是udp协议)
2012-05-26
1.在Ubuntu8.04中搭建Samba服务器
安装samba
#apt-get install samba //服务器
#apt-get install smbfs //文件系统
#apt-get install smbclient //客户端 添加samba用户和密码
(说明:登陆samba的用户必须已经是linux中的用户)
#smbpasswd -a user //添加并给user设置samba密码 Samba服务器配置(smb.conf)
#cp /etc/samba/smb.conf /etc/samba/smb.conf.back
#vim /etc/samba/smb.conf //建立和配置smb.conf文件
(samba快捷配置方式,不需要用户登录)
在/etc/samba/smb.conf文件修改如下:
security = share [share]
comment = share home
browseable = yes
path = /share //#chmod 777 /share
writeable = yes
public = yes //是yes/否no公开共享,若为否则进行身份验证
//(只有当security = share 时此项才起作用) 重启samba服务
#/etc/init.d/samba restart //修改了配置需要重启Samba服务器 测试Samba服务器
1.Ubuntu中测试Samba
$smbclient //localhost/share 2.windows下测试Samba
1.双击"网上邻居" -> "搜索" -> 输入虚拟机下的IP
2.在运行中,输入 "\\" + "Ubuntu机器的ip或主机名"
(最好使用第一种方法) NAT模式,开启Samba
必须开启NAT的虚拟网卡,一般为虚拟网卡8
(确保Linux和windows可以ping通)
(linux和windows下firewall关闭,DHCP,Vmware DHCP,Vmware NAT服务必须开启) Brige模式,开启Samba
设置虚拟机下Linux的IP与主机的IP在同一个网段内
(确保Linux和windows可以ping通)
(linux和windows下firewall关闭,即可,无须开启网卡) Samba出现的问题
1.可以看到共享的目录,但是不能进入
使用samba快捷配置方式,不需要用户登录 2.拷贝共享的文件到windows下出现乱码
找到[global]在后面的行中添加
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936 (后面的三行是为了防止出现中文目录乱码的情况)
(其中根据你的local,UTF-8 有可能需要改成 cp936) (如果想在Linux系统启动的时候让samba服务自动启动:# chkconfig smb on)
2012-05-27
1.Ubuntu8.04下搭建ftp服务器 安装ftp服务器软件
#apt-get install vsftpd 接下来需要进行简单的配置,编辑它的配置文件/etc/vsftpd.conf:
#vim /etc/vsftpd.conf 这个配置文件里面很多内容都可以保持默认
(以下是我的vsftpd.conf的内容,基本上采用的是vsftpd的默认配置,仅做参考) listen=YES #开启侦听
anonymous_enable=NO #不允许匿名用户登录
local_enable=YES #允许本地用户登录
write_enable=YES #允许本地用户写入
local_umask=022 #指定本地用户上传文件的权限
dirmessage_enable=YES #进入每个目录是显示欢迎信息
download_enable=YES #允许用户下载
xferlog_enable=YES #上传/下载文件时记录日志
port_enable=YES #允许主动模式登录
connect_from_port_20=YES #允许服务器主动模式(从20端口建立数据连接)
local_root=/ftp/pub #指定本地目录
xferlog_file=/var/log/vsftpd.log #日志文件
chroot_local_user=YES #限制所有的本地用户在自家目录
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem #/etc/init.d/vsftpd restart
(然后如果要创建新的FTP用户,只需要使用Linux本身的adduser即可) 测试
1.在虚拟机Linux上,本地访问
$ftp localhost{IP,127.0.0.1} 2.XP下DOS ftp命令访问
cmd> ftp IP 3.XP下CuteFTP访问
4.XP下浏览器,访问
ftp一些常用的命令
1.连接远程服务器
$ftp remoteIP
(cmd> ftp remoteIP) 2.显示远程服务器,目录中文件
ftp> ls (dir) 3.上传文件
(ftp> bin)
ftp> put localfile remotefile 4.下载文件
(ftp> bin)
ftp> get remotefile localfile 5.退出
ftp> quit
2012-05-28
1.NFS起文件系统的制作
(根文件系统是由一系列目录组成的,其中目录包含了应用程序,C库,以及相关的配置文件)
1.创建文件系统的目录
#mkdir /test_disk/rootfs/
#cd /test_disk/rootfs
#mkdir bin dev etc lib sbin proc sys var mnt tmp usr
#mkdir usr/bin usr/lib usr/sbin lib/modules 2.创建设备节点
#cd dev/
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3 3.安装(或创建)设备文件(inittab, profile,rcS,)
(#tar -xzvf etc/tar.gz -C /test_disk/fs/rootfs/) 4.编译内核模块
#cd */linux-kernel/
#make modules ARCH=arm CROSS_COMPILE=arm-linux- 5.安装内核模块
#make modules_install ARCH=arm INSTALL_MOD_PATH=/test_disk/rootfs/
#cd /test_disk/rootfs/lib/modules/
#ls 6.配置busybox
#tar xzvf busybox.tar.gz
#cd busybox
#make menuconfig ARCH=arm CROSS_COMPILE=arm-linux- 必须选中和修改的项:
1."Build Busybox as a static binary(no share libs)"
2."Don't use /usr"
3."cross compiler prefix"--------->arm-linux-
4."Busybox Installation prefix"--->/test_disk/rootfs/
(1选择的是静态连接库的方式,如果不选就是使用动态连接库的方式)
(采用动态连接库的方式,在lib目录中添加应用程序所需的库文件)
(Archival Utilities-->gzip这个选项一定不能掉)
其他的命令配置选项可自行裁剪 7.编译安装busybox
#make ARCH=arm CROSS_COMPILE=arm-linux-
#make install
(第一个命令:在当前的目录下有个busybox的应用程序)
(第二个命令:安装配置的应用程序到/test_disk/rootfs/bin 和 /sbin)
(其实在/test_disk/rootfs/bin下所有的应用程序,都是软连接到busybox)
(busybox根据参数的不同,执行不同的命令)
(检查是否安装好了--在bin目录下是否有busybox, sbin目录下是否有init) 8.配置内核支持NFS启动,并编译
进入到内核所在的目录下
#vim .config
?CMDLINE
找到CONFIG_COMPILE哪行,修改为:
CONFIG_COMPILE="root=/dev/nfs nfsroot=192.168.1.16:/test_disk/tftpboot/
ip=192.168.1.230 rw console=ttySAC0 mem=64M" root=/dev/nfs 内核采用nfs起根文件系统
nfsroot=192.168.1.16:/test_disk/tftpboot/
(nfs起根文件系统位于nfs服务器/test_disk/tftpboot目录,服务器IP:192.168.1.16)
ip=192.168.1.230 开发板IP,要求与服务起在网段(Bridged)
rw 文件系统可读可写
console=ttySAC0 以ttySAC0作为控制台
mem=64M 开发板的内存大小64MB
(以上其实可以在make menuconfig中修改,但是很麻烦) #make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-
必须选中和修改的选项:
"File systems"->"Network File systems"->
<*>NFS client support
[*]NFS client support NFS version 3
[*]Root file system on NFS
#make uImage ARCH=arm CROSS_COMPILE=arm-linux-
(在arch/arm/boot/目录下会生成uImage文件)
#cp */arch/arm/boot/uImage /test_disk/tftpboot/ 9.在主机上,启动NFS服务
参见搭建nfs服务
(启动:#/etc/init.d/nfs-kernel-server restart)
(修改配置文件:/etc/exports文件) 10.测试NFS文件系统
启动开发板,进入Uboot
uboot> printenv
uboot> setenv serverip 192.168.1.16
uboot> setenv ipaddr 192.168.1.230
uboot> setenv ethaddr 00:01:02:03:04:05
uboot> saveenv
uboot> ping 192.168.1.16
(如果打印"host 192.168.1.16 is alive" 表示网络可用)
uboot> tftp 31000000 uImage (#/etc/init.d/xinet restart)
(tftp命令将服务器目录中uImage读入到开发板地址为31000000处)
uboot> bootm 31000000
出现一下情况:
eth0: link down
IP-Config: Complete:
device=eth0, addr=192.168.0.2, mask=255.255.255.0, gw=255.255.255.255,
host=192.168.0.2, domain=, nis-domain=(none),
bootserver=192.168.0.1, rootserver=192.168.0.1, rootpath= Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
(文件系统挂载失败,导致无法启动系统)
(由上面的IP-config信息可以看出nfs服务器IP和开发板自身的IP) 如果在Uboot命令行下使用命令使用setenv serverIP{ip}修改都无法改变以上参数中的值
那么使用如下命令:
uboot> setenv bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.1.16:/test_disk/fs/rootfs ip=192.168.1.230:192.168.1.16::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M 确定/etc/exports .config中CMDLINE= bootargs三者共享的目录是一样的
2012-05-29
1.ramdisk起文件系统的制作
1.清楚内核中间文件,配置文件
#cd */linux-kernel/
#make distclean
#cp ./config-mini2440 .config 2.配置文件
#vim .config
?CMD
修改CONFIG_CMDLINE="initrd=0x32000000,0x200000 root=/dev/ram rw console=ttySAC0"
"mem=64M"
root=/dev/ram------->内核采用ramdisk方式起作为根文件系统
initrd=0x32..,0x2.-->内核从0x32..读取文件系统,大小是2M
rw------------------>文件系统可读可写
console=ttySAC0----->以ttySAC0作为控制台
mem=64M------------->内存大小为64MB 3.配置内核
#make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-
"General setup"-->
[*]Initial RAM filesystem and RAM disk
"Device Drivers"-->"Block devices"-->
<*> RAM block device support 4.编译内核
#make uImage ARCH=arm CROSS_COMPILE=arm-linux-
(编译完后生成的内核镜像uImage位于arch/arm/boot目录下) 5.拷贝生成的内核文件uImage文件到tftp目录中
#cp ./arch/arm/boot/uImage /test_disk/tftpboot/uImage-ram
#ls /test_disk/tftpboot/ 6.制作ramdisk文件系统
#cd /test_disk/fs/rootfs/
#rm ./lib/modules/*-FriendlyARM/* -rf (这些模块暂时不会用到,所以删除)
#cd /test_disk/fs/
#../tools/genext2fs -b 8192 -d ./rootfs ./ramdiskfs
#gzip -9 -f ramdiskfs //在当前目录下生成ramdiskfs.gz文件 7.将制作的ramdisk.gz拷贝到tftp目录中
#cp ./ramdiskfs.gz /test_disk/tftpboot/
#ls /test_disk/tftpboot/ 8.在U-Boot中通过tftp下载内核
uboot> ping 192.168.1.16
uboot> tftp 31000000 uImage-ram 9.在U-boot中通过tftp下载文件系统ramdisk.gz
uboot> tftp 32000000 ramdiskfs.gz
(由于在内核配置中已经设置了文件系统在0x32000000地址) 10.启动内核
uboot> bootm 31000000 常见错误:
1.No filesystem could mount root, tried: ext2 yaffs yaffs2 vfat
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) 2.RAMDISK: incomplete write (-28 != 32768) 4194304
VFS: Mounted root (ext2 filesystem).
attempt to access beyond end of device
ram0: rw=0, want=11240, limit=8192 常见解决办法:
1.查看内核是否选用"EABI选项"(arm-linux-gcc默认打开的,而在编译内核时,这个选项应该打开) 2.检查你的内核是否有支持RAMDISK和ext2文件系统
3.查看Uboot传递给内核传递的参数是否正确(bootcmd和bootargs)
uboot> setenv bootargs initrd=0x31000000,0x200000 root=/dev/ram rw init=/linuxrc console=ttySAC0 mem=64M
uboot> saveenv (保存u-boot环境变量) 4.ramdisk的blocksize等参数和kernel不一致
5.在内存中内核过大是否覆盖文件系统
不用裁剪内核,最好的办法是先下载文件系统,然后下载内核(即下载文件系统到0x31000000,然后下载 内核到0x3200000,然后修改Uboot中bootargs参数)2012-09-07
1.启动内核错误
RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
正确启动时的信息应该是:
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 6144K
Freeing init memory: 72K 修改内核配置中的:
Device Drivers->Block Device->RAM disk size 将该值修改为40960。
arm架构下载python包 arm怎么运行python
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
debian 12 arm架构安装k8s集群
arm架构安装k8s集群 Debian系统
Debian12 k8s arm -
centos操作系统ARM架构镜像
CentOS(Community EnterpriseOperating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于
centos操作系统ARM架构镜像 centos 一键安装ftp 配置 centos CentOS 配置文件