Translation(s): none

(!) ?/Discussion


How-to set up a schroot to run KDE4

To run kde4 in a chroot and save your kde3! Run the following as root from konsole!

Create a mount point:

mkdir /home/chroot

Run debootstrap:

debootstrap sid /home/chroot http://ftp.us.debian.org/debian

Create a testuser:

adduser kde4

Install schroot:

aptitude install schroot

Backup /etc/schroot/schroot.conf:

cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.old

Then replace whats in /etc/schroot/schroot.conf with the following:

# 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

Then backup /etc/shroot/mount-defaults:

cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.old

Replace /etc/schroot/mount-defaults with the following: (It is important to make sure that /dev line is listed before /dev/pts)

# 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

Switch to kde4 user:

su - kde4

Then schroot and type root passwd:

schroot -u root

WARNING!!! once you have entered into the chroot mind that the real system /home is bind mounted into the chroot, if you remove any file into the chroot it will be removed in the real system and the other way round. One advice, if you want to remove the chroot to free that disk space, make sure the /home dir is not bind mounted before actually remove the chroot.

Add lenny and experimental repositories to /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

Set up pinning by editing /etc/apt/preferences and adding:

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

Then run update and install kde4:

aptitude update && aptitude install -t experimental kde4 xorg

Install kdm:

aptitude install -t experimental kdm

Then edit /etc/kde4/kdm/kdmrc change ?StaticServers and ?ReserveServers:

StaticServers=:1
ReserveServers=:2,:3

Or use gdm (gdm will ask to use another display if DISPLAY :0 is already in use.

aptitude install gdm

Running a from within the current X session

Outside of the schroot install sux as root:

apt-get install sux

Now we should change to the kde4 user, enter the chroot and run the command, e.g.: konqueror. This all need to be done keeping current Xorg session credentials.

sux - kde4
schroot -p
konqueror

Running a full kde4 session

Go to a text virtual terminal(vt), this is outside current X session, for example vt2 (ctrl-alt-F2)

To login to a full kde4 session run the following:

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

And now you should see kdm and should be able to login as kde4 to kde4!

WARNING!!! you can login into the kde4 session as your regular user(s) since the chroot includes a bind mount to your real system /home dir. Don't do this because that regular user's files and configurations could be affected. You're warned.

To switch between kde4 and kde3 you should be able to just alt+ctrl F7 (kde3) and alt+ctrl F8 (kde4)

Running a full kde4 session with NVIDIA 3D Drivers

To be able to test KDE4 to the full extent, you need to test the new Plasma, KDE Window Manager et cetera, which require Composite to be available.

For the chroot, you need to have the nvidia-glx package available so that the X server can use it.

But nvidia-glx also depends on the kernel component which you can't install. That's because as of 2008-07-19, nvidia-glx depends on a virtual package nvidia-kernel-173.14.09, which is provided by one of the nvidia package which hold the kernel module.

You can use equivs to overcome this problem. In your chroot environment, install equivs and then create a dummy nvidia-kernel-173.14.09 package.

Creating the nvidia-kernel dummy package's control file with equivs.

learner:/tmp# equivs-control nvidia-kernel-control

This is how the content looks like. You can modify it more as you like but the 'Package' section is important and that is what matters the most.

learner:~# cat /tmp/nvidia-kernel-control
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2

Package: nvidia-kernel-173.14.09
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <yourname@example.com>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: <short description; defaults to some wise words>
 long description and info
 .
 second paragraph

Now, build the dummy package

learner:/tmp# equivs-build nvidia-kernel-control
dh_testdir
dh_testroot
dh_clean -k
dh_testdir
dh_testroot
dh_install
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `nvidia-kernel-173.14.09' in `../nvidia-kernel-173.14.09_1.0_all.deb'.

The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!

Great. Now you have the exact nvidia-kernel dummy package that nvidia-glx depends on. Go ahead and install it.

learner:/tmp# dpkg -i nvidia-kernel-173.14.09_1.0_all.deb
Selecting previously deselected package nvidia-kernel-173.14.09.
(Reading database ... 70779 files and directories currently installed.)
Unpacking nvidia-kernel-173.14.09 (from nvidia-kernel-173.14.09_1.0_all.deb) ...
Setting up nvidia-kernel-173.14.09 (1.0) ...

Yippy!! Now you should be able to install nvidia-glx package without cracking nuts.

learner:/tmp# apt-get install nvidia-glx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libpciaccess0 xfonts-base libgl1-mesa-dri
Use 'apt-get autoremove' to remove them.
Suggested packages:
  nvidia-settings nvidia-kernel-source
The following NEW packages will be installed:
  nvidia-glx
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 7681kB of archives.
After this operation, 22.8MB of additional disk space will be used.
Get:1 http://ftp.us.debian.org sid/non-free nvidia-glx 173.14.09-2 [7681kB]

That's it. Now copy the xorg.conf file from your real installation to the chroot installation and you should be able to start-up your chrooted X server with nvidia 3D driver.


CategoryProposedDeletion: Outdated procedure, KDE 3 is not part of stable or oldstable, content specific to an unsupported release.