r4833 - in developers/werner: . myroot2

werner at docs.openmoko.org werner at docs.openmoko.org
Thu Nov 27 23:04:42 CET 2008


Author: werner
Date: 2008-11-27 23:04:42 +0100 (Thu, 27 Nov 2008)
New Revision: 4833

Added:
   developers/werner/myroot2/
   developers/werner/myroot2/myroot
   developers/werner/myroot2/werner.init
   developers/werner/myroot2/werner.myroot
Log:
Branch of myroot/ for conversion to rootfs-builder.



Added: developers/werner/myroot2/myroot
===================================================================
--- developers/werner/myroot2/myroot	                        (rev 0)
+++ developers/werner/myroot2/myroot	2008-11-27 22:04:42 UTC (rev 4833)
@@ -0,0 +1,231 @@
+#!/bin/sh
+
+#
+# Builds upon the Openmoko toolchain:
+# http://wiki.openmoko.org/wiki/Toolchain
+#
+
+PREFIX=/usr/local/openmoko/arm
+ARCH=arm-angstrom-linux-gnueabi
+CONF=$PREFIX/$ARCH/etc/opkg.conf
+LIB=$PREFIX/lib
+OPKG_CL=$PREFIX/bin/opkg-cl
+
+MAKE="`which make`"
+INSTALL="`which install`"
+
+CWD=$PWD
+root=$PWD/root
+
+remove_root=true
+interactive=false
+
+
+# ----- Find the Openmoko SVN repository --------------------------------------
+
+
+for base in $PWD $HOME /home; do
+    for dir in "" openmoko moko om; do
+	for svn in svn.openmoko.org svn.openmoko svn ""; do
+	    try=$base/$dir/$svn
+	    if [ -d $try/developers/werner ]; then
+		SVN=$try
+		break 3
+	    fi
+	done
+    done
+done
+
+echo "SVN=$SVN"
+if [ -z "$SVN" ]; then
+    echo svn checkout http://svn.openmoko.org/
+    exit 1
+fi
+
+
+# ----- Find the cache --------------------------------------------------------
+
+
+for base in $PWD $HOME /home; do
+    for dir in "" openmoko moko om; do
+	for name in opkg-cache .opkg-cache; do
+	    try=$base/$dir/$name
+	    if [ -d $try ]; then
+		CACHE=$try
+		break 3
+	    fi
+	done
+    done
+done
+
+if [ ! -z "`opkg-cl --cache=dummy --version 2>&1 >/dev/null`" -o \
+  -z "$CACHE" ]; then
+    cache=
+else
+    cache="--cache=$CACHE"
+fi
+
+
+# ----- Special commands in the build script ----------------------------------
+
+
+opkg()
+{
+    LD_LIBRARY_PATH=$LIB $OPKG_CL $cache -f $CONF -o "$root" "$@"
+}
+
+
+pkg()
+{
+    LD_LIBRARY_PATH=$LIB $OPKG_CL $cache -f $CONF -o "$root" -V 0 install "$@"
+}
+
+
+make()
+{
+    PATH=$PATH:$PREFIX/bin $MAKE -s CC=$ARCH-gcc "$@"
+}
+
+
+install()
+{
+    [ -e "$1" ]
+    [ -d "$2" ]
+    cp "$1" "$root/$2/"
+}
+
+
+root()
+{
+    cd $root
+}
+
+
+# ----- Set up the root directory ---------------------------------------------
+
+
+if [ "$root" = "${root#/}" ]; then
+    root="$PWD/$root"
+fi
+
+root="`echo \"$root\" | sed 's|/$||'`"
+root_base="`dirname \"$root\"`"
+
+if [ -d "$root" ]; then
+    if $remove_root; then
+	rm -rf "$root"
+    else
+	echo "$root: output directory already exists" 1>&2
+	exit 1
+    fi
+fi
+
+if [ -e "$root" ]; then
+    echo "$root: something is in the way" 1>&2
+    exit 1
+fi
+
+if [ ! -d "$root_base" ]; then
+    echo "$root: no parent directory" 1>&2
+    exit 1
+fi
+
+echo "Creating $root"
+mkdir "$root"
+
+
+# ----- set up the bare essentials --------------------------------------------
+
+
+mkdir -p "$root/dev"
+mkdir -p "$root/proc"
+mkdir -p "$root/sys"
+
+mknod "$root/dev/null" c 1 3
+mknod "$root/dev/tty" c 5 0
+mknod "$root/dev/console" c 5 1
+mknod "$root/dev/ttySAC2" c 204 66
+
+mkdir -p "$root/sbin"
+mkdir -p "$root/bin"
+mkdir -p "$root/etc"
+mkdir -p "$root/tmp"
+mkdir -p "$root/usr/local/bin"
+mkdir -p "$root/usr/lib/opkg"
+
+mkdir -p "$root/home/root"
+chmod 755 "$root/home" "$root/home/root"
+
+echo ROOT / auto defaults 0 0 >"$root/etc/fstab"
+echo "root::0:0:root:/home/root:/bin/sh" >"$root/etc/passwd"
+
+cp $CONF "$root/etc"
+
+
+# ----- opkg environment ------------------------------------------------------
+
+
+PKG_CONFIG_SYSROOT_DIR="$root"
+PKG_CONFIG_PATH="/usr/lib/pkgconfig"
+CONFIG_SITE=/usr/local/openmoko/arm/site-config
+
+export PKG_CONFIG_SYSROOT_DIR PKG_CONFIG_PATH CONFIG_SITE
+
+
+# ----- opkg package database -------------------------------------------------
+
+# @@@ cache lists and packages
+
+update_cache()
+{
+    mkdir -p $PWD/cache
+    root=$PWD/cache opkg update
+}
+
+
+
+# -----
+
+
+
+opkg update
+custom=$1
+if [ ! -z "$custom" ]; then
+    if [ "${custom#/}" = "$custom" ]; then
+	custom="$PWD/$custom"
+    fi
+    . "$custom"
+fi
+
+
+if $interactive; then
+    while read -e -p "mkroot> " l; do
+	eval "$l"
+    done
+fi
+
+
+# ----- run postinstall scripts -----------------------------------------------
+
+
+#
+# The only thing we really need our post-install scripts to do is to rename the
+# alternatives. We accomplish this by executing them on the host, but giving
+# them a very limited PATH, containing only update-alternatives.
+#
+
+restricted_bin=$SVN/developers/werner/myroot/restricted_bin
+
+cd "$root/usr/lib/opkg/info"
+MYROOT_ROOT="$root"
+export MYROOT_ROOT
+for n in *.postinst; do
+    PATH=$restricted_bin ./$n
+done
+rm *.postinst
+
+
+# ----- Done ------------------------------------------------------------------
+
+
+exit


