【Linux 之二】Ubuntu下开发环境的搭建(NFS \ SSH \ FTP \ Smba \ ...)

  目前正在进行Linux相关项目的开发,而我的Linux开发是在Ubuntu(版本20.04)下进行的,为此需要搭建很多Linux相关的开发环境,方便工作的进行。这里主要是对各种开发环境的搭建做一个总结记录,方便后面查阅,也方便在Linux开发之路上遇到困难的各位同仁。好了,废话不多说,直接罗列各种开发环境的安装步骤等。

FTP

  在开发过程中可能会频繁的在 Windows 与 Ubuntu 下进行文件传输,比如在 Windows 下进行代码的编写,然后将编写好的代码传递到 Ubuntu 下进行编译,这时我们可以使用 FTP 服务实现 Windows 与 Ubuntu 之间的文件互传(当然也可以使用Samba)。

FTP服务端(Ubuntu)

  1. 打开 Ubuntu 的一个终端窗口,然后执行如下命令安装 FTP 服务:
sudo apt-get install vsftpd
  1. FTP 服务安装完成之后,打开 vsftpd.conf 文件,修改配置,如下:
sudo vi /etc/vsftpd.conf

打开后,修改如下两行:
在这里插入图片描述
5. 修改完成之后,保存退出,使用如下命令重启 FTP服务:

sudo /etc/init.d/vsftpd restart

至此,Ubuntu 上的 FTP 的 Server 已经开启。

FTP客户端(Windows)

  Windows 端的 FTP 客户端有很多,可以根据自己的爱好选一个即可。我使用的 FTP 客户端是 XFTP。关于FTP客户端的介绍,可以参考这篇文章:https://zhuanlan.zhihu.com/p/301653835。
在这里插入图片描述
在这里插入图片描述

NFS

  在Linux开发时,一般都绕不过网络挂载(NFS),通过 NFS 可以大大提高我们开发调试的效率,为此必须首先在Ubuntu上安装并开启 NFS 服务,使用如下命令安装 NFS 服务。

  1. 安装 NFS 服务器
sudo apt-get install nfs-kernel-server rpcbind 

  安装nfs-kernel-server时,apt会自动安装nfs-common和portmap

  1. 创建 NFS 共享目录
    在自己想要设置的路径下创建共享文件夹,例如我的共享文件夹为:
jack-virtual-machine:~/linux_imx6ull/nfs$ pwd
/home/jack/linux_imx6ull/nfs
  1. 修改共享目录的权限
jack@jack-virtual-machine:~/linux_imx6ull/nfs$ chmod 777 . -R
  1. 修改配置文件 (/etc/exports)
    打开配置文件(sudo vi /etc/exports),在最后一行添加自己的共享目录,如下:
/home/jack/linux_imx6ull/nfs *(rw,async,no_root_squash)
  • /home/jack/linux_imx6ull/nfs:nfs服务端的共享目录,需要通过nfs挂载的文件都放在此目录下即可
  • * :表示所有网段都可以网段都可以访问(也可以指定具体的IP)
  • rw:指定挂载共享目录的客户端具有读写权限
  • sync:资料同步写入内存或者硬盘
  • no_root_squash:客户机用root访问共享文件夹时,不映射root用户
  1. 修改配置文件(/etc/default/nfs-kernel-server )
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

在这里插入图片描述
  Ubuntu18.04之后的版本应该是只支持 nfs3 和 nfs4,而uboot中默认使用的是 nfs2,所以为了使uboot的nfs命令正常使用,必须添加上述的一句话,使Ubuntu兼容 2、3、4版本。

  1. 重启 NFS 服务
sudo /etc/init.d/nfs-kernel-server restart
  1. 验证 NFS 是否配置成功
$ sudo mount -t nfs 192.168.100.113:/home/jack/linux_imx6ull/nfs /mnt
$ showmount -e
Export list for jack-virtual-machine:
/home/jack/linux_imx6ull/nfs *
$ sudo umount /mnt
  1. sudo mount -t nfs 192.168.100.113:/home/jack/linux_imx6ull/nfs /mnt

    • 192.168.100.113:共享 NFS 目录的主机地址(若为本机挂载,可以写为 localhost)
    • /home/jack/linux_imx6ull/nfs:共享 NFS 的路径
    • /mnt:挂载点(可以任意指定)
  2. showmount -e:显示配置的共享目录(该命令其实是读取了 /etc/exports 文件进行解析的)

  3. sudo umount /mnt:取消挂载

SSH

  开启 SSH 服务之后,我们可以在Windows下使用终端软件登录到 Ubuntu,比如使用Xshell 等,在 Ubuntu 下使用如下命令开启 SSH 服务。
4. 通过如下命令查询是否已安装 SSH
通过如下命令查询是否已安装 SSH,若出现openssh-client和openss-server,则说明系统已经安装 OpenSSH。

$ dpkg --list | grep ssh
ii  libssh-4:amd64                             0.9.3-2ubuntu2.3                    amd64        tiny C SSH library (OpenSSL flavor)
ii  openssh-client                             1:8.2p1-4ubuntu0.9                  amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                             1:8.2p1-4ubuntu0.9                  amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server                        1:8.2p1-4ubuntu0.9                  amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines
ii  ssh-import-id                              5.10-0ubuntu1                       all          securely retrieve an SSH public key and install it locally
  1. 安装 SSH
    在Ubuntu下可以使用如下命令安装SSH:
sudo apt-get install ssh
  1. 查看SSH服务端是否已启动
$ ps -auxf | grep ssh
root         891  0.0  0.1  12192  7148 ?        Ss   9月21   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root       20934  0.0  0.2  14004  8848 ?        Ss   9月21   0:00  \_ sshd: jack [priv]
jack       21012  0.0  0.1  14004  6044 ?        S    9月21   0:00      \_ sshd: jack@notty
jack       21013  0.0  0.1   5892  4104 ?        Ss   9月21   0:00          \_ /usr/lib/openssh/sftp-server
jack        1609  0.0  0.0   6040   100 ?        Ss   9月21   0:00              \_ /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
jack       23312  0.0  0.0  17672   716 pts/1    S+   13:49   0:00  |       \_ grep --color=auto ssh

交叉编译工具链

  1. 在Ubuntu上创建一个目录,用于存放“交叉编译工具链”,我创建的目录为:/usr/local/arm
  2. 将交叉编译工具链复制到目录(/usr/local/arm)中,我的工具链为:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz;
  3. 解压
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

  解压完成后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf”的文件夹,该文件夹下就是我们的交叉编译工具链。

  1. 修改环境变量
//打开配置文件
sudo vi /etc/profile
// 在配置文件中添加如下一行内容
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

在这里插入图片描述

  1. 重启Ubuntu系统,交叉编译工具链就安装成功了。
  2. 安装其它相关库
sudo apt-get install lsb-core lib32stdc++6
  1. 查询版本,验证是否安装成功
arm-linux-gnueabihf-gcc -v

在这里插入图片描述

samba

下面是 samba 服务器环境的搭建过程:

  1. sudo apt-get update
sudo apt-get update
  1. 安装 samba 服务器
sudo apt-get install samba samba-common
  1. 创建共享目录,并设置共享目录的权限
sudo mkdir samba 	// 创建完成之后,我的目录为 /home/jack/linux_imx6ull/samba
sudo chmod 777 . -R	// 将samba目录的权限修改为 777
  1. 修改配置文件
    打开配置文件(vi /etc/samba/smb.conf),并进行如下修改:
[myshare]
comment=my share directory
path=/home/jack/linux_imx6ull/samba
browseable=yes
public=yes
writable=yes

在这里插入图片描述

  1. 设置密码
$ sudo smbpasswd -a jack	// 添加一个用户,jack
New SMB password: 			// 创建一个密码
Retype new SMB password:	// 再次确认密码
Added user jack.			// jack用户添加成功
  1. 重启samba服务器
sudo service smbd restart
  1. 在Windows上执行win+R,输入Ubuntu的IP地址,如我的IP是192.168.100.113
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode【69. x 的平方根】

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#xff1…

FPGA原理与结构(0)——目录与传送门

一、 简介 FPGA的设计和软件设计不同,我们所设计的RTL代码最终还是要落实到硬件底层来进行实例化,因此理解硬件底层的内容是很有意义的。 二、可编程逻辑块CLB 可配置逻辑块CLB(Configurable Logic Block)是xilinx系类FPGA的基本…

操作系统--------调度算法篇

目录 一.先来先服务调度算法(FCFS) 二.短作业优先调度算法(SJF) 2.1.SJF调度算法缺点 三.优先级调度算法 3.1优先级调度算法的类型 1.非抢占优先级调度算法 2.抢占优先级调度算法 3.2优先级的类型 3.1静态优先级 3.2动态…

