From 830555f71a6ea4fcda93657e7a2220d753f26757 Mon Sep 17 00:00:00 2001 From: Gerardo Exequiel Pozzi Date: Wed, 17 Mar 2010 10:43:11 -0300 Subject: [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 --- archiso/hooks/nbd | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 archiso/hooks/nbd (limited to 'archiso/hooks') 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 +} -- cgit v1.2.3-54-g00ecf