Сборка LFS: ошибка сегментации с make на графической оболочке

Я строю систему LFS, следуя инструкциям из книги (версия 7.6, хотя я думаю, что проблема не связана с конкретной версией). После сборки цепочки инструментов (глава 5) я приступаю к построению самой системы (глава 6).

Но вот в чем дело: когда я пытаюсь собрать любой пакет из графической оболочки (в моем случае LXTerminal из среды рабочего стола Lubuntu), я могу распаковать исходные коды и настроить сборку с помощью./configure, но, выполнив команду 'make', я получить Segmentation fault, Если я выполняю ту же команду из текстового терминала (например, нажимаю Crtl+F2), она работает безупречно.

В обоих случаях:

  • От имени root я монтирую файловые системы виртуального ядра в соответствии с главами 6.2.2 и 6.2.3.
  • Как пользователь root, я переключаюсь на среду chroot в соответствии с инструкциями книги

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

Кто-нибудь может подсказать, почему эти два терминала ведут себя по-разному?

(В заключение, я попытался переключиться на пользователя root от моего пользователя без полномочий root ("оболочка входа в систему") с помощью su - и также полностью войти в GUI как пользователь root)

1 ответ

Решение

После некоторого серьезного поиска в Google я мог понять это.

Общим для графических терминалов (окон на графической оболочке) и сессий SSH является то, что они используют псевдо-терминалы (PTY) вместо традиционных терминалов (TTY). Поэтому я сосредоточился на монтировании виртуальных файловых систем de vpts, которые реализуют эти псевдотерминалы. Затем я нашел этот ответ и попытался связать mount /dev/pts вместо стандартного монтирования, как сказано в книгах:

mount --bind /dev/pts "$CHROOT/dev/pts"

И это сработало! Сделайте больше не segfaults.

Другие вопросы по тегам