title: Linux 嵌入式使用 tags: 新建,模板,小书匠 grammar_cjkRuby: true
Copyright (C) @2018 Widic
Filename:
File-function:
Cre_ID: @ Widic 2018-1-23
Mod_ID:
insmod led.ko //安装模块
rmmod led.ko //卸载模块
CTRL + C 9. 显示接口 10. 环境变量设置
setenv
saveenv
11.运行Matrix 用户界面程序 12. matrix gui
/etc/init.d/matrix-gui-2.0 stop //Matrix Qt 用户界面程序启动
/etc/init.d/matrix-gui-2.0 start //
// 如果希望上电不要自动运行Matrix用户界面程序
mv /etc/rc5.5.d/s97matrix-gui-2.0 /etc/rc5.d/k97matrix-gui-2.0
etc/rc5.d"目录下所有以 S 开头的脚本都会上电自动运行,改名为 K 开头后就不会上
电自动运行了。可在启动后执行前面的命令手动启动或关闭 Matrix 用户界面程序
time 有计时作用, dd 用于复制,从 if (input file)读出,写到 of (output file)。if=/dev/zero
不产生 IO,即可以不断输出数据,因此可以用来测试纯写速度。 bs 是每次写块的大小,
count 是读写块的数量。 执行以下命令测试 SD 卡写速度:
Target# time dd if=/dev/zero of=/media/mmcblk0p2/test bs=1024k count=200
这里一共写 200MB 测试数据到 SD 卡的 test 文件,写入速度 7MB/s。
备注: 不同的 SD 卡以及不同大小的测试文件,测试结果会有所差别。
18. 远程访问Matrix 用户界面测试
19. WEB 文件系统
功能: 1. 上传文件 2. 下载文件 3. 删除文件 4. 显示磁盘使用状况 操作步骤: (1) 拷贝"/demo/app/file_storage"文件夹到 SD 卡; (2) 插入网线, 启动开发板, 使用 ifconfig 命令查看开发板的 IP 地址; (3) 安装 python 相关模块; Target# opkg update Target# opkg install python-distutils Target# opkg install --force-overwrite python-email Target# opkg install python-pprint (4) 手动添加 python 相关模块; 进入 file_storage 目录;
Target# cd /media/mmcblk0p1/file_storage/
Target# cp libs/* /usr/lib/python2.7/
(5) 安装 web.py
在 file_storage 目录,执行以下命令;
Target# cd webpy
Target# python setup.py install
(6) 运行 file_storage.py
在 file_storage 目录,执行以下命令;
Target# cd file_storage
Target# python file_storage.py 9090
(7) 打开 PC 端浏览器,输入网址,如 192.168.1.11:9090,如图所示:
1. 安装交叉编译链
2. 修改 /etc/profile 文件,添加路径
3. 使能交叉编译工具链: source /etc/profile
4. 查看版本号: arm-none-linux-gnueabi-gcc -v
5.
SD卡启动:是开发板系统启动方式的一种,SD系统启动卡公有FAT32、EXT3两个格式分区,还包含RAW格式的无名分区。其中 FAT32 格式分区在 Windows 系统下可见, EXT3格式分区在 Windows 系统下不可见,两分区在 Linux 系统下均可见。无名分区在 Windows和 Linux 操作系统下均不可见。无名分区存放 u-boot.ais, FAT32 格式分区存放内核文件uImage、系统启动脚本等文件, EXT3 格式分区存放文件系统
1 基于仿真器烧写DSP程序到NANDFLAHS
sudo apt-get install nfs-kernel-servel
sudo gedit /etc/exprots
问价后面添加:
/home/widic/ *(rw,sync,no_root_squash)
umount /nfs/ 7, 在u-boot中设置网络环境变量: 开发板上电后,按任意键进入 U-Boot 命令行,输入以下命令设置虚拟机 TFTP 服务器 的 IP 地址变量 serverip 和开发板的 IP 地址变量 ipaddr: U-Boot > setenv serverip 192.168.0.5 U-Boot > setenv ipaddr 192.168.0.8 U-Boot > saveenv 执行以下命令测试网络的连通性: U-Boot > ping 192.168.0.5 若提示"host ... is alive"说明网络畅通,
IO口说明 1.linux 对LED设备框架 2.
Host# cd /media/VMware\ Tools //此处务必使用 Tab 键补全,不能手动输入"VMware Tools"
Host# ls
Host# tar zxvf VMwareTools-8.1.3-203739.tar.gz -C /home/tl
安装 VMware Tools。
Host# cd
Host# ls
Host# cd vmware-tools-distrib/
Host# ls
安装 VMware Tools 必须是在 root 权限下,但是 Ubuntu 默认不是不开启 root 用户的,
开启命令如下:
Host# sudo passwd root
输入两次密码后就开启了 root 用户,务必记住 root 密码,接着安装 VMware Tools。
Host# sudo ./VMware-install.pl
![enter description here][4] 遇到询问全部回车确认即可,等待安装结束。
Linux 交叉编译工具链是用来编译内核、应用程序的, QT 图形界面开发也需要用到。 我们统一使用 TI 官网提供的"arm-none-linux- gnueabi-gcc-4.3.3"交叉编译工具链。 ( 1) 将光盘中交叉工具链源码复制到共享目录,源码路径在光盘中是: tools/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 然后解压安装工具链到根目录或者其他指定目录。 Host# ls /mnt/hgfs/shareVM/ 上命令可查看共享目录下是否有交叉工具链源码安装包。接着运行以下命令来解压安 装交叉编译工具链: Host# cd Host# tar jxvf /mnt/hgfs/shareVM/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C ./ 大写字母 C 后面有空格,是英文"Change"的缩写,意思是改变解压的目录的意思。 执行命令后, "arm-none-linux- gnueabi-gcc"工具链将被安装到"/home/tl/arm-2009q1"目录, 解压过程如下图: ![enter description here][5] ( 2)打开"/etc/profile"配置文件,将交 下命令: Host# sudo gedit /etc/profile 在 profile 文件最后添加以下语句: export PATH=$PATH:/home/tl/arm-2009 如下图, 按"Ctrl+S"保存后退出。 ![enter description here][6] ( 3)使能交叉编译工具链,输入以下命令: Host# source /etc/profile 重启虚拟机后,输入如下命令可查看版本号: Host# arm-none-linux-gnueabi-gcc -v 可以看到类似"gcc sversion 4.3.3"的版本号,说明交叉编译工具链已经安装成功。 ![enter description here][7]
安装交叉编译链:(1) 解压交叉编译工具到指定的路径。(2)在文件/etc/profile 中添加交叉编译的工具的路径,也就是刚刚解压的路径。(3)重启虚拟机 使能交叉编译工具链 source /etc/profie (注意,这里不能用sudo),查看版本号,arm-none-linux-gnueabi-gcc -v
安装源代码和工具(1)创建安装目录:mkdir -p /home/tl/omapl138 (2)解压安装内核源码
解压安装文件系统源码(1)创建解压文件目录(2)将文件解压
U盘的挂载目录为、media/sda1
卸载设备驱动程序 rmmod led.ko
测试网络速度:在 Ubuntu 中使用网络测试软件 iperf 来测试网络速度。若未安装,可在 Ubuntu 中执 行"sudo apt-get install iperf"安装, 在 Ubuntu 执行以下命令等待开发板连接: Host# iperf -s在开发板上运行以下命令测试网口速度: Target# iperf -c 192.168.1.137 开发板提示的信息如下图: Ubuntu 会同时显示测试结果,如下图:假如自行制作的文件系统没有安装 iperf,可在开发板网络正常的情况下执行以下命 令安装 iperf 客户端: Target# opkg install iperf
自动获取IP 执行以下命令自动获取 IP: Target# udhcpc -i eth1
程序上电自动运行 在"/etc/rc5.d"目录下所有以 S 开头的脚本程序都会上电自动运行, 按照编号由小到 大和字母排序顺序被执行的,例如 S97 开头的脚本将比 S99 开头的脚本先执行。 下面将 演示如何上电自动 helloworld 程序。 先将光盘"demo\app\helloworld\helloworld"文件拷贝到开发板文件系统任意路径, 在 开发板上电后,使用以下命令创建并编辑文件"S99helloworld": Target# vi /etc/rc5.d/S99helloworld 在 S99helloworld 文件中添加如下语句: #!/bin/sh /home/root/helloworld //helloworld 程序位于文件系统/home/root 目录下,用需要执行的 程序的运行命令替换此语句即可
OMAPL138 DSP 和 ARM 基本联合调试和开发方法 按照正常方法启动 OMAP138 开发板, 保证 ARM 端已正常运行, 然后使用 CCS 按 DSP 开发步骤加载可执行文件和进行调试即可。 ARM 端可运行联合调试程序, DSP 端联合调试程序可按 DSP 开发步骤进行单步、 全速运行等操作, DSP 和 ARM 互相独立,并且共享硬件资源,均可进行单独硬件控制。 OMAPL138 的 DSP 端的具体开发步骤和开发例程请查阅创龙 TMS320C6748 用户手册。 更多联合调试与开发方法请参考 DVSDK/MCSDK 双核开发例程。
#include<stdio.h>
int main(void){
printf("Hello World!......www.tronlong.com\n");
}
在 helloworld.c 中输入以上代码, 和 Windows 下的文本编辑器一样按"Ctrl+S"就可以保存编辑的内容了,然后点击左上 角的红叉按钮退出。 3. 交叉编译 helloworld 程序 进入源代码所在开发系统目录,执行以下命令交叉编译程序: Host# arm-none-linux-gnueabi-gcc helloworld.c -o helloworld "helloworld.c"代表源文件, "-o helloworld"代表交叉编译后输出的镜像名字叫 "helloworld",此名字可以是任意的。 Host# ls ![enter description here][11] 可以看到在当前目录下有 helloworld 镜像文件产生,说明交叉编译成功。也可以通过 file 命令查看其属性。 Host# file helloworld ![enter description here][12] 从提示中可以看到, helloworld 镜像文件时一个 32 位的小端 ARM 平台的程序,是可 以在 ARM 平台直接运行的。 4. 在开发板中 helloworld 运行程序 将 helloword 镜像拷贝到开发板文件系统任意路径下。开发板启动后, 在 helloword 镜像当前路径下执行以下命令运行 helloworld 程序 Target# ./helloworld ![enter description here][13] 可以看到程序已经打印出"Hello World!......www.tronlong.com"。
[usb 设备连接不到虚拟机怎么办][15]
Mware虚拟机功能很强大,它也能像主机一样安装使用usb设备,如usb网卡,u盘等。 工具/原料 VMware虚拟机 u盘
方法/步骤 首先在【主机】中按Win+R打开“运行”对话框,输入“services.msc”,打开服务管理器。
怎么在VMware虚拟机中使用usb设备
在“服务”中启动“VMware USB Arbitration Service”服务项。
怎么在VMware虚拟机中使用usb设备
![enter description here][16] 然后打开虚拟机软件(先不要启动虚拟机)。在你的虚拟机界面点“编辑虚拟机设置”,打开“虚拟机设置”对话框。在“硬件”选项卡下,选中“USB控制器”,在右边选中前三个连接。三个都要选,缺一不可。 怎么在VMware虚拟机中使用usb设备
最后启动虚拟机,插入u盘,看看右下角usb的图标亮了没有,亮了就能正常使用了。
怎么在VMware虚拟机中使用usb设备
sudo passwd root 输入两次密码即可开启
一直找不到这个问题的原因最后在查那个的时候找到解决问题了,路径不对,所以我增加了主要做以下修改,使以下设置生效: (#符号是注释符,被注释的部分是无法起作用的) : anonymous_enable=NO local_enable=YES write_enable=YES local_root=/home/widic/ftp
1.Linux 服务器端 ftp-server 的配置 首先需要安装 vsftpd。在终端下输入如下命令安装 vsftpd: Host# sudo apt-get install vsftpd 成功安装如下图所示: ![安装vsftpd][17] 此时系统将自动创建 ftp 用户和 ftp 组,并建立"/srv/ftp"文件夹作为 ftp 用户的 HOME 目录。 ( 如果想把 FTP的目录放在"/home/ftp",可修改"/etc/passwd"文件中 ftp用户的 HOME目录位置。 )--- 这里我没有实现 2. 配置相关服务文件 进入/etc 目录,目录中会出现一个 vsftpd.conf 文件, 执行以下命令,修改内容如下图: Host# sudo gedit vsftpd.conf ![enter description here][18]
(记得将#删掉, 如果下面指令没有就添加上去) anonymous_enable=YES local_enable=YES write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES async_abor_enable=YES nopriv_user=ftp ascii_upload_enable=YES ascii_download_enable=YES ls_recurse_enable=YES listen_port=21 anon_other_write_enable=YES 修改后保存退出。 3. 重新启动服务 执行以下命令重启 vsftpd,如下图所示: Host# sudo service vsftpd restart ![enter description here][19] 4. 本地 ftp 文件传输功能测试 首先在 ftp 目录"/srv/ftp"中新建一个取名为 test 的文件,在其中输入任意内容, 如下 图所示: ![enter description here][20] 然后进入任意一个和"/srv/ftp"不同的目录。 如: "/home/widic"再在终端中输入以下命令, 进入 ftp 命令符下,如下图:
ftp创龙的ftp get何put 未实现
auto eth0
iface eth0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255
然后保存退出.
2、在终端下设置DNS服务器:命令行下敲:sudo gedit /etc/resolv.conf
在里边加入如下内容:
nameserver 192.168.1.1
nameserver 202.96.134.133
添加完成后保存退出。
3、在终端重启网络,命令:sudo /etc/init.d/networking restart
测试: ping 192.168.1.1 不通,提示未知目的地 解决: 1、右击“网上邻居”--属性,看到有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两个网卡,均设置在192.168.1.xx的网段。 2、在vm的Settings中设置Network Adapter的Network Connection为Bridged。
如果您的平台与路由器连接,且路由器支持 DHCP 自动 IP 地址分配,可以在 DNW 或者超级终端 。里面输入:udhcpc –i eth0 命令,用来动态获取 IP 地址,-i 参数用来指定网卡名称,飞凌平台有线网络的网卡名称为 eth0. 图形界面设置 IP 地址 Qtopia2.2.0 桌面环境,ForlinxTest 程序组中有一个 IP 地址设置软件,该软件可以设置固定 IP 地址,也可以从路由器动态获取 IP 地址,是您网络应用的好帮手,
1、安装和设置OpenSSH Server
在Ubuntu和debian类的系统中,默认是没有安装OpenSSH Server 的,其安装命令为:
apt-get install openssh-server
然后,Ubuntu会自动下载并安装openssh server,并一并解决所有的依赖关系。
2、服务器的启动、重启和停止
启动SSH Server: # /etc/init.d/ssh start
或者 #start ssh 或 # service ssh start
重启SSH Server: # /etc/init.d/ssh restart
停止SSH Server: # /etc/init.d/ssh stop
3、利用SSH客户端软件进行远程登录
Secure CRT – SSH客户端软件,同时具备了在终端仿真器和文件传输功能。找到链接的Server,打开Secure CRT后连接。 ![enter description here][23] 1、OpenSSH上常用的命令
⑴ 登陆远程系统使用命令
ssh hostname [命令] [参数] //hostname is IP
例1:# ssh 172.21.73.187
root@172.21.73.187’s password:
Last login: Fri Jun 3 23:23:59 2011
⑵ 本地系统和远程系统之间文件的传输 scp localfile username@hostname:/newfilename
// 传输本地档案到远端机
scp username@hostname:/remotefile /newfile // 传送远端档案到本地
例2: 传输本地档案到远端机
root@localhost:/root> ls
anaconda-ks.cfg install.log install.log.syslog
root@localhost:/root> scp install.log chunqin@172.21.73.187:/home/chunqin /
chunqin@172.21.73.120‘s password:
install.log 100% 47 0.5KB/s 00:00
⑶ Sftp
sftp 是个交互式文件传输程式,类似于ftp,但他进行加密传输,比FTP有更高的安全性。登录成功后,用 get/put命令下载/上传文件 .
( 1) 查询虚拟机中 OpenSSH 是否安装, 执行如下命令: HOST# ssh -v ![enter description here][24] ( 2) 开发板连上网线,开发板网络与虚拟机网络需要在同一网络下,查询开发板 IP 地址,执行如下命令: ![enter description here][25] ( 3) 查询到 IP 地址为: 192.168.2.100 ( 4) 在虚拟机上新建文件,并且拷贝文件到开发板文件系统下,执行如下命令: HOST# touch testssh HOST# scp testssh root@192.168.2.100:/ ![enter description here][26] ( 5) 先在开发板文件系统上新建一个测试文件,并且拷贝文件到虚拟机下,执行如 下命令: ![enter description here][27] Target# touch testssh2 ![enter description here][28] ![enter description here][29]
执行如下命令:Target# ssh root@192.168.1.32 备注: root:开发板登陆名 192.168.2.100:开发板 IP 地址 ![enter description here][30]
Linux 服务器端 tftp-server 的配置 1 安装 tftp 所需的软件 安装软件前务必保证虚拟机可以上网。虚拟机要访问网络必须在"Virtual Machine setting"菜单下选择"Network Adapter->Network connection->NAT:Used to share the host‘s IP address" 需要安装 tftp-hpa 和 tftpd-hpa(前者是客户端,后者是服务程序)以及 xinetd。在终 端下输入如下命令安装 tftp-hpa、 tftpd-hpa 和 xinetd: Host# sudo apt-get install tftp-hpa Host# sudo apt-get install tftpd-hpa Host# sudo apt-get install xinetd 2 配置相关服务文件 进入/etc 目录,首先看目录中有没有一个 xinetd.conf 文件,如果没有则新建一个,有 的话运行"cat xinetd.conf"查看其内容,看是否与下面的一致,若不一致则运行"sudo gedit xinetd.conf"修改为相同,内容如下图: ![enter description here][31] 打开配置文件 tftpd-hpa 命令如下: Host# sudo gedit /etc/default/tftpd-hpa 将内容修改成:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/tl/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-l -c -s" 修改完成后如下图: ![enter description here][32] TFTP_DIRECTORY="/home/tl/tftpboot":表示 tftp 服务器的工作目录。 保存退出,然后新建 tftp 工作目录,例如: mkdir –p /home/tl/tftpboot,并修改权限为 777,命令为"sudo chmod 777 /home/tl/tftpboot"。 777 是最松的权限,这样不仅可以允许别 的主机或者目标机下载同时允许上传文件。 然后进入"/etc"下面的 xinetd.d 文件夹,查看是否有一个 tftp 文件,如果没有就运行 "sudo gedit tftp"新建一个并输入以下内容,如果有的话就查看内容是否与下面的一致,不 一致则修改,内容如下: servicetftp { socket_type = dgram wait = yes disable = no user = root protocol = udp server = /usr/sbin/in.tftpd server_args = -s /home/tl/tftpboot -c #log_on_success += PID HOST DURATION #log_on_failure += HOST per_source = 11 cps =100 2 flags =IPv4 } 修改完成如下图: ![enter description here][33] 其中 server_args 一行是配置服务器的文件存放的位置,就是进行 tftp 传输的时候,都 是从该文件夹中搜索文件的。然后保存文件,并退出编辑。 3 重新启动服务 执行"sudo service tftpd-hpa restart"重启 tftpd-hpa,,提示如下图: ![enter description here][34] 执行"sudo /etc/init.d/xinetd reload"重新加载一下 xinetd 进程,提示如下图: ![enter description here][35] 执行"sudo /etc/init.d/xinetd restart"重启 xinetd 服务,提示如下图: ![enter description here][36] 每次修改完配置文件后,都需要重新启动一下服务。 本地 tftp 文件传输功能测试----test未成功 Transfer timed out. 首先在 tftp 目录"/home/tl/tftpboot"中新建一个文件 test,在其中输入任意内容,例如内 容如下图![enter description here][37] 然后进入任意一个不是和"/home/tl/tftpboot"不同的目录。再在终端中输入"sudo tftp localhost",进入 tftp 命令符下,如下图![enter description here][38] 可以在其中输入 help 查看命令和命令的作用,提示如下: ![enter description here][39] 接着输入 "get test"再按回车,如果没有任何提示,就说明传输成功了。然后输入 q 退 出 tftp 命令行,如下图![enter description here][40] 在当前目录下运行 ls 就可以看到一个 test 文件,可以使用"cat test"命令查看其内容, 可以发现是与开始新建的那个 test 的内容是一致的。 ![enter description here][41]
开发板挂载 Ubuntu 虚拟机 nfs 服务器共享目录 在开发板执行以下命令在根目录下建立 nfs 挂载目录: Target# mkdir -p /nfs 在开发板中当前执行以下命令挂载 nfs 服务器共享目录到开发板的/nfs 目录: Target# mount -t nfs -o nolock 192.168.0.5:/home/widic /nfs -t nfs: 挂载类型( type)是 nfs。 -o nolock: 不加文件锁, nfs mount 默认选项包括文件锁( lock),依赖于 portmap 提供的 动态端口分配功能。 192.168.0.5:/home/widic: 虚拟机的 IP 地址是 192.168.0.5,共享目录是虚拟机的"/home/tl"。 若是提示如下错误,很可能是开发板还没有安装 nfs 客户端。 ![enter description here][53] 至此nfs 搭建成功
网上应该可以找到很多关于ubuntu源的设置方法,但是如果不搞清楚就随便设置的话,不仅不能起到应有的效果,还会由于一些问题导致apt不可用。
最正确的更换源的方法应该如系统提示的:
## a.) add ‘apt_preserve_sources_list: true‘ to /etc/cloud/cloud.cfg
## or do the same in user-data
## b.) add sources in /etc/apt/sources.list.d
## c.) make changes to template file /etc/cloud/templates/sources.list.tmpl
这种方法有点没弄明白在/etc/apt/sources.list.d应该添加的是什么内容,如果是源文件的话,最后更改的模板又是什么作用?也没有去尝试,有时间会解决一下。
以下提供设置阿里源的方法,其他源也可以如法炮制:
首先查看自己的ubuntu系统的codename,这一步很重要,直接导致你更新的源是否对你的系统起效果,查看方法:
lsb_release -a
如,我的系统显示:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.2 LTS Release: 14.04 Codename: trusty
显示了一些ubuntu的版本信息,需要得到的是Codename,比如,我这里是trusty
确认阿里源支持:
登陆以下网页:http://mirrors.aliyun.com/ubuntu/dists/
该网页显示了阿里云支持的ubuntu系统下各个Codename版本,确保自己的Codename在该网页中存在(一般都会有的)
备份系统源:
cd /etc/apt sudo mv sources.list sources.list_bak
添加新的源文件:
sudo vi sources.list
并添加以下内容:注意,每一行的trusty应该用第一步查看得到的Codename来代替
deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
保存并且sudo apt-get update,更新成功
以下提供配置脚本: 复制代码
1 Codename=$( (lsb_release -a)|awk ‘{print $2}‘|tail -n 1 )
2 echo "
3 deb http://mirrors.aliyun.com/ubuntu/ $Codename main multiverse restricted universe
4 deb http://mirrors.aliyun.com/ubuntu/ $Codename-backports main multiverse restricted universe
5 deb http://mirrors.aliyun.com/ubuntu/ $Codename-proposed main multiverse restricted universe
6 deb http://mirrors.aliyun.com/ubuntu/ $Codename-security main multiverse restricted universe
7 deb http://mirrors.aliyun.com/ubuntu/ $Codename-updates main multiverse restricted universe
8 deb-src http://mirrors.aliyun.com/ubuntu/ $Codename main multiverse restricted universe
9 deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-backports main multiverse restricted universe
10 deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-proposed main multiverse restricted universe
11 deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-security main multiverse restricted universe
12 deb-src http://mirrors.aliyun.com/ubuntu/ $Codename-updates main multiverse restricted universe ">sources.list
13 apt-get update
复制代码 sudo运行该脚本即可(注意运行之前最好备份之前的sources.list)
在终端输入以下命令安装 nfs 服务包: Host# sudo apt-get install nfs-kernel-server ![安装成功][54] ![enter description here][55]
nfs 允许挂载的目录和权限需要在文件"/etc/exports"中进行定义。使用以下命令打开 /etc 目录下的 nfs 配置文件 exports: Host# sudo gedit /etc/exports 在文件最后加入如下内容:
/home/tl/ *(rw,sync,no_root_squash)
修改完成如下图所示: ![enter description here][56] 保存并退出编辑,下面解释一下设置的含义其中: /home/tl: 共享目录
*: 允许所有的网络段访问
rw: 访问者具有可读写权限
sync: 资料同步写入内存和硬盘
no_root_squash: nfs 共享目录访问者具有 root 权限
ro: 只读访问
rw: 读写访问 sync 所有数据在请求时写入共享
asyncnfs: 在写入数据前可以响应请求
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
执行以下命令重启 nfs 服务器: Host# sudo /etc/init.d/portmap restart Host# sudo /etc/init.d/nfs-kernel-server restart ![enter description here][57]
在开发板执行以下命令在根目录下建立 nfs 挂载目录: Target# mkdir -p /nfs 在开发板中当前执行以下命令挂载 nfs 服务器共享目录到开发板的/nfs 目录: Target# mount -t nfs -o nolock 192.168.0.5:/home/tl /nfs -t nfs: 挂载类型( type)是 nfs。 -o nolock: 不加文件锁, nfs mount 默认选项包括文件锁( lock),依赖于 portmap 提供的 动态端口分配功能。 192.168.0.5:/home/tl: 虚拟机的 IP 地址是 192.168.0.5,共享目录是虚拟机的"/home/tl"。 若是提示如下错误,很可能是开发板还没有安装 nfs 客户端。 ![enter description here][63] 请先在开发板执行以下命令安装 nfs客户端,再重新挂载,务必保证开发板可以上网。 Target# opkg install nfs-utils-client ![enter description here][64] 挂载成功后,进入开发板/nfs 目录,可以看到 Ubuntu 虚拟机 nfs 服务器共享目录下的 所有文件了,结果如下图所示: ![enter description here][65] 使用以下命令在开发板的/nfs 目录建立 nfs 测试文件 nfs-test: Target# touch nfs-test 可以看到开发板已经出现了 nfs-test 测试文件,在使用 vi 编译器在 nfs-test 文件输入 test nfs,保存并退出 vi 编译器,如下图所示: ![enter description here][66] 这时可以看到在虚拟机的 nfs 共享目录中有 nfs-test 文件产生了,使用 cat 命令查看其 内容,如下图: ![enter description here][67] 说明开发板通过 nfs 挂载虚拟机的共享目录已经成功,并且可读可写,以后就可以通 过 nfs 服务器来传输文件了,比 U 盘传输更加便捷。 卸载开发板的 nfs 挂载目录 执行以下命令离开开发板/nfs 目录,并卸载 nfs 挂载目录: Target# cd Target# umount /nfs/ 再查看/nfs 目录,可以看到里面的挂载内容已经没有了,说明卸载成功,操作和显示 如下图
==End of File==
原文:https://www.cnblogs.com/widic/p/9017267.html