From: Chris Leech <cleech-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
systemd-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: agrover-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
Chris Leech <cleech-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [RFC] dracut iscsi module: early attempt to launch iscsid from the initramfs
Date: Mon, 10 Dec 2012 14:08:36 -0800 [thread overview]
Message-ID: <1355177316-25803-5-git-send-email-cleech@redhat.com> (raw)
In-Reply-To: <1355177316-25803-1-git-send-email-cleech-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Not complete, but working well for iBFT configured iSCSI boot for me.
---
modules.d/95iscsi/cleanup-iscsi.sh | 3 ++-
modules.d/95iscsi/iscsid-initrd.service | 10 ++++++++++
modules.d/95iscsi/iscsid-initrd.socket | 9 +++++++++
modules.d/95iscsi/iscsiroot.sh | 26 ++++++++++++++------------
modules.d/95iscsi/iscsiuio-initrd.service | 11 +++++++++++
modules.d/95iscsi/iscsiuio-initrd.socket | 9 +++++++++
modules.d/95iscsi/module-setup.sh | 14 ++++++++++++--
7 files changed, 67 insertions(+), 15 deletions(-)
create mode 100644 modules.d/95iscsi/iscsid-initrd.service
create mode 100644 modules.d/95iscsi/iscsid-initrd.socket
create mode 100644 modules.d/95iscsi/iscsiuio-initrd.service
create mode 100644 modules.d/95iscsi/iscsiuio-initrd.socket
diff --git a/modules.d/95iscsi/cleanup-iscsi.sh b/modules.d/95iscsi/cleanup-iscsi.sh
index a2d5951..0dc0ceb 100755
--- a/modules.d/95iscsi/cleanup-iscsi.sh
+++ b/modules.d/95iscsi/cleanup-iscsi.sh
@@ -2,5 +2,6 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-[ -e /sys/module/bnx2i ] && killproc iscsiuio
+NEWROOT=/sysroot
+iscsiadm --newroot $NEWROOT
diff --git a/modules.d/95iscsi/iscsid-initrd.service b/modules.d/95iscsi/iscsid-initrd.service
new file mode 100644
index 0000000..16dc4c4
--- /dev/null
+++ b/modules.d/95iscsi/iscsid-initrd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Open-iSCSI
+Documentation=man:iscsid(8) man:iscsiadm(8)
+After=network.target NetworkManager-wait-online.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/iscsid --initrd
+PIDFile=/var/run/iscsid.pid
+KillMode=none
diff --git a/modules.d/95iscsi/iscsid-initrd.socket b/modules.d/95iscsi/iscsid-initrd.socket
new file mode 100644
index 0000000..58a8d12
--- /dev/null
+++ b/modules.d/95iscsi/iscsid-initrd.socket
@@ -0,0 +1,9 @@
+[Unit]
+Description=Open-iSCSI iscsid Socket
+Documentation=man:iscsid(8) man:iscsiadm(8)
+
+[Socket]
+ListenStream=@ISCSIADM_ABSTRACT_NAMESPACE
+
+[Install]
+WantedBy=sockets.target
diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
index 1a8cc8d..c2766a1 100755
--- a/modules.d/95iscsi/iscsiroot.sh
+++ b/modules.d/95iscsi/iscsiroot.sh
@@ -49,7 +49,9 @@ if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then
iscsi_param="$iscsi_param --param $p"
done
- iscsistart -b $iscsi_param
+ # iscsistart -b $iscsi_param
+ iscsiadm -m fw -l
+ iscsiadm -m session > /run/initramfs/iscsi.sessions
exit 0
fi
@@ -146,17 +148,17 @@ handle_netroot()
# force udevsettle to break
> $hookdir/initqueue/work
- iscsistart -i $iscsi_initiator -t $iscsi_target_name \
- -g $iscsi_target_group -a $iscsi_target_ip \
- -p $iscsi_target_port \
- ${iscsi_username+-u $iscsi_username} \
- ${iscsi_password+-w $iscsi_password} \
- ${iscsi_in_username+-U $iscsi_in_username} \
- ${iscsi_in_password+-W $iscsi_in_password} \
- ${iscsi_iface_name+--param iface.iscsi_ifacename=$iscsi_iface_name} \
- ${iscsi_netdev_name+--param iface.net_ifacename=$iscsi_netdev_name} \
- ${iscsi_param} \
- || :
+# iscsistart -i $iscsi_initiator -t $iscsi_target_name \
+# -g $iscsi_target_group -a $iscsi_target_ip \
+# -p $iscsi_target_port \
+# ${iscsi_username+-u $iscsi_username} \
+# ${iscsi_password+-w $iscsi_password} \
+# ${iscsi_in_username+-U $iscsi_in_username} \
+# ${iscsi_in_password+-W $iscsi_in_password} \
+# ${iscsi_iface_name+--param iface.iscsi_ifacename=$iscsi_iface_name} \
+# ${iscsi_netdev_name+--param iface.net_ifacename=$iscsi_netdev_name} \
+# ${iscsi_param} \
+# || :
}
# loop over all netroot parameter
diff --git a/modules.d/95iscsi/iscsiuio-initrd.service b/modules.d/95iscsi/iscsiuio-initrd.service
new file mode 100644
index 0000000..54883df
--- /dev/null
+++ b/modules.d/95iscsi/iscsiuio-initrd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=iSCSI UserSpace I/O driver
+Documentation=man:iscsiuio(8)
+Before=iscsid.service
+After=network.target NetworkManager-wait-online.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/iscsiuio --initrd
+PIDFile=/var/run/iscsiuio.pid
+KillMode=none
diff --git a/modules.d/95iscsi/iscsiuio-initrd.socket b/modules.d/95iscsi/iscsiuio-initrd.socket
new file mode 100644
index 0000000..9eacc56
--- /dev/null
+++ b/modules.d/95iscsi/iscsiuio-initrd.socket
@@ -0,0 +1,9 @@
+[Unit]
+Description=Open-iSCSI iscsiuio
+Documentation=man:iscsiuio(8)
+
+[Socket]
+ListenStream=@ISCSID_UIP_ABSTRACT_NAMESPACE
+
+[Install]
+WantedBy=sockets.target
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index d251a0d..7acabbe 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -5,7 +5,7 @@
check() {
local _rootdev
# If our prerequisites are not met, fail anyways.
- type -P iscsistart hostname iscsi-iname >/dev/null || return 1
+ type -P iscsid iscsiadm hostname iscsi-iname >/dev/null || return 1
# If hostonly was requested, fail the check if we are not actually
# booting from root.
@@ -73,10 +73,20 @@ installkernel() {
}
install() {
- dracut_install umount iscsistart hostname iscsi-iname
+ dracut_install iscsid iscsiadm umount hostname iscsi-iname
dracut_install -o iscsiuio
+ dracut_install -o /etc/iscsi/initiatorname.iscsi
+ dracut_install -o /etc/iscsi/iscsid.conf
inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh"
+
+ mkdir -p ${initdir}/${systemdsystemunitdir}/sockets.target.wants
+ inst_simple "${moddir}/iscsid-initrd.service" "${systemdsystemunitdir}/iscsid.service"
+ inst_simple "${moddir}/iscsid-initrd.socket" "${systemdsystemunitdir}/iscsid.socket"
+ ln -fs ../iscsid.socket "${initdir}/${systemdsystemunitdir}/sockets.target.wants/iscsid.socket"
+ inst_simple "${moddir}/iscsiuio-initrd.service" "${systemdsystemunitdir}/iscsiuio.service"
+ inst_simple "${moddir}/iscsiuio-initrd.socket" "${systemdsystemunitdir}/iscsiuio.socket"
+ ln -fs ../iscsiuio.socket "${initdir}/${systemdsystemunitdir}/sockets.target.wants/iscsiuio.socket"
}
--
1.7.11.7
next prev parent reply other threads:[~2012-12-10 22:08 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-10 22:08 [RFC] iscsid / systemd / dracut integration effort Chris Leech
[not found] ` <1355177316-25803-1-git-send-email-cleech-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-12-10 22:08 ` [RFC] iscsid: add --initrd option to set run from initrd hint for systemd Chris Leech
2012-12-10 22:08 ` [RFC] iscsiadm, iscsid: newroot command to survive switch_root Chris Leech
2012-12-10 22:08 ` [RFC] iscsi unit files and helper script Chris Leech
[not found] ` <1355177316-25803-4-git-send-email-cleech-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-12-11 21:47 ` Mike Christie
[not found] ` <50C7A9D7.8080900-hcNo3dDEHLuVc3sceRu5cw@public.gmane.org>
2012-12-11 22:43 ` Chris Leech
2012-12-10 22:08 ` Chris Leech [this message]
2012-12-10 23:56 ` [systemd-devel] [RFC] iscsid / systemd / dracut integration effort "Jóhann B. Guðmundsson"
[not found] ` <50C67697.7020208-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-12-11 23:26 ` Chris Leech
[not found] ` <20121211232646.GC5307-r8IHplWLGbA5tHQWs+pTeqPFFGjUI2lm2LY78lusg7I@public.gmane.org>
2012-12-12 0:46 ` "Jóhann B. Guðmundsson"
2012-12-12 20:45 ` Tomasz Torcz
[not found] ` <20121212204545.GA23313-bmXekecGUa3k6X4NQihNpw@public.gmane.org>
2012-12-13 0:45 ` Andy Grover
2013-09-23 17:33 ` The Lee-Man
[not found] ` <b993ef26-ea4e-4dbe-8d9a-d86ad50c9fbc-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2013-09-23 17:40 ` The Lee-Man
2013-10-01 2:24 ` Lennart Poettering
2012-12-14 19:01 ` Mike Christie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1355177316-25803-5-git-send-email-cleech@redhat.com \
--to=cleech-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=agrover-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=open-iscsi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=systemd-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox