suntiny 发表于 2025-4-29 17:00:53

关于BE3600的U盘挂载问题解决思路

本帖最后由 suntiny 于 2025-4-29 21:07 编辑

经过几天Docker的折腾,主要是先运行Docker,然后不停死机,从Docker的存储空间,内存,CPU方面不停的尝试。Docker 没有运行起来,但是U盘挂载倒是解决了。
1、主要原因是Be3600系统只要有U盘,在启动时就挂在/tmp/mountd/disk1_part1。
2、解决思路,待路由器启动完成后,将原挂载解绑并重新挂载。
3、需要对三个文件进行配置。
3.1 /etc/config/rc.local。这个是路由器启动后接着启动的系统配置文件。更改内容如下:

#原有<
# Put your custom commands here that should be executed once# the system init finished. By default this file does nothing.#!/bin/sh
. /lib/functions/gl_util.shremount_ubifs#原有>
# rc.conf 示例配置# 系统初始化配置项
# 设置开机启动时加载的服务
# 确保需要的服务在启动时加载
STARTUP_SERVICES="syslogd network mountd"

# 确保 /mnt/newdata 存在并且正确挂载
# 设置 /dev/sda1 挂载到 /mnt/newdata
mount_extra_1="mkdir -p /mnt/newdata"
mount_extra_2="umount /tmp/mountd/disk1_part1" # 卸载 /tmp/mountd/disk1_part1
mount_extra_3="mount /dev/sda1 /mnt/newdata" # 挂载 /dev/sda1 到 /mnt/newdata

# Docker 服务设置
# 如果您希望 Docker 使用 /mnt/newdata,确保 Docker 配置正确
docker_config="/etc/config/dockerd"
docker_data_root="/mnt/newdata"
docker_restart_cmd="/etc/init.d/dockerd restart"

# 启动 Docker 服务并设置正确的数据目录
start_docker="start_service dockerd"

# 在启动时,确保 /dev/sda1 被正确挂载到 /mnt/newdata
mount_extra_4="mount -o rw,relatime /dev/sda1 /mnt/newdata"

# 在 rc.local 中确保处理挂载与卸载逻辑
rc_local_commands="
# 确保 /mnt/newdata 存在
mkdir -p /mnt/newdata

# 确保 /mnt/newdata 没有被 overlayfs 占用
if mount | grep -q '/mnt/newdata'; then
    echo '检测到 /mnt/newdata 已经被挂载,尝试卸载 overlayfs...'
    umount /mnt/newdata
    if [ $? -eq 0 ]; then
      echo '/mnt/newdata 卸载成功!'
    else
      echo '/mnt/newdata 卸载失败,可能是因为正在使用中!'
    fi
fi

# 挂载 /dev/sda1 到 /mnt/newdata
echo '挂载 /dev/sda1 到 /mnt/newdata...'
mount /dev/sda1 /mnt/newdata
if [ $? -eq 0 ]; then
    echo '/dev/sda1 挂载成功!'
else
    echo '/dev/sda1 挂载失败,请检查日志或设备状态!'
fi

# 重启 Docker 服务(如果需要的话)
echo '重启 Docker 服务...'
/etc/init.d/dockerd restart
"

# 确保 /dev/sda1 不会挂载到 /tmp/mountd/disk1_part1
mount_extra_5="umount /tmp/mountd/disk1_part1"



suntiny 发表于 2025-4-29 17:01:56

3.2 /etc/config/fstab修改
config global
    option anon_swap '0'
    option anon_mount '0'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

# 确保 /mnt/newdata 被挂载
config mount
    option target '/mnt/newdata'
    option device '/dev/sda1'
    option fstype 'ext4'
    option options 'rw,relatime'
    option enabled '1'

# 避免 /tmp/mountd/disk1_part1 被挂载
# 这里不添加该配置项,确保没有挂载到 /tmp/mountd/disk1_part1

suntiny 发表于 2025-4-29 17:03:02

3.3 /etc/fstab修改
# <文件系统> <挂载点>   <文件系统类型><挂载选项>          <转储> <检查>
/dev/sda1    /mnt/newdata   ext4    rw,relatime    0   0

suntiny 发表于 2025-4-29 17:06:20

通过以上修改后,docker能够使用U盘的空间(需在docker配置中改为自己的U盘路径 /mnt/newdata),但是docker不能够跑起来,挂载U盘正常。也算折腾的副产品了。做个Mark,需大神出手,对这个固件重新编译下,解决docker问题。
页: [1]
查看完整版本: 关于BE3600的U盘挂载问题解决思路