]> spindle.queued.net Git - xodist/blobdiff - functions.sh
TODO: drop 0.4 plans, now that 0.4 is out.
[xodist] / functions.sh
index 00a23a4370d11dfd293b2a70274ad9934cd7e01b..b6714e57ec86b28f71ccc9ee155226c293baffe9 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/sh -e
+#!/bin/bash -e
 #
 # Copyright © 2008  Andres Salomon <dilinger@queued.net>
 #
@@ -36,19 +36,23 @@ create_fstab()
        fstype="$2"
 
        if [ "${fstype}" = "jffs2" ]; then
-               r=mtd0
+               r=mtd:root
        else
-               r="LABEL=OLPCRoot"
+               r="LABEL=${IMG_LABEL}"
        fi
 
-       cat >${mntpt}/etc/fstab<<EOF
-${r} / ${fstype} defaults,noatime 1 1
+       echo "${r} / ${fstype} defaults,noatime 1 1" >${mntpt}/etc/fstab
+       if [ "${fstype}" = "jffs2" ]; then
+               echo "mtd:boot /boot jffs2 defaults,noatime 1 1" >>${mntpt}/etc/fstab
+       fi
+
+       cat >>${mntpt}/etc/fstab<<EOF
 devpts /dev/pts devpts gid=5,mode=620 0 0
 tmpfs /dev/shm tmpfs defaults,size=15% 0 0
 proc /proc proc defaults 0 0
 sysfs /sys sysfs defaults 0 0
-tmpfs /var/cache/apt/cache tmpfs defaults 0 0
 none /ofw promfs defaults 0 0
+tmpfs /var/cache/apt/cache tmpfs defaults 0 0
 EOF
 }
 
@@ -60,24 +64,63 @@ create_ofwboot()
        fstype="$2"
 
        if [ "${fstype}" = "jffs2" ]; then
-               r=mtd0
+               r="mtd:root"
                rfs="rootfstype=jffs2"
        else
-               r=/dev/sda1
+               r="LABEL=${IMG_LABEL}"
                rfs=""
        fi
 
        cat >${mntpt}/boot/olpc.fth<<EOF
 \\ OLPC boot script
 
-" ro root=${r} ${rfs} fbcon=font:SUN12x22" to boot-file
+\\ fetch the /chosen/bootpath property
+" /chosen" find-package  if                       ( phandle )
+  " bootpath" rot  get-package-property  0=  if   ( propval\$ )
+    get-encoded-string                            ( bootpath\$ )
+    [char] \ left-parse-string  2nip              ( dn\$ )
+
+    \ store the first part of bootpath (up to the '\\') in \$DN
+    dn-buf place                                  ( )
+  then
+then
+
+" ro root=${r} ${rfs} video=lxfb fbcon=font:SUN12x22" to boot-file
 game-key-mask h# 80 and if
        \\ boot from backup kernel
-       " nand:\\vmlinuz.old" to boot-device
+       " \${DN}\\vmlinuz.old" expand\$ to boot-device
+       " \${DN}\\initrd.img.old" expand\$ to ramdisk
 else
        \\ boot from regular kernel
-       " nand:\\vmlinuz" to boot-device
+       " \${DN}\\vmlinuz" expand\$ to boot-device
+       " \${DN}\\initrd.img" expand\$ to ramdisk
 then
 boot
 EOF
 }
+
+chroot_internal_mounts()
+{
+    root_dir="$1"
+    mount -t proc proc ${root_dir}/proc
+    mount -t devpts devpts ${root_dir}/dev/pts
+    mount -t tmpfs tmpfs ${root_dir}/var/cache/apt/cache
+}
+
+chroot_internal_umounts()
+{
+    root_dir="$1"
+    umount ${root_dir}/proc
+    umount ${root_dir}/dev/pts
+    umount ${root_dir}/var/cache/apt/cache
+}
+
+start_logging()
+{
+    logpipe="$1".pipe
+    trap "rm -f $logpipe" 0
+    mknod $logpipe p
+    tee "$1".log <$logpipe &
+    trap "kill $!; rm -f $logpipe" 0
+    exec >$logpipe 2>&1
+}