ProteanOS 1.0 ported to Acer Aspire One AO751h

Over the past week and a half I've ported ProteanOS 1.0 to the Acer
Aspire One AO751h netbook.  As of today, the "dev/trunk" suite of the
distribution now runs on actual hardware!  (Previously it could only run
in an isolated file system environment with chroot on a host system.)

This system uses the "i686-linux-glibc" architecture and "ao751h" [1]
platform.  The "linux-libre" source package now builds "linux-image" and
"linux-sysmap" binary packages for platforms other than "dev" (which is
only for chroot systems).

The Linux-libre image file is statically linked (no modules) and 4303904
bytes in size.  To keep the boot process simple and fast, ProteanOS does
not use any kind of initial RAM-based root file system.

The system boots in about six and a half seconds.  It could boot in
under two seconds, except the experimental "gma500" Linux DRM/KMS driver
apparently waits a long time for a response on a GPU register (several
"GMBUS timed out, falling back to bit banging on pin 0" messages are
printed).

Everything I've tested so far works, except I'm missing a driver option
for the built-in keyboard.  I'm guessing this is connected over a PS/2
interface, but so far I can't find the configuration option that enables
the keyboard.  If anyone is familiar with laptop keyboard interfaces and
their drivers in Linux, any hints would be appreciated.  USB keyboards
work.

This port has exposed a few bugs in the busybox package and in opkbuild,
ProteanOS's build system.  Some of these have been fixed, and one more
is in progress.

Additional IA-32 (P6 and later) and AMD64 system ports can be done
simply by making a new "config-*" package (with configuration files for
BusyBox and Linux-libre) and building platform-specific packages (so far
just base-files, busybox, and linux-libre) against it.  The main part of
the work is configuring Linux-libre for the target computer.

I can guide anyone who is interested in porting ProteanOS 1.0 to more
computers.  Running ProteanOS on your own development workstations will
help in packaging and testing certain programs.

[1]: http://git.proteanos.com/pkg/config-ao751h.git/

Installation
------------

Following are steps to install ProteanOS to run on an AO751h netbook.

Get miniprokit, the "Mini ProteanOS Development Kit", as instructed
here: <http://www.proteanos.com/get/>.

On the storage medium (e.g. a USB flash drive), create one primary
partition of type 0x83 (Linux) and mark it as bootable.  I use cfdisk
from util-linux for this, but any partitioning program should work.

Run the following commands (replacing "/dev/sdc1" with the path to the
newly created partition) to make and mount an ext4 file system, install
ProteanOS into it, and enter a ProteanOS shell:

    # mke2fs -t ext4 /dev/sdc1
    # mount /dev/sdc1 /mnt
    # /path/to/miniprokit.sh install -a i686-linux-glibc -P ao751h /mnt
    # /path/to/miniprokit.sh shell /mnt

Then, in the ProteanOS shell, run:

    # opkg install linux-image
    # printf 'root::0:0:root:/root:/bin/sh\n' >/etc/passwd
    # printf 'proteanos\n' >/etc/hostname

Optionally configure the time zone, e.g.:

    # opkg install tzdata-northamerica
    # ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

You can get a list of available time zone database packages by running
`opkg info 'tzdata-*'`.  You can use the "tzselect" utility (from the
"tzcode" package) to find the correct name for your time zone.

Optionally configure the network interfaces, e.g.:

    # mkdir /etc/network
    # cat >/etc/network/interfaces <<EOF
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
    	address 192.168.1.128
    	netmask 255.255.255.0
    	gateway 192.168.1.1
    EOF

DHCP is not yet well supported (but can be manually set up).

Exit the ProteanOS shell:

    # exit

Back on the host system, unmount the file system:

    # umount /mnt

The storage medium can then be removed and connected to the netbook.

I boot ProteanOS from a USB flash drive using GNU GRUB 2 installed on
the netbook's hard drive.  I've added the following to my GRUB
configuration (but of course entering the "set" and "linux" commands
manually at the GRUB prompt also works):

    menuentry 'ProteanOS BusyBox/Linux-libre 1.0' {
    	set root='(hd1,msdos1)'
    	echo	'Loading Linux-libre ...'
    	linux	/boot/vmlinuz root=/dev/sdb1 rw
    }

This assumes that the hard drive and the flash drive are the only
storage media connected to the netbook.

(Eventually, we should get LILO packaged so ProteanOS can install its
own bootloader on IA-32 and AMD64 systems.)

Once GRUB loads the Linux-libre image and ProteanOS finishes booting,
press enter to use the console and login as "root" (with no password).
The password can be set with the "passwd" utility.

-- 
Patrick "P. J." McDermott
  http://www.pehjota.net/
Lead Developer, ProteanOS
  http://www.proteanos.com/