6

когда я запускаю chroot /somepath /usr/bin/startx я получаю что-то похожее на проблему с evdev ... (Я правильно --bind смонтировал /dev / /dev / pts /dev / shm / proc / sys / tmp)

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

Какова причина этого?
Есть ли какое-либо решение, позволяющее запустить сервер?

Возможные шаги для воспроизведения (работа со всеми дистрибутивами):

  • скопируйте корневой каталог дистрибутива Linux в папку вашего дистрибутива.

  • правильно связать монтировать все (/dev/pts /var /run /dev/shm /sys /kernel /debugfs ...)

  • запустить оболочку с помощью команды chroot .

  • Убедитесь, что сервер X11 уже не запущен, затем запустите xinit /usr/bin/some X11 program

Теперь вы можете перезагрузить компьютер! (если вы не настроили удаленный доступ)

2 ответа2

6

Я понимаю, что этот вопрос старый, но для справки:

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

Я правильно --bind монтируется /dev / /dev / pts /dev / shm / proc / sys / tmp

В дополнение к монтированию выше, мне также пришлось связать mount /run /udev, чтобы заставить мышь и клавиатуру работать в моем chroot. Я не использовал xorg.conf *, и Xorg смог правильно определить мои настройки.

Запись в моем /etc/schroot/default/fstab:

/run/udev /run/udev none rw,bind 0 0

Если вы делаете стандартный chroot, вы можете вместо этого поместить его в /etc/fstab :

/run/udev /path/to/chroot/run/udev none rw,bind 0 0

... или mount --bind его.


* Хорошо-- Я сначала попытался использовать xorg.conf , но это не сработало. Я также попытался добавить

Section "ServerFlags" Option "AutoAddDevices" "false" EndSection в xorg.conf, который заставил мою мышь работать, а не клавиатуру.

2

На вики Gentoo есть статья, в которой подробно описана необходимая процедура:
HOWTO_startx_in_a_chroot.
В статье подробно рассказывается, как сначала настроить chroot, а затем как войти в chroot и настроить главную систему.

Еще одна такая статья взята из Arch Linux:
Запуск графических приложений из chroot.

Больше для Ubuntu:
Доступ к графическим приложениям внутри chroot
Создание chroot-тюрьмы со звуком и X11

Для KDE: Kde4schroot. Так как это тот, который требуется, вот некоторые детали:

Замените /etc/schroot/schroot.conf на:

# schroot chroot definitions.
# See schroot.conf(5) for complete documentation of the file format.
#
# Please take note that you should not add untrusted users to
# root-groups, because they will essentially have full root access
# to your system.  They will only have root access inside the chroot,
# but that's enough to cause malicious damage.
#
[experimental]
type=directory
description=Debian experimental (unstable)
priority=4
groups=sbuild,root
users=kde4
#root-groups=root,sbuild
aliases=unstable,default
#device=/dev/hda_vg/experimental_chroot
mount-options=-o atime,sync,user_xattr
location=/home/chroot
run-setup-scripts=true
run-exec-scripts=true

Затем замените /etc/schroot/mount-defaults :

# mount.defaults: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
tmpfs           /dev/shm        tmpfs   defaults        0       0
/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0

Переключиться на пользователя kde4:

su - kde4

Затем schroot и введите root passwd:

schroot -u root

Добавьте lenny и экспериментальные репозитории в /etc/apt/sources.list:

echo "deb http://ftp.us.debian.org/debian experimental main non-free contrib" >> /etc/apt/sources.list
echo "deb http://ftp.us.debian.org/debian lenny main" >> /etc/apt/sources.list

Настройте закрепление, отредактировав /etc/apt/preferences и добавив:

 Package: *
 Pin: release a=experimental
 Pin-Priority: 800
 Package: *
 Pin: release a=unstable
 Pin-Priority: 400
 Package: *
 Pin: release a=lenny
 Pin-Priority: 200

Затем запустите update и установите kde4:

aptitude update && aptitude install -t experimental kde4 xorg

Установите kdm:

aptitude install -t experimental kdm

Затем отредактируйте /etc /kde4 /kdm /kdmrc и измените StaticServers и ReserveServers:

StaticServers=:1
ReserveServers=:2,:3

Или используйте gdm (gdm попросит использовать другой дисплей, если DISPLAY:0 уже используется.

aptitude install gdm

Чтобы запустить полный сеанс kde4, перейдите в текстовый виртуальный терминал (vt) за пределами текущего сеанса X, например vt2 (ctrl-alt-F2). Чтобы войти в полную сессию kde4, выполните следующее:

su - kde4
schroot
su (use root passwd here)
invoke-rc.d kdm start

И теперь вы должны увидеть kdm и иметь возможность войти как kde4 в kde4!
Для более подробной информации см. Выше статью.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .