mkdir и смонтировать в initramfs - PullRequest
0 голосов
/ 10 июля 2020

Я пишу initramfs , выполняемый в busybox , в котором я монтирую раздел, используя следующие команды:

/bin/busybox mount -n -t proc proc /proc
mount -n -t devtmpfs devtmpfs /dev
mount -n -t sysfs sysfs /sys
mount -n -t tmpfs inittemp /mnt
mkdir /mnt/saved
mount -n -t "${rootfstype}" -o "${rootflags}" ${device} /mnt/saved

Но когда система запускается , У меня такая ошибка:

mount: mounting /dev/mmcblk0p2 on /mnt/saved failed: No such file or directory

Я знаю, что когда устройство не найдено, появляется сообщение типа Device does not exist, поэтому я думаю, что проблема исходит из каталога /mnt/saved, который не правильно создан.

Я попытался добавить ls -l /mnt после mkdir, чтобы убедиться, что каталог создан правильно, но в большинстве случаев, если я это сделаю, ошибка исчезнет. Итак, я подумал, что проблема может заключаться в проблеме синхронизации (из tmpfs , странно!) Поэтому я попробовал некоторые другие вещи, такие как создание фиктивного файла в каталоге, чтобы вызвать своего рода синхронизацию. Это работает, но это грязный обходной путь, и я хочу найти настоящую причину проблемы, чтобы создать чистое решение.

1 Ответ

0 голосов
/ 10 июля 2020

К тому времени, когда я писал свой вопрос, я наконец нашел решение самостоятельно ... Я все равно отправляю его на случай, если кто-то застрянет, как я.

Собственно, команда mount из busybox не показывает сообщение об устройстве, если он не может его найти, но всегда показывает No such file or directory.

Моя проблема на самом деле исходила от root устройства, которое еще не было готово, и поэтому еще не в каталоге /dev. Чтобы он работал правильно, я просто добавил эту строку перед mount:

while ${rootwait} && ! [ -b "${device}" ]; do sleep 1; done
...