mkinitrd unification across distributions
 help / color / mirror / Atom feed
* AOE (ATA over Ethernet) boot support?
@ 2011-01-26 17:59 Carl D. Roth
  2011-01-27 11:04 ` Harald Hoyer
  0 siblings, 1 reply; 5+ messages in thread
From: Carl D. Roth @ 2011-01-26 17:59 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

Is anyone working on this?  I have some homebrewed dracut modules to 
accomplish this and didn't want to duplicate any effort.

Thanks!
C

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: AOE (ATA over Ethernet) boot support?
  2011-01-26 17:59 AOE (ATA over Ethernet) boot support? Carl D. Roth
@ 2011-01-27 11:04 ` Harald Hoyer
  2011-02-04 22:49   ` Carl D. Roth
  0 siblings, 1 reply; 5+ messages in thread
From: Harald Hoyer @ 2011-01-27 11:04 UTC (permalink / raw)
  To: Carl D. Roth; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

Am 26.01.2011 18:59, schrieb Carl D. Roth:
> Is anyone working on this?  I have some homebrewed dracut modules to 
> accomplish this and didn't want to duplicate any effort.
> 
> Thanks!
> C
> 
> --
> To unsubscribe from this list: send the line "unsubscribe initramfs" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Care to share it? Haven't heard of anyone doing it.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: AOE (ATA over Ethernet) boot support?
  2011-01-27 11:04 ` Harald Hoyer
@ 2011-02-04 22:49   ` Carl D. Roth
  2011-02-04 23:15     ` David Dillow
  0 siblings, 1 reply; 5+ messages in thread
From: Carl D. Roth @ 2011-02-04 22:49 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

On Thu, 27 Jan 2011 12:04:49 +0100, Harald Hoyer wrote:

> Am 26.01.2011 18:59, schrieb Carl D. Roth:
>> Is anyone working on this?  I have some homebrewed dracut modules to
>> accomplish this and didn't want to duplicate any effort.
>> 
>> Thanks!
>> C

> 
> Care to share it? Haven't heard of anyone doing it.

Here's a first draft at AOE support in dracut.  Sorry for the kludgy 
posting method, I'm not sure what the best way is to contribute files 
here.

http://dl.dropbox.com/u/18000815/dracut/95aoe/aoeroot
http://dl.dropbox.com/u/18000815/dracut/95aoe/check
http://dl.dropbox.com/u/18000815/dracut/95aoe/install
http://dl.dropbox.com/u/18000815/dracut/95aoe/installkernel
http://dl.dropbox.com/u/18000815/dracut/95aoe/parse-aoeroot.sh

C

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: AOE (ATA over Ethernet) boot support?
  2011-02-04 22:49   ` Carl D. Roth
@ 2011-02-04 23:15     ` David Dillow
  2011-02-05  1:58       ` Carl D. Roth
  0 siblings, 1 reply; 5+ messages in thread
From: David Dillow @ 2011-02-04 23:15 UTC (permalink / raw)
  To: Carl D. Roth; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

On Fri, 2011-02-04 at 22:49 +0000, Carl D. Roth wrote:
> Here's a first draft at AOE support in dracut.  Sorry for the kludgy 
> posting method, I'm not sure what the best way is to contribute files 
> here.

Inlined patches relative to HEAD are preferred.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: AOE (ATA over Ethernet) boot support?
  2011-02-04 23:15     ` David Dillow
