archlinux自动挂载windows的不同盘符(驱动器)
1. 前言
1.1. 需求
双系统windows和archlinux,有时候在windows下编写的代码,在切换成archlinux后,这时需要编辑windows下的代码,但是使用之前,需要在文件管理器中输入密码,会自动挂载到 /run/media/用户名
目录下,挂载的名字是windows驱动器的命名。一般来说,编辑器默认选择打开的目录就是用户家目录。由于挂载的目录不太常用,在打开目录的时候需要手动选择,不太方便。
1.2. 解决思路
可以挂载到用户家目录下。在用户家目录创建一个以windows
为名的目录,接着在windows
目录下创建驱动器的目录,将不同的驱动器挂载到相应的目录,如c盘驱动器的名字是base,d盘驱动器的名字是soft,d盘驱动器的名字是data,在windows目录下分别创建 base、soft、data
三个目录。并分别挂载到它们。
2. 解决过程
2.1. 创建目录
首先在家目录下创建挂载的目录点
1
|
mkdir -p ~/windows/base && mkdir -p ~/windows/soft && mkdir -p ~/windows/data
|
挂载点分别为
1
2
3
4
5
|
/home/koko/windows/base
/home/koko/windows/soft
/home/koko/windows/data
# 以上目录分别对应着c盘,d盘,e盘
|
2.2. 安装ntfs-3g
为了解决挂载需要输入密码的问题,需要额外安装一个工具,名字叫做 ntfs-3g
安装完成之后,编写开机自启的服务文件,放入 /etc/systemd/system/
,文件名为 windows-mount.service
1
2
3
4
5
6
7
8
9
10
11
12
|
[Unit]
Description=Mount Windows Partition
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/mount -a
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=default.target
|
保存退出后,启动并开启自启
1
2
|
sudo systemctl enable windows-mount.service
sudo systemctl start windows-mount.service
|
2.3. 编辑/etc/fstable文件
自动挂载目录可以编辑/etc/fsable
文件,里面包含了挂载的信息,我的文件内容如下
/etc/fstable
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@myarch ~]# cat /etc/fstab
# /dev/nvme0n1p6 LABEL=myArch
UUID=cea4c38b-f7eb-4690-a35b-d4b6e8506d4d / btrfs rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@ 0 0
# /dev/nvme0n1p1
UUID=5F77-1EE1 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p6 LABEL=myArch
UUID=cea4c38b-f7eb-4690-a35b-d4b6e8506d4d /home btrfs rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/@home 0 0
# /dev/nvme0n1p5
UUID=0ca07983-0116-4006-aa45-04a2abb129e6 none swap defaults 0 0
|
关于/etc/fatable 文件各列的简单解释
- 第一列是挂载的设备(可以填写设备label或者uuid)
- 第二列是挂载点。(必须是已经存在的目录)
- 第三列是分区的格式。(如ntfs、btrfs、ext2、ext3、nfs、vfat)
- 第四列是mount的挂载参数,一般情况下,直接写defaults即可。
- 第五列的数字表示是否被dump备份,是的话为1,不是为0。
- 第六列是开机时是否自检磁盘。1,2都表示检测,0表示不检测。但1,2表示不同的优先级,1更高。所以/ 分区必须设为1,而且整个fstab只允许出现一个1,若有多个分区需要检测,那么都设为2。
我们需要的就是在文件的后面继续添加挂载windows的配置
挂载设备的label或者uuid可以通过blkid
查看
1
2
3
4
5
6
7
|
[root@myarch ~]# blkid
/dev/nvme0n1p5: UUID="0ca07983-0116-4006-aa45-04a2abb129e6" TYPE="swap" PARTUUID="b05fdaf2-9db0-424a-a133-b1874795e894"
/dev/nvme0n1p3: LABEL="soft" BLOCK_SIZE="512" UUID="64443273443247D6" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="71911f30-8521-4624-a8e3-1cbac1090f45"
/dev/nvme0n1p1: UUID="5F77-1EE1" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="3589701f-9bee-4c72-b2e6-79e486eecff0"
/dev/nvme0n1p6: LABEL="myArch" UUID="cea4c38b-f7eb-4690-a35b-d4b6e8506d4d" UUID_SUB="06d834ba-5c70-4c39-b750-245fd8b3a4a0" BLOCK_SIZE="4096" TYPE="btrfs" PTTYPE="PMBR" PARTUUID="cd79b562-bd9c-e04e-b539-e2eedee44d44"
/dev/nvme0n1p4: LABEL="data" BLOCK_SIZE="512" UUID="F23E39943E395339" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="8ee13aea-ebaa-4b0f-bf71-d30653055be3"
/dev/nvme0n1p2: LABEL="base" BLOCK_SIZE="512" UUID="3E2A25472A24FE11" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="54d043d7-3703-4fb8-88d1-c288bedba407"
|
根据以上信息,追加的fstable文件内容为
1
2
3
4
5
6
7
|
# windows
# base
UUID=3E2A25472A24FE11 /home/koko/windows/base ntfs-3g defaults,noauto,x-systemd.automount 0 0
# base
UUID=64443273443247D6 /home/koko/windows/soft ntfs-3g defaults,noauto,x-systemd.automount 0 0
# base
UUID=F23E39943E395339 /home/koko/windows/d ntfs-3g defaults,noauto,x-systemd.automount 0 0
|
至此,自动挂载不需要输入密码就完成了!