Понадобилось собрать систему для железки на стационарнике. Для возможности запуска ARM'овских бинарников используется QEMU, в полном соответствии со статьёй.
Файлы выполняются, о чём говорит следующее:
Linux andreilPC 3.12.13-gentoo #1 SMP Tue May 20 13:10:34 FET 2014 x86_64 Intel(R) Pentium(R) CPU G2130 @ 3.20GHz GenuineIntel GNU/Linux
andreilPC root # file bin/bash
bin/bash: ELF 32-bit MSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped
andreilPC root # bin/bash
/lib/ld-uClibc.so.0: No such file or directory
andreilPC root #
Но при попытке сделать chroot вылазит ошибка:
chroot: failed to run command ‘/bin/bash’: No such file or directory
Попытался выполнить трассировку:
execve("/bin/chroot", ["chroot", "."], [/* 68 vars */]) = 0
brk(0) = 0x60a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6b53aec000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=212270, ...}) = 0
mmap(NULL, 212270, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f6b53ab8000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0M\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1732856, ...}) = 0
mmap(NULL, 3845176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f6b53521000
mprotect(0x7f6b536c2000, 2097152, PROT_NONE) = 0
mmap(0x7f6b538c2000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a1000) = 0x7f6b538c2000
mmap(0x7f6b538c8000, 15416, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f6b538c8000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6b53ab7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6b53ab6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6b53ab5000
arch_prctl(ARCH_SET_FS, 0x7f6b53ab6700) = 0
mprotect(0x7f6b538c2000, 16384, PROT_READ) = 0
mprotect(0x608000, 4096, PROT_READ) = 0
mprotect(0x7f6b53aed000, 4096, PROT_READ) = 0
munmap(0x7f6b53ab8000, 212270) = 0
brk(0) = 0x60a000
brk(0x62b000) = 0x62b000
open("/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=5261392, ...}) = 0
mmap(NULL, 5261392, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f6b5301c000
close(3) = 0
chroot(".") = 0
chdir("/") = 0
execve("/bin/bash", ["/bin/bash", "-i"], [/* 68 vars */]) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/charset.alias", O_RDONLY|O_NOFOLLOW) = -1 ENOENT (No such file or directory)
write(2, "chroot: ", 8chroot: ) = 8
write(2, "failed to run command \342\200\230/bin/ba"..., 37failed to run command ‘/bin/bash’) = 37
open("/usr/share/locale/ru_RU.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, ": No such file or directory", 27: No such file or directory) = 27
write(2, "\n", 1
) = 1
close(1) = 0
close(2) = 0
exit_group(127) = ?
+++ exited with 127 +++
Судя по логу, оно не может найти /bin/bash. Но он же есть! Это подтверждается попыткой его прямого запуска (
Везде пишут, что подобная ошибка вылазит при неустановленном qemu-user, но он-то у меня стоит:
-rwxr-xr-x 1 root root 3196136 май 28 08:44 usr/bin/qemu-static-armeb
-rwxr-xr-x 1 root root 1825424 май 28 08:44 usr/bin/qemu-static-armeb-binfmt
Никак не могу понять, ЧЯДНТ
PS: В папке "root" лежит содержимое архива "stage3-armeb-uclibc-softfloat-2005.1.tar.bz2", скачанного с официального репозитория - то, что надо для моей железки...
PPS: Попытка выполнить chroot с полным путём к каталогу не предлагать - тот же результат:
chroot: failed to run command ‘/bin/bash’: No such file or directory
