Changes

Jump to navigation Jump to search
2,081 bytes removed ,  21:33, 23 February 2010
m
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
apt-get update
  −
apt-get install sugar sugar-activities
  −
  −
# install your development tools here
  −
  −
# patch (hopefully temporary) bugs
  −
sed -ie '114i\\        if not favorites_settings.layout: favorites_settings.layout = favoriteslayout.RingLayout.key' /usr/lib/python2.6/dist-packages/jarabe/desktop/favoritesview.py
     −
=== User Accounts ===
+
to install your chroot.
   −
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.)
+
=== History ===
   −
Consequently, ''as root'', run something like this ''both'' inside and outside the chroot:
+
See http://wiki.sugarlabs.org/index.php?title=Development_Team/Chroot&oldid=36911 for the manual instructions which sugar-chroot automates.
 
  −
groupadd -g 64002 sugar
  −
useradd -m -u 64002 -g sugar -s /bin/bash sugar
  −
 
  −
=== 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, ''outside the chroot'', we need to
  −
 
  −
sudo 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.)
  −
 
  −
=== X11 ===
  −
 
  −
We need to point Sugar at an X server. One easy (but insecure) way to do this is to make a nested X server like so, ''outside the chroot'':
  −
 
  −
Xephyr -ac :1 -screen 800x600x24
  −
 
  −
See the talk page for more secure alternatives.
  −
 
  −
=== Running Sugar ===
  −
 
  −
Then, inside the chroot, you can happily run sugar as user 'sugar' with something like
  −
 
  −
sudo chroot $CHROOT /bin/bash -l
  −
su sugar -
  −
export DISPLAY=:1
  −
export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --print-address --fork)
  −
sugar
 

Navigation menu