This page is out of date. Please use the main navigation to find the latest documentation.
gNewSense Orchid: a possible approach to a mipsel gNewSense port.
The initial target for this port is the Lemote Yeeloong netbook.
The gNewSense x86 edition is based on the Ubuntu distribution of the GNU/Linux distribution. The mipsel architecture is however, not a target for official Ubuntu releases. Ubuntu itself is based on Debian GNU/Linux; a distribution that does include the mipsel platform in its official releases.
Ideas have been proposed to base the mipsel port of gNewSense directly on Debian.
The idea behind Orchid is to maintain as much of Ubuntu as possible, so divergence between x86 and mipsel are kept to a minimum.
Debian has much expertise with mipsel and it would be counterproductive to not make use of that knowledge.
The main body of software that is affected by the difference between the mips and x86 instruction set architectures is:
- (the linux kernel)
It might be possible to take these from debian and recompile them serving as a base for the gNewSense mipsel port. The rest of the gNewSense distribution should be able to compile against these using the currently used ubuntu source packages with only minimal changes.
The orchid-x repository is now the new orchid repository. The old trivial repository can still be found under /orchid_trivial_old
Disclaimer: If most of the instructions below are unfamiliar to you it might be best to wait for further development. If all goes well you will end up in a non-graphical environment, which is usable, but might not be what you expected. This is *not* a complete port of the gNewSense operating system for your yeeloong.
Prepare a partition for holding a rootfs you can boot off. (My yeeloong came with free space after the first partition. If this is the factory default, this shouldn't be too hard). The partition I used is /dev/hda4 and I mount it on /target; adjust these for your own configuration in the following instructions.
go to /usr/share/debootstrap/scripts (install debootstrap first if it isn't installed yet)
- ln -s lenny orchid
- mount /dev/hda4 /target
debootstrap orchid /target http://mirror.softwarelibre.nl/orchid
edit the file /target/etc/shadow and remove the "!" in the row starting with "root" so it (the password field) reads "::"
before boot press "Del"
in the bootmonitor;
- set karg "console=tty root=/dev/hda4"
This should prompt for login after some waiting looking at a black screen (console messages show up under tty2 <alt-F2> for me)
log in as "root"
edit /etc/apt/sources.list to read (the nano-tiny editor is installed by default)
configure your network (dynamically with dhclient or statically with ifconfig)
- apt-get update
From here on you should be able to build packages; most relevant tools should only be an "apt-get install" away.
To boot from the factory default os again:
before boot press "Del" in the bootmonitor;
- set karg "console=tty root=/dev/hda1"
- a lot of device files are missing, notably /dev/hda (so you can mount other partitions). Go to /dev and issue a MAKEDEV hda command to fix this. (alternatively, install udev and reboot)
The approach so far:
- Compile glibc,gcc and binutils from debian(further referenced as the d-core)
- compile build/install dependencies for d-core
- if dependencies are too wide/deep or circular, see if the needed dependency is for architecture "All"
- if so, install the package as currently in the repository directly
- if not (package is a mipsel binary) , select a suitable package from a debian repository and directly install with dpkg (force install if necessary)
- generate a trivial repository with all hand-build .debs
- setup a buildd to compile a complete repository
- alter builder to generate a (usb) installable image from the gNewSense-orchid mipsel repository.
- smoothing out inter-package dependencies might take several iterations. This is especially true for force-installed debian .debs .
- source (deb-src) repositories do not follow pinning rules (/etc/apt/preferences). To change source repositories from gnewsense to debian it is easiest to change them directly in /etc/apt/sources and change them back afterwards.
- gcc (Debian 4.3.2-1.1) needs to have the tests during dpkg-buildpackage turned off, otherwise the build hangs/lasts forever.
- binary debs lifted unmodified from the debian repository to break circular dependencies
- libklibc klibc-dev (etch)
- tzdata (lenny)
- linux-libc-dev (lenny)
- transfig (lenny)
- gettext gettext-base (lenny)
- source packages compiled from debian stable (lenny)
- orchid native compiled build failure:
- smail (mipsel, i386) (also fails on debian sid)
- build a debianized linux kernel package. For this the 2.6.27 kernel sources from lemote and linux-libre need to be merged. (done)
- X (xorg from lemote is modified, so rebuilding from ubuntu/debian doesn't work) (done)
- all things tex (done)