LINUX.ORG.RU
ФорумAdmin

wget illegal instruction


0

1

всем привет, собираю систему buildroot, мне там кроме всего прочего нужен wget, однако он не работает, может кто-то поможет разобраться

суть такова

wget выдает сообщение logging as in anonymouse illegal instruction

при этом сниффер показывает, что tcp соединение установлено

ftp сервер отправляет пакет 200 server ready

wget шлет пакет tcp-rst и соединение разрывается

а на компьютере вижу сообщение illegal instruction

кто-нибудь может знает в чем причина? подскажите.

еще ядро и buildroot конфигурировал по intel atom, а запускаю щас на i386 может причина в этом, однако попробовалл собрать и то и другое под i386, buildroot уже который раз выдает какую-то ошибку, в которой разбираться еще более нереально.

буду признателен хоть за моральную поддержку, а то уже кулаки сжимаются от злобы, да еще почему-то busybox непоймешь как работает, делаю ссылку ln -s ./busybox ./sh и chroot . ./bin/sh bash sh not found ls -l sh ch -> busybox chroot . bin/busybox busybox not found, хотя он там на месте, еще и ядро через раз ругается, что нет скрипта init, а ругается только тогда ,когда busybox not found.

★★★
Ответ на: комментарий от zolden

это вывод strace с хостовой машины, на самой сборке strace нет.

mypc:/srv/tftp/un/usr/bin# strace ./wget ftp://172.16.95.1/rootfs.squashfs
execve("./wget", ["./wget", "ftp://172.16.95.1/rootfs.squashf"...], [/* 28 vars */]) = -1 ENOENT (No such file or directory)
dup(2)                                  = 3
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb779f000
_llseek(3, 0, 0xbf9d5f98, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
close(3)                                = 0
munmap(0xb779f000, 4096)                = 0
exit_group(1)                           = ?
mypc:/srv/tftp/un/usr/bin# ls -l
итого 296
-rwxr-xr-x 1 root root   6688 Окт 21 20:36 ldd
-rwxr-xr-x 1 root root 287308 Окт 20 19:57 wget
mypc:/srv/tftp/un/usr/bin# 
IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

вот кусок strace сделанный из под croot

open("/root/.ash_history", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0600) = -1 ENOENT (No such file or directory)
ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGWINCH, {SIG_DFL, [WINCH], SA_RESTORER|SA_RESTART, 0xb774c95f}, {0x80a0693, [WINCH], SA_RESTORER|SA_RESTART, 0xb774c95f}, 8) = 0
stat64("/usr/local/sbin/wget", 0xbfe5b030) = -1 ENOENT (No such file or directory)
stat64("/usr/local/bin/wget", 0xbfe5b030) = -1 ENOENT (No such file or directory)
stat64("/usr/sbin/wget", 0xbfe5b030)    = -1 ENOENT (No such file or directory)
stat64("/usr/bin/wget", {st_mode=S_IFREG|0755, st_size=287308, ...}) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb77966f8) = 2304
setpgid(2304, 2304)                     = 0
waitpid(-1, --2012-10-23 14:14:48--  ftp://172.16.95.1/rootfs.squashf
           => `rootfs.squashf'
Connecting to 172.16.95.1:21... connected.
Logging in as anonymous ... [{WIFSIGNALED(s) && WTERMSIG(s) == SIGILL}], WSTOPPED) = 2304
--- SIGCHLD (Child exited) @ 0 (0) ---
write(2, "Illegal instruction\n", 20Illegal instruction
)   = 20
ioctl(10, TIOCSPGRP, [2303])            = 0
waitpid(-1, 0xbfe5b1bc, WNOHANG|WSTOPPED) = -1 ECHILD (No child processes)
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0

наверно intel atom x64, а я сейчас сижу на x32

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

да, похоже, что проблема именно в архитектуре, под которую собирал, сейчас все запустилось на нетбуке без проблем.

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

оказывается еще в пятницу все могло заработать, но я с пятницы дома, а у меня x32 и я голову сломал, что это может быть за ошибка, no such file or directory, хотя я ии щас не понимаю, почему именно эта ошибка, могу только строить предположения, но теперь это не важно, теперь все заработает

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

И ldconfig в chroot'е был выполнен? Хотя я не совсем понял, как вы делали chroot, у вас: chroot . ./bin/sh

А потом вывод «ls -l sh», хотя, по идее надо было показывать, что «ls -l ./bin/sh» существует. Или после chroot, перед вызовом ls делалась команда «cd bin»?

mky ★★★★★
()
Ответ на: комментарий от mky

в общем нее актуально, заработало и ладно.

если есть еще кто-то живой, то вот животрепещущий вопрос: вот отрывок скрипта init:

/usr/bin/wget $fetch
rootimage=$(ls | grep squashfs)
/bin/mount -t squashfs -o loop $rootimage /mnt/root
echo
echo
mkdir /new-root
/usr/bin/unionfs -o cow -o dirs=/mnt/root=rw /new-root

echo

cd /new-root
cat /proc/mounts

mkdir /new-root/put_old
sleep 40
в общем пытаюсь смонтировать squashfs в режиме rw cat /proc/mounts показывает:

unionfs /new-root fuse.unionfs rw,nosuid,nodev,realtime,user_id=0,group_id=0,default_permission 0 0

вроде смонтировано как rw.

что я делаю не так?

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

Я не совсем понял в чём проблема, но на squashfs писать нельзя. Монтируя unionfs нужно указывать два каталога, один ro, а другой rw, куда будут заносится изменения.

mky ★★★★★
()
Ответ на: комментарий от mky

да, уже понял, исправил, теперь выглядит так:

mkdir /new-root /rw-fs
unionfs -o dirs=/rw-fs=rw:/mnt=ro /new-root

теперь есть еще одна проблема

pivot_root . put_old

если есть директория put_old, то говорит: invalid argument

если директории нет, говорит, что ее нет

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

целиком фрагмент:

/usr/bin/unionfs -o cow -o dirs=/rw.fs=rw:/mnt/root=ro /new-root
echo

chmod 775 /new-root

cd /new-root
mkdir put_old

ls -l /sbin/pivot_root
ls -l . | grep put
/sbin/pivot_root . put_old
/sbin/mdev -s
chroot . bin/sh <dev/console >dev/console 2>&1
IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

Тут я не знаю, наверное вам нужно создать отдельную тему. Вроде бы, нельзя делать pivot_root из initramfs. В initrd в скриптах используют «switchroot», который вызывает системный вызов mount() с флагом MS_MOVE.

А относительно chroot < /dev/console могу посоветовать прочитать вот это http://www.busybox.net/FAQ.html#job_control

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.