Не инициализируется окружение wine на ядрах с запретом создания 16-битных сегментов (ltd16)
Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
В некоторых 64-битных ядрах выключена по-умолчанию поддержка 16-битных сегментов.
Это приводит к ошибке в работе 32-битных приложений.
Так выглядит ошибка при инициализации окружения wine:
modify_ldt: Недопустимый аргумент modify_ldt: Недопустимый аргумент modify_ldt: Недопустимый аргумент modify_ldt: Недопустимый аргумент modify_ldt: Недопустимый аргумент
Это касается ядер в диапазоне 3.8.* - 3.16 .
В 3.16 поддержка была снова включена по-умолчанию.
Решение
1) Установить 32-битный дистрибутив
2) Обновить ядро до 3.16
3) Решить данную проблему можно с помощью команды
#echo 1 > /proc/sys/abi/ldt16 (внимание необходимы права администратора )
4) Так же можно передать этот параметр ядру через Sysctl
Пример файла /etc/sysctl.d/wine-etersoft.conf
abi.ldt16 = 1
Ubuntu
C Ubuntu работают первые 2 варианта.
А вот с 3-м всё сложнее, потому что ldt16 бэкпортировали только в ядра начиная с 3.14.6
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1328965/comments/5
Все ядра меньше 3.14.6 не имеют файла /proc/sys/abi/ldt16 как такового.
SLES
SLES 12 не имеет поддержки ldt16 в ядре?!