飞牛OS挂载外接存储到我的文件

飞牛OS挂载外接存储到我的文件

背景,已经有数据的硬盘, 不想要初始化, 挂载到 我的文件 文件夹中; 能方便访问

基本原理:
通过/etc/fstab​(file system table,文件系统表) 对文件进行 自动挂载 ,避开飞牛 OS 系统自身的挂载服务。

大致分为三部分,

第一部分是和配置 FS 的信息。那配置这个信息的前提还需要查找硬盘的信息,查找硬盘的 u uid 进行配置。

第二部分 创建脚本,创建执行脚本 主要是用来重启这个文件的系统。

第三部分 的话是执行服务的话,主要是能让系统启动的时候调用脚本。

第一部分准备:
查看 查找硬盘的uuid

查找 自己的硬盘 ,比如 我要找的是sda1

命令lsblk 查找 自己的硬盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kkson@fnOS-man:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 3.6T 0 disk
└─sda1 8:1 0 3.6T 0 part /vol00/WDC WD4000F9YZ-09N20L1
sdb 8:16 0 111.8G 0 disk
└─sdb1 8:17 0 111.8G 0 part
└─md0 9:0 0 111.7G 0 raid1
└─trim_0ee46ce0_846d_4875_9428_825cafc34b90-0 253:0 0 111.7G 0 lvm /vol2
sdc 8:32 0 238.5G 0 disk
├─sdc1 8:33 0 94M 0 part /boot/efi
├─sdc2 8:34 0 63.9G 0 part /
└─sdc3 8:35 0 174.5G 0 part
└─md127 9:127 0 174.3G 0 raid1
└─trim_6d7afe15_e5d6_4cfe_be8b_0248281c545f-0 253:1 0 174.3G 0 lvm /vol1

查看 硬盘信息:

lsblk -f , 我的硬盘信息UUID是:0006895D00085A53

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kkon@fnOS-man:~$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 ntfs 文档 0006895D00085A53 1.7T 55% /vol00/WDC WD4000F9YZ-09N20L1
sdb
└─sdb1 linux_raid_member 1.2 fnOS-man:0 3f1c6eb2-5ea4-5eae-48fc-94030bfd5e8f
└─md0 LVM2_member LVM2 001 onp72c-axZU-SSAx-F9YU-WhKS-yt9g-A8RZN9
└─trim_0ee46ce0_846d_4875_9428_825cafc34b90-0 btrfs bc423080-8651-4d98-a512-106fc82e95de 100.8G 8% /vol2
sdc
├─sdc1 vfat FAT32 692A-DEE1 84.5M 9% /boot/efi
├─sdc2 ext4 1.0 3f998891-6a44-4bd4-83c6-e20c9241f59f 48.3G 18% /
└─sdc3 linux_raid_member 1.2 fnOS-man:0 4d062f45-734f-7f72-091a-cefb8d83d3d6
└─md127 LVM2_member LVM2 001 4AsHXP-2kHC-DZpP-g9Xb-su5E-M9dK-jYg36b
└─trim_6d7afe15_e5d6_4cfe_be8b_0248281c545f-0 btrfs 8d1ffe51-3c2e-47de-ae6d-4183579b0c8a 100.5G 41% /vol1

以下是 带sudo权限的开机自启脚本+systemd服务配置(飞牛OS基于Linux,优先用systemd实现开机自启,稳定且权限可控),全程复制粘贴即可:

1
2
3
4
步骤1:创建执行脚本(/usr/local/bin/mount_disk.sh)
bash
# 1. 创建脚本文件(用root权限,避免权限问题)
sudo vi /usr/local/bin/mount_disk.sh

按 i 进入编辑模式,粘贴以下内容(注意路径空格转义/引号包裹):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
# 功能:开机自动卸载旧挂载点→重载服务→重新挂载fstab
# 日志输出到/var/log/mount_disk.log,方便排查问题

# 定义日志文件路径
LOG_FILE="/var/log/mount_disk.log"

# 输出日志函数(带时间戳)
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

# 第一步:卸载旧挂载点(忽略"未挂载"错误,避免脚本中断)
log "开始卸载旧挂载点:/vol00/WDC WD4000F9YZ-09N20L1"
sudo umount "/vol00/WDC WD4000F9YZ-09N20L1" 2>> $LOG_FILE
if [ $? -eq 0 ]; then
log "旧挂载点卸载成功"
else
log "旧挂载点未挂载或卸载失败(非致命错误,继续执行)"
fi

