嵌入式Linux开发环境搭建-1-Linux搭建

嵌入式Linux开发环境搭建-1-Linux搭建

  • 一、硬件环境
  • 二、安装
    • 1、下载Ubuntu镜像文件
    • 2、VMware下载安装
    • 3、在VMware安装Ubuntu
      • 3.1 新建
      • 3.2 安装系统
      • 3.3 VMware Tools
      • 3.3 遇错处理
  • 三、环境配置
    • 1、ubuntu 16.04 desktop + server LTS - 设置 root 密码
      • 1.1 sudo
      • 1.1 net-tools
    • 2、设置网络
      • 2.1 NAT 方式上网
      • 2.2 桥接方式上网
      • 2.3
    • 3、安装/配置/启动 FTP、SSH或NFS
      • 3.1 安装并启动 FTP 服务
      • 3.2 配置用户访问目录
      • 3.3 准备域名和证书
      • 3.4 访问 FTP 服务
      • 3.5 配置SSH服务
      • 3.6 配置NFS服务

一、硬件环境

硬件环境:
电脑
软件环境:
裸机安装Windows7_64位
VMWare版本:VMWare WorkStation 10
Ubuntu版本:Ubuntu16.04

二、安装

1、下载Ubuntu镜像文件

下载地址:http://www.ubuntu.com

打开上面的连接,我们来到如下页面,点击download:

或者镜像下载
HUAWEI CLOUD : Ubuntu

ubuntu-16.04.6-desktop-amd64.iso

2、VMware下载安装

VMware的下载安装就好办了,下载直接百度

3、在VMware安装Ubuntu

3.1 新建

3.2 安装系统

虚拟机已经配置完毕,接下来我们开启虚拟机:

然后就会来到如下界面,如果出现错误请看(四、可能遇到的错误),我们选择中文简体点击Install Ubuntu:

然后点击,开始安装:

如下,输入你的位置,随便输入就好:

然后选择汉语,点击继续:

设置用户名密码,这里博主选择自动登录

下面就开始正式安装了:

安装完成之后,会提示重启,点击现在重启

重启成功之后,会来到桌面,博主的重启中遇到一些问题,手动重启的,影响不大:

我们打开浏览器,输入百度网址,发现可以访问网络:

安装完成!!!!!!!!!!

3.3 VMware Tools

Ubuntu 16.04 虚拟机安装 VMware Tools - 既然选择了远方 便只顾风雨兼程 - CSDN博客
https://blog.csdn.net/chengyq116/article/details/83513662

3.3 遇错处理

This kernel requires an x86-64 CPU,but only detected an i686 CPU.如下图:

可能原因是:在创建虚拟机向导的时候我们如下页面选择了Ubuntu,而不是Ubuntu64,但是我下载的镜像是64位的,如下图:
解决办法:如下设置回Ubuntu64即可,然后继续你没有完成的步骤:

报如下错误:
此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
vmware安装ubuntu " Intel VT-x 处于禁用状态"_百度经验
可能原因是:你的电脑没有支持虚拟化
解决办法:重启电脑,进入bios设置虚拟化启用。

三、环境配置

1、ubuntu 16.04 desktop + server LTS - 设置 root 密码

1.1 sudo

sudo (/ˈsuːduː/ or /ˈsuːdoʊ/) is a program for Unix-like computer operating systems that allows users to run programs with the security privileges of another user, by default the superuser. It originally stood for “superuser do” as the older versions of sudo were designed to run commands only as the superuser. However, the later versions added support for running commands not only as the superuser but also as other (restricted) users, and thus it is also commonly expanded as “substitute user do”. Although the latter case reflects its current functionality more accurately, sudo is still often called “superuser do” since it is so often used for administrative tasks.

Ubuntu 16.04 Desktop (64-bit) 安装的时候,不像其他 Linux 发行版在安装的时候就需要设置 root 密码。因为 Ubuntu 16.04 Desktop (64-bit) 是面对普通用户,无 root 密码反而更加安全,在需要 root 用户的时候,可以再设置。

