其他
极路由4刷机
米沃奇 波箱保养
玩客云
玩客云刷第三方系统
玩客云-Home Assistant
服务器采购
RTL9210/RTL9210B
随身WiFi
固件备份与恢复
Debian
Debian-文件共享
Debian-物联网
Debian-授权
Debain-ZeroTier
Debian-自启动脚本
Debian-拓展内存
Debian-清理空间
Debian-USB控制
Debian-adb进9008
Debian-常见问题
Debian-快速使用
随身WiFi使用
切卡
快速找摄像头IP
edu教育邮箱申请
域名邮箱(转发)-Cloudflare
Web监控工具
WxPusher(微信消息推送)
WxPusher-API推送
WxPusher-Python推送
WxPusher-Shell推送
WxPusher-挪车通知
企业微信-应用
Godlike-免费游戏服务器
GitHub 国内访问(host)
常用螺丝替代型号
GitHub Actions
workflows-同步上游仓库(覆盖)
workflows-⭐同步上游仓库
workflows-构建 Docker镜像
FAT32不可读
Kindle
Kindle-救砖
Kindle-越狱
中国移动-RAX3000Q(Y)
OpenWrt
网络奇葩问题
小米手环_BandTOTP
本文档使用 MrDoc 发布
-
+
首页
Debian-拓展内存
```bash mkdir -p /USB # 创建挂载文件夹(空),没有需手动创建 # 常规挂载 mount /dev/sda1 /USB # 挂载设备到该文件夹 umount /USB # 卸载挂载设备 # 基于UUID自动挂载 blkid # 查看设备 UUID nano /etc/fstab # 编辑开机自动挂载 UUID=<设备的UUID> /USB ext4 defaults 0 2 systemctl daemon-reload # 修改后需要重新加载systemd的配置 mount -a # 使用 mount 命令手动挂载(免重启测试 /etc/fstab) # 其它命令 apt install usbutils # 安装 usbutils 方便查看设备树 lsusb # 检查USB总线 mkfs.ext4 /dev/sda1 # 格式化设备为ext4格式 ``` ## [⭐自制自动挂载](/doc/865/#h1-u901Au8FC7u670Du52A1u81EAu542Fu52A8) 开机时默认保持从设备模式,等待一定时间后测试是否有给电脑设备分配IP(通过ping会分配的网段实现),若是分配了保持从设备模式,若是为ping到则切换为主设备模式,用于解决直接切换主设备网络连不上就彻底失联问题 ```bash nano /etc/zwzw.local # 创建启动脚本 nano /etc/systemd/system/zwzw.service # 创建服务单元文件 chmod +x /etc/zwzw.local # 添加执行脚本的执行权限 systemctl daemon-reload # 重新加载systemd的配置,以便识别新的服务单元 systemctl enable zwzw.service # 启用服务 systemctl start zwzw.service # 启动服务 systemctl status zwzw.service # 查看服务状态 journalctl -u zwzw.service # 查看服务日志 ``` `/etc/zwzw.local` ```bash #!/bin/bash # 等待一定时间,确保电脑已经正常获取到IP,闪灯提示等待中 for i in {1..10}; do echo default-on > /sys/class/leds/blue:wifi/trigger # 蓝色LED(WIFI状态灯)-亮 sleep 0.5 # 等待 echo none > /sys/class/leds/blue:wifi/trigger # 蓝色LED(WIFI状态灯)-灭 sleep 0.5 # 等待 done # 尝试 ping 通范围内的IP # 如果找到可ping通的IP,则视为接入电脑,保持从设备模式 echo default-on > /sys/class/leds/blue:wifi/trigger # 蓝色LED(WIFI状态灯)-亮 for i in {110..120}; do # 修改这个范围(根据可能分配的IP地址修改) ip="192.168.68.$i" # 使用 ping 命令检查 IP 是否可达,超时设置为1秒 if ping -c 1 -W 1 "$ip" &> /dev/null; then # 从设备模式,直接跳出循环 echo "已接入电脑,保持从设备模式" echo none > /sys/class/leds/blue:wifi/trigger # 蓝色LED(WIFI状态灯)-灭 echo default-on > /sys/class/leds/green:internet/trigger # 绿色LED(互联网状态)-灭 break fi done # 如果循环结束后都没有找到可ping通的IP # 则视为没有接入电脑,切换为Hub模式(主设备模式) echo "未接入电脑,切换为主设备模式" echo host > /sys/kernel/debug/usb/ci_hdrc.0/role # 切换为主设备模式(接外设) echo none > /sys/class/leds/green:internet/trigger # 绿色LED(互联网状态)-灭 echo none > /sys/class/leds/blue:wifi/trigger # 蓝色LED(WIFI状态灯)-灭 echo none > /sys/class/leds/red:os/trigger # 红色LED(系统状态灯)-灭 # ############################ 挂载硬盘 ############################ #sleep 10s # 休眠10s(带不带s都可以),确保已经正常加载外设 #mount /dev/sda1 /mnt/data # 挂在U盘到服务器(这个写你自己的路径) #mount UUID=<你的UUID> /mnt/data/ # 也可使用UUID挂载(blkid 查看 UUID) # ############################ 重启 docker 应用挂载 ############################ #sleep 3s # 等待3s确保挂载成功 #systemctl restart docker # 重启docker ``` `etc/systemd/system/zwzw.service` ```bash [Unit] # 服务描述 Description=自动开启USB拓展 # 服务依赖 After=local-fs.target [Service] # 服务的类型:forking(分叉), oneshot(单次触发), simple(简单), dbus(总线), notify(通知), idle Type=oneshot # 服务的执行命令 ExecStart=/etc/zwzw.local start # 服务的停止命令(不需要可以不使用) # ExecStop=/etc/zwzw.local stop # 服务在主进程退出后仍然保持活动状态,脚本执行完毕,服务也不会自动标记为已停止 RemainAfterExit=yes [Install] # 指定了服务应该被哪些目标所需要 WantedBy=multi-user.target ``` ## [开机自动挂载](/doc/865/#h1-u2B50u7F51u7EDCu72B6u6001u53D8u5316u65F6u81EAu52A8u6267u884C) Debian 12 正常使用,基于 NetworkManager-dispatcher 服务实现 检测到连接WiFi时自动切换为主设备模式并挂载,断开WiFi时切换回从设备模式(方便连接电脑进行维护) ```bash nano /etc/NetworkManager/dispatcher.d/USBctl.sh # 创建脚本 chmod +x /etc/NetworkManager/dispatcher.d/USBctl.sh # 给脚本添加可执行权限 nano /etc/NetworkManager/NetworkManager.conf # NetworkManager 中启用脚本 # 在 [main] 下添加 dispatcher=dispatcher.d # 指定脚本目录 systemctl daemon-reload # 修改后需要重新加载systemd的配置 systemctl restart NetworkManager # 重启 NetworkManager 服务 # 查看执行状态(二选一) systemctl status NetworkManager-dispatcher.service # 查看服务状态 journalctl -r -u NetworkManager-dispatcher # 查看执行详情 ``` `/etc/NetworkManager/dispatcher.d/USBctl.sh` ```bash #!/bin/sh echo "网络更改:" $1 $2 if [ "$1" = "wlan0" ]; then case "$2" in up) echo "WiFi 连接..." # 等待网络服务完全启动(修复开机没有连接就执行的问题) sleep 180 # 等待180s(带不带s都可以),测试的时候建议时间设置长点 # 下列方式二选一 wifi_state=$(nmcli -f active,ssid dev wifi | grep '^是') # 通过 nmcli 方式判断wifi是否连接 # wifi_state=$(ifconfig wlan0 | grep 'inet ') # 通过 ifconfig 方式判断wifi是否连接 # 检查网络是否真正连接(未连接则跳出,连接则继续) if [ -n "$wifi_state" ]; then # 检查变量是否为空(连接成功会有输出) echo "Wi-Fi 并未真正连接" exit 0 # 退出脚本,等待真正连接后再执行 fi echo "切换为主设备模式" echo none > /sys/class/leds/green:internet/trigger # 绿灯灭 echo host > /sys/kernel/debug/usb/ci_hdrc.0/role # 切换为主设备模式(接外设) sleep 3s # 休眠3s(带不带s都可以) mount /dev/sda1 /mnt/data # 挂在U盘到服务器(这个写你自己的路径) #mount UUID=<你的UUID> /mnt/data/ # 也可使用UUID挂载(blkid 查看 UUID) ;; down) echo "WiFi 断开..." echo "切换为从设备模式" echo default-on > /sys/class/leds/green:internet/trigger # 绿灯亮 echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role # 关闭主设备模式(作为外设) ;; esac fi ``` - $1: 发生变化的设备名称,一般的命名为ethX或者enpXsY - $2: 状态 `/etc/NetworkManager/NetworkManager.conf` ```bash [main] # 主要配置 plugins=ifupdown,keyfile # ifupdown允许脚本来配置网络接口,keyfile允许读取存储在文件中的密钥 dispatcher=dispatcher.d # 指定事件分发器目录(脚本存在该目录下) [ifupdown] # ifupdown 插件配置 managed=false # 是否自动配置网络接口 ```
造物者W
2024年8月11日 22:08
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码