Installing Debian as an upgrade: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
(Removing all content from page)
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 15:27, 17 December 2007