飞牛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主专用,视频内嵌代码贴在这]