1

Я создал минимальную среду на своем встроенном устройстве ARM, состоящую только из ядра Linux, с Busybox и минимальной файловой системой в образе initrd. У меня есть inittab который запускает /etc/init.d/rcS при запуске.

У меня есть следующая строка в rcS:

/bin/mount -t proc none /proc

Однако когда эта строка запускается, я получаю

/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found

Последняя строка rcS видимому, выполняется - эта строка просто /bin/sh чтобы получить оболочку, и оболочка открывается автоматически.

Когда я запускаю точно такую же команду монтирования из оболочки, она работает. /bin/mount является символической ссылкой на /bin/busybox .

Почему мой скрипт не может найти /bin/mount?

1 ответ1

1

Как оказалось, пробелы в файле были фактически двумя символами, 0xD0 0xA0 (Unicode? Может быть, это просто совпадение, что они выглядят как CR/LF, сдвинутые влево на 4 бита ... Они также отображаются как один пустой символ, а не два). Ключом к разгадке было сообщение об ошибке - должно было отображаться только команда, а не параметры, но в строке не было пробелов.

Когда я обнаружил это, я понял, в чем причина, вероятно. Моя ОС - Windows 7, и я использую Ubuntu на виртуальной машине VirtualBox и использую общий буфер обмена. Я скопировал скрипт с веб-страницы в Chrome на Windows 7 и вставил его в Gedit на Ubuntu. Либо эти символы были скопированы с веб-страницы, либо что-то не так с кодировкой на пути от страницы к gedit.

Замена тех с пробелами решала это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .