当我运行时,chroot /somepath /usr/bin/startx
我遇到了一些看起来像 evdev 问题的东西......(我正确地 --bind mounted /dev/ /dev/pts /dev/shm /proc /sys /tmp )
屏幕显示并且程序正常运行,但我没有鼠标和键盘,无法切换到本地终端,迫使我硬重启。
这是什么原因造成的?
有什么解决方案可以让服务器继续运行吗?
可能的复现步骤(适用于所有发行版):
将 Linux 发行版的根目录复制到您正在运行的发行版的文件夹中。
正确绑定安装一切(/ dev / pts / var / run / dev / shm / sys / kernel / debugfs ...)
使用命令运行 shell
chroot
。确保没有任何 X11 服务器正在运行,然后启动
xinit /usr/bin/some X11 program
您现在可以硬重启您的计算机!(如果您没有设置任何远程访问)
答案1
我意识到这个问题已经很老了,但可供参考:
屏幕显示并且程序正常运行,但我没有鼠标和键盘,无法切换到本地终端,迫使我硬重启。
我正确地 --bind mounted /dev/ /dev/pts /dev/shm /proc /sys /tmp
除了安装上述内容外,我也必须绑定挂载/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 wiki 上有一篇文章详细介绍了所需的步骤:
HOWTO_在 chroot 中启动 x。
本文详细介绍了如何首先设置 chroot,然后如何进入 chroot 并配置主系统。
另一篇这样的文章来自 Arch Linux:
从 chroot 运行图形应用程序。
Ubuntu 的更多内容:
访问 chroot 中的图形应用程序
创建带有声音和 X11 的 chroot jail
对于 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
然后运行更新并安装 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 (如果 DISPLAY:0 已被使用,gdm 将要求使用另一个显示器。
aptitude install gdm
要运行完整的 kde4 会话,请转到当前 X 会话之外的文本虚拟终端 (vt),例如 vt2 (ctrl-alt-F2)。要登录完整的 kde4 会话,请运行以下命令:
su - kde4
schroot
su (use root passwd here)
invoke-rc.d kdm start
现在您应该可以看到 kdm 并且能够以 kde4 身份登录到 kde4!
有关更多详细信息,请参阅上述文章。