@ 2011-02-05  1:58       ` Carl D. Roth
  0 siblings, 0 replies; 5+ messages in thread
From: Carl D. Roth @ 2011-02-05  1:58 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

On Fri, 04 Feb 2011 18:15:02 -0500, David Dillow wrote:

> On Fri, 2011-02-04 at 22:49 +0000, Carl D. Roth wrote:
>> Here's a first draft at AOE support in dracut.  Sorry for the kludgy
>> posting method, I'm not sure what the best way is to contribute files
>> here.
> 
> Inlined patches relative to HEAD are preferred.

OK here goes:

From 33bfa0a8741a9a7ff420a1a70121b135f3904a98 Mon Sep 17 00:00:00 2001
From: Carl D. Roth <roth-HnfRZWj23JKgXEEh9Od0haxOck334EZe@public.gmane.org>
Date: Fri, 4 Feb 2011 16:10:54 -0800
Subject: [PATCH] Initial checkin of AOE support.

---
 modules.d/95aoe/aoeroot          |   79 +++++++++++++++++++++++++++++++++
+++++
 modules.d/95aoe/check            |   54 ++++++++++++++++++++++++++
 modules.d/95aoe/install          |    5 ++
 modules.d/95aoe/installkernel    |    2 +
 modules.d/95aoe/parse-aoeroot.sh |   66 +++++++++++++++++++++++++++++++
 5 files changed, 206 insertions(+), 0 deletions(-)
 create mode 100755 modules.d/95aoe/aoeroot
 create mode 100755 modules.d/95aoe/check
 create mode 100755 modules.d/95aoe/install
 create mode 100755 modules.d/95aoe/installkernel
 create mode 100755 modules.d/95aoe/parse-aoeroot.sh

diff --git a/modules.d/95aoe/aoeroot b/modules.d/95aoe/aoeroot
new file mode 100755
index 0000000..9b12d7b
--- /dev/null
+++ b/modules.d/95aoe/aoeroot
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+##############################
+#
+# aoeroot
+#
+# Adapted from 'nbdroot' and 'iscsiroot'
+#
+# Here we assume that 'root' is specified;
+# we do not make any special attempts to mount it here.
+#
+##############################
+
+. /lib/dracut-lib.sh
+
+PATH=$PATH:/sbin:/usr/sbin
+
+# Huh? Empty $1?
+test -z "$1" && exit 1
+
+# Huh? Empty $2?
+test -z "$2" && exit 1
+
+# Huh? Empty $3?
+test -z "$3" && exit 1
+
+# root is in the form root=aoe:eM.N
+netif="$1"
+aoeroot="$2"
+NEWROOT="$3"
+
+# If it's not aoe we don't continue
+test "${aoeroot%%:*}" = "aoe" || return
+
+aoeroot=${aoeroot#aoe:}
+aoedev=/dev/etherd/$aoeroot
+
+# FIXME: the init script does not export UDEVVERSION
+if test "$UDEVVERSION"; then
+  :
+else
+  UDEVVERSION=$(udevadm --version)
+fi
+
+getarg 'rdbreak=aoeroot' && emergency_shell -n aoeroot "Break (pre) AOE"
+
+# XXX better way to wait for the device to be made?
+i=0
+while true; do
+  test -b $aoedev && break
+  test $i -ge 20 && exit 1
+  aoe-discover
+  if test $UDEVVERSION -ge 143; then
+    udevadm settle --exit-if-exists=$aoedev
+  else
+    sleep 0.1
+  fi
+  i=$(( $i + 1 ))
+done
+
+##############################
+#
+# These next two statements are borrowed from 'iscsiroot';
+# I do not really understand them.
+#
+##############################
+
+# inject new exit_if_exists
+echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm "$job"' > /
initqueue/aoe-settle.sh
+
+# force udevsettle to break
+> /initqueue/work
+
+# now we have a root filesystem somewhere in /dev/etherd/*
+# let the normal block handler handle root=
+
+getarg 'rdbreak=aoeroot' && emergency_shell -n aoeroot "Break (post) AOE"
+
+exit 0
diff --git a/modules.d/95aoe/check b/modules.d/95aoe/check
new file mode 100755
index 0000000..e24f56b
--- /dev/null
+++ b/modules.d/95aoe/check
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+##############################
+#
+# dracut check script for AOE
+#
+# Adapted from iscsi.
+#
+##############################
+
+# We depend on network modules being loaded
+test "$1" = "-d" && echo network
+
+# FIXME: check prerequisites here (any tools that need to be loaded)
+
+# If hostonly was requested, fail the check if we are not actually
+# booting from root.
+
+. $dracutfunctions
+
+test "$debug" && set -x
+
+is_aoe()
+{
+  local dev tgt
+  dev=$1; shift
+
+  test -L /sys/dev/block/$dev || return 1
+  tgt=`readlink -f /sys/dev/block/$dev` || return 1
+  cd "$tgt" || return 1
+  while true; do
+    test "$PWD" = "/" && break
+    test -e mac -a -e netif && break
+    cd .. || return 1
+  done
+
+  test -e netif
+  return $?
+}
+
+case $1 in
+  -h)
+    rootdev=$(find_root_block_device)
+    if test "$rootdev"; then
+      # root lives on a block device, so we can be more precise about 
+      # hostonly checking
+      check_block_and_slaves is_aoe "$rootdev" || exit 1
+    else
+      exit 1
+    fi
+  ;;
+esac
+
+exit 0
diff --git a/modules.d/95aoe/install b/modules.d/95aoe/install
new file mode 100755
index 0000000..70ca7a8
--- /dev/null
+++ b/modules.d/95aoe/install
@@ -0,0 +1,5 @@
+#!/bin/bash
+inst aoe-discover
+inst aoe-stat
+inst_hook cmdline 90 "$moddir/parse-aoeroot.sh"
+inst "$moddir/aoeroot" "/sbin/aoeroot"
diff --git a/modules.d/95aoe/installkernel b/modules.d/95aoe/installkernel
new file mode 100755
index 0000000..b3db783
--- /dev/null
+++ b/modules.d/95aoe/installkernel
@@ -0,0 +1,2 @@
+#!/bin/bash
+instmods aoe
diff --git a/modules.d/95aoe/parse-aoeroot.sh b/modules.d/95aoe/parse-
aoeroot.sh
new file mode 100755
index 0000000..2afcdcb
--- /dev/null
+++ b/modules.d/95aoe/parse-aoeroot.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# Format:
+#
+#   root=aoe:eM.N
+#   root=/dev/etherd/eM.N
+#   [root=*] netroot=aoe:eM.N
+#   [root=*] netroot=/dev/etherd/eM.N
+#
+# root= takes precedence over netroot= if root=iscsi[...]
+#
+
+# Don't continue if root is ok
+test -n "$rootok" && return
+
+# This script is sourced, so root should be set. But let's be paranoid
+test -z "$root" && root=$(getarg root=)
+test -z "$netroot" && netroot=$(getarg netroot=)
+
+case "$root" in
+  /dev/etherd/*)
+    root=aoe:${root#/dev/etherd/}
+  ;;
+esac
+
+case "$netroot" in
+  /dev/etherd/*)
+    netroot=aoe:${netroot#/dev/etherd/}
+  ;;
+esac
+
+# Root takes precedence over netroot
+case "$root" in
+  aoe:*)
+    if test -n "$netroot"; then
+      echo "Warning: root takes precedence over netroot. Ignoring 
netroot"
+    fi
+    netroot=$root
+  ;;
+esac
+
+# If it's not empty or aoe we don't continue
+case "$netroot" in
+  "") ;;
+  aoe:*) ;;
+  *)
+    return
+  ;;  
+esac
+
+# If it's not aoe we don't continue
+case "$netroot" in
+  aoe:*) ;;
+  *) return ;;
+esac
+
+# AOE actually supported?
+test -e /sys/devices/virtual/aoe || modprobe aoe || die "aoe requested 
but kernel/initrd does not support aoe"
+
+# Done, all good!
+rootok=1
+
+# Shut up init error check
+test -z "$root" && root="aoe"
+
+echo '[ -e /dev/root ]' > /initqueue-finished/aoe.sh
-- 
1.7.3.5


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-02-05  1:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-26 17:59 AOE (ATA over Ethernet) boot support? Carl D. Roth
2011-01-27 11:04 ` Harald Hoyer
2011-02-04 22:49   ` Carl D. Roth
2011-02-04 23:15     ` David Dillow
2011-02-05  1:58       ` Carl D. Roth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox