Installing Debian as an upgrade: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Removing all content from page)
m (Reverted edits by Vandal (Talk); changed back to last version by 65.75.18.227)
Line 1: Line 1:
These instructions assume you are starting from build 612 or later, which has support for booting from multiple images. (This started working some time prior to build 612, but I can't be bothered to look up the exact build right now.)

Now, boot into sugar. You are currently running from the system in /versions/run/<build number>, which is a copy-on-write mirror of /versions/pristine/<build number>. We're going to install debian in /versions/pristine/debian. (See [[Early Boot]] for details on the OS versioning scheme.)

: Note that recent builds allow you to type:
# /usr/sbin/olpc-update debian
: or
# /usr/sbin/olpc-update debian-big
: to magically get the results of step 3, or step 5 below.

==Shell script alternative==

I have created a shell script which automates all steps 1 and 2. All you have to do is put it on the OLPC and run it. However, it is totally unsafe to run software downloaded from a wiki in this way. I could have put all manner of evil in it. So read it first. --[[User:65.75.18.227|65.75.18.227]] 00:59, 16 December 2007 (EST)

The script: [[Installing Debian as an upgrade/script]]

==Step 1: Create debian bootstrap==
From an existing debian system, as root (fakeroot won't work, sadly):
# apt-get install debootstrap
# mkdir mnt
# debootstrap --include=udev,wireless-tools etch mnt http://http.us.debian.org/debian/

Wait awhile. Eventually, you'll have a complete debian bootstrap system in mnt.

# tar -C mnt -czf xo-debian.tgz .
# /bin/rm -rf mnt

If you don't have a debian system, download a prebuilt xo-debian.tgz [http://dev.laptop.org/~cscott/xo-debian.tgz here].

Put xo-debian.tgz on a usb key.

==Step 2: Install debian bootstrap==
From the XO, log in as root on console. Insert usb key.
# cd /versions/pristine
# mkdir debian ; cd debian
# tar xzf /media/*/xo-debian.tgz
# cp /etc/{hosts,fstab} /versions/pristine/debian/etc/
# cp -r /lib/modules/* /versions/pristine/debian/lib/modules
# cp -r /lib/firmware/* /versions/pristine/debian/lib/firmware
# mkdir -p /versions/pristine/debian/{versions,security,var/cache/apt/cache}
# rm -rf /versions/pristine/debian/boot
# cp -r /boot /versions/pristine/debian

Add a new file /versions/pristine/debian/etc/rcS.d/S00unfreeze.sh:
#! /bin/sh
mount -t sysfs /sys /sys
echo 0 > /sys/devices/platform/dcon/freeze
umount /sys

and ensure that it is executable
# chmod a+rx /versions/pristine/debian/etc/rcS.d/S00unfreeze.sh

You also need to use the fix at [http://osdir.com/ml/linux.debian.devel.handheld/2005-12/msg00003.html] to make apt work. Use vi or nano to edit files. The fix from the link is quoted below, with some edits and paths adjusted appropriately:
:Note: to get around the apt-get jffs2/mmap [http://lists.debian.org/debian-handheld/2003/03/msg00000.html issue], I added the following line to /versions/pristine/debian/etc/fstab:
tmpfs /var/cache/apt/cache tmpfs defaults 0 0
:and created /versions/pristine/debian/etc/apt/apt.conf.d/00-tmpfs-cache with:
Dir {
Cache "var/cache/apt/" {
srcpkgcache "cache/srcpkgcache.bin";
pkgcache "cache/pkgcache.bin";
};
};
:Not exactly ideal, but it works for me. It will take apt a little while to rebuild the cache after you reboot, of course. I think you could achieve persistence by copying the files to/from the tmpfs either in startup/shutdown scripts, or maybe pre-/post-invocation hooks in apt (which might have the added benefit of being able to mount/unmount the tmpfs on demand).

Make this the new alternate OS!
# cd /versions/boot
# rm -rf alt
# ln -s /versions/pristine/debian alt
# cp -rl /versions/pristine/debian /versions/run/debian
# /usr/sbin/setattr -R --iunlink /versions/run/debian

==Step 3: Boot into Debian!==

Shutdown your XO, then take out your usb key. As documented at [[Cheat codes]], reboot while holding down the 'O' key to switch to the alternate OS (debian!). Reboot again with 'O' pressed down to switch back later.

==Step 4: Start networking==

Just use ifconfig if you've got a supported wired ethernet adapter. To connect to an access point:
# modprobe usb8xxx
# iwconfig eth0 essid <your-access-point>
# dhclient eth0

(The modprobe command is unnecessary if udev did it's job. You might look at the output to 'lsmod' to check that it's loaded.)

==Step 5: Install fun stuff==

For example:
# apt-get update
# apt-get install emacs

(aptitude will pull in 'suggests' dependencies, which will bloat your system. use apt-get instead.)

# apt-get install gnome-terminal gdm xserver-xorg-video-fbdev xorg metacity xterm gnome-core

(Don't worry too much about the xserver config -- just take the defaults, we'll fix it in a second.)

# apt-get remove xfonts-75dpi xserver-xorg-input-wacom

Now download [http://dev.laptop.org/~cscott/xorg.conf] and copy it to /etc/X11/xorg.conf.

You'll probably want to use 'adduser' to add a user to the system, too. The 'olpc' user will be handy:

# addgroup --gid 500 olpc
# adduser --uid 500 --gid 500 olpc

Reboot and voila! Graphical goodness.

==Links==
* See also [[Sugar on Debian]]

[[category:software]]

Revision as of 16:30, 17 December 2007

These instructions assume you are starting from build 612 or later, which has support for booting from multiple images. (This started working some time prior to build 612, but I can't be bothered to look up the exact build right now.)

Now, boot into sugar. You are currently running from the system in /versions/run/<build number>, which is a copy-on-write mirror of /versions/pristine/<build number>. We're going to install debian in /versions/pristine/debian. (See Early Boot for details on the OS versioning scheme.)

Note that recent builds allow you to type:
# /usr/sbin/olpc-update debian
or
# /usr/sbin/olpc-update debian-big
to magically get the results of step 3, or step 5 below.

Shell script alternative

I have created a shell script which automates all steps 1 and 2. All you have to do is put it on the OLPC and run it. However, it is totally unsafe to run software downloaded from a wiki in this way. I could have put all manner of evil in it. So read it first. --65.75.18.227 00:59, 16 December 2007 (EST)

The script: Installing Debian as an upgrade/script

Step 1: Create debian bootstrap

From an existing debian system, as root (fakeroot won't work, sadly):

# apt-get install debootstrap
# mkdir mnt
# debootstrap --include=udev,wireless-tools etch mnt http://http.us.debian.org/debian/

Wait awhile. Eventually, you'll have a complete debian bootstrap system in mnt.

# tar -C mnt -czf xo-debian.tgz .
# /bin/rm -rf mnt

If you don't have a debian system, download a prebuilt xo-debian.tgz here.

Put xo-debian.tgz on a usb key.

Step 2: Install debian bootstrap

From the XO, log in as root on console. Insert usb key.

# cd /versions/pristine
# mkdir debian ; cd debian
# tar xzf /media/*/xo-debian.tgz
# cp /etc/{hosts,fstab} /versions/pristine/debian/etc/
# cp -r /lib/modules/* /versions/pristine/debian/lib/modules
# cp -r /lib/firmware/* /versions/pristine/debian/lib/firmware
# mkdir -p /versions/pristine/debian/{versions,security,var/cache/apt/cache}
# rm -rf /versions/pristine/debian/boot
# cp -r /boot /versions/pristine/debian

Add a new file /versions/pristine/debian/etc/rcS.d/S00unfreeze.sh:

#! /bin/sh
mount -t sysfs /sys /sys
echo 0 > /sys/devices/platform/dcon/freeze
umount /sys

and ensure that it is executable

# chmod a+rx /versions/pristine/debian/etc/rcS.d/S00unfreeze.sh

You also need to use the fix at [1] to make apt work. Use vi or nano to edit files. The fix from the link is quoted below, with some edits and paths adjusted appropriately:

Note: to get around the apt-get jffs2/mmap issue, I added the following line to /versions/pristine/debian/etc/fstab:
 tmpfs   /var/cache/apt/cache  tmpfs defaults 0 0
and created /versions/pristine/debian/etc/apt/apt.conf.d/00-tmpfs-cache with:
 Dir {
  Cache "var/cache/apt/" {
   srcpkgcache "cache/srcpkgcache.bin";
   pkgcache "cache/pkgcache.bin";
  };
 };
Not exactly ideal, but it works for me. It will take apt a little while to rebuild the cache after you reboot, of course. I think you could achieve persistence by copying the files to/from the tmpfs either in startup/shutdown scripts, or maybe pre-/post-invocation hooks in apt (which might have the added benefit of being able to mount/unmount the tmpfs on demand).

Make this the new alternate OS!

# cd /versions/boot
# rm -rf alt
# ln -s /versions/pristine/debian alt
# cp -rl /versions/pristine/debian /versions/run/debian
# /usr/sbin/setattr -R --iunlink /versions/run/debian

Step 3: Boot into Debian!

Shutdown your XO, then take out your usb key. As documented at Cheat codes, reboot while holding down the 'O' key to switch to the alternate OS (debian!). Reboot again with 'O' pressed down to switch back later.

Step 4: Start networking

Just use ifconfig if you've got a supported wired ethernet adapter. To connect to an access point:

# modprobe usb8xxx
# iwconfig eth0 essid <your-access-point>
# dhclient eth0

(The modprobe command is unnecessary if udev did it's job. You might look at the output to 'lsmod' to check that it's loaded.)

Step 5: Install fun stuff

For example:

# apt-get update
# apt-get install emacs

(aptitude will pull in 'suggests' dependencies, which will bloat your system. use apt-get instead.)

# apt-get install gnome-terminal gdm xserver-xorg-video-fbdev xorg metacity xterm gnome-core

(Don't worry too much about the xserver config -- just take the defaults, we'll fix it in a second.)

# apt-get remove xfonts-75dpi xserver-xorg-input-wacom

Now download [2] and copy it to /etc/X11/xorg.conf.

You'll probably want to use 'adduser' to add a user to the system, too. The 'olpc' user will be handy:

# addgroup --gid 500 olpc
# adduser --uid 500 --gid 500 olpc

Reboot and voila! Graphical goodness.

Links