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

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

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

基本原理:

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

大致分为三部分,

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

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

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

第一部分准备:

查看 查找硬盘的uuid

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

 # 命令lsblk 查找 自己的硬盘
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

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:创建执行脚本(/usr/local/bin/mount_disk.sh)

# 1. 创建脚本文件(用root权限,避免权限问题)
sudo vi /usr/local/bin/mount_disk.sh

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

#!/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:给脚本添加可执行权限(必须)

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

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

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

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

[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:启用并测试服务(关键)

# 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

核心说明(为什么这么配置)

  1. 权限问题

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

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

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

验证开机自启效果

# 重启系统
sudo reboot

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

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

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

常见问题排查

  1. 脚本执行无日志

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

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

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

停止/删除自启服务(如需)

# 停止服务
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

有需要可以私聊 沟通,欢迎交流,绿泡泡 搜索:alerson的世界

posted @ 2025-12-06 12:03  Alerson  阅读(0)  评论(0)    收藏  举报