Como iniciar o servidor Xorg dentro do chroot simples?

6

quando eu executo chroot /somepath /usr/bin/startx eu recebo algo que parece um problema evdev ... (eu corretamente --bind montado / dev / / dev / pts / dev / shm / proc / sys / tmp)

A tela é exibida e os programas são executados normalmente, exceto que não tenho mouse nem teclado e não posso alternar para um terminal local, forçando-me a reinicializar com força.

Qual é a causa disso?
Existe alguma solução para prosseguir executando o servidor?

Etapas possíveis para reproduzir (trabalhar em todas as distribuições) :

  • copie o diretório raiz de uma distribuição do Linux para uma pasta de distribuição em execução.

  • vincule corretamente a montagem de tudo (/ dev / pts / var / run / dev / shm / sys / kernel / debugfs ...)

  • execute um shell com o comando chroot .

  • Certifique-se de que nenhum servidor X11 já esteja em execução e inicie o xinit /usr/bin/some X11 program

Agora você pode reiniciar seu computador com dificuldade! (se você não configurou nenhum acesso remoto)

    
por user2284570 15.12.2013 / 19:10

2 respostas

6

Eu percebo que esta pergunta é antiga, mas para referência:

The screen is displayed and programs run normally, except I got no mouse nor keyboard and I can't switch to a local terminal, forcing me to hard reboot.

I correctly --bind mounted /dev/ /dev/pts /dev/shm /proc /sys /tmp

Além de montar o acima, eu também tive que vincular mount / run / udev para fazer o mouse e o teclado funcionarem no meu chroot. Eu fiz não usar um xorg.conf *, e o Xorg foi capaz de detectar corretamente minhas configurações.

Entrada no meu /etc/schroot/default/fstab :

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

Se você está fazendo um chroot padrão, você pode colocá-lo no seu /etc/fstab :

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

... ou mount --bind it.

* Bem-- eu tentei usar um xorg.conf inicialmente, mas não funcionou. Eu também tentei adicionar

Section "ServerFlags" Option "AutoAddDevices" "false" EndSection no xorg.conf, o que fez meu mouse funcionar, mas não o teclado.

    
por 02.08.2014 / 22:30
2

Existe um artigo no wiki do Gentoo que detalha o procedimento necessário: HOWTO_startx_in_a_chroot .
O artigo detalha como primeiro configurar o chroot, como inserir o chroot e configurar o sistema principal.

Outro artigo desse tipo vem do Arch Linux: Executando aplicativos gráficos a partir do chroot .

Mais para o Ubuntu:
Acessando aplicativos gráficos dentro do chroot
Criando uma cadeia chroot com som e X11

Para o KDE: Kde4schroot . Como esse é o que é exigido, aqui estão alguns detalhes:

Substitua /etc/schroot/schroot.conf por:

# 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

Em seguida, substitua /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

Mude para o usuário kde4:

su - kde4

Em seguida, digite schroot e digite root passwd:

schroot -u root

Adicione os repositórios lenny e experimental ao /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

Configure a fixação editando /etc/apt/preferences e adicionando:

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

Em seguida, execute a atualização e instale o kde4:

aptitude update && aptitude install -t experimental kde4 xorg

Instale o kdm:

aptitude install -t experimental kdm

Em seguida, edite o / etc / kde4 / kdm / kdmrc e altere os servidores estáticos e de reserva:

StaticServers=:1
ReserveServers=:2,:3

Ou use o gdm (o gdm irá pedir para usar outro display se DISPLAY: 0 já estiver em uso.

aptitude install gdm

Para executar uma sessão completa do kde4, vá para um terminal virtual de texto (vt) fora da sessão X atual, por exemplo vt2 (ctrl-alt-F2). Para fazer o login em uma sessão completa do kde4, execute o seguinte:

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

E agora você deve ver o kdm e deve poder fazer o login como kde4 para kde4!
Para mais detalhes, consulte o artigo acima.

    
por 30.06.2014 / 12:32