jszy@pc:~$ sudo passwd 
[sudo] jszy 的密码: 
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码
jszy@pc:~$ 
jszy@pc:~$ su
密码: 
root@pc:/home/jszy# exit
exit
jszy@pc:~$ 

终端输入 sudo passwd,然后输入当前账户密码认证。

jszy@pc:~$ sudo passwd 
[sudo] jszy 的密码: 

当输入当前账户密码正确时,会提示输入新的 Unix 密码。该密码就是 root 账户密码。
当输入 2 次 Unix 密码一致时,会提示你密码更新成功。

jszy@pc:~$ sudo passwd 
[sudo] jszy 的密码: 
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码

在终端输入 su,是 root 账户。然后要求你输入密码,这个不是账户密码,是刚才设置的 root 密码。当你输入正确的 root 密码之后,前面的用户名就换成了 root,可以通过 exit 退出 root 用户,切换回刚才的用户。

jszy@pc:~$ su
密码: 
root@pc:/home/jszy# exit
exit
jszy@pc:~$ 

1.1 net-tools

我们在虚拟主机中查看ip地址需要输入ifconfig,但是报以下错误:

root@pc:/home/jszy# ipconfig
未找到 'ipconfig' 命令,您要输入的是否是:
 命令 'iwconfig' 来自于包 'wireless-tools' (main)
 命令 'iconfig' 来自于包 'ipmiutil' (universe)
 命令 'ifconfig' 来自于包 'net-tools' (main)
ipconfig:未找到命令

系统提示我们安装 net-tools,当我们输入以下命令,即可安装完成。

 sudo apt-get install net-tools
root@pc:/home/jszy# sudo apt-get install net-tools
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
net-tools 已经是最新版 (1.60-26ubuntu1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 39 个软件包未被升级。
root@pc:/home/jszy#

然后再输入命令ifconfig即可看到虚拟机的ip地址

2、设置网络

虚拟机如果要从网上获取资源,就要能够访问外网。虚拟机有三种上网方式:桥接上网,NAT上网,单主机模式【没用过】。本节从原理和操作2个方面讲了NAT方式和桥接方式这2种不同的虚拟机上网模式。
在嵌入式开发中,如果虚拟机要实现上网,建议使用NAT方式访问外网[最简单]。桥接方式一般用来和开发板通信。
注意:主机一定要能上网。

2.1 NAT 方式上网

在NAT模式下,虚拟系统需要借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式虚拟系统可把物理主机作为路由器访问互联网。(虚拟机在主机的下一级)
NAT网络环境下需要做到:
(1)主机需要开启vmdhcp和vmnat服务。(服务的开启,在我的电脑当中右键“管理”可以设置)
(2)NAT模式下的虚拟机的TCP/IP配置信息将由VMnet8(NAT)虚拟网络的DHCP服务器自动分配,需要开启DHCP功能。

2.2 桥接方式上网

在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和虚拟机处于对等地位,直接与外网通信),它可以访问该类网段内任何一台机器。
桥接网络环境下需要做到:
(1)手动为虚拟机系统配置IP地址、子网掩码。
(2)在桥接的模式下虚拟机必须与物理机处于同一网段,(举个例子,物理机IP:192.168.1.2,虚拟机IP:192.168.1.3)这样虚拟系统才能和真实主机进行通信。

2.3

关键点:桥接到有限网卡;使得开发板,window主机,ubuntu在同一局域网中。也就是设置PC机、虚拟机、以及开发板的IP在同一个网段【同一局域网】,即192.168.1.*,其他掩码、网关、DNS都设置一样。

3、安装/配置/启动 FTP、SSH或NFS

3.1 安装并启动 FTP 服务

安装 VSFTPD
使用 apt-get 安装 vsftpd:

sudo apt-get install vsftpd -y
vsftpd --version     //检测是否安装
root@pc:/home/uftp# vsftpd -version
vsftpd: version 3.0.3

vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其官网介绍,它可能是 UNIX-like 系统下最安全和快速的 FTP 服务器软件。

