[archiso] Split archiso_pxe_nbd in two hooks.
One hook only setup the network device (archiso_pxe_common) the other setup the NBD client (archiso_pxe_nbd). New bootparam: archiso_pxe_srv=IP Allow to set an IP different from the PXE server. Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This commit is contained in:
parent
40965461a4
commit
1edaf15cef
10
README
10
README
@ -63,7 +63,7 @@ INDEX
|
|||||||
Default: (architecture of running kernel)
|
Default: (architecture of running kernel)
|
||||||
|
|
||||||
|
|
||||||
** hooks/archiso_pxe_nbd
|
** hooks/archiso_pxe_common
|
||||||
|
|
||||||
* ip= This parameter is setup automatically by PXELINUX
|
* ip= This parameter is setup automatically by PXELINUX
|
||||||
when option "IPAPPEND" is set to 1 or 2 in config.
|
when option "IPAPPEND" is set to 1 or 2 in config.
|
||||||
@ -73,8 +73,13 @@ INDEX
|
|||||||
when option "IPAPPEND" is set to 2 or 3 in config.
|
when option "IPAPPEND" is set to 2 or 3 in config.
|
||||||
BOOTIF=<hardware-address-of-boot-interface>
|
BOOTIF=<hardware-address-of-boot-interface>
|
||||||
Default: (set via PXELINUX)
|
Default: (set via PXELINUX)
|
||||||
|
|
||||||
|
** hooks/archiso_pxe_nbd
|
||||||
|
|
||||||
* archiso_nbd_name= Set NBD export name used by the server.
|
* archiso_nbd_name= Set NBD export name used by the server.
|
||||||
Default: archiso
|
Default: archiso
|
||||||
|
* archiso_nbd_srv= Set an IP address where NBD reside.
|
||||||
|
Default: "${pxeserver}" (The <boot-server-ip from ip=)
|
||||||
|
|
||||||
|
|
||||||
** hooks/archiso_loop_mnt
|
** hooks/archiso_loop_mnt
|
||||||
@ -118,8 +123,9 @@ if nothing is specified on command line.
|
|||||||
+ (none)
|
+ (none)
|
||||||
* archiso_loop_mnt
|
* archiso_loop_mnt
|
||||||
+ (none)
|
+ (none)
|
||||||
* archiso_pxe_nbd
|
* archiso_pxe_common
|
||||||
+ mkinitcpio-nfs-utils for ipconfig
|
+ mkinitcpio-nfs-utils for ipconfig
|
||||||
|
* archiso_pxe_nbd
|
||||||
+ nbd for nbd-client
|
+ nbd for nbd-client
|
||||||
* archiso_shutdown
|
* archiso_shutdown
|
||||||
+ (none)
|
+ (none)
|
||||||
|
@ -16,6 +16,8 @@ install-hooks:
|
|||||||
install -D -m 644 hooks/archiso_shutdown $(DESTDIR)/lib/initcpio/hooks/archiso_shutdown
|
install -D -m 644 hooks/archiso_shutdown $(DESTDIR)/lib/initcpio/hooks/archiso_shutdown
|
||||||
install -D -m 644 install/archiso_shutdown $(DESTDIR)/lib/initcpio/install/archiso_shutdown
|
install -D -m 644 install/archiso_shutdown $(DESTDIR)/lib/initcpio/install/archiso_shutdown
|
||||||
install -D -m 644 archiso_pxe_nbd $(DESTDIR)/lib/initcpio/archiso_pxe_nbd
|
install -D -m 644 archiso_pxe_nbd $(DESTDIR)/lib/initcpio/archiso_pxe_nbd
|
||||||
|
install -D -m 644 hooks/archiso_pxe_common $(DESTDIR)/lib/initcpio/hooks/archiso_pxe_common
|
||||||
|
install -D -m 644 install/archiso_pxe_common $(DESTDIR)/lib/initcpio/install/archiso_pxe_common
|
||||||
install -D -m 644 hooks/archiso_pxe_nbd $(DESTDIR)/lib/initcpio/hooks/archiso_pxe_nbd
|
install -D -m 644 hooks/archiso_pxe_nbd $(DESTDIR)/lib/initcpio/hooks/archiso_pxe_nbd
|
||||||
install -D -m 644 install/archiso_pxe_nbd $(DESTDIR)/lib/initcpio/install/archiso_pxe_nbd
|
install -D -m 644 install/archiso_pxe_nbd $(DESTDIR)/lib/initcpio/install/archiso_pxe_nbd
|
||||||
install -D -m 644 hooks/archiso_loop_mnt $(DESTDIR)/lib/initcpio/hooks/archiso_loop_mnt
|
install -D -m 644 hooks/archiso_loop_mnt $(DESTDIR)/lib/initcpio/hooks/archiso_loop_mnt
|
||||||
@ -39,6 +41,8 @@ uninstall:
|
|||||||
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_shutdown
|
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_shutdown
|
||||||
rm -f $(DESTDIR)/lib/initcpio/install/archiso_shutdown
|
rm -f $(DESTDIR)/lib/initcpio/install/archiso_shutdown
|
||||||
rm -f $(DESTDIR)/lib/initcpio/archiso_pxe_nbd
|
rm -f $(DESTDIR)/lib/initcpio/archiso_pxe_nbd
|
||||||
|
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_pxe_common
|
||||||
|
rm -f $(DESTDIR)/lib/initcpio/install/archiso_pxe_common
|
||||||
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_pxe_nbd
|
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_pxe_nbd
|
||||||
rm -f $(DESTDIR)/lib/initcpio/install/archiso_pxe_nbd
|
rm -f $(DESTDIR)/lib/initcpio/install/archiso_pxe_nbd
|
||||||
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_loop_mnt
|
rm -f $(DESTDIR)/lib/initcpio/hooks/archiso_loop_mnt
|
||||||
|
34
archiso/hooks/archiso_pxe_common
Normal file
34
archiso/hooks/archiso_pxe_common
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
|
||||||
|
run_hook () {
|
||||||
|
local i net_mac bootif_mac bootif_dev
|
||||||
|
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
||||||
|
local DEVICE
|
||||||
|
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
||||||
|
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
|
||||||
|
local filename
|
||||||
|
# /tmp/net-*.conf
|
||||||
|
|
||||||
|
if [[ -n "${ip}" ]]; then
|
||||||
|
if [[ -n "${BOOTIF}" ]]; then
|
||||||
|
bootif_mac=${BOOTIF#01-}
|
||||||
|
bootif_mac=${bootif_mac//-/:}
|
||||||
|
for i in /sys/class/net/*/address; do
|
||||||
|
read net_mac < ${i}
|
||||||
|
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
|
||||||
|
bootif_dev=${i#/sys/class/net/}
|
||||||
|
bootif_dev=${bootif_dev%/address}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
ip="${ip}::${bootif_dev}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# setup network and save some values
|
||||||
|
ipconfig "ip=${ip}"
|
||||||
|
|
||||||
|
. /tmp/net-*.conf
|
||||||
|
|
||||||
|
pxeserver=${ROOTSERVER}
|
||||||
|
fi
|
||||||
|
}
|
@ -1,36 +1,9 @@
|
|||||||
# vim: set ft=sh:
|
# vim: set ft=sh:
|
||||||
run_hook () {
|
|
||||||
local line i net_mac bootif_mac bootif_dev
|
|
||||||
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
|
||||||
local DEVICE
|
|
||||||
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
|
||||||
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
|
|
||||||
local filename
|
|
||||||
# /tmp/net-*.conf
|
|
||||||
|
|
||||||
if [ -n "${ip}" ]; then
|
|
||||||
if [ -n "${BOOTIF}" ]; then
|
|
||||||
bootif_mac=${BOOTIF#01-}
|
|
||||||
bootif_mac=${bootif_mac//-/:}
|
|
||||||
for i in /sys/class/net/*/address; do
|
|
||||||
read net_mac < ${i}
|
|
||||||
if [ "${bootif_mac}" == "${net_mac}" ]; then
|
|
||||||
bootif_dev=${i#/sys/class/net/}
|
|
||||||
bootif_dev=${bootif_dev%/address}
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
ip="${ip}::${bootif_dev}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# setup network and save some values
|
|
||||||
ipconfig "ip=${ip}"
|
|
||||||
|
|
||||||
. /tmp/net-*.conf
|
|
||||||
|
|
||||||
nbdserver=${ROOTSERVER}
|
|
||||||
|
|
||||||
|
run_hook() {
|
||||||
|
if [[ -n "${ip}" ]]; then
|
||||||
[[ -z "${archiso_nbd_name}" ]] && archiso_nbd_name="archiso"
|
[[ -z "${archiso_nbd_name}" ]] && archiso_nbd_name="archiso"
|
||||||
|
[[ -z "${archiso_nbd_srv}" ]] && archiso_nbd_srv="${pxeserver}"
|
||||||
|
|
||||||
mount_handler="archiso_pxe_nbd_mount_handler"
|
mount_handler="archiso_pxe_nbd_mount_handler"
|
||||||
fi
|
fi
|
||||||
@ -49,19 +22,19 @@ archiso_pxe_nbd_mount_handler () {
|
|||||||
launch_interactive_shell
|
launch_interactive_shell
|
||||||
done
|
done
|
||||||
|
|
||||||
msg "::: Setup NBD from ${nbdserver} at /dev/nbd0"
|
msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
||||||
if [ "${copytoram}" = "y" ]; then
|
if [[ "${copytoram}" = "y" ]]; then
|
||||||
nbd-client ${nbdserver} -N ${archiso_nbd_name} /dev/nbd0
|
nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0
|
||||||
else
|
else
|
||||||
nbd-client ${nbdserver} -N ${archiso_nbd_name} /dev/nbd0 -persist
|
nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 -persist
|
||||||
fi
|
fi
|
||||||
|
|
||||||
archisodevice=/dev/nbd0
|
archisodevice=/dev/nbd0
|
||||||
|
|
||||||
archiso_mount_handler ${newroot}
|
archiso_mount_handler ${newroot}
|
||||||
|
|
||||||
if [ "${copytoram}" = "y" ]; then
|
if [[ "${copytoram}" = "y" ]]; then
|
||||||
msg "::: Disconnect NBD from ${nbdserver} at /dev/nbd0"
|
msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
||||||
nbd-client -d /dev/nbd0
|
nbd-client -d /dev/nbd0
|
||||||
else
|
else
|
||||||
mkdir -p /run/archiso
|
mkdir -p /run/archiso
|
||||||
|
24
archiso/install/archiso_pxe_common
Normal file
24
archiso/install/archiso_pxe_common
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# vim: set ft=sh:
|
||||||
|
|
||||||
|
build ()
|
||||||
|
{
|
||||||
|
MODULES="${MODULES} $(comm -2 -3 <(checked_modules "/drivers/net/" | sort) \
|
||||||
|
<(find $MODULEDIR/kernel/drivers/net/{irda,phy,wimax,wireless} \
|
||||||
|
-name '*.ko*' \
|
||||||
|
-exec bash -c 'printf "%s\n" "${@%%.ko*}" | sed "s@.*/@@;s@-@_@" | sort' _ {} +) \
|
||||||
|
| grep -v -e 'ppp_' -e 'plip' -e 'pppoe')"
|
||||||
|
BINARIES=""
|
||||||
|
FILES=""
|
||||||
|
SCRIPT="archiso_pxe_common"
|
||||||
|
|
||||||
|
add_dir /tmp
|
||||||
|
|
||||||
|
add_binary "/lib/initcpio/ipconfig" "/bin/ipconfig"
|
||||||
|
}
|
||||||
|
|
||||||
|
help ()
|
||||||
|
{
|
||||||
|
cat<<HELPEOF
|
||||||
|
This hook loads the necessary modules for boot via PXE.
|
||||||
|
HELPEOF
|
||||||
|
}
|
@ -3,20 +3,11 @@
|
|||||||
build ()
|
build ()
|
||||||
{
|
{
|
||||||
MODULES="nbd"
|
MODULES="nbd"
|
||||||
MODULES="${MODULES} $(comm -2 -3 <(checked_modules "/drivers/net/" | sort) \
|
|
||||||
<(find $MODULEDIR/kernel/drivers/net/{irda,phy,wimax,wireless} \
|
|
||||||
-name '*.ko*' \
|
|
||||||
-exec bash -c 'printf "%s\n" "${@%%.ko*}" | sed "s@.*/@@;s@-@_@" | sort' _ {} +) \
|
|
||||||
| grep -v -e 'ppp_' -e 'plip' -e 'pppoe')"
|
|
||||||
BINARIES=""
|
BINARIES=""
|
||||||
FILES=""
|
FILES=""
|
||||||
SCRIPT="archiso_pxe_nbd"
|
SCRIPT="archiso_pxe_nbd"
|
||||||
|
|
||||||
add_dir /tmp
|
|
||||||
|
|
||||||
add_binary "/usr/sbin/nbd-client" "/bin/nbd-client"
|
add_binary "/usr/sbin/nbd-client" "/bin/nbd-client"
|
||||||
add_binary "/lib/initcpio/ipconfig" "/bin/ipconfig"
|
|
||||||
|
|
||||||
add_file "/lib/initcpio/archiso_pxe_nbd" "/archiso_pxe_nbd"
|
add_file "/lib/initcpio/archiso_pxe_nbd" "/archiso_pxe_nbd"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ make_packages() {
|
|||||||
make_setup_mkinitcpio() {
|
make_setup_mkinitcpio() {
|
||||||
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
||||||
local _hook
|
local _hook
|
||||||
for _hook in archiso archiso_shutdown archiso_pxe_nbd archiso_loop_mnt; do
|
for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_loop_mnt; do
|
||||||
cp /lib/initcpio/hooks/${_hook} ${work_dir}/root-image/lib/initcpio/hooks
|
cp /lib/initcpio/hooks/${_hook} ${work_dir}/root-image/lib/initcpio/hooks
|
||||||
cp /lib/initcpio/install/${_hook} ${work_dir}/root-image/lib/initcpio/install
|
cp /lib/initcpio/install/${_hook} ${work_dir}/root-image/lib/initcpio/install
|
||||||
done
|
done
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
HOOKS="base udev memdisk archiso_shutdown archiso archiso_pxe_nbd archiso_loop_mnt pata scsi sata virtio usb fw pcmcia filesystems usbinput"
|
HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd pata scsi sata virtio usb fw pcmcia filesystems usbinput"
|
||||||
COMPRESSION="xz"
|
COMPRESSION="xz"
|
||||||
|
Loading…
Reference in New Issue
Block a user