Property changes on: developers/werner/myroot2/myroot
___________________________________________________________________
Name: svn:executable
   + *

Added: developers/werner/myroot2/werner.init
===================================================================
--- developers/werner/myroot2/werner.init	                        (rev 0)
+++ developers/werner/myroot2/werner.init	2008-11-27 22:04:42 UTC (rev 4833)
@@ -0,0 +1,40 @@
+#!/bin/sh
+PATH=/sbin:/bin/:/usr/bin:/usr/local/bin
+
+# if booting from microSD, rootfs may be read-only
+mount -n -o remount,rw /
+
+ldconfig
+mod_dir=/lib/modules/`uname -r`
+mkdir -p $mod_dir
+touch $mod_dir/modules.dep
+
+# mounts
+mount -t proc none /proc
+mount -t sysfs none /sys
+mount -t tmpfs none /tmp
+
+# devices and sshd
+mount -t tmpfs none /dev
+mknod /dev/null c 1 3
+mknod /dev/tty c 5 0
+mknod /dev/ttySAC2 c 204 66
+mkdir /dev/pts
+mount -t devpts none /dev/pts
+( udevd --daemon; udevtrigger && udevsettle && /usr/sbin/sshd;
+  echo "<*** System initialization complete ***>" >/dev/console ) &
+
+# network
+ifconfig usb0 192.168.0.202 up
+route add default gw 192.168.0.200
+
+# X
+TSLIB_TSDEVICE=/dev/input/touchscreen0
+export TSLIB_TSDEVICE
+
+# shell
+PS1='con:\w\$ '
+HOME=/home/root
+cd $HOME
+export PS1 HOME
+exec setsid /bin/bash -l </dev/ttySAC2 >/dev/ttySAC2 2>&1


Property changes on: developers/werner/myroot2/werner.init
___________________________________________________________________
Name: svn:executable
   + *