root@pc:/home/jszy# sudo apt-get install vsftpd -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列【新】软件包将被安装:
  vsftpd
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 39 个软件包未被升级。
需要下载 115 kB 的归档。
解压缩后会消耗 336 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 vsftpd amd64 3.0.3-3ubuntu2 [115 kB]
已下载 115 kB,耗时 1秒 (65.3 kB/s)                   
正在预设定软件包 ...
正在选中未选择的软件包 vsftpd。
(正在读取数据库 ... 系统当前共安装有 179569 个文件和目录。)
正准备解包 .../vsftpd_3.0.3-3ubuntu2_amd64.deb  ...
正在解包 vsftpd (3.0.3-3ubuntu2) ...
正在处理用于 systemd (229-4ubuntu21.16) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 vsftpd (3.0.3-3ubuntu2) ...
正在处理用于 systemd (229-4ubuntu21.16) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
root@pc:/home/jszy# 

启动 VSFTPD

安装完成后 VSFTPD 会自动启动,通过 netstat 命令可以看到系统已经[监听了 21 端口]:

sudo netstat -nltp | grep 21
root@pc:/home/jszy# sudo netstat -nltp | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      5181/vsftpd     
root@pc:/home/jszy# 

如果没有启动,可以手动开启 VSFTPD 服务:

sudo systemctl start vsftpd.service

FTP 协议默认使用 21 端口作为服务端口

3.2 配置用户访问目录

新建用户主目录

sudo mkdir /home/uftp

执行完后,在这里 /home/uftp 就能看到新建的文件夹 uftp 了。

创建登录欢迎文件:

sudo touch /home/uftp/welcome.txt

方便用户登录后可以看到欢迎信息,并且确定用户确实登录到了主目录上。
用户的主目录是用户通过 FTP 登录后看到的根目录

新建用户 uftp 并设置密码
创建一个用户 uftp [?]:

sudo useradd -d /home/uftp -s /bin/bash uftp

为用户 uftp 设置密码 [?]:

sudo passwd uftp

删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败:

sudo rm /etc/pam.d/vsftpd

为了方便后面的实验步骤,不建议使用其它的用户名
请记住设置的密码以用于后续步骤

限制该用户仅能通过 FTP 访问
限制用户 uftp 只能通过 FTP 访问服务器,而不能直接登录服务器:

sudo usermod -s /sbin/nologin uftp

修改 vsftpd 配置

sudo chmod a+w /etc/vsftpd.conf

修改 /etc/vsftpd.conf 文件中的配置(直接将如下配置添加到配置文件最下方):

# 限制用户对主目录以外目录访问
chroot_local_user=YES

# 指定一个 userlist 存放允许访问 ftp 的用户列表
userlist_deny=NO
userlist_enable=YES

# 记录允许访问 ftp 用户列表
userlist_file=/etc/vsftpd.user_list

# 不配置可能导致莫名的530问题
seccomp_sandbox=NO

# 允许文件上传
write_enable=YES

# 使用utf8编码
utf8_filesystem=YES

新建文件 /etc/vsftpd.user_list,用于存放允许访问 ftp 的用户:

sudo touch /etc/vsftpd.user_list
sudo chmod a+w /etc/vsftpd.user_list

修改 /etc/vsftpd.user_list ,加入刚刚创建的用户:

示例代码:/etc/vsftpd.user_list

uftp

设置访问权限
设置主目录访问权限(只读):

sudo chmod a-w /home/uftp

新建公共目录,并设置权限(读写):

sudo mkdir /home/uftp/public && sudo chmod 777 -R /home/uftp/public

重启vsftpd 服务:

sudo systemctl restart vsftpd.service

3.3 准备域名和证书

注:如果您不需要通过域名访问 FTP 服务器则可以直接点击“已完成,下一步”跳过域名和证书的准备环节

3.4 访问 FTP 服务

FTP 服务已安装并配置完成,下面我们来使用该 FTP 服务

访问 FTP 服务
根据您个人的工作环境,选择一种方式来访问已经搭建的 FTP 服务

通过 FTP 客户端工具访问
FTP 客户端工具众多,下面推荐两个常用的:

