Ubuntu22.04虚拟机通过NFS连接开发板

在进行Linux驱动开发时,通过NFS将虚拟机上的文件系统挂载到开发板上遇到错误,原因是NFS服务版本不兼容。解决方案包括修改虚拟机的NFS配置,启用V2版本支持,并调整相关服务选项,使低版本开发板能成功挂载NFS文件系统。

在学习驱动开发是,为了方便编译,通过NFS将Linux的跟文件目录挂载到开发板的系统上。

1. 首先在虚拟机上安装NFS:

sudo apt-get install nfs-kernel-server rpcbind

2. 在虚拟机上新建文件夹,配置nfs,使得开发板可以通过网络来访问nfs文件夹:

sudo vi /etc/exports

打开/etc/exports 后,在文件最后添加以下内容:

/home/zuozhongkai/linux/nfs *(rw,sync,no_root_squash)

3. 重启NFS服务

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

在构建好根文件系统之后,通过设置环境变量将根文件系统挂载到开发板上:

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.250:/home/zuozhongkai/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.251:192.168.1.250:192.168.1.1:255.255.255.0::eth0:off' //设置 bootargs
saveenv //保存环境变量

在开启系统之后出现如下错误:

VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
0100           65536 ram0  (driver?)
0101           65536 ram1  (driver?)
0102           65536 ram2  (driver?)
0103           65536 ram3  (driver?)
0104           65536 ram4  (driver?)
0105           65536 ram5  (driver?)
0106           65536 ram6  (driver?)
0107           65536 ram7  (driver?)
0108           65536 ram8  (driver?)
0109           65536 ram9  (driver?)
010a           65536 ram10  (driver?)
010b           65536 ram11  (driver?)
010c           65536 ram12  (driver?)
010d           65536 ram13  (driver?)
010e           65536 ram14  (driver?)
010f           65536 ram15  (driver?)
b300         1943552 mmcblk0  driver: mmcblk
  b301         1942528 mmcblk0p1 70682931-01
b310         7634944 mmcblk1  driver: mmcblk
  b311          131072 mmcblk1p1 40bcc898-01
  b312         7493632 mmcblk1p2 40bcc898-02
