Jump to content

Development Team/Chroot: Difference between revisions

From Sugar Labs
Mstone (talk | contribs)
No edit summary
m moved Walter is a wanker 12/Chroot to Development Team/Chroot over redirect: revert
 
(48 intermediate revisions by 7 users not shown)
Line 1: Line 1:
Sugar ought to be easy to run from chroots. For a variety of silly reasons, this isn't yet the case, but it might be soon. Ping [[User:Mstone|Michael]] with questions.
=== Status ===


=== Chroot Construction ===
* sugar-chroot-0.1 released: see [http://dev.laptop.org/git/users/mstone/sugar-chroot sugar-chroot]


There are lots of ways to create appropriate chroots; e.g. by hand, with debootstrap, with mock, etc.
=== Purpose ===


Here are some ideas to help you get started:
''You want to hack sugar. You don't want to fuss around. '''You want sugar-chroot.'''''


==== Ubuntu jaunty chroot ====
=== Usage ===
With ''recent'' versions of debootstrap, in order to get a working chroot, you want something like:


export CHROOT=`pwd`/jaunty-root
As excerpted from the '''[http://dev.laptop.org/git/users/mstone/sugar-chroot/plain/README README]''':
sudo debootstrap --arch i386 jaunty $CHROOT http://ubuntu.media.mit.edu/ubuntu/
sudo chroot $CHROOT /bin/bash -l
mount -t proc proc /proc
mount -t devpts devpts /dev/pts


==== Debian sid chroot ====
sugar-chroot consists of simple scripts. Download and unpack them like so:
With debootstrap, in order to get a working chroot, you want something like:  


  export CHROOT=`pwd`/sid-root
  NV=sugar-chroot-0.1
  sudo debootstrap --arch i386 sid $CHROOT http://debian.lcs.mit.edu/debian
  curl http://dev.laptop.org/~mstone/releases/SOURCES/$NV.tar.xz | tar Zxf $NV.tar.xz
sudo chroot $CHROOT /bin/bash -l
  cd $NV
# and some of the following:
mount -t proc proc $CHROOT/proc
mount -t devpts devpts $CHROOT/dev/pts
  mount -t selinuxfs selinux $CHROOT/selinux


''Reference: http://www.debian.org/doc/manuals/reference/ch-tips.en.html ''
To use them, pick a supported distro:


==== Fedora rawhide chroot ====
DISTRO=debian
With mock, it would be more like:
DISTRO=fedora


mock -r fedora-devel-i386 --init
To configure:
mock -r fedora-devel-i386 --shell


=== Sugar Installation ===
echo $DISTRO > conf/distro
$EDITOR conf/$DISTRO.mk


==== jaunty chroot ====
Then run


  sed -ie "s/main/main universe/" /etc/apt/sources.list
  sudo make r/distro


=== X11 ===
to install your chroot.


Most X11 servers are configured to disable TCP connections. This means that in order to get a working X connection we can:
=== History ===


# bind-mount the X unix socket into the chroot.
See http://wiki.sugarlabs.org/index.php?title=Development_Team/Chroot&oldid=36911 for the manual instructions which sugar-chroot automates.
# ssh ''into'' the chroot with X11-forwarding enabled.
# Enable TCP on an X server, e.g. a nested Xephyr.
 
We're going to try option (3) first:
 
Xephyr -ac :1
 
And, ''inside'' the chroot, set the <tt>DISPLAY</tt> to <tt>localhost:1</tt>.
 
=== D-Bus ===
 
Sugar wants to be able to use global state stored in both HAL and NetworkManager, both of which live on the system bus. Consequently, we need to bind-mount
 
  mount --bind /var/run/dbus $CHROOT/var/run/dbus
 
before entering the chroot. (Mock uses unshare() to enter a new mount-point namespace since this makes garbage collection of mountpoints much easier.)
 
=== User Account ===
 
For stupid reasons, it's necessary that Sugar run under a uid inside the chroot which exists as a real account outside the chroot. (Talk to the DBus people.)
 
Consequently, run something like this ''both'' inside and outside the chroot:
 
  groupadd -g 64002 sugar
  useradd -m -u 64002 -g sugar -s /bin/bash sugar
 
Then, inside the chroot, you can happily run sugar as user 'sugar' with something like
 
  su sugar -
  export DISPLAY=:1
  export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --print-address --fork)
  sugar

Latest revision as of 21:33, 23 February 2010

Status

Purpose

You want to hack sugar. You don't want to fuss around. You want sugar-chroot.

Usage

As excerpted from the README:

sugar-chroot consists of simple scripts. Download and unpack them like so:

NV=sugar-chroot-0.1
curl http://dev.laptop.org/~mstone/releases/SOURCES/$NV.tar.xz | tar Zxf $NV.tar.xz
cd $NV

To use them, pick a supported distro:

DISTRO=debian
DISTRO=fedora

To configure:

echo $DISTRO > conf/distro
$EDITOR conf/$DISTRO.mk

Then run

sudo make r/distro

to install your chroot.

History

See http://wiki.sugarlabs.org/index.php?title=Development_Team/Chroot&oldid=36911 for the manual instructions which sugar-chroot automates.