FileZilla - 跨平台的 FTP 客户端,支持 Windows 和 Mac
WinSCP - Windows 下的 FTP 和 SFTP 连接客户端
下载和安装 FTP 客户端后,使用下面的凭据进行连接即可:

[主机]:

<您的 CVM IP 地址>

用户:

uftp

输入密码后,如果能够正常连接,那么大功告成,您可以开始使用属于您自己的 FTP 服务器了!

接下来,请上传任意一张图片到您的 FTP 服务器上的 uftp 的 public 目录下,然后,就可以在 /home/uftp/public 中看到了。

通过 Windows 资源管理器访问
Windows 用户可以复制下面的[链接]到资源管理器的地址栏访问:

ftp://uftp:你的密码@<您的 CVM IP 地址>
ftp://uftp:******@192.168.193.129

如果您申请了域名,可以将Ip 地址替换为对应的域名作为访问凭据
如果您申请了域名,可以将链接中的 Ip 地址替换为对应的域名访问 FTP 服务

大功告成
恭喜!您已经成功完成了搭建 FTP 服务器的实验任务。

3.5 配置SSH服务

安装SSH

sudo apt-get install openssh-server

打开"终端窗口",输入"sudo apt-get install openssh-server"–>回车–>输入"y"–>回车–>安装完成。

root@pc:/home/uftp# sudo apt-get install openssh-server
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
  ncurses-term openssh-client openssh-sftp-server ssh-import-id
建议安装:
  ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard
下列【新】软件包将被安装:
  ncurses-term openssh-server openssh-sftp-server ssh-import-id
下列软件包将被升级:
  openssh-client
