make когда-либо запускает только одну строку в рецепте за раз, и всегда ожидает завершения предыдущей строки перед запуском следующей.Это должно подождать, потому что, если текущая строка терпит неудачу, рецепт должен потерпеть неудачу без начала следующей строки.
Вероятно, происходит то, что cp
завершается, но данные не были полностью сброшены всмонтированная файловая система: ядро все еще записывает буферизованные данные.Таким образом, даже если команда копирования завершена, раздел все еще занят.
Возможно, вы можете принудительно синхронизировать его, используя что-то вроде (здесь я предполагаю, что вы используете GNU / Linux или что-то совместимое):
make:
# Mount Loader.bin
sudo mount -t vfat -o loop Boot.img mnt
sudo cp Loader.bin mnt
sudo sync -f mnt/Loader.bin
sudo umount mnt
Я не знаю, будет ли этого достаточно, чтобы заставить его или нет.
Кстати, обычно неплохо использовать sudo -n
, когда вы используете sudo
в make-файле или любой другой неинтерактивной среде.