[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>
This commit is contained in:
parent
d875052f56
commit
830555f71a
@ -8,6 +8,8 @@ install: all
|
||||
# hooks/install are needed by mkinitcpio
|
||||
install -D -m 644 hooks/archiso $(DESTDIR)/lib/initcpio/hooks/archiso
|
||||
install -D -m 644 install/archiso $(DESTDIR)/lib/initcpio/install/archiso
|
||||
install -D -m 644 hooks/nbd $(DESTDIR)/lib/initcpio/hooks/nbd
|
||||
install -D -m 644 install/nbd $(DESTDIR)/lib/initcpio/install/nbd
|
||||
# install docs and examples
|
||||
install -d -m 644 $(DESTDIR)/usr/share/archiso/
|
||||
cp -r ../configs $(DESTDIR)/usr/share/archiso/configs
|
||||
@ -18,5 +20,7 @@ uninstall:
|
||||
rm -f $(DESTDIR)/usr/bin/testiso
|
||||
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso
|
||||
rm -f $(DESTDIR)/lib/initcpio/install/archiso
|
||||
rm -f $(DESTDIR)/lib/initcpio/hooks/nbd
|
||||
rm -f $(DESTDIR)/lib/initcpio/install/nbd
|
||||
rm -rf $(DESTDIR)/usr/share/archiso/
|
||||
rm -rf $(DESTDIR)/usr/share/doc/archiso/
|
||||
|
63
archiso/hooks/nbd
Normal file
63
archiso/hooks/nbd
Normal file
@ -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
|
||||
}
|
20
archiso/install/nbd
Normal file
20
archiso/install/nbd
Normal file
@ -0,0 +1,20 @@
|
||||
# vim: set ft=sh:
|
||||
|
||||
install ()
|
||||
{
|
||||
MODULES="nbd $(checked_modules "/drivers/net/") "
|
||||
|
||||
BINARIES=""
|
||||
FILES=""
|
||||
SCRIPT="nbd"
|
||||
|
||||
add_binary "/usr/sbin/nbd-client" "/bin/nbd-client"
|
||||
add_binary "/lib/initcpio/ipconfig" "/bin/ipconfig"
|
||||
}
|
||||
|
||||
help ()
|
||||
{
|
||||
cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE and NBD.
|
||||
HELPEOF
|
||||
}
|
Loading…
Reference in New Issue
Block a user