升级了 1 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 38 个软件包未被升级。
需要下载 633 kB/1,223 kB 的归档。
解压缩后会消耗 5,140 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]
获取:3 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]
获取:4 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]
已下载 633 kB,耗时 5秒 (117 kB/s)  
正在预设定软件包 ...
(正在读取数据库 ... 系统当前共安装有 179626 个文件和目录。)
正准备解包 .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb  ...
正在将 openssh-client (1:7.2p2-4ubuntu2.8) 解包到 (1:7.2p2-4ubuntu2.7) 上 ...
正在选中未选择的软件包 ncurses-term。
正准备解包 .../ncurses-term_6.0+20160213-1ubuntu1_all.deb  ...
正在解包 ncurses-term (6.0+20160213-1ubuntu1) ...
正在选中未选择的软件包 openssh-sftp-server。
正准备解包 .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb  ...
正在解包 openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...
正在选中未选择的软件包 openssh-server。
正准备解包 .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb  ...
正在解包 openssh-server (1:7.2p2-4ubuntu2.8) ...
正在选中未选择的软件包 ssh-import-id。
正准备解包 .../ssh-import-id_5.5-0ubuntu1_all.deb  ...
正在解包 ssh-import-id (5.5-0ubuntu1) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.16) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
正在设置 openssh-client (1:7.2p2-4ubuntu2.8) ...
正在设置 ncurses-term (6.0+20160213-1ubuntu1) ...
正在设置 openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...
正在设置 openssh-server (1:7.2p2-4ubuntu2.8) ...
Creating SSH2 RSA key; this may take some time ...
2048 SHA256:Qjc5swynmyBfYsjciS0+19V1WyQz6RP+B46LRy0qvM4 root@pc (RSA)
Creating SSH2 DSA key; this may take some time ...
1024 SHA256:fUJK6XtrQittLicGUobgeXCHPVA/cOkIYc/ziaX2R9Y root@pc (DSA)
Creating SSH2 ECDSA key; this may take some time ...
256 SHA256:zWOIESJ/1rzc6b1DZcgRaErp3KfmJdB8W8TWkUcD/ko root@pc (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 SHA256:YZM71S2sK3R0ctuxe0yXtzszhrGzMMQVZ9ABhkFZGvg root@pc (ED25519)
正在设置 ssh-import-id (5.5-0ubuntu1) ...
正在处理用于 systemd (229-4ubuntu21.16) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...

查看ssh服务是否启动

打开"终端窗口",输入"sudo ps -e |grep ssh"–>回车–>有sshd,说明ssh服务已经启动
如果没有启动,输入sudo service ssh startsudo /etc/init.d/ssh restart–>回车–>ssh服务就会启动。

修改配置文件
使用gedit修改配置文件"/etc/ssh/sshd_config"
打开"终端窗口",输入"sudo gedit /etc/ssh/sshd_config"–>回车–>把配置文件中的"PermitRootLogin prohibit-password“加一个”#“号,把它注释掉–>再增加一句”PermitRootLogin yes"–>保存,修改成功。

#PermitRootLogin prohibit-password
PermitRootLogin yes

一般仅修改PermitRootLogin值为no,禁止root登录,其他保持默认即可。

Port 22
“Port”设置sshd监听的端口号。

ListenAddress 192.168.1.1
“ListenAddress”设置sshd服务器绑定的IP地址。

HostKey /etc/ssh/ssh_host_key
“HostKey”设置包含计算机私人密匙的文件。
 
KeyRegenerationInterval 3600
“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

ServerKeyBits 768
“ServerKeyBits”定义服务器密匙的位数。

SyslogFacility AUTH
“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。

LogLevel INFO
“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。
 
LoginGraceTime 120
“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

PermitRootLogin no
“PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。
 
StrictModes yes
“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

ClientAliveInterval 300(默认为0)
这个参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接

IgnoreRhosts yes
“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”

X11Forwarding no
“X11Forwarding”设置是否允许X11转发。

PrintMotd yes
“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。

RhostsAuthentication no
“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。

RhostsRSAAuthentication no
“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。

RSAAuthentication yes
“RSAAuthentication”设置是否允许只有RSA安全验证。

PasswordAuthentication yes
“PasswordAuthentication”设置是否允许口令验证。

PermitEmptyPasswords no
“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。

AllowUsers admin
“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。

3.6 配置NFS服务

NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
NFS的安装

apt-get install nfs-kernel-server

sudo apt-get install nfs-kernel-server portmap
root@pc:/home/uftp# sudo apt-get install nfs-kernel-server portmap
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
注意,选中 'rpcbind' 而非 'portmap'
将会同时安装下列软件:
  keyutils libnfsidmap2 libtirpc1 nfs-common
建议安装:
  open-iscsi watchdog
下列【新】软件包将被安装:
  keyutils libnfsidmap2 libtirpc1 nfs-common nfs-kernel-server rpcbind
升级了 0 个软件包,新安装了 6 个软件包,要卸载 0 个软件包,有 38 个软件包未被升级。
需要下载 467 kB 的归档。
解压缩后会消耗 1,845 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libnfsidmap2 amd64 0.25-5 [32.2 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 keyutils amd64 1.5.9-8ubuntu1 [47.1 kB]
获取:3 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libtirpc1 amd64 0.2.5-1ubuntu0.1 [75.4 kB]
获取:4 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 rpcbind amd64 0.2.3-0.2 [40.3 kB]
获取:5 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 nfs-common amd64 1:1.2.8-9ubuntu12.1 [184 kB]
获取:6 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 nfs-kernel-server amd64 1:1.2.8-9ubuntu12.1 [88.0 kB]
已下载 467 kB,耗时 5秒 (79.2 kB/s)     
正在选中未选择的软件包 libnfsidmap2:amd64。
(正在读取数据库 ... 系统当前共安装有 182384 个文件和目录。)
正准备解包 .../libnfsidmap2_0.25-5_amd64.deb  ...
正在解包 libnfsidmap2:amd64 (0.25-5) ...
正在选中未选择的软件包 keyutils。
正准备解包 .../keyutils_1.5.9-8ubuntu1_amd64.deb  ...
正在解包 keyutils (1.5.9-8ubuntu1) ...
正在选中未选择的软件包 libtirpc1:amd64。
正准备解包 .../libtirpc1_0.2.5-1ubuntu0.1_amd64.deb  ...
正在解包 libtirpc1:amd64 (0.2.5-1ubuntu0.1) ...
正在选中未选择的软件包 rpcbind。
正准备解包 .../rpcbind_0.2.3-0.2_amd64.deb  ...
正在解包 rpcbind (0.2.3-0.2) ...
正在选中未选择的软件包 nfs-common。
正准备解包 .../nfs-common_1%3a1.2.8-9ubuntu12.1_amd64.deb  ...
正在解包 nfs-common (1:1.2.8-9ubuntu12.1) ...
正在选中未选择的软件包 nfs-kernel-server。
正准备解包 .../nfs-kernel-server_1%3a1.2.8-9ubuntu12.1_amd64.deb  ...
正在解包 nfs-kernel-server (1:1.2.8-9ubuntu12.1) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 libc-bin (2.23-0ubuntu11) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.16) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在设置 libnfsidmap2:amd64 (0.25-5) ...
正在设置 keyutils (1.5.9-8ubuntu1) ...
正在设置 libtirpc1:amd64 (0.2.5-1ubuntu0.1) ...
正在设置 rpcbind (0.2.3-0.2) ...
正在设置 nfs-common (1:1.2.8-9ubuntu12.1) ...

Creating config file /etc/idmapd.conf with new version

Creating config file /etc/default/nfs-common with new version
正在添加系统用户"statd" (UID 123)...
正在将新用户"statd" (UID 123)添加到组"nogroup"...
无法创建主目录"/var/lib/nfs"
nfs-utils.service is a disabled or a static unit, not starting it.
正在设置 nfs-kernel-server (1:1.2.8-9ubuntu12.1) ...

Creating config file /etc/exports with new version

Creating config file /etc/default/nfs-kernel-server with new version
正在处理用于 libc-bin (2.23-0ubuntu11) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.16) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
root@pc:/home/uftp# 

