
Creé un entorno mínimo en mi dispositivo ARM integrado que consta solo del kernel de Linux y con Busybox y un sistema de archivos mínimo en una imagen initrd. Tengo uno inittab
que se ejecuta /etc/init.d/rcS
al iniciar.
Tengo la siguiente línea en rcS
:
/bin/mount -t proc none /proc
Sin embargo, cuando se ejecuta esta línea, aparece
/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found
La última línea de rcS
parece ejecutarse; esa línea es simplemente /bin/sh
para obtener un shell, y el shell se abre automáticamente.
Cuando ejecuto exactamente el mismo comando de montaje desde el shell, funciona. /bin/mount
es un enlace simbólico a /bin/busybox
.
¿Por qué mi secuencia de comandos no puede encontrar /bin/mount
?
Respuesta1
Resulta que los espacios en el archivo eran en realidad dos caracteres 0xD0 0xA0
(¿Unicode? Tal vez sea solo una coincidencia que parezcan CR/LF desplazados a la izquierda 4 bits... También aparecen como un solo carácter en blanco, no dos). Una pista desde el principio fue el mensaje de error: solo debería haber mostrado el comando, no los parámetros, pero no había ningún espacio en blanco en la línea.
Una vez que descubrí eso, me di cuenta de cuál era probablemente la causa. Mi sistema operativo es Windows 7, estoy ejecutando Ubuntu en una máquina virtual VirtualBox y uso un portapapeles compartido. Copié el script de una página web en Chrome en Windows 7 y lo pegué en gedit en Ubuntu. O esos caracteres fueron copiados de la página web o algo no funcionó bien con la codificación en el camino de la página a gedit.
Reemplazar aquellos con caracteres de espacio lo resolvió.