1. 虚拟机基础服务环境搭建概述
作为一名长期从事嵌入式开发的工程师,我深知一个高效的Linux开发环境对工作效率的重要性。虚拟机作为开发环境的基础平台,搭建好常用服务可以极大提升开发体验。本文将详细介绍如何在Ubuntu虚拟机中配置SSH、Samba、NFS等核心服务,这些都是嵌入式Linux开发中不可或缺的基础设施。
为什么要使用虚拟机搭建开发环境?首先,虚拟机提供了与主机隔离的独立空间,可以避免污染主机环境;其次,虚拟机可以方便地备份和迁移;最重要的是,通过配置这些服务,我们可以实现:
- 通过SSH远程访问虚拟机,摆脱虚拟化软件界面限制
- 通过Samba实现与Windows主机的文件共享
- 通过NFS服务为开发板提供网络文件系统
这些服务配置看似简单,但实际部署中会遇到各种"坑",本文将结合我多年的实践经验,不仅介绍标准安装步骤,还会分享那些官方文档不会告诉你的实用技巧和问题排查方法。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SSH服务配置与优化
2.1 SSH服务基础安装
SSH(Secure Shell)是Linux系统远程管理的标准工具,它通过加密通道提供安全的命令行访问。在虚拟机中配置SSH服务后,我们就可以使用专业的终端工具(如MobaXterm、SecureCRT等)连接虚拟机,获得比虚拟化软件自带终端更好的使用体验。
安装步骤如下:
bash复制# 更新软件包索引
sudo apt update
# 安装OpenSSH服务器
sudo apt install -y openssh-server
# 检查服务状态
sudo systemctl status ssh
安装完成后,SSH服务会自动启动并监听22端口。如果看到"active (running)"状态,说明服务已正常运行。
注意:在较新的Ubuntu版本中,SSH服务可能默认已安装但未启用。如果发现服务未运行,可以使用
sudo systemctl start ssh手动启动。
2.2 SSH服务安全加固
默认配置的SSH服务存在一定安全风险,建议进行以下加固:
- 修改默认端口:将SSH端口从22改为其他高位端口(如2222),可以减少自动化攻击的风险。
bash复制sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
- 禁用root登录:防止攻击者直接尝试破解root账户。
bash复制sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
- 启用密钥认证:比密码认证更安全,且可以免密码登录。
bash复制# 在客户端生成密钥对
ssh-keygen -t rsa
# 将公钥上传到服务器
ssh-copy-id -p 2222 username@server_ip
# 在服务器上禁用密码认证(确保密钥登录可用后再执行)
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
修改配置后,需要重启SSH服务使更改生效:
bash复制sudo systemctl restart ssh
2.3 SSH客户端连接实践
以MobaXterm为例,连接SSH服务器的步骤如下:
- 打开MobaXterm,点击"Session"->"SSH"
- 输入虚拟机IP地址和SSH端口(默认为22,如果修改过则填写修改后的端口)
- 输入用户名和密码(或选择密钥文件)
- 点击"OK"连接
连接成功后,你将获得一个功能完整的终端界面,支持多标签、文件传输、X11转发等高级功能,远比虚拟化软件自带的终端强大。
常见问题:如果连接时出现"Connection refused"错误,请检查:
- SSH服务是否正在运行(
systemctl status ssh)- 防火墙是否放行了SSH端口(
sudo ufw allow 2222/tcp)- 虚拟机网络配置是否正确(桥接/NAT模式)
3. Samba服务配置与共享设置
3.1 Samba服务基础安装
Samba是Linux与Windows之间文件共享的桥梁,它实现了SMB/CIFS协议,允许Windows系统直接访问Linux共享目录。对于嵌入式开发来说,Samba特别适合用于:
- 在Windows主机上编辑Linux虚拟机中的代码
- 在开发团队间共享项目文件
- 快速传输大文件到虚拟机
安装Samba服务:
bash复制sudo apt update
sudo apt install -y samba samba-common-bin
3.2 Samba共享配置详解
Samba的主配置文件是/etc/samba/smb.conf,下面是一个兼顾安全性和便利性的配置示例:
ini复制[global]
workgroup = WORKGROUP
server min protocol = SMB2
security = user
map to guest = Bad User
guest account = nobody
log file = /var/log/samba/log.%m
max log size = 1000
[DevShare]
path = /home/developer/shared
browseable = yes
read only = no
guest ok = no
valid users = developer
create mask = 0664
directory mask = 0775
force user = developer
force group = developer
关键配置说明:
workgroup:必须与Windows主机的工作组一致(默认为WORKGROUP)server min protocol:禁用不安全的SMBv1协议security = user:启用用户认证valid users:指定允许访问共享的用户force user/group:确保新建文件的属主正确
创建共享目录并设置权限:
bash复制sudo mkdir -p /home/developer/shared
sudo chown -R developer:developer /home/developer/shared
sudo chmod -R 775 /home/developer/shared
添加Samba用户(需先存在系统用户):
bash复制sudo smbpasswd -a developer
重启Samba服务使配置生效:
bash复制sudo systemctl restart smbd nmbd
3.3 Windows访问Samba共享
在Windows文件资源管理器中,输入\\虚拟机IP即可访问共享。例如:
code复制\\192.168.1.100
系统会提示输入用户名和密码,使用之前设置的Samba用户凭据登录即可。
实用技巧:在Windows中映射网络驱动器,可以更方便地访问Linux共享:
- 右键"此电脑"->"映射网络驱动器"
- 选择驱动器号,输入共享路径(如
\\192.168.1.100\DevShare)- 勾选"重新连接时重新连接",输入凭据
- 完成后,共享目录会像本地磁盘一样显示
3.4 Samba常见问题排查
-
无法访问共享:
- 检查防火墙设置:
sudo ufw allow samba - 确认Samba服务运行状态:
systemctl status smbd - 查看日志:
tail -f /var/log/samba/log.*
- 检查防火墙设置:
-
权限问题:
- 确保共享目录权限正确:
ls -ld /path/to/share - 检查SELinux状态(如果启用):
getenforce
- 确保共享目录权限正确:
-
连接速度慢:
- 在
smb.conf的[global]部分添加:ini复制socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
- 在
4. NFS服务配置与开发板挂载
4.1 NFS服务安装与配置
NFS(Network File S