查看nfs的端口是否打开

netstat -tl

再重启一下nfs服务

/etc/init.d/nfs-kernel-server restart

创建nfs共享目录 /home/nfsdoc ,在里面新建一个文件a.c来共享

修改nfs配置文件/etc/exports
在Ubuntu Linux系统中,/etc/exports是nfs服务器的全局配置文件。配置文件中一行即为一条配置项,用于指明网络中“哪些客户端”共享“哪些目录资源”。将创建的共享目录添加到其中,后面加上*(rw,sync,no_root_squash,no_subtree_check)参数

将该共享目录挂在到本地的/mnt/share下

可以通过mount命令在客户机端挂载nfs服务器端的共享资源。mount命令的一般语法格式是:

 mount nfssrvname:/Share-Directory  /mnt-Point

nfssrvname表示nfs服务器主机名,也可用IP地址;
Share-Directory表示nfs服务器导出的共享资源目录,必须用 绝对路径,与nfssrvname用”:”号隔开;
mnt-Point表示共享资源将挂载到客户端主机上的位置,在挂载前一定要确保挂载目录已经存在。

查看nfs服务器的共享资源
在客户机连接nfs共享资源前,通常要用showmount命令查看一下nfs服务器上的共享资源情况,了解是否有权限访问。showmount命令查看 某台nfs服务器上都有哪些nfs共享资源。showmount命令包含在nfs-kernel-server软件包中,一般语法格式 是:

showmount [dehv] nfssrvname

其中nfssrvname表示nfs服务器主机名,也可用IP地址各选项如下:

-d :显示客户端所挂载的共享目录
-e: 显示nfs服务的导出共享目录列表
-h: 显示帮助信息
-v: 显示版本

查看挂载后的目录的内容,是否有nfs服务器上新建的a.c文件

卸载共享资源
在使用完nfs服务器共享资源后,建议即刻卸载nfs文件系统。卸载命令umount一般语法格式是:

 umount  /mnt-Point

其中mnt-Point表示共享资源在客户端的挂载点。
注意: 当有用户在使用某个已加装的共享目录上的文件时(在挂载点下要退出才能卸载),则不能卸载在文件系统。如果用户确认无误,可使用"umount -f"命令强行卸载共享的目录。

你可能感兴趣的:(嵌入式开发)