[ostree] gnomeos: start writing an install script
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] gnomeos: start writing an install script
- Date: Thu, 2 Feb 2012 12:47:33 +0000 (UTC)
commit 1d93adc925fa7b0b8c6fd3ecb794cedd82b9060a
Author: Colin Walters <walters verbum org>
Date: Thu Feb 2 07:46:52 2012 -0500
gnomeos: start writing an install script
gnomeos/yocto/15_ostree | 73 ++++++++++++++++++++++++++++++++++++++
gnomeos/yocto/gnomeos-install.sh | 64 +++++++++++++++++++++++++++++++++
gnomeos/yocto/ostree-setup.sh | 67 ++++++++++++++++++++++++++++++++++
3 files changed, 204 insertions(+), 0 deletions(-)
---
diff --git a/gnomeos/yocto/15_ostree b/gnomeos/yocto/15_ostree
new file mode 100755
index 0000000..d67cf44
--- /dev/null
+++ b/gnomeos/yocto/15_ostree
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+set -e
+
+. /usr/lib/grub/grub-mkconfig_lib
+
+CLASS="--class gnu-linux --class gnu --class os"
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+ || uses_abstraction "${GRUB_DEVICE}" lvm; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+ostree_linux_entry ()
+{
+ os="$1"
+ version="$2"
+ args="$3"
+
+ printf "menuentry '${os}; Linux ${version}' ${CLASS} {\n"
+
+ cat << EOF
+ insmod gzio
+EOF
+
+ cat <<EOF
+ echo '"Loading ${os} ${version}"'
+ linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro init=/ostree/ostree-init ${args}
+EOF
+ if test -n "${initrd}" ; then
+ message="$(gettext_printf "Loading initial ramdisk ...")"
+ cat << EOF
+ echo '$message'
+ initrd ${rel_dirname}/${initrd}
+EOF
+ fi
+ cat << EOF
+}
+EOF
+}
+
+machine=$(uname -m)
+kernels=$(echo /boot/vmlinuz-*.${machine})
+while [ "x${kernels}" != x ]; do
+ linux=`version_find_latest $kernels` >&2
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+ version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+ initrd=
+ for i in "initrd.img-${version}" "initrd-${version}.img" \
+ "initrd-${version}" "initramfs-${version}.img" \
+ "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+ "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+ "initramfs-genkernel-${version}" \
+ "initramfs-genkernel-${alt_version}"; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="$i"
+ break
+ fi
+ done
+
+ ostree_linux_entry "GNOMEOS 3.4" "${version}" \
+ "${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+ kernels=`echo $kernels | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+done
diff --git a/gnomeos/yocto/gnomeos-install.sh b/gnomeos/yocto/gnomeos-install.sh
new file mode 100755
index 0000000..8d906e3
--- /dev/null
+++ b/gnomeos/yocto/gnomeos-install.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+# -*- indent-tabs-mode: nil; -*-
+# Install OSTree to system
+#
+# Copyright (C) 2011,2012 Colin Walters <walters verbum org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+set -e
+set -x
+
+SRCDIR=`dirname $0`
+WORKDIR=`pwd`
+
+if test $(id -u) != 0; then
+ cat <<EOF
+This script should be run as root.
+EOF
+ exit 1
+fi
+
+usage () {
+ echo "$0 OSTREE_REPO_URL"
+ exit 1
+}
+
+ARCH=i686
+BRANCH_PREFIX="gnomeos-3.4-${ARCH}-"
+
+if ! test -d /ostree; then
+ mkdir /ostree
+
+ $SRCDIR/ostree-setup.sh /ostree
+fi
+
+cd /ostree
+for branch in runtime devel; do
+ rev=$(ostree --repo=$(pwd)/repo rev-parse ${BRANCH_PREFIX}${branch});
+ if ! test -d ${BRANCH_PREFIX}${branch}-${rev}; then
+ ostree --repo=repo checkout ${rev} ${BRANCH_PREFIX}${branch}-${rev}
+ ostbuild chroot-run-triggers ${BRANCH_PREFIX}${branch}-${rev}
+ fi
+ rm -f ${BRANCH_PREFIX}${branch}-current
+ ln -s ${BRANCH_PREFIX}${branch}-${rev} ${BRANCH_PREFIX}${branch}-current
+done
+rm -f current
+ln -s ${BRANCH_PREFIX}runtime-current current
+
+cp -a ./${BRANCH_PREFIX}${branch}-current/usr/sbin/ostree-init .
+
+cp $SRCDIR/15_ostree /etc/grub.d/
diff --git a/gnomeos/yocto/ostree-setup.sh b/gnomeos/yocto/ostree-setup.sh
new file mode 100755
index 0000000..584c3a9
--- /dev/null
+++ b/gnomeos/yocto/ostree-setup.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# -*- indent-tabs-mode: nil; -*-
+# Set up ostree directory
+#
+# Copyright (C) 2011,2012 Colin Walters <walters verbum org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+set -e
+set -x
+
+SRCDIR=`dirname $0`
+WORKDIR=`pwd`
+
+if test $(id -u) != 0; then
+ cat <<EOF
+This script should be run as root.
+EOF
+ exit 1
+fi
+
+usage () {
+ echo "$0 OSTREE_DIR_PATH"
+ exit 1
+}
+
+OSTREE_DIR_PATH=$1
+shift
+test -n "$OSTREE_DIR_PATH" || usage
+
+cd "$OSTREE_DIR_PATH"
+mkdir -p -m 0755 ./var/{log,run,tmp,spool}
+mkdir -p ./var/lib/dbus
+dbus-uuidgen > ./var/lib/dbus/machine-id
+
+mkdir ./var/lib/gdm
+chown 2:2 ./var/lib/gdm
+
+touch ./var/shadow
+chmod 0600 ./var/shadow
+
+mkdir repo
+ostree --repo=repo init
+
+cat >./var/passwd << EOF
+root::0:0:root:/:/bin/sh
+dbus:*:1:1:dbus:/:/bin/false
+gdm:*:2:2:gdm:/var/lib/gdm:/bin/false
+EOF
+cat >./var/group << EOF
+root:*:0:root
+dbus:*:1:
+gdm:*:2:
+EOF
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]