From: Andres Salomon Date: Sun, 21 Feb 2010 23:25:06 +0000 (-0500) Subject: debxo: add initial ubifs support X-Git-Tag: v0.6~31 X-Git-Url: https://spindle.queued.net/cgi-bin/gitweb.cgi?p=xodist;a=commitdiff_plain;h=88ab2b081b5202eeff3a94433ec3d27e2a42a6a7 debxo: add initial ubifs support New script 'mkubifs.sh' for creating an image w/ a jffs2 /boot and an ubifs /. It requires a new(er) kernel, possibly a newer initramfs-tools.. so for now, it's not enabled. Hopefully soon.. Signed-off-by: Andres Salomon --- diff --git a/configs/debxo-awesome/fstab-ubifs b/configs/debxo-awesome/fstab-ubifs new file mode 100644 index 0000000..ebce571 --- /dev/null +++ b/configs/debxo-awesome/fstab-ubifs @@ -0,0 +1,8 @@ +# /etc/fstab: static file system information +# +# +proc /proc proc defaults 0 0 # +mtd:boot /boot jffs2 defaults,noatime 1 1 # 50 +ubi:root / ubifs defaults,noatime 1 1 +none /ofw promfs defaults 0 0 +tmpfs /var/cache/apt/cache tmpfs defaults 0 0 diff --git a/configs/debxo-awesome/olpc.fth-ubifs b/configs/debxo-awesome/olpc.fth-ubifs new file mode 100644 index 0000000..c70c010 --- /dev/null +++ b/configs/debxo-awesome/olpc.fth-ubifs @@ -0,0 +1,25 @@ +\ OLPC boot script + +\ 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 ubi.mtd=root root=ubi:root rootfstype=ubifs video=lxfb fbcon=font:SUN12x22" to boot-file +game-key-mask h# 80 and if + \ boot from backup kernel + " ${DN}\vmlinuz.old" expand$ to boot-device + " ${DN}\initrd.img.old" expand$ to ramdisk +else + \ boot from regular kernel + " ${DN}\vmlinuz" expand$ to boot-device + " ${DN}\initrd.img" expand$ to ramdisk +then +dcon-unfreeze +boot diff --git a/configs/debxo-gnome/fstab-ubifs b/configs/debxo-gnome/fstab-ubifs new file mode 100644 index 0000000..ebce571 --- /dev/null +++ b/configs/debxo-gnome/fstab-ubifs @@ -0,0 +1,8 @@ +# /etc/fstab: static file system information +# +# +proc /proc proc defaults 0 0 # +mtd:boot /boot jffs2 defaults,noatime 1 1 # 50 +ubi:root / ubifs defaults,noatime 1 1 +none /ofw promfs defaults 0 0 +tmpfs /var/cache/apt/cache tmpfs defaults 0 0 diff --git a/configs/debxo-gnome/olpc.fth-ubifs b/configs/debxo-gnome/olpc.fth-ubifs new file mode 100644 index 0000000..c70c010 --- /dev/null +++ b/configs/debxo-gnome/olpc.fth-ubifs @@ -0,0 +1,25 @@ +\ OLPC boot script + +\ 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 ubi.mtd=root root=ubi:root rootfstype=ubifs video=lxfb fbcon=font:SUN12x22" to boot-file +game-key-mask h# 80 and if + \ boot from backup kernel + " ${DN}\vmlinuz.old" expand$ to boot-device + " ${DN}\initrd.img.old" expand$ to ramdisk +else + \ boot from regular kernel + " ${DN}\vmlinuz" expand$ to boot-device + " ${DN}\initrd.img" expand$ to ramdisk +then +dcon-unfreeze +boot diff --git a/configs/debxo-kde/fstab-ubifs b/configs/debxo-kde/fstab-ubifs new file mode 100644 index 0000000..ebce571 --- /dev/null +++ b/configs/debxo-kde/fstab-ubifs @@ -0,0 +1,8 @@ +# /etc/fstab: static file system information +# +# +proc /proc proc defaults 0 0 # +mtd:boot /boot jffs2 defaults,noatime 1 1 # 50 +ubi:root / ubifs defaults,noatime 1 1 +none /ofw promfs defaults 0 0 +tmpfs /var/cache/apt/cache tmpfs defaults 0 0 diff --git a/configs/debxo-kde/olpc.fth-ubifs b/configs/debxo-kde/olpc.fth-ubifs new file mode 100644 index 0000000..c70c010 --- /dev/null +++ b/configs/debxo-kde/olpc.fth-ubifs @@ -0,0 +1,25 @@ +\ OLPC boot script + +\ 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 ubi.mtd=root root=ubi:root rootfstype=ubifs video=lxfb fbcon=font:SUN12x22" to boot-file +game-key-mask h# 80 and if + \ boot from backup kernel + " ${DN}\vmlinuz.old" expand$ to boot-device + " ${DN}\initrd.img.old" expand$ to ramdisk +else + \ boot from regular kernel + " ${DN}\vmlinuz" expand$ to boot-device + " ${DN}\initrd.img" expand$ to ramdisk +then +dcon-unfreeze +boot diff --git a/configs/debxo-lxde/fstab-ubifs b/configs/debxo-lxde/fstab-ubifs new file mode 100644 index 0000000..ebce571 --- /dev/null +++ b/configs/debxo-lxde/fstab-ubifs @@ -0,0 +1,8 @@ +# /etc/fstab: static file system information +# +# +proc /proc proc defaults 0 0 # +mtd:boot /boot jffs2 defaults,noatime 1 1 # 50 +ubi:root / ubifs defaults,noatime 1 1 +none /ofw promfs defaults 0 0 +tmpfs /var/cache/apt/cache tmpfs defaults 0 0 diff --git a/configs/debxo-lxde/olpc.fth-ubifs b/configs/debxo-lxde/olpc.fth-ubifs new file mode 100644 index 0000000..c70c010 --- /dev/null +++ b/configs/debxo-lxde/olpc.fth-ubifs @@ -0,0 +1,25 @@ +\ OLPC boot script + +\ 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 ubi.mtd=root root=ubi:root rootfstype=ubifs video=lxfb fbcon=font:SUN12x22" to boot-file +game-key-mask h# 80 and if + \ boot from backup kernel + " ${DN}\vmlinuz.old" expand$ to boot-device + " ${DN}\initrd.img.old" expand$ to ramdisk +else + \ boot from regular kernel + " ${DN}\vmlinuz" expand$ to boot-device + " ${DN}\initrd.img" expand$ to ramdisk +then +dcon-unfreeze +boot diff --git a/configs/debxo-sugar/fstab-ubifs b/configs/debxo-sugar/fstab-ubifs new file mode 100644 index 0000000..ebce571 --- /dev/null +++ b/configs/debxo-sugar/fstab-ubifs @@ -0,0 +1,8 @@ +# /etc/fstab: static file system information +# +# +proc /proc proc defaults 0 0 # +mtd:boot /boot jffs2 defaults,noatime 1 1 # 50 +ubi:root / ubifs defaults,noatime 1 1 +none /ofw promfs defaults 0 0 +tmpfs /var/cache/apt/cache tmpfs defaults 0 0 diff --git a/configs/debxo-sugar/olpc.fth-ubifs b/configs/debxo-sugar/olpc.fth-ubifs new file mode 100644 index 0000000..c70c010 --- /dev/null +++ b/configs/debxo-sugar/olpc.fth-ubifs @@ -0,0 +1,25 @@ +\ OLPC boot script + +\ 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 ubi.mtd=root root=ubi:root rootfstype=ubifs video=lxfb fbcon=font:SUN12x22" to boot-file +game-key-mask h# 80 and if + \ boot from backup kernel + " ${DN}\vmlinuz.old" expand$ to boot-device + " ${DN}\initrd.img.old" expand$ to ramdisk +else + \ boot from regular kernel + " ${DN}\vmlinuz" expand$ to boot-device + " ${DN}\initrd.img" expand$ to ramdisk +then +dcon-unfreeze +boot diff --git a/configs/debxo-xfce/fstab-ubifs b/configs/debxo-xfce/fstab-ubifs new file mode 100644 index 0000000..ebce571 --- /dev/null +++ b/configs/debxo-xfce/fstab-ubifs @@ -0,0 +1,8 @@ +# /etc/fstab: static file system information +# +# +proc /proc proc defaults 0 0 # +mtd:boot /boot jffs2 defaults,noatime 1 1 # 50 +ubi:root / ubifs defaults,noatime 1 1 +none /ofw promfs defaults 0 0 +tmpfs /var/cache/apt/cache tmpfs defaults 0 0 diff --git a/configs/debxo-xfce/olpc.fth-ubifs b/configs/debxo-xfce/olpc.fth-ubifs new file mode 100644 index 0000000..c70c010 --- /dev/null +++ b/configs/debxo-xfce/olpc.fth-ubifs @@ -0,0 +1,25 @@ +\ OLPC boot script + +\ 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 ubi.mtd=root root=ubi:root rootfstype=ubifs video=lxfb fbcon=font:SUN12x22" to boot-file +game-key-mask h# 80 and if + \ boot from backup kernel + " ${DN}\vmlinuz.old" expand$ to boot-device + " ${DN}\initrd.img.old" expand$ to ramdisk +else + \ boot from regular kernel + " ${DN}\vmlinuz" expand$ to boot-device + " ${DN}\initrd.img" expand$ to ramdisk +then +dcon-unfreeze +boot diff --git a/mkubifs.sh b/mkubifs.sh new file mode 100755 index 0000000..1dbbbba --- /dev/null +++ b/mkubifs.sh @@ -0,0 +1,218 @@ +#!/bin/bash -e +# +# Copyright © 2008-2010 Andres Salomon +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +. ./functions.sh + +CONFIG_TYPE=generic + +usage() +{ + echo "" 1>&2 + echo "Usage: $0 [] " 1>&2 + echo "" 1>&2 + echo "Options:" 1>&2 + echo " --config-type directory name in configs/ to use" 1>&2 + echo " --help display this help screen" 1>&2 + echo "" 1>&2 + exit 1 +} + +while test $# != 0 +do + case $1 in + --config-type) + CONFIG_TYPE=$2 + [ -d ./configs/${CONFIG_TYPE} ] || { + echo "Error: can't find directory './configs/${CONFIG_TYPE}/'!" 1>&2 + exit 2 + } + shift + ;; + --help|-h) + usage + ;; + *) + if [ "$#" != "2" ]; then + echo "Unknown option $1" 1>&2 + usage + else + ROOT_DIR=$1 + IMG_NAME=$2 + shift + fi + ;; + esac + shift +done + +if [ "${IMG_NAME}" == "${IMG_NAME/.img/.dat}" ]; then + DAT_NAME=${IMG_NAME}.dat +else + DAT_NAME=${IMG_NAME/.img/.dat} +fi + +if [ ! -d "${ROOT_DIR}" ]; then + echo "" 1>&2 + echo "*** Unable to find root directory!" 1>&2 + usage +fi + +check_for_cmds mkfs.jffs2 sumtool mkfs.ubifs ubinize || exit 1 + +# create image's /etc/fstab +if [ ! -f ./configs/${CONFIG_TYPE}/fstab-ubifs ]; then + echo "*** Unable to find fstab-ubifs!" 1>&2 + exit 1 +fi +sed 's/[[:space:]]#.*//' ./configs/${CONFIG_TYPE}/fstab-ubifs > ${ROOT_DIR}/etc/fstab + +# TODO: this needs to go into an OFW package; here it's a hack +# create image's /boot/olpc.fth +if [ -f ./configs/${CONFIG_TYPE}/olpc.fth-ubifs ]; then + cp ./configs/${CONFIG_TYPE}/olpc.fth-ubifs ${ROOT_DIR}/boot/olpc.fth +fi + +create_ubifs() +{ + root_dir="$1" + out="$2" + + cat >ubinize.cfg<${IMG_NAME}<> ${IMG_NAME} + sed -n -e 's/^mtd://p' -e 's/^ubi://p' configs/${CONFIG_TYPE}/fstab-ubifs | \ + while read name mntpt fstype extra; do + size=$(echo $extra | sed -ne 's/.*[[:space:]]\+#[[:space:]]\+//p') + if [ "${size}" = "" ]; then + size="-1" + else + # size in fstab is in MB; convert to 128KiB chunks (in hex) + # MB * (1024/128) + size=$((size * 8)) + size=`printf "%x\n" $size` + fi + printf " $name $size" >> ${IMG_NAME} + done + printf "\n" >> ${IMG_NAME} + + # individual partitions + sed -n -e 's/^mtd://p' -e 's/^ubi://p' configs/${CONFIG_TYPE}/fstab-ubifs | \ + while read name mntpt fstype extra; do + cat >>${IMG_NAME}</dev/null \ + | sha256sum | cut -d\ -f1) + echo "eblock: `printf '%x' $b` sha256 $sha" >> ${IMG_NAME} + done + cat >>${IMG_NAME}<> ${DAT_NAME} + rm -f "_${name}.img" +done + +exit 0