Added: developers/werner/myroot2/werner.myroot
===================================================================
--- developers/werner/myroot2/werner.myroot	                        (rev 0)
+++ developers/werner/myroot2/werner.myroot	2008-11-27 22:04:42 UTC (rev 4833)
@@ -0,0 +1,196 @@
+#
+# Werner's customized development root FS.
+#
+# Highlights:
+# - no GUI or fancy system daemons
+# - has lots of exploration tools used (only) for system-level development
+# - wherever possible, installs full versions of programs, not busybox
+#
+
+# ----- paths -----------------------------------------------------------------
+
+
+root
+calypso=http://people.openmoko.org/joerg/calypso_moko_FW/
+my=$SVN/developers/werner
+
+
+# ----- basic setup -----------------------------------------------------------
+
+
+pkg udev procps
+pkg task-proper-tools
+
+# OE.net's talk-proper-tools already has the following packages in
+# task-proper-tools, but OM.org hasn't caught up with it yet
+pkg net-tools iproute2 iputils-ping psmisc debianutils tcptraceroute
+
+pkg grep bash debianutils
+pkg mtd-utils sysfsutils apm
+pkg openssh ntpdate netkit-telnet
+pkg dhcp-client wireless-tools wpa-supplicant
+pkg portmap ppp rsync
+pkg alsa-state alsa-utils-alsamixer alsa-utils-alsactl alsa-utils-aplay
+pkg file
+pkg opkg gzip
+pkg perl python make
+pkg xserver-kdrive-glamo xset xhost xdpyinfo
+
+
+# ----- general exploration tools ---------------------------------------------
+
+
+pkg s3c24xx-gpio
+pkg gdb strace ldd
+
+make -C $my/poke clean all
+cp $my/poke/poke usr/bin
+
+make -C $my/pmu clean all
+cp $my/pmu/pmu usr/bin
+
+make -C $my/wkalrm clean all
+cp $my/wkalrm/wkalrm usr/bin
+
+ln -s /usr/sbin/s3c24xx-gpio usr/bin/gpio
+
+
+# ----- fun with GSM ----------------------------------------------------------
+
+
+pkg $calypso/fluid_0.0+svn20070817-r2_armv4t_eabi.ipk
+pkg cu
+
+#echo "uucp:*:2:2:uucp:/:/bin/true" >>etc/passwd
+#chown 2 dev/ttySAC0
+
+
+# ----- network testing -------------------------------------------------------
+
+
+pkg tcpdump wmiconfig
+
+make -C $my/ttcp clean all
+cp $my/ttcp/ttcp-1.12/ttcp usr/bin
+
+make -C $my/owping clean all
+cp $my/owping/owping usr/bin
+
+cp $my/bin/wlanscan usr/bin
+
+
+# ----- for u-boot ------------------------------------------------------------
+
+
+make -C $SVN/trunk/src/host/envedit clean all
+cp  $SVN/trunk/src/host/envedit/envedit usr/bin
+
+cp $my/neobin/envi usr/bin
+
+
+# ----- create /sbin/init -----------------------------------------------------
+
+
+# inspired by kboot's scripts/kboot
+
+cp $my/myroot/werner.init sbin/init
+
+
+# ----- set up sshd -----------------------------------------------------------
+
+# @@@ cache the keys ?
+
+mkdir -p etc/ssh
+ssh-keygen -t rsa1 -f etc/ssh/ssh_host_key -N ""
+ssh-keygen -t dsa -f etc/ssh/ssh_host_dsa_key -N "" 
+ssh-keygen -t rsa -f etc/ssh/ssh_host_rsa_key -N "" 
+
+echo "sshd:*:1:1:SSH:/:/bin/true" >>etc/passwd
+
+mkdir -p var/run/sshd
+
+
+# ----- enable passwordless SSH entry -----------------------------------------
+
+
+cd home/root
+mkdir .ssh
+chmod 700 .ssh
+cp $HOME/.ssh/id_rsa.pub .ssh/authorized_keys
+root
+
+
+# ----- install things we don't have in the feed yet --------------------------
+
+
+# only df is missing now !
+
+
+# ----- copy configuration files from the host --------------------------------
+
+
+cp /etc/hosts etc/hosts
+cp /etc/services etc/services
+
+# cp /etc/resolv.conf etc/resolv.conf
+
+# prefer to hard-code it here
+
+cat <<EOF >>etc/resolv.conf
+# opendns
+nameserver 208.67.222.222
+nameserver 208.67.220.220
+EOF
+# prevent DHCP from messing with it
+chmod 444 etc/resolv.conf
+
+
+# ----- shell init ------------------------------------------------------------
+
+
+sed -i 's|/bin/sh|/bin/bash|' etc/passwd
+
+cat <<EOF >home/root/.bash_profile
+[ "\${PS1#con}" = "\$PS1" ] && PS1='ssh:\w\\\$ '
+export PS1
+EOF
+
+
+# ----- save some space -------------------------------------------------------
+
+
+rm usr/lib/opkg/lists/*
+rm -rf usr/share/vim
+
+ln -sf uptime.procps usr/bin/uptime
+
+
+# ----- miscellaneous ---------------------------------------------------------
+
+
+ln -s bash bin/sh
+
+# vim gets a little confused on the console. Fortunately, this is easy to fix:
+# see http://vt100.net/docs/vt102-ug/chapter5.html
+# restore cursor, reset scrolling region, restore cursor
+
+cat <<EOF >usr/bin/vi
+#!/bin/sh
+/usr/bin/vim "\$@"
+code=\$?
+echo -ne '\e7\e[;r\e8'
+exit \$?
+EOF
+chmod 755 usr/bin/vi
+
+
+# seems that we've reached the limits of the update-alternatives hack ;-)
+
+for n in sbin/*.26; do
+    mv $n sbin/`basename $n .26`
+done
+
+echo "audio:*:10:" >>etc/group
+
+
+# -----------------------------------------------------------------------------


Property changes on: developers/werner/myroot2/werner.myroot
___________________________________________________________________
Name: svn:executable
   + *




More information about the commitlog mailing list