b340             512 mmcblk1rpmb  (driver?)
b330            4096 mmcblk1boot1  (driver?)
b320            4096 mmcblk1boot0  (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

在分析之后发现,是开发板安装的NFS服务版本过低,Ubuntu22.04下载的NFS版本高,默认情况下不支持较低版本NFS挂载服务,需要我们手动对配置进行修改。
首先查看虚拟机支持的NFS版本,在终端输入指令

sudo cat /proc/fs/nfsd/versions

发现为

“-2"表示系统不支持V2版本的NFS,”+3"表示支持V3版本的NFS。

解决办法:

在终端中输入vim /etc/default/nfs-kernel-server,在nfs-kernel-server文件中添加以下内容

RPCNFSDCOUNT="-V 2 8";
RPCMOUNTDOPTS="-V 2 --manage-gids";
RPCSNFSDOPTS="--nfs-version 2,3,4 --debug --syslog";

更改后保存文件

# Number of servers to start up
RPCNFSDCOUNT="-V 2 8"

# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information, 
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="-V 2 --manage-gids"

# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=""

# Options for rpc.svcgssd.
RPCSVCGSSDOPTS=""
RPCSNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

再在终端中输入sudo vim /etc/nfs.conf,将文件中的udp和ver2打开

[nfsd]
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
udp=y
# tcp=y
vers2=y
# vers3=y
# vers4=y
# vers4.0=y
# vers4.1=y
# vers4.2=y
# rdma=n
# rdma-port=20049

设置好后,重启nfs服务,发现开发板可以将nfs文件中的根目录挂载到开发板上

can-3v3: disabling
ALSA device list:
  No soundcards found.
VFS: Mounted root (nfs filesystem) readonly on device 0:15.
devtmpfs: mounted
Freeing unused kernel memory: 404K (8090f000 - 80974000)
<think>首先,用户的问题是:在MacBook ARM架构下,Ubuntu 22.04虚拟机中配置Git(包含SSH密钥、用户名和邮箱)的方法。 关键点: - MacBook ARM架构:意味着主机是苹果的ARM芯片,如M1、M2。 - Ubuntu 22.04虚拟机虚拟机运行的是Ubuntu 22.04- 配置Git:包括设置SSH密钥、用户名和邮箱。 我需要参考用户提供的引用,但它们似乎不是直接相关的: - 引用[1]:描述了在MacOS上生成SSH密钥并将其发送到Ubuntu虚拟机,用于SSH登录。 - 引用[2]:关于Windows环境中Ubuntu虚拟机SSH连接开发板的操作。 - 引用[3]:关于ARM-Linux移植SSH的配置。 用户说这些引用仅供参考,不是真正的需求,我应该参考用户上一次的问题和我的回答。但在这个对话中,这是第一次用户的问题,所以没有上一个问题。相反,这是我的第一个回应。 用户指令是:"请尽可能多的参考用户上一次的问题和你的回答",但既然这是新的对话,我需要专注于当前问题。 现在,核心任务是解释如何在MacBook ARM架构下的Ubuntu 22.04虚拟机中配置Git,包括: 1. 生成SSH密钥。 2. 设置Git用户名和邮箱。 3. 可能的其他Git配置。 步骤概述: 1. **在Ubuntu虚拟机中操作**:因为Git配置是在Ubuntu VM中进行。 2. **前提条件**:确保Ubuntu VM已安装Git。 3. **SSH密钥生成**: -Ubuntu虚拟机中生成SSH密钥。 - 类似于引用[1]中的方法,但这是在VM内部生成。 4. **Git配置**: - 设置全局用户名和邮箱。 - 配置SSH密钥用于Git操作(如连接到GitHub)。 5. **MacBook ARM架构的影响**:由于主机是ARM,但虚拟机Ubuntu 22.04Ubuntu 22.04有ARM版本,所以应该兼容。配置Git的方法在ARM Ubuntu上应该与x86相同,因为Git和SSH是平台无关的。 详细步骤: 1. **安装Git**(如果未安装): -Ubuntu VM中,打开终端。 - 运行命令:`sudo apt update && sudo apt install git -y` 2. **生成SSH密钥**: - 参考引用[1]的方法,但稍作修改。 - 命令:`ssh-keygen -t ed25519 -C "your_email@example.com"`(推荐使用ed25519,安全且高效) - 保存密钥到默认位置(如 ~/.ssh/id_ed25519)。 - 或者,使用RSA:`ssh-keygen -t rsa -b 4096 -C "your_email@example.com"` - 添加公钥到GitHub或GitLab等:复制 ~/.ssh/id_ed25519.pub 内容到账户设置。 3. **设置Git用户名和邮箱**: - 命令: - `git config --global user.name "Your Name"` - `git config --global user.email "your_email@example.com"` 4. **配置SSH代理(可选)**: - 启动SSH代理:`eval "$(ssh-agent -s)"` - 添加私钥:`ssh-add ~/.ssh/id_ed25519` 5. **测试SSH连接**: - 例如,连接到GitHub:`ssh -T git@github.com` - 应该看到欢迎消息。 关于MacBook ARM架构:Ubuntu虚拟机应该运行在ARM版本(如Ubuntu 22.04 ARM64),使用Parallels Desktop或UTM等支持ARM虚拟化的软件。配置Git的过程在VM内部是标准的,不受主机架构直接影响。 用户可能关心从MacOS主机访问VM,但问题焦点是虚拟机内部的Git配置。 生成相关问题: - 指令要求:"生成相关问题",所以我需要在回答末尾添加相关问题。 - 示例相关问题:"1. 如何在MacOS主机上配置SSH连接Ubuntu虚拟机? 2. 如何将SSH密钥复制到GitHub? 3. Git配置的最佳实践是什么?" 回答结构: - 使用中文回答。 - 结构清晰:介绍、步骤、总结。 - 引用标识:如果引用站内内容,添加如[^1]。 - 在回答中,自然地引用用户提供的引用,如果相关。 - 引用[1]涉及SSH密钥生成和配置,我可以参考它。 - 引用[2]和[3]不太相关,但提到虚拟机环境,我可以略提。 最终回答大纲: 1. 介绍:解释在Ubuntu VM中配置Git的步骤。 2. 步骤: - 安装Git - 生成SSH密钥(参考引用[1]) - 设置Git用户名和邮箱 - 测试配置 3. 总结。 4. 相关问题。 </think>### 在MacBook ARM架构下Ubuntu 22.04虚拟机配置Git(含SSH密钥、用户名和邮箱)的方法 在MacBook ARM架构(如M1/M2芯片)上运行的Ubuntu 22.04虚拟机中配置Git,主要包括生成SSH密钥、设置Git全局用户名和邮箱等步骤。Ubuntu虚拟机(如使用Parallels Desktop或UTM虚拟化软件)在ARM架构下兼容Git操作,配置方法与标准Linux类似。以下是详细步骤(所有操作均在Ubuntu虚拟机内执行): #### 步骤1: 安装Git(如未安装) - 打开终端(Terminal)。 - 更新软件包列表并安装Git: ```bash sudo apt update && sudo apt install git -y ``` - 验证安装:`git --version`,应显示版本号(如 `git version 2.34.1`)。 #### 步骤2: 生成SSH密钥 - SSH密钥用于安全连接到GitHub、GitLab等平台(类似引用[1]中密钥管理方法[^1])。 - 在终端运行密钥生成命令: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" # 推荐ed25519算法,安全高效 ``` - 提示时,按Enter使用默认保存路径(`~/.ssh/id_ed25519`)。 - 设置强密码(可选,增强安全性)。 - 生成的公钥文件为 `~/.ssh/id_ed25519.pub`,私钥文件为 `~/.ssh/id_ed25519`。 #### 步骤3: 添加SSH密钥到代理(可选但推荐) - 启动SSH代理: ```bash eval "$(ssh-agent -s)" # 输出类似 "Agent pid 12345" ``` - 添加私钥到代理: ```bash ssh-add ~/.ssh/id_ed25519 ``` 输入密钥密码(如果设置了)。 #### 步骤4: 设置Git全局用户名和邮箱 - 配置全局用户名(替换 `Your Name` 为你的姓名): ```bash git config --global user.name "Your Name" ``` - 配置全局邮箱(替换 `your_email@example.com` 为你的邮箱): ```bash git config --global user.email "your_email@example.com" ``` - 验证配置:`git config --global --list`,检查 `user.name` 和 `user.email` 是否正确。 #### 步骤5: 测试SSH连接到Git平台 - 将公钥添加到GitHub或GitLab: - 复制公钥内容:`cat ~/.ssh/id_ed25519.pub`。 - 登录GitHub > Settings > SSH and GPG keys > Add new key,粘贴并保存。 - 测试连接: ```bash ssh -T git@github.com # 测试GitHub;对GitLab使用 git@gitlab.com ``` 成功时显示:`Hi username! You&#39;ve successfully authenticated...`。 #### 注意事项 - **ARM架构兼容性**:Ubuntu 22.04 ARM64版本在MacBook ARM主机上运行良好,Git和SSH命令无差异。 - **虚拟机环境**:务必在Ubuntu虚拟机内执行上述步骤(而非MacOS主机)。虚拟机的网络需正常访问互联网。 - **密钥管理**:如果您需要从MacOS主机访问虚拟机,可参考引用[1]的SSH配置方法配置主机到虚拟机连接[^1]。 - **安全提示**:定期更新Git和OpenSSH:`sudo apt upgrade git openssh-client`。 #### 验证Git操作 - 测试克隆仓库: ```bash git clone git@github.com:username/repo.git # 替换为实际仓库URL ``` 如果成功,则配置完成。 以上步骤确保Git配置完整,适用于开发或协作场景。如果遇到问题,请检查虚拟机网络或SSH密钥权限(确保 `~/.ssh` 目录权限为700)。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值