我有树莓派3B。它在 Raspbian GNU/Linux 9(延伸)上运行。我看到了一些关于安装 USB 驱动器的教程,但大多数有 2 种方法:
-手动安装该驱动器, - 启动时自动安装该驱动器
我正在寻找在生命周期(无需启动)在特定路径上自动安装该 USB 驱动器。我假设在 Linux 配置上没有选项可以做到这一点,但也许有一个选项可以通过 python 脚本来做到这一点?
我的驱动器具有 exfat 文件系统(没有其他驱动器具有该文件系统),因此它应该是管理 uuid 并挂载的。我认为它应该看起来像:
*当 USB 驱动器未连接时,该路径也应该存在
我可以那样做吗?或者也许已经有解决方案了?
usbmount
是一个漂亮的包,添加了udev
挂钩用于自动安装/卸载。
只需安装:
sudo apt install usbmount
似乎存在一个问题使其无法正常工作,简而言之,解决方案如下:
sudo nano /lib/systemd/system/systemd-udevd.service
PrivateMounts=yes
yes
更改为 no
,如下所示:PrivateMounts=no
udev
守护进程:
sudo systemctl daemon-reload
sudo systemctl restart systemd-udevd
(或者只是重新启动)您的 USB 设备现在应该自动安装在
/media/usb0
、/media/usb1
等位置。
美好的一天
我知道有点晚了,但这可能会有所帮助。我确实找到了自动挂载 USB 的方法:
创建目录:
sudo mkdir -p /media/ducorp
创建Python脚本
import os
import time
def mount_usb():
# Define the mount point and device
mount_point = '/media'
device = '/dev/sda1' # Adjust if necessary
# Create mount point directory if it doesn't exist
if not os.path.exists(mount_point):
os.makedirs(mount_point)
# Mount the device
os.system(f'sudo mount {device} {mount_point}')
print(f'Device {device} mounted to {mount_point}')
def unmount_usb():
# Define the mount point
mount_point = '/media/ducorp'
# Unmount the device
os.system(f'sudo umount {mount_point}')
print(f'Device unmounted from {mount_point}')
def check_usb():
# Check if the device is mounted
mount_point = '/media'
return os.path.ismount(mount_point)
def device_exists():
# Check if the device file exists
device = '/dev/sda1' # Adjust if necessary
return os.path.exists(device)
def main():
usb_was_mounted = False
while True:
if device_exists():
if not check_usb():
mount_usb()
usb_was_mounted = True
elif usb_was_mounted:
print('USB is already mounted')
else:
if check_usb():
unmount_usb()
usb_was_mounted = False
time.sleep(10) # Check every 10 seconds
if __name__ == "__main__":
main()
创建服务:
sudo nano /etc/systemd/system/usb-mount.service
服务内容
[Unit]
Description=USB Automount Service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /path/to/your/script.py
Restart=always
User=youruser
Group=yourgroup
[Install]
WantedBy=multi-user.target
注册并开始
sudo systemctl daemon-reload
sudo systemctl enable usb-mount.service
sudo systemctl start usb-mount.service
希望这对某人有帮助。请注意,插入 USB 后检查:lsblk 以确保 sda、sda1 等并进行调整