文章目录
- U盘
- udisks
- 自动挂载
- 自动挂载硬盘脚本
- 自动挂载硬盘助手
- 挂载到/media/Volumename
- 挂载loop设备
- 硬盘
- 修改硬盘分区类型
- 给硬盘分区和挂载
- 硬盘启动自动挂载
U盘
udisks
archlinux wiki的udisk文档
提供了 udisksd 守护进程,它实现了用于查询和管理存储设备的 D-Bus 接口;还提供了一个命令行工具 udisksctl,用于查询和使用该守护进程。
u盘插入后会自动设别到这个设备,但是默认不会挂载
自动挂载
自动挂载硬盘脚本
可以使用 udevadm monitor
监测块设备事件并在新的块设备被创建时进行挂载。无用的挂载点会被 udisksd 自动删除,所以删除时不需要额外动作。
#!/bin/bash
pathtoname() {
udevadm info -p "/sys/$1" | awk -v FS== '/DEVNAME/ {print $2}'
}
while read -r _ _ event devpath _; do
if [[ $event == add ]]; then
devname=$(pathtoname "$devpath")
udisksctl mount --block-device "$devname" --no-user-interaction
fi
done < <(stdbuf -o L udevadm monitor --udev -s block)
我的评价:运行一次脚本会在后台创建两个进程,脚本看不太懂
自动挂载硬盘助手
使用基于以写好的自动挂载硬盘助手,如udiskie、dolphin-plugins等
挂载到/media/Volumename
按照udev的规则设置,新建一个规则文件,/etc/udev/rules.d/99-udisks2.rules
# UDISKS_FILESYSTEM_SHARED
# ==1: mount filesystem to a shared directory (/media/VolumeName)
# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName)
# See udisks(8)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
记得自己创建/media目录文件
挂载loop设备
# 挂载ISO镜像
udisksctl loop-setup -r -f image.iso
# 卸载loop设备
udisksctl loop-delete -b /dev/loop0
上面的命令会创建loop设备并显示可以挂载的ISO镜像,卸载后,loop设备会被udev删除
硬盘
修改硬盘分区类型
由于我原来的磁盘是GPT类型的,为保持一致,且GPT分区的优势。并且在增加固态后发现默认的分区类型为dos。所以我需要修改硬盘分区类型。
目前硬盘的分区类型为dos和gpt两种,两种分区类型的区别请查看其他文档
# 查看增加的硬盘设备名
sudo fdisk -l
# 进入交互模式
parted /dev/nvme1n1
parted# mklabel
# 输入分区类型
gpt
给硬盘分区和挂载
# 将新加的硬盘只分为一个分区
fdisk /dev/nvme1n1
> n
> 默认
> 默认
# 格式化为ext4类型。默认ext4类型文件系统会保留5%的空间保证磁盘碎片和root恢复时使用。由于这个磁盘不是系统盘,只用来存储,因此不设置保留空间。
mkfs.ext4 -m 0 /dev/nvme1n1p1
# 挂载
mount /dev/nvme1n1p1 /home/storage
硬盘启动自动挂载
系统启动时读取/etc/fstab文件,自动挂载
fstab介绍
# 查看分区的UUID
lsblk -o name,mountpoint,size,uuid
# fstab文件新增部分
# /dev/nvme1n1p1
UUID=63b53436-7c76-43ff-a277-5dd89f787e45 /home/storage ext4 rw,relatime 0 2