目录
samba
概述
samba则是Linux和Windows之间的文件传输工具。samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。
使用场景
也就是可以通过虚拟机IP地址访问到samba目录,然后映射成Windows上一个盘符。
安装,创建存放目录
sudo apt-get install samba
sudo mkdir /home/samba
安装失败
[sudo] flynnsin 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
samba : 依赖: python-samba 但是它将不会被安装
依赖: samba-common-bin (= 2:4.7.6+dfsg~ubuntu-0ubuntu2) 但是它将不会被安装
依赖: samba-libs (= 2:4.7.6+dfsg~ubuntu-0ubuntu2) 但是 2:4.7.6+dfsg~ubuntu-0ubuntu2.28 正要被安装
推荐: samba-dsdb-modules 但是它将不会被安装
推荐: samba-vfs-modules 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决
sudo add-apt-repository ppa:linux-schools/samba-latest
sudo add-apt-repository ppa:linux-schools/samba-latest 命令用于添加 Ubuntu 系统中的第三方软件源,也称为 PPA(Personal Package Archives)。
该命令将在 /etc/apt/sources.list.d/ 目录下创建一个新的 .list 文件,并将 PPA 的 URL 添加到该文件中。然后,运行 sudo apt-get update 命令以更新软件包列表,并从该 PPA 中获取软件包。
在这个例子中,ppa:linux-schools/samba-latest 是指 PPA 的名称和 URL。该 PPA 包含了最新版本的 Samba 软件包。通过添加该 PPA,您可以获取 Samba 的最新版本并在 Ubuntu 上安装。
修改配置文件
sudo gedit /etc/samba/smb.conf
在最后添加这些
[ubuntu samba]
comment = arm ubuntu samba dir
path = /home/samba
available = yes
browseable = yes
public = yes
writable = yes
create mask = 0755
security = share
force user = root
arm force group = root
重启nfs服务,查看服务是否开启
sudo service samba restart
使用示例
nfs
概述
网络文件系统,英文Network File System(NFS),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。NFS是基于UDP/IP协议的应用。
使用场景
主要使用nfs挂载ubuntu服务端目录方便文件传输和程序调试,也就是ubuntu上写代码,板子挂载在ubuntu上进行调试,还有就是挂载rootfs。
安装,创建存放目录
sudo apt-get install nfs-kernel-server rpcbind
参考,注意flynnsinu为用户名
/home/flynnsinu/linux/nfs
修改配置文件
sudo vi /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/home/flynnsinu/linux/nfs *(rw,sync,no_root_squash)
重启nfs服务,查看服务是否开启
sudo /etc/init.d/nfs-kernel-server restart
错误
[....] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.serviceJob for nfs-server.service canceled. failed!
sudo systemctl status nfs-kernel-server.service 看下日志,然后根据错误日志改改看
error starting threads: errno 12 (Cannot allocate memory)
netstat -a | grep nfs
使用示例
mkdir get
mount -t nfs -o nolock,nfsvers=3 192.168.129.154:/home/flynnsinu/linux/nfs get/
将ubuntu(192.168.129.154)共享目录/home/flynnsinu/linux/nfs挂载到开发板的get目录下,这样就可以在开发板get目录下看到ubutun主机/home/flynnsinu/linux/nfs下文件。
前提:
-
这里我使用的是笔记本wifi和以太网进行桥接,按ctrl键选择2个进行桥接,生成网桥,我的到这里就可以了,那些ip地址,网关什么的都自动配好了。
-
然后就是开发板与主机进行ping命令操作,这里如果主机能ping通开发板,而开发板无法ping通主机,那多半是防火墙没关。
-
然后就是虚拟机,开始虚拟机采用nat模式开发板好像ping不通,这里采用桥接模式即可,然后配置成静态ip,当然你也可以不配。
nat模式:
桥接模式:
-
测试验证,到这就OK了。
-
卸载 NFS 目录
umount get
,注意卸载时所在路径
补充:
桥接:Bridged Networking--桥接网络(模式):手动配置IP、子网掩码、网关,地址需要和宿主机同一网段,相当于局域网内新建了一台主机。
NAT:Netword Address Translation--网络地址转换(模式):借助宿主机来上网,没桥接那么麻烦,只用配置DNS即可。缺点:扎根于宿主机,不能和局域网内其它真实的主机进行通信
差异:
1.桥接配置稍麻烦,但是应用广。
2.NAT配置简单,但是只能和宿主机通信,应用狭窄。
tftp
概述
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
使用场景
主要用户uboot启动后,使用tftp下载kernel和文件系统到emmc,方便kernel和rootfs调试。
安装,创建存放目录
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
mkdir /home/flynnsinu/linux/tftpboot
chmod 777 /home/flynnsinu/linux/tftpboot
注意!我们要给 tftpboot 文件夹权限,否则的话 uboot 不能从
tftpboot 文件夹里面下载文件。
修改配置文件
新建文件/etc/xinetd.d/tftp
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/flynnsinu/linux/tftpboot/ 9 disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
修改/etc/default/tftpd-hpa 文件,
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/flynnsin/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
重启 tftp 服务器,查看服务是否开启
sudo service tftpd-hpa restart
使用示例
测试:
应用:
将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限,命令如下:
cp zImage /home/flynnsinu/linux/tftpboot/
cd /home/flynnsinu/linux/tftpboot/
chmod 777 zImage
uboot 中的 tftp 命令格式如下:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
- loadAddress 是文件在 DRAM 中 的存 放 地 址 ,
- [[hostIPaddr:]bootfilename]是要从 Ubuntu 中下载的文件。
和 nfs 命 令 格式 的区别在于,tftp 命令不需要输入文件在 Ubuntu 中的完整路径,只需要输入文件名即可。
将zImage 文件下载到开发板 DRAM 的 0X80800000 地址处
tftp 80800000 zImage