如何在安装 UOS 桌面版的笔记本电脑中实现光盘自动挂载?

2024-03-07 09:12

本文主要是介绍如何在安装 UOS 桌面版的笔记本电脑中实现光盘自动挂载?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作系统支持现状

插入光盘后,操作系统能够检测到并在桌面文件管理程序窗口中增加光盘图标,需要手动点击光盘图标才能够挂载

网上的方法

修改 /etc/fstab 文件

https://www.linuxquestions.org/questions/linux-newbie-8/automount-dvd-rom-when-dvd-is-inserted-455000/

https://askubuntu.com/questions/342188/how-to-auto-mount-from-command-line

目前看这种方式只能够解决开机自动挂载的问题,开机后才插入光盘不能自动挂载,需要再验证确认下。

autofs 实现光盘自动挂载

autofs 是一个自动挂载文件系统的工具,它可以根据需要自动挂载设备或目录,以便访问文件系统中的内容。它可以用来自动挂载光盘或其他可移动介质。

测试过程:

  1. 安装 autofs
  2. 修改 /etc/auto.master 配置,增加 /etc/auto.cdrom 配置,描述光盘自动挂载配置
  3. 重启 autofs 服务

测试结果:

  1. 在光盘插入后,需要主动访问配置文件中光盘挂载目录才能挂载,不访问不会挂载
  2. 可能需要多次访问才会触发挂载

初步测试确认 autofs 并不能实现自动挂载,网上搜索发现 autofs 支持自动挂载内容,一通尝试没有解决,暂且跳过。

思考

linux 发行版中一般通过 udevd 来实现热插拔事件的监测并根据规则执行相应的配置,能否通过修改 udevd 规则来实现自动挂载光盘呢?

UOS 中原生光盘热插拔事件处理规则

研究确定 /lib/udev/rules.d/80-debian-compat.rules 文件描述了这一规则,相关内容如下:

.....................................................................
ENV{ID_CDROM_DVD_RW}=="?*", \\PROGRAM="/bin/sh -c 'ln -s %k /run/udev/link.dvdrw 2>/dev/null; [ `readlink /run/udev/link.dvdrw` = %k ];", \\SYMLINK+="dvdrw", OPTIONS+="link_priority=-100"
.....................................................................

尝试修改 PROGRAM,在命令最后添加脚本,测试发现稳定性比较差,拔出光盘的处理也不正确。

增加自定义规则自动挂载光盘

搜索互联网并本地测试,最后增加了 /etc/udev/rules.d/99-cdrom.rules 配置文件来实现自动挂载光盘的动作,此文件内容如下:

ACTION=="add",ENV{ID_CDROM_DVD_RW}=="?*", \\PROGRAM="/bin/cdrom_mount.sh"ACTION=="remove",ENV{ID_CDROM_DVD_RW}=="?*", \\PROGRAM="/usr/bin/umount %E{DEVNAME}"

规则描述了在插入光盘时执行 /bin/cdrom_mount.sh 命令,在拔出光盘时执行 umount 命令卸载挂载点。测试发现需要同时修改 udevd systemd 服务的某项配置才能正常工作,最后选用了这种解决方案。

光盘自动挂载弹框问题

使用自定义规则挂载、卸载光盘后,UOS 桌面会弹框,提示卸载一个其它用户挂载的设备,需要认证。
研究相关原理,确定与 UDISKS 模块配置的 polikit 规则有关,相关规则位于 org.freedesktop.UDisks2.policy 文件中。
通过在 /etc/udev/rules.d/10-local.rules 文件中添加如下内容解决了此问题:

KERNEL=="sr*",ENV{UDISKS_IGNORE}="1"

上述配置告诉 udevd 对于 sr 开头的设备文件跳过 UDISKS 模块。

参考链接

https://wiki.archlinuxcn.org/zh-hans/Udisks

这篇关于如何在安装 UOS 桌面版的笔记本电脑中实现光盘自动挂载?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783041

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg