diff options
author | Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> | 2010-03-17 10:43:11 -0300 |
---|---|---|
committer | Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> | 2010-03-17 11:12:46 -0300 |
commit | 830555f71a6ea4fcda93657e7a2220d753f26757 (patch) | |
tree | f852552991065beac6c2fb9dcdcb395ef2e01939 /archiso/hooks/nbd | |
parent | d875052f56f236ba2e8e6a7085ddb57258e1ead3 (diff) | |
download | archiso32-830555f71a6ea4fcda93657e7a2220d753f26757.tar.xz |
[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/nbd')
-rw-r--r-- | archiso/hooks/nbd | 63 |
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 +} |