ubuntu 20.04挂载固态硬盘

我们有个工控机,其操作系统是ubuntu 20.04。可以接入一个固态硬盘。将固态硬盘插好后,就要进行挂载。在AI的指导下,过程并不顺利。记录如下:
在这里插入图片描述
在这里插入图片描述

1、检查硬盘是否被识别

安装好硬盘后,运行以下命令来检查Linux系统是否已识别新硬盘:

lsblk

结果如下

forlinx@FCU2601:~$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    0 953.9G  0 disk
mmcblk0      179:0    0  28.9G  0 disk
|-mmcblk0p1  179:1    0     4M  0 part
|-mmcblk0p2  179:2    0     4M  0 part
|-mmcblk0p3  179:3    0    32M  0 part
|-mmcblk0p4  179:4    0    32M  0 part
|-mmcblk0p5  179:5    0    32M  0 part
`-mmcblk0p6  179:6    0  28.8G  0 part /
mmcblk0boot0 179:32   0     4M  1 disk
mmcblk0boot1 179:64   0     4M  1 disk

可以看到,有一个名为"sda"的盘被识别了。lsblk 是一个命令行工具,用于列出系统中所有存储设备的信息,基于 Linux 系统的主机使用它来显示有关可用块设备的信息。“lsblk” 代表 “list block devices”,即列出块设备。

2. 分区

sudo fdisk /dev/sda

为啥是/dev/sda 呢?在lsblk命令中,我们看到的明明是sda啊。在Linux系统中,设备文件是用户空间与内核空间交互的一种方式,它们通常位于/dev目录下。这个目录包含了所有设备的特殊文件,包括硬盘、分区、USB设备、声卡等,dev是所有设备文件所在的目录,因此要以“/dev”开头。

而sda则是系统为外接的硬盘自动分配的名字。sd本来代表“SCSI disk”,但泛指硬盘,a是序号,第一个是sda,第二个是sdb,。。。

在 fdisk 中操作如下:

输入 n 创建一个新分区:
选择 p(主分区)
分区号直接回车(默认1)
起始扇区回车(默认)
结束扇区回车(整个磁盘)
输入 w 保存并退出。

此时应该看到一个新的分区 /dev/sda1:

forlinx@FCU2601:/mnt/sda$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    0 953.9G  0 disk
`-sda1         8:1    0 953.9G  0 part
mmcblk0      179:0    0  28.9G  0 disk
|-mmcblk0p1  179:1    0     4M  0 part
|-mmcblk0p2  179:2    0     4M  0 part
|-mmcblk0p3  179:3    0    32M  0 part
|-mmcblk0p4  179:4    0    32M  0 part
|-mmcblk0p5  179:5    0    32M  0 part
`-mmcblk0p6  179:6    0  28.8G  0 part /
mmcblk0boot0 179:32   0     4M  1 disk
mmcblk0boot1 179:64   0     4M  1 disk

3. 格式化为 ext4 文件系统

sudo mkfs.ext4 /dev/sda1

为什么要格式化为ext4文件系统?

ext4 是 Linux 系统中最常用、最稳定、兼容性最好的文件系统之一,适合大多数使用场景。格式化是为了让这块新硬盘能被 Linux 正确识别和使用。网上有些教程给出的例子是格式化为fuseblk,其实这可能是将固态硬盘当成U盘用,可插拔,而我是想永久性地扩展工控机的存储空间,因此还是选用ext4。

4. 创建挂载点目录

创建一个目录,用它指向固态硬盘。访问它即等于访问固态硬盘。

sudo mkdir /mnt/sda

这个名字自己起的,但mnt是约定俗成的名称,它是 Unix 和 Linux 系统中的一个传统目录,用于作为“挂载点”(mount point)来临时挂载文件系统的标准位置。这个目录的名称是“mount”的缩写,意指在此处挂载(mount)其他文件系统或外部存储设备。

5. 挂载

1)手动挂载

sudo mount -t ext4 /dev/sda1 /mnt/sda

将设备 /dev/sda1 这个分区挂载(mount)到 /mnt/sda 这个目录下,并指定文件系统类型为 ext4。但本语句只是临时挂载,当操作系统重启后,挂载即消失。应该使用下面的挂载方式。

-t ext4,指定要挂载的设备上的文件系统类型是 ext4。

2)自动挂载(写入 fstab)

修改系统文件/etc/fstab。这是一个非常重要的系统配置文件,在 Linux 系统中用于定义开机时自动挂载的文件系统(磁盘分区、网络存储等)。

首先备份一下

sudo cp /etc/fstab /etc/fstab.bak

打开文件:

sudo vi /etc/fstab

然后在文件/etc/fstab末尾加上一句:

/dev/sda1 /mnt/sda ext4 defaults 0 2

在这里插入图片描述
有关本语句的一些解释:

<挂载选项>:defaults
作用:设置挂载时的权限和行为。
defaults 的含义:是以下常用选项的缩写:
rw:可读可写(若设为 ro 则为只读)。
suid:允许设置 SUID 权限(用于某些特殊程序)。
dev:允许访问设备文件(如 /mnt/sda 下的 cdrom)。
exec:允许执行可执行文件(若设为 noexec 则禁止)。
auto:系统启动时自动挂载(若设为 noauto 则需手动挂载)。
nouser:普通用户不能挂载(只有 root 可挂载)。
async:异步读写(提升性能,但可能丢失数据,默认)。
自定义选项示例:
允许普通用户挂载:defaults,user
禁止自动挂载:defaults,noauto
强制为只读:ro

:0
作用:指定是否对该分区进行备份(由 dump 工具使用,现代系统几乎不用)。
值说明:
0:不备份。
1:每天备份。
2:不定期备份。
现状:多数场景下直接设为 0 即可。

:2
作用:指定系统启动时执行磁盘检查(fsck)的顺序。
值说明:
0:不检查(如 swap 分区、U 盘)。
1:优先检查根分区(/)(确保系统盘无错)。
2:检查其他分区(如数据盘、挂载的硬盘)。
注意:根分区必须设为 1,其他分区设为 2 或 0(非 ext4 格式设为 0)。

6. 权限分配

我目录挂载了以后,只有root才能写入,当前用户只读。人工智能一味地说,这个应该在fstab文件中设置。问题是,root可以写入啊,步骤5的自动挂载语句/dev/sda1 /mnt/sda ext4 defaults 0 2中,defaults就包含了指明挂载设备可读可写,而当前用户不能写入,是权限的问题,而并不是因为挂载时设为只读,相反,我们挂载时是指定可读可写的。

咋办呢?修改挂载目录的owner为当前用户

sudo chown forlinx:forlinx /mnt/sda  # 设置当前用户为所有者

7. 问题

在步骤5的自动挂载里,踩了一个坑。人工智能指点我,挂载的时候,要用UUID才够准确,但事实证明,采用UUID挂载,反而不能成功,不知道为什么。

1)为了获得固态硬盘的UUID,先运行语句

forlinx@FCU2601:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="be676f65-feb3-4c68-bfac-b28649d605a5" TYPE="ext4" PARTUUID="53591fcc-01"

2)然后在/etc/fstab中加入挂载语句:

UUID=be676f65-feb3-4c68-bfac-b28649d605a5 /mnt/sda ext4 defaults 0 2

在这里插入图片描述
但事实上行不通,这样修改了fstab后,重启操作系统以后,根本没有挂载成功。如果手动挂载,运行语句“sudo mount -a”,还会报错:

forlinx@FCU2601:~/work/temp$ sudo mount -a
mount: /mnt/sda: wrong fs type, bad option, bad superblock on /dev/sda1, missing codepage or helper program, or other error.

一定是这样才行:

在这里插入图片描述

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

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

相关文章

涂装协作机器人:重新定义涂装工艺的智能化未来

一、涂装场景的产业变革与核心诉求 1.1 千亿级市场的技术突围战 在汽车制造领域&#xff0c;涂装车间被称为"工业化妆间"&#xff0c;其工艺质量直接影响产品溢价能力。当前行业面临三重挑战&#xff1a; 质量维度&#xff1a;传统人工喷涂存在膜厚波动15μm的行业…

Unity优化篇之DrawCall

当然可以&#xff01;以下是完整、详尽、可发布的博客文章&#xff0c;专注讲解 Unity 的静态合批与动态合批机制&#xff0c;并详细列出它们对 Shader 的要求和所有限制条件。文章结构清晰、技术深度足够&#xff0c;适合发布在 CSDN、掘金、知乎等技术平台。 urp默认隐藏动态…

Electron桌面应用下,在拍照、展示pdf等模块时,容易导致应用白屏

Electron 应用白屏问题分析与解决方案 Electron 应用中拍照、PDF展示等模块导致白屏的常见原因通常与内存泄漏、渲染进程崩溃或资源加载超时有关。以下是具体排查与解决方法&#xff1a; 检查内存泄漏 项目中&#xff0c;分析代码&#xff0c;高频操作或未释放的资源可能导致…

比对++Hex or Bin文件

用NotePad 安装 ​​ Hex-Editor 插件 1.1参考方法路径https://cloud.tencent.com/developer/article/2311013 1.2 下载 Hex-Editor.dll文件路劲 https://sourceforge.net/projects/npp-plugins/ 比对 2.1, 显示Bin 插件/Hex Editor/View in Hex 2.2 插件/Compare(运行很不流…

以STM32H7微控制器为例,简要说明stm32h7xx_it.c的作用

在STM32开发中&#xff0c;stm32h7xx_it.c文件是中断服务例程&#xff08;ISR, Interrupt Service Routine&#xff09;的核心实现文件&#xff0c;其作用与产生的逻辑如下&#xff1a; 一、文件的核心作用 中断处理入口 该文件定义了STM32H7微控制器所有硬件中断和异常的处理函…

若依框架页面缓存查询条件后,切换页面想重新请求一下数据

因为框架使用了Keep-Alive缓存组件&#xff0c;所以使用onActivated钩子 import { onActivated } from vue;// 当组件从缓存中重新激活时 onActivated(() > {getList(); });

智能心理医疗助手开发实践:从技术架构到人文关怀——CangjieMagic情感医疗应用技术实践

作为一名长期耕耘在医疗健康领域的技术开发者&#xff0c;我至今仍清晰地记得三年前那个深夜——当我调试的心理健康AI第一次对用户的情绪崩溃做出恰当回应时&#xff0c;整个团队爆发的欢呼声。那一刻&#xff0c;我深刻意识到技术不只是冰冷的逻辑&#xff0c;更可以成为温暖…

汉诺塔问题深度解析

汉诺塔问题深度解析 一、汉诺塔问题的起源与背景1.1 问题起源1.2 历史发展 二、汉诺塔问题的描述与规则2.1 问题描述2.2 示例说明 三、汉诺塔问题的递归求解原理3.1 递归思想概述3.2 汉诺塔问题的递归分解3.3 递归调用栈分析 四、汉诺塔问题的多语言实现4.1 Python实现4.2 C实现…

【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案

目录 &#x1f4da; 目录&#xff1a;洞悉症结&#xff0c;精准施治 &#x1f50d; 一、精准剖析&#xff1a;CERT_HAS_EXPIRED 的本质 &#x1f575;️ 二、深度溯源&#xff1a;证书失效的 N 重诱因 &#x1f4a1; 三、高效解决策略&#xff1a;六脉神剑&#xff0c;招招…

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…

Double/Debiased Machine Learning

独立同步分布的观测数据 { W i ( Y i , D i , X i ) ∣ i ∈ { 1 , . . . , n } } \{W_i(Y_i,D_i,X_i)| i\in \{1,...,n\}\} {Wi​(Yi​,Di​,Xi​)∣i∈{1,...,n}}&#xff0c;其中 Y i Y_i Yi​表示结果变量&#xff0c; D i D_i Di​表示因变量&#xff0c; X i X_i Xi​表…

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(八):异步处理逻辑详解

在现代 Web 应用中&#xff0c;异步处理是实现流畅交互的核心技术。本文基于前几章实现的内容Tailwind CSS 实战&#xff1a;基于 Kooboo 构建 AI 对话框页面&#xff08;七&#xff09;&#xff1a;消息框交互功能添加-CSDN博客&#xff0c;深入解析 AI 对话框页面中异步逻辑的…

Asp.net Core 通过依赖注入的方式获取用户

思路&#xff1a;Web项目中&#xff0c;需要根据当前登陆的用户&#xff0c;查询当前用户所属的数据、添加并标识对象等。根据请求头Authorization 中token&#xff0c;获取Redis中存储的用户对象。 本做法需要完成 基于StackExchange.Redis 配置&#xff0c;参考&#xff1a;…

Vue3 + UniApp 蓝牙连接与数据发送(稳定版)

本教程适用于使用 uni-app Vue3 (script setup) 开发的跨平台 App&#xff08;支持微信小程序、H5、Android/iOS 等&#xff09; &#x1f3af; 功能目标 ✅ 获取蓝牙权限✅ 扫描周围蓝牙设备✅ 连接指定蓝牙设备✅ 获取服务和特征值✅ 向设备发送数据包&#xff08;ArrayBu…

Docker + Nginx + Logrotate 日志管理与轮换实践

概述与背景 Docker 容器化环境中 Nginx 日志管理的挑战Logrotate 的作用与必要性结合场景的实际需求&#xff08;如日志切割、压缩、归档&#xff09; Docker 环境下的 Nginx 日志配置 Nginx 日志路径与 Docker 数据卷映射 volumes:- ./nginx/logs:/var/log/nginxLogrotate …

涂胶协作机器人解决方案 | Kinova Link 6 Cobot在涂胶工业的方案应用与价值

涂胶工业现状背景&#xff1a; 涂胶工艺在汽车制造、电子组装、航空航天等工业领域极为关键&#xff0c;关乎产品密封、防水、绝缘性能及外观质量。 然而&#xff0c;传统涂胶作业问题频发。人工操作重复性强易疲劳&#xff0c;涂胶质量波动大&#xff1b;大型涂胶器使用增加工…

释放模型潜力:浅谈目标检测微调技术(Fine-tuning)

引言 在计算机视觉领域&#xff0c;目标检测是一项至关重要的任务&#xff0c;它不仅要识别出图像中存在哪些物体&#xff0c;还要精确地定位它们的位置。从自动驾驶汽车识别行人与车辆&#xff0c;到医疗影像辅助诊断病灶&#xff0c;再到智能安防监控异常事件&#xff0c;目标…

Unreal从入门到精通之 UE4 vs UE5 VR性能优化实战

文章目录 前言:准备工作UE4 vs UE5 性能对比引擎核心技术方案对比UE5 优化总结项目设置可伸缩性组设置VolumetricCloud最后前言: 最近在使用UE5制作VR项目 制作完后发现,我们的场景一直很卡顿,场景优化也做到了极致,但是帧率最高也才30+ 但是我们看到一个竞品,他的帧率竟…

爆炸仿真的学习日志

今天学习了一下【Workbench LS-DYNA中炸药在空气中爆炸的案例-哔哩哔哩】 https://b23.tv/kmXlN29 一开始 如果你的 ANSYS Workbench 工具箱&#xff08;Toolbox&#xff09;里 只有 SPEOS&#xff0c;即使尝试了 右键刷新、重置视图、显示全部 等方法仍然没有其他分析系统&a…