肖sir__mysql之存储练习题__013

实验 一、 实验要求: 理解存储过程的概念掌握存储过程的语法格式、使用方法掌握存 储过程的创建、执行 二、实验前提: – drop table if exists student; – Create table student – (Id varchar(255), #学号 – Name varchar(255), #姓名 – Roomid…

生成式模型和判别式模型区别

目录 1.概念 2.定义​ 3.举例​ (1)例子 A​ (2)例子 B​ 4.特点 5.优缺点 6.代表算法 1.概念 首先我们需要明确,两种不同的模型都用于监督学习任务中。监督学习的任务就是从数据中学习一个模型,并用…

golang优先级坑

看如下代码,我本以为a1, a2是相同的 package mainimport "fmt"func main() {b, c, d : 1, 0, 1a1 : b ^ c&(^d) // 1 ^a2 : c ^ b&(^d) // 0 ^fmt.Println(a1, a2) // 1 0 }但结果却是不同的,在golang中&的优先级^和|…

使用 PyTorch 的计算机视觉简介 (1/6)

一、说明 Computer Vision(CV)是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗,到更复杂的任务,例如用自然语言描述图像。 二、CV常见的问…

RocketMQ高性能核心原理与源码架构剖析

文章目录 1、源码环境搭建1.1、主要功能模块1.2、源码启动服务1.2.1、 启动nameServer1.2.2、 启动Broker1.2.3、 发送消息1.2.4、 消费消息 2、源码剖析2.1、NameServer的启动过程2.2、Broker服务启动过程2.3、Netty服务注册框架2.3.1、关注重点2.3.2、源码重点 1、源码环境搭…

AJAX学习

文章目录 创建 XMLHttpRequest 对象向服务器发送请求XMLHttpRequest.open()XMLHttpRequest.send()GET或POST 服务器响应XMLHttpRequest 的属性XMLHttpRequest.readyStateXMLHttpRequest.onreadystatechangeXMLHttpRequest.responseXMLHttpRequest.responseTypeXMLHttpRequest.r…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(7)聊天机器人 / ChatBot

聊天机器人 / ChatBot 使用大型语言模型来构建你的自定义聊天机器人 在本视频中,你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。 环境准备 首先,我们将像往常一样设置OpenAI Python包。 import os import openai from dotenv import…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

vue3——pixi初学,编写一个简单的小游戏,复制粘贴可用学习

pixi官网 小游戏效果 两个文件夹 一个index.html 一个data.js //data.js import { reactive } from "vue"; import { Sprite, utils, Rectangle, Application, Text, Graphics } from "pixi.js";//首先 先创建一个舞台 export const app new Applicat…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本:QT Creator 10.0.2 (community),MingW 6.4.3 (QT6),MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL"),这个时候是不支持MYSQL数据…

[极客大挑战 2019]RCE ME 取反绕过正则匹配 绕过disable_function设置

目录 取反 1.蚁剑插件绕过 2.baypass disable_function open_dir/disable_function putenv()/LD_PRELOAD 来绕过限制 利用条件 利用思路 有意思。。。。 <?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("Th…

windbg -I之后如何恢复原有的

直接运行了一下windbg -I&#xff0c;抓取了注册表行为&#xff0c;然后这里记录一下&#xff0c;方便翻阅。 抓取到的windbg的注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger 将值改为 "C:\WINDOWS\system32\vsji…

git 本地工作区和仓库区基本使用

(1)git 本地有三个区 工作区和暂存区和 git管理的仓库. &#xff08;自行动手实践理解,然后就入门了&#xff09;(2)本地初次使用git做的事情,需要做如下工作 git config --global user.name "xx" git config --global user.email xxxqq.com git config --globa…

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

编写第一个Go程序

编写第一个Go程序 1. 开发环境构建 在Go语言中&#xff0c;开发环境的构建需要设置GOPATH环境变量。在1.8版本之前&#xff0c;必须显式设置GOPATH环境变量。而在1.8版本及之后&#xff0c;如果没有设置GOPATH&#xff0c;Go将使用默认值。 在Unix系统上&#xff0c;默认值为…

基于YOLOv8模型的条形码二维码检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的条形码二维码检测系统可用于日常生活中检测与定位条形码与二维码目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测…

Android12之仿Codec2.0实现传递编解码器组件本质(四十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…