我正在使用以下命令为 VM 原始映像备份文件设置循环设备:
sudo losetup /dev/loop0 "/home/asus/VirtualBox VMs/Windows RAW/Windows 10.img"
它工作正常。
$ losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0 0 0 0 0 /home/asus/VirtualBox VMs/Windows RAW/Windows 10.img 0 512
但我想让这个更改永久化,所以我创建了这个.sevice
在启动时运行:
$ cat /etc/systemd/system/loops-setup.service
[Unit]
Description=Setup loop devices
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target
After=systemd-udev-settle.service
Required=systemd-udev-settle.service
[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop0 "/home/asus/VirtualBox VMs/Windows RAW/Windows 10.img"
ExecStop=/sbin/losetup -d /dev/loop0
TimeoutSec=60
RemainAfterExit=yes
[Install]
WantedBy=local-fs.target
Also=systemd-udev-settle.service
此服务也可以手动启动:
sudo systemctl start loops-setup
但它在启动时无法启动,并显示此错误:
May 11 19:57:17 ubuntu losetup[308]: losetup: /dev/loop0: failed to set up loop device: No such file or directory
我猜是因为服务的层次结构,我应该改变Before
和After
选择,但我不知道该怎么做。
提前致谢。