Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archiso/hooks
diff options
context:
space:
mode:
authorGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2010-03-17 10:43:11 -0300
committerGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2010-03-17 11:12:46 -0300
commitecc3780db62640ea1cea8d8909ceab359ff8d838 (patch)
tree82f89072c15a143bca13f33a099f33068a7c28db /archiso/hooks
parent73a8e81ef58bbc97aad4daf37800f42eccc18070 (diff)
[archiso] Add nbd hook, to make posible boot archiso from PXE via a NBD.
nbd (network block device utilities) package is required. This package is in AUR at this moment: http://aur.archlinux.org/packages.php?ID=9691 Also mkinitcpio-nfs-utils is required for ipconfig. Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Diffstat (limited to 'archiso/hooks')
-rw-r--r--archiso/hooks/nbd63
1 files changed, 63 insertions, 0 deletions
diff --git a/archiso/hooks/nbd b/archiso/hooks/nbd
new file mode 100644
index 0000000..9df5a95
--- /dev/null
+++ b/archiso/hooks/nbd
@@ -0,0 +1,63 @@
+# vim: set ft=sh:
+run_hook ()
+{
+ local line i address netmask gateway dns0 dns1 rootserver rootpath filename
+
+ : > /ip_opts
+
+ if [ -n "${ip}" ]; then
+ # setup network and save some values
+ ipconfig "ip=${ip}" | while read line; do
+ # echo ":: ${line}"
+ if [ "${line#"IP-Config:"}" != "${line}" ]; then
+ continue
+ fi
+ line="$(echo ${line} | sed -e 's/ :/:/g;s/: /=/g')"
+ for i in ${line}; do
+ case "${i}" in
+ address=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ netmask=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ gateway=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ dns0=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ dns1=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ rootserver=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ rootpath=*)
+ echo "${i}" >> /ip_opts
+ ;;
+ esac
+ done
+ done
+
+ . /ip_opts
+
+ echo "IP-Config: ${address}/${netmask}"
+ echo "IP-Config: gw: ${gateway} dns0: ${dns0} dns1: ${dns1}"
+
+ modprobe nbd 2> /dev/null
+
+ msg ":: Waiting for boot device..."
+ while ! poll_device /dev/nbd0 10; do
+ echo "ERROR: boot device didn't show up after 10 seconds..."
+ echo " Falling back to interactive prompt"
+ echo " You can try to fix the problem manually, log out when you are finished"
+ launch_interactive_shell
+ done
+
+ msg "::: Setup NBD from ${rootserver}:9040 at /dev/nbd0 ..."
+ nbd-client ${rootserver} 9040 /dev/nbd0 -persist
+
+ archisodevice=/dev/nbd0
+ fi
+}