# 第二步:重载systemd配置(防止服务配置未生效)
log "开始重载systemd daemon"
sudo systemctl daemon-reload 2>> $LOG_FILE
if [ $? -eq 0 ]; then
log "systemd daemon重载成功"
else
log "systemd daemon重载失败(请检查服务配置)"
fi

# 第三步:重新挂载fstab所有规则
log "开始执行mount -a挂载fstab配置"
sudo mount -a 2>> $LOG_FILE
if [ $? -eq 0 ]; then
log "mount -a执行成功,硬盘挂载完成"
else
log "mount -a执行失败!请检查/etc/fstab配置"
fi

log "脚本执行完毕----------------------------------------"

按 Esc​ → 输入 :wq 保存退出。

步骤2:给脚本添加可执行权限(必须)
bash

1
sudo chmod +x /usr/local/bin/mount_disk.sh

步骤3:创建systemd服务(实现开机自启+root权限)
bash

1
2
# 创建服务文件
sudo vi /etc/systemd/system/mount_disk.service

按 i 进入编辑模式,粘贴以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Auto mount NTFS disk after boot
After=multi-user.target local-fs.target # 确保系统挂载完本地文件系统后执行
Requires=local-fs.target
ConditionPathExists=/etc/fstab # 确保fstab文件存在才执行

[Service]
Type=oneshot # 一次性执行(开机只运行一次)
User=root # 用root权限执行(等价于sudo)
ExecStart=/usr/local/bin/mount_disk.sh # 脚本绝对路径
StandardOutput=append:/var/log/mount_disk.log # 日志追加到文件
StandardError=append:/var/log/mount_disk.log

[Install]
WantedBy=multi-user.target # 开机多用户模式启动

按 Esc​ → 输入 :wq 保存退出。

步骤4:启用并测试服务(关键)
bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 重新加载systemd服务配置
sudo systemctl daemon-reload

# 2. 设置开机自启
sudo systemctl enable mount_disk.service

# 3. 手动测试脚本(先验证是否正常执行,避免开机出问题)
sudo systemctl start mount_disk.service

# 4. 检查服务状态(无error则正常)
sudo systemctl status mount_disk.service

# 5. 查看日志(确认每一步是否执行成功)
cat /var/log/mount_disk.log

核心说明(为什么这么配置)
权限问题:

服务文件中 User=root 直接以root权限执行,无需手动加sudo(等价于sudo权限);
脚本放在 /usr/local/bin(系统默认可执行路径),避免路径权限问题。
容错性:

umount命令后加 2>> $LOG_FILE,即使旧挂载点未挂载,脚本也不会中断;
每一步都有日志输出,方便排查“卸载失败/挂载失败”问题。
时序问题:

​After=multi-user.target local-fs.target 确保脚本在系统基本启动完成、本地文件系统挂载后执行,避免“挂载点目录还没创建就执行mount”的问题。
验证开机自启效果

1
2
3
4
5
6
7
8
9
10
11
12
13
bash
# 重启系统
sudo reboot

# 重启后检查:
# 1. 服务是否执行过
sudo systemctl status mount_disk.service

# 2. 查看日志确认执行结果
cat /var/log/mount_disk.log

# 3. 检查硬盘是否挂载到目标路径
mount | grep /vol1/1000/myhd

常见问题排查
脚本执行无日志:

检查脚本权限:ls -l /usr/local/bin/mount_disk.sh​(需显示 -rwxr-xr-x);
手动执行脚本测试:sudo /usr/local/bin/mount_disk.sh,看是否报错。
mount -a执行失败:

查看日志:cat /var/log/mount_disk.log​,根据错误提示修正 /etc/fstab;
先手动执行 sudo mount -a,确认fstab无语法错误。
服务无法启用:

检查服务文件语法:sudo systemctl daemon-reload,看是否有报错;
服务文件路径必须是 /etc/systemd/system/mount_disk.service(不能错)。
停止/删除自启服务(如需)

1
2
3
4
5
6
7
8
9
10
11
# 停止服务
sudo systemctl stop mount_disk.service

# 禁用开机自启
sudo systemctl disable mount_disk.service

# 删除服务文件
sudo rm /etc/systemd/system/mount_disk.service

# 删除脚本
sudo rm /usr/local/bin/mount_disk.sh
[up主专用,视频内嵌代码贴在这]