Я сделал сценарий, который загружает файл VHD, фиксирует его с ntfsfix
таким образом, это может быть монтированием rw и затем монтирует его. Этот сценарий творит абсолютные чудеса, когда выполнено через терминальное использование sudo
, но при выполнении его через crontab
, ~/.profile
или с помощью приложений запуска, это не работает. Рассматриваемый сценарий
#!/bin/sh
rmmod nbd
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 '/media/tygo/1.8TB Drive/MEGA.vhdx'
ntfsfix /dev/nbd0p2
mount -o rw /dev/nbd0p2 /home/tygo/MEGA
Для выполнения скрипта с помощью crontab удостоверьтесь, что Вы указываете полные пути:
#!/bin/sh
/usr/sbin/rmmod nbd
/usr/sbin/modprobe nbd max_part=16
/usr/bin/qemu-nbd -c /dev/nbd0 '/media/tygo/1.8TB Drive/MEGA.vhdx'
/usr/bin/ntfsfix /dev/nbd0p2
/usr/bin/mount -o rw /dev/nbd0p2 /home/tygo/MEGA
Вы могли найти использование путей whereis
команда: whereis mount
.
Затем выполненный crontab с sudo
: sudo crontab -e
и добавьте полный путь к своему сценарию:
@reboot /home/user/scripts/vhdscript.sh
Используйте свое собственное время вместо @reboot
Чтобы видеть, выполняется ли это, Вы могли бы добавить некоторую дополнительную информацию к своему сценарию. Например, добавьте в конец своего сценария:
echo "VHD file loading have been completed" | logger
Затем с помощью терминала контролируйте казнь сценария появлением сообщения:
journalctl -f | grep VHD
Мне в конечном счете удалось зафиксировать его путем сна спустя секунду после загрузки VHD с qemu и выполнением его с cronjob с sudo каждая половина минуты с помощью следующих двух строк:
* * * * * sudo /etc/megaMount.sh > /var/log/megaMount.log
* * * * * (sleep 30; sudo /etc/megaMount.sh > /var/log/megaMount.log)
Отредактированный сценарий следующим образом, первые проверки строки, если он уже смонтирован:
if ! grep -qs '/home/tygo/MEGA' /proc/mounts;
then
sleep 1
rmmod nbd
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 '/media/tygo/1.8TB Drive/MEGA.vhdx'
sleep 1
ntfsfix /dev/nbd0p2
mount -o rw /dev/nbd0p2 /home/tygo/MEGA
fi
Править: Забыл упоминать, что задания добавляются с помощью sudo crontab -e
, не абсолютно уверенный, почему я затем также должен выполнить использование сценария sudo
, но это не работает без него.