Решено: запуск 32хбитных программ на х86_64

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Решено: запуск 32хбитных программ на х86_64

Сообщение d_n_k »

есть Gentoo GNU/Linux на amd64 платформе. ядро собрано с поддержкой эмуляции ia32.
но 32хбитные программы не запускаются.
выдается вот такое
-bash: /opt/skype/skype: Нет такого файла или каталога

их конечно можно запустить вот так
$ /lib32/ld-linux.so.2 /opt/skype/skype

но так мне не нравится, хочется чтобы запускалось все сразу, а не через дополнительное шаманство с загрузчиком.

chroot - тихий ужас

как сделать "нормальный" запуск 32хбитных программ? хотя бы через bitftm_misc

зы: skype выбран случайно
все сказанное есть имхо...
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Решено: запуск 32хбитных программ на х86_64

Сообщение d_n_k »

сделал :)
вот так

Код: Выделить всё

# echo ':ELFi386:M::\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00::/lib32/ld-linux.so.2:' > /proc/sys/fs/binfmt_misc/register


или прописать настройки для binfmt_misc куда-нибудь в скрипты инициализации системы

пока только для skype'а (
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: запуск 32хбитных программ на х86_64

Сообщение serzh-z »

d_n_k писал(а):
04.01.2010 15:15
зы: skype выбран случайно
Как понимаю - наверное (нет, кажется, ни одного проприетарного чужого приложения на чём можно было бы проверить =) ) это будет проблемой для всех 32-х разрядных приложений, собранных не в Gentoo, на 64-х разрядной. Потому что в исполняемом модуле проставлена ссылка на ld-linux.so из /lib. При сборке в Gentoo - эта ссылка будет правильной - /lib32/ld-linux.so
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Решено: запуск 32хбитных программ на х86_64

Сообщение d_n_k »

serzh-z писал(а):
05.01.2010 03:03
d_n_k писал(а):
04.01.2010 15:15
зы: skype выбран случайно
Как понимаю - наверное (нет, кажется, ни одного проприетарного чужого приложения на чём можно было бы проверить =) ) это будет проблемой для всех 32-х разрядных приложений, собранных не в Gentoo, на 64-х разрядной. Потому что в исполняемом модуле проставлена ссылка на ld-linux.so из /lib. При сборке в Gentoo - эта ссылка будет правильной - /lib32/ld-linux.so

докопался до этого места, тока и бинарники собранные в Gentoo 64 все также не запускаются
бага в gcc?

gcc -m32 1.c -Wl,--verbose выдает

...
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32/libgcc.a succeeded
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32/libgcc_s.so succeeded
-lgcc_s (/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32/libgcc_s.so)
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32/crtend.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/32/crtend.o
attempt to open /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/../../../../lib32/crtn.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/../../../../lib32/crtn.o
ld-linux.so.2 needed by /lib32/libc.so.6
found ld-linux.so.2 at /lib32/ld-linux.so.2

но упорно пытается пользовать /lib/ld-linux.so.2

или бага в emul-linux-x86-compat?
починил так:
/lib/ld-linux.so.2 -> /lib32/ld-linux.so.2

и skype стал запускаться без шаманства и bitftm_misc
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: запуск 32хбитных программ на х86_64

Сообщение serzh-z »

d_n_k писал(а):
05.01.2010 09:39
/lib/ld-linux.so.2 -> /lib32/ld-linux.so.2
Ну да. И все родные 64-х разрядные приложения, привязанные к /lib будут пытаться использовать /lib32/ld-linux.so.2? =)

Имхо, вариант с binfmt_misc более прямой. Так можно и нужно Windows-приложения PE с вайном связать. А то вечно они у меня в File Roller пытаются как архивы открыться.
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Решено: запуск 32хбитных программ на х86_64

Сообщение d_n_k »

не привязаны, 64-хбитные пользуются /lib/ld-linux-x86-64.so.2
все сказанное есть имхо...
Спасибо сказали: