Adding linting for initcpio scripts
archiso/initcpio/install/*: Setting bash shebang for all scripts and making them comform with shellcheck. archiso/initcpio/{hooks,script}/*: Setting ash shebang for all scripts and making them comform with shellcheck (for dash, as shellcheck has no ash specific ruleset). Essentially the ash based scripts should be POSIX compliant as much as possible to have an easier time writing, debugging and maintaining them. Ensuring that variables are not treated as options and introducing variable quoting. .gitlab-ci.yml: Integrating shellcheck for initcpio scripts. Closes #32
This commit is contained in:
parent
550aca7124
commit
e2032db4e7
@ -15,3 +15,7 @@ lint:
|
||||
configs/releng/airootfs/root/.automated_script.sh
|
||||
configs/releng/airootfs/usr/local/bin/choose-mirror
|
||||
scripts/run_archiso.sh
|
||||
archiso/initcpio/install/*
|
||||
- shellcheck -s dash
|
||||
archiso/initcpio/hooks/*
|
||||
archiso/initcpio/script/*
|
||||
|
@ -1,3 +1,5 @@
|
||||
#!/bin/ash
|
||||
|
||||
# args: source, newroot, mountpoint
|
||||
_mnt_dmsnapshot() {
|
||||
local img="${1}"
|
||||
@ -8,19 +10,19 @@ _mnt_dmsnapshot() {
|
||||
local dm_snap_name="${dm_snap_prefix}_${img_name}"
|
||||
local ro_dev ro_dev_size rw_dev
|
||||
|
||||
ro_dev=$(losetup --find --show --read-only "${img}")
|
||||
echo ${ro_dev} >> /run/archiso/used_block_devices
|
||||
ro_dev_size=$(blockdev --getsz ${ro_dev})
|
||||
ro_dev="$(losetup --find --show --read-only -- "${img}")"
|
||||
echo "${ro_dev}" >> /run/archiso/used_block_devices
|
||||
ro_dev_size="$(blockdev --getsz -- "${ro_dev}")"
|
||||
|
||||
if [[ "${cow_persistent}" == "P" ]]; then
|
||||
if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
|
||||
if [ "${cow_persistent}" = "P" ]; then
|
||||
if [ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]; then
|
||||
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow', using as persistent."
|
||||
else
|
||||
msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as persistent."
|
||||
truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
else
|
||||
if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
|
||||
if [ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]; then
|
||||
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing."
|
||||
rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
@ -28,17 +30,18 @@ _mnt_dmsnapshot() {
|
||||
truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
|
||||
rw_dev=$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow")
|
||||
echo ${rw_dev} >> /run/archiso/used_block_devices
|
||||
rw_dev="$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow")"
|
||||
echo "${rw_dev}" >> /run/archiso/used_block_devices
|
||||
|
||||
dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
|
||||
dmsetup create "${dm_snap_name}" --table \
|
||||
"0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
|
||||
|
||||
if [[ "${cow_persistent}" != "P" ]]; then
|
||||
if [ "${cow_persistent}" != "P" ]; then
|
||||
rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
|
||||
_mnt_dev "/dev/mapper/${dm_snap_name}" "${newroot}${mnt}" "-w" "defaults"
|
||||
echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/archiso/used_block_devices
|
||||
readlink -f "/dev/mapper/${dm_snap_name}" >> /run/archiso/used_block_devices
|
||||
}
|
||||
|
||||
# args: source, newroot, mountpoint
|
||||
@ -46,8 +49,10 @@ _mnt_overlayfs() {
|
||||
local src="${1}"
|
||||
local newroot="${2}"
|
||||
local mnt="${3}"
|
||||
mkdir -p /run/archiso/cowspace/${cow_directory}/upperdir /run/archiso/cowspace/${cow_directory}/workdir
|
||||
mount -t overlay -o lowerdir=${src},upperdir=/run/archiso/cowspace/${cow_directory}/upperdir,workdir=/run/archiso/cowspace/${cow_directory}/workdir airootfs "${newroot}${mnt}"
|
||||
mkdir -p "/run/archiso/cowspace/${cow_directory}/upperdir" "/run/archiso/cowspace/${cow_directory}/workdir"
|
||||
mount -t overlay -o \
|
||||
"lowerdir=${src},upperdir=/run/archiso/cowspace/${cow_directory}/upperdir,workdir=/run/archiso/cowspace/${cow_directory}/workdir" \
|
||||
airootfs "${newroot}${mnt}"
|
||||
}
|
||||
|
||||
|
||||
@ -58,17 +63,18 @@ _mnt_sfs() {
|
||||
local img_fullname="${img##*/}"
|
||||
local sfs_dev
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${copytoram}" = "y" ]; then
|
||||
msg -n ":: Copying squashfs image to RAM..."
|
||||
if ! cp "${img}" "/run/archiso/copytoram/${img_fullname}" ; then
|
||||
if ! cp -- "${img}" "/run/archiso/copytoram/${img_fullname}" ; then
|
||||
echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
img="/run/archiso/copytoram/${img_fullname}"
|
||||
msg "done."
|
||||
fi
|
||||
sfs_dev=$(losetup --find --show --read-only "${img}")
|
||||
echo ${sfs_dev} >> /run/archiso/used_block_devices
|
||||
sfs_dev="$(losetup --find --show --read-only -- "${img}")"
|
||||
echo "${sfs_dev}" >> /run/archiso/used_block_devices
|
||||
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
|
||||
}
|
||||
|
||||
@ -102,45 +108,46 @@ _mnt_dev() {
|
||||
|
||||
_verify_checksum() {
|
||||
local _status
|
||||
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}"
|
||||
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}" || exit 1
|
||||
sha512sum -c airootfs.sha512 > /tmp/checksum.log 2>&1
|
||||
_status=$?
|
||||
cd "${OLDPWD}"
|
||||
return ${_status}
|
||||
cd -- "${OLDPWD}" || exit 1
|
||||
return "${_status}"
|
||||
}
|
||||
|
||||
_verify_signature() {
|
||||
local _status
|
||||
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}"
|
||||
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}" || exit 1
|
||||
gpg --homedir /gpg --status-fd 1 --verify airootfs.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG'
|
||||
_status=$?
|
||||
cd "${OLDPWD}"
|
||||
cd -- "${OLDPWD}" || exit 1
|
||||
return ${_status}
|
||||
}
|
||||
|
||||
run_hook() {
|
||||
[[ -z "${arch}" ]] && arch="$(uname -m)"
|
||||
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
|
||||
[[ -z "${archisobasedir}" ]] && archisobasedir="arch"
|
||||
[[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch"
|
||||
[[ -z "${archisodevice}" ]] && archisodevice="/dev/disk/by-label/${archisolabel}"
|
||||
[[ -z "${cow_spacesize}" ]] && cow_spacesize="256M"
|
||||
|
||||
if [[ -n "${cow_label}" ]]; then
|
||||
[ -z "${arch}" ] && arch="$(uname -m)"
|
||||
[ -z "${copytoram_size}" ] && copytoram_size="75%"
|
||||
[ -z "${archisobasedir}" ] && archisobasedir="arch"
|
||||
[ -z "${dm_snap_prefix}" ] && dm_snap_prefix="arch"
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
[ -z "${archisodevice}" ] && archisodevice="/dev/disk/by-label/${archisolabel}"
|
||||
[ -z "${cow_spacesize}" ] && cow_spacesize="256M"
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ -n "${cow_label}" ]; then
|
||||
cow_device="/dev/disk/by-label/${cow_label}"
|
||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
||||
elif [[ -n "${cow_device}" ]]; then
|
||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
||||
[ -z "${cow_persistent}" ] && cow_persistent="P"
|
||||
elif [ -n "${cow_device}" ]; then
|
||||
[ -z "${cow_persistent}" ] && cow_persistent="P"
|
||||
else
|
||||
cow_persistent="N"
|
||||
fi
|
||||
|
||||
[[ -z "${cow_flags}" ]] && cow_flags="defaults"
|
||||
[[ -z "${cow_directory}" ]] && cow_directory="persistent_${archisolabel}/${arch}"
|
||||
[[ -z "${cow_chunksize}" ]] && cow_chunksize="8"
|
||||
[ -z "${cow_flags}" ] && cow_flags="defaults"
|
||||
[ -z "${cow_directory}" ] && cow_directory="persistent_${archisolabel}/${arch}"
|
||||
[ -z "${cow_chunksize}" ] && cow_chunksize="8"
|
||||
|
||||
# set mount handler for archiso
|
||||
mount_handler="archiso_mount_handler"
|
||||
export mount_handler="archiso_mount_handler"
|
||||
}
|
||||
|
||||
# This function is called normally from init script, but it can be called
|
||||
@ -151,13 +158,14 @@ archiso_mount_handler() {
|
||||
|
||||
if ! mountpoint -q "/run/archiso/bootmnt"; then
|
||||
_mnt_dev "${archisodevice}" "/run/archiso/bootmnt" "-r" "defaults"
|
||||
if [[ "${copytoram}" != "y" ]]; then
|
||||
echo $(readlink -f ${archisodevice}) >> /run/archiso/used_block_devices
|
||||
if [ "${copytoram}" != "y" ]; then
|
||||
readlink -f "${archisodevice}" >> /run/archiso/used_block_devices
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${checksum}" == "y" ]]; then
|
||||
if [[ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sha512" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${checksum}" = "y" ]; then
|
||||
if [ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sha512" ]; then
|
||||
msg -n ":: Self-test requested, please wait..."
|
||||
if _verify_checksum; then
|
||||
msg "done. Checksum is OK, continue booting."
|
||||
@ -172,8 +180,9 @@ archiso_mount_handler() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${verify}" == "y" ]]; then
|
||||
if [[ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs.sig" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${verify}" = "y" ]; then
|
||||
if [ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs.sig" ]; then
|
||||
msg -n ":: Signature verification requested, please wait..."
|
||||
if _verify_signature; then
|
||||
msg "done. Signature is OK, continue booting."
|
||||
@ -187,33 +196,34 @@ archiso_mount_handler() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
if [ "${copytoram}" = "y" ]; then
|
||||
msg ":: Mounting /run/archiso/copytoram (tmpfs) filesystem, size=${copytoram_size}"
|
||||
mkdir -p /run/archiso/copytoram
|
||||
mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/archiso/copytoram
|
||||
fi
|
||||
|
||||
if [[ -n "${cow_device}" ]]; then
|
||||
if [ -n "${cow_device}" ]; then
|
||||
_mnt_dev "${cow_device}" "/run/archiso/cowspace" "-r" "${cow_flags}"
|
||||
echo $(readlink -f ${cow_device}) >> /run/archiso/used_block_devices
|
||||
readlink -f "${cow_device}" >> /run/archiso/used_block_devices
|
||||
mount -o remount,rw "/run/archiso/cowspace"
|
||||
else
|
||||
msg ":: Mounting /run/archiso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..."
|
||||
mkdir -p /run/archiso/cowspace
|
||||
mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/archiso/cowspace
|
||||
fi
|
||||
mkdir -p -m 0700 "/run/archiso/cowspace/${cow_directory}"
|
||||
mkdir -p "/run/archiso/cowspace/${cow_directory}"
|
||||
chmod 0700 "/run/archiso/cowspace/${cow_directory}"
|
||||
|
||||
_mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs" "/run/archiso/sfs/airootfs"
|
||||
if [[ -f "/run/archiso/sfs/airootfs/airootfs.img" ]]; then
|
||||
if [ -f "/run/archiso/sfs/airootfs/airootfs.img" ]; then
|
||||
_mnt_dmsnapshot "/run/archiso/sfs/airootfs/airootfs.img" "${newroot}" "/"
|
||||
else
|
||||
_mnt_overlayfs "/run/archiso/sfs/airootfs" "${newroot}" "/"
|
||||
fi
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
if [ "${copytoram}" = "y" ]; then
|
||||
umount -d /run/archiso/bootmnt
|
||||
fi
|
||||
}
|
||||
|
||||
# vim:ft=sh:ts=4:sw=4:et:
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,10 +1,12 @@
|
||||
# vim: set ft=sh:
|
||||
#!/bin/ash
|
||||
|
||||
run_hook () {
|
||||
[[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}"
|
||||
[[ -z "${img_flags}" ]] && img_flags="defaults"
|
||||
if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then
|
||||
mount_handler="archiso_loop_mount_handler"
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
[ -n "${img_label}" ] && img_dev="/dev/disk/by-label/${img_label}"
|
||||
[ -z "${img_flags}" ] && img_flags="defaults"
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ -n "${img_dev}" ] && [ -n "${img_loop}" ]; then
|
||||
export mount_handler="archiso_loop_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -15,21 +17,24 @@ archiso_loop_mount_handler () {
|
||||
|
||||
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
|
||||
_mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" "${img_flags}"
|
||||
if [[ "${copytoram}" != "y" ]]; then
|
||||
echo $(readlink -f ${img_dev}) >> /run/archiso/used_block_devices
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${copytoram}" != "y" ]; then
|
||||
readlink -f "${img_dev}" >> /run/archiso/used_block_devices
|
||||
fi
|
||||
|
||||
if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then
|
||||
archisodevice="${_dev_loop}"
|
||||
export archisodevice="${_dev_loop}"
|
||||
else
|
||||
echo "ERROR: Setting loopback device for file '/run/archiso/img_dev/${img_loop}'"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
|
||||
archiso_mount_handler ${newroot}
|
||||
archiso_mount_handler "${newroot}"
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
losetup -d ${_dev_loop} 2>/dev/null
|
||||
if [ "${copytoram}" = "y" ]; then
|
||||
losetup -d "${_dev_loop}" 2>/dev/null
|
||||
umount /run/archiso/img_dev
|
||||
fi
|
||||
}
|
||||
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,55 +1,55 @@
|
||||
# vim: set ft=sh:
|
||||
#!/bin/ash
|
||||
|
||||
run_hook () {
|
||||
# Do *not* declare 'bootif_dev' local! We need it in run_latehook().
|
||||
local i net_mac bootif_mac
|
||||
local DNSDOMAIN HOSTNAME IPV4DNS0 IPV4DNS1 ROOTSERVER
|
||||
# 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
|
||||
# shellcheck disable=SC2034
|
||||
local DEVICE IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY NISDOMAIN ROOTPATH filename
|
||||
|
||||
if [[ -n "${ip}" ]]; then
|
||||
if [[ -n "${BOOTIF}" ]]; then
|
||||
bootif_mac=${BOOTIF#01-}
|
||||
bootif_mac=${bootif_mac//-/:}
|
||||
if [ -n "${ip}" ]; then
|
||||
if [ -n "${BOOTIF}" ]; then
|
||||
bootif_mac="${BOOTIF#01-}"
|
||||
# shellcheck disable=SC2169 # ash supports bash-like string replacment
|
||||
bootif_mac="${bootif_mac//-/:}"
|
||||
for i in /sys/class/net/*/address; do
|
||||
read net_mac < ${i}
|
||||
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
|
||||
read -r net_mac < "${i}"
|
||||
if [ "${bootif_mac}" = "${net_mac}" ]; then
|
||||
bootif_dev=${i#/sys/class/net/}
|
||||
bootif_dev=${bootif_dev%/address}
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "${ip}" == "dhcp" ]]; then
|
||||
if [ "${ip}" = "dhcp" ]; then
|
||||
ip=":::::${bootif_dev}:dhcp"
|
||||
else
|
||||
else
|
||||
ip="${ip}::${bootif_dev}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# setup network and save some values
|
||||
if ! ipconfig -t 20 "ip=${ip}"; then
|
||||
echo "ERROR; Failed to configure network"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
echo "ERROR; Failed to configure network"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC1090 # ipconfig generates these files
|
||||
. /tmp/net-*.conf
|
||||
|
||||
pxeserver=${ROOTSERVER}
|
||||
export pxeserver="${ROOTSERVER}"
|
||||
|
||||
# setup DNS resolver
|
||||
if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then
|
||||
if [ "${IPV4DNS0}" != "0.0.0.0" ]; then
|
||||
echo "# added by archiso_pxe_common hook" > /etc/resolv.conf
|
||||
echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf
|
||||
fi
|
||||
if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then
|
||||
if [ "${IPV4DNS1}" != "0.0.0.0" ]; then
|
||||
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
|
||||
fi
|
||||
if [[ -n "${DNSDOMAIN}" ]]; then
|
||||
if [ -n "${DNSDOMAIN}" ]; then
|
||||
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
|
||||
echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf
|
||||
fi
|
||||
@ -57,16 +57,19 @@ run_hook () {
|
||||
}
|
||||
|
||||
run_latehook () {
|
||||
if [[ -n "${ip}" ]]; then
|
||||
[[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
|
||||
if [ -n "${ip}" ]; then
|
||||
[ -z "${copy_resolvconf}" ] && copy_resolvconf="y"
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
if [[ -n "${bootif_dev}" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${copytoram}" = "y" ]; then
|
||||
if [ -n "${bootif_dev}" ]; then
|
||||
ip addr flush dev "${bootif_dev}"
|
||||
ip link set "${bootif_dev}" down
|
||||
fi
|
||||
elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
|
||||
elif [ "${copy_resolvconf}" != "n" ] && [ -f /etc/resolv.conf ]; then
|
||||
cp /etc/resolv.conf /new_root/etc/resolv.conf
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,16 +1,17 @@
|
||||
# vim: set ft=sh:
|
||||
#!/bin/ash
|
||||
|
||||
run_hook() {
|
||||
if [[ -n "${ip}" && -n "${archiso_http_srv}" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ -n "${ip}" ] && [ -n "${archiso_http_srv}" ]; then
|
||||
|
||||
# booting with http is always copy-to-ram, so set here to make sure
|
||||
# addresses are flushed and interface is set down
|
||||
copytoram="y"
|
||||
export copytoram="y"
|
||||
|
||||
archiso_http_srv=$(eval echo ${archiso_http_srv})
|
||||
[[ -z "${archiso_http_spc}" ]] && archiso_http_spc="75%"
|
||||
archiso_http_srv=$(eval echo "${archiso_http_srv}")
|
||||
[ -z "${archiso_http_spc}" ] && archiso_http_spc="75%"
|
||||
|
||||
mount_handler="archiso_pxe_http_mount_handler"
|
||||
export mount_handler="archiso_pxe_http_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -23,6 +24,7 @@ _curl_get() {
|
||||
local _dst="${2}"
|
||||
|
||||
msg ":: Downloading '${_url}'"
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if ! curl -L -f -o "/run/archiso/httpspace/${archisobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
|
||||
echo "ERROR: Downloading '${_url}'"
|
||||
echo " Falling back to interactive prompt"
|
||||
@ -38,17 +40,22 @@ archiso_pxe_http_mount_handler () {
|
||||
mkdir -p "/run/archiso/httpspace"
|
||||
mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace"
|
||||
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs" "/${arch}"
|
||||
|
||||
if [[ "${checksum}" == "y" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${checksum}" = "y" ]; then
|
||||
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sha512" "/${arch}"
|
||||
fi
|
||||
if [[ "${verify}" == "y" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ "${verify}" = "y" ]; then
|
||||
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs.sig" "/${arch}"
|
||||
fi
|
||||
|
||||
mkdir -p "/run/archiso/bootmnt"
|
||||
mount -o bind /run/archiso/httpspace /run/archiso/bootmnt
|
||||
|
||||
archiso_mount_handler ${newroot}
|
||||
archiso_mount_handler "${newroot}"
|
||||
}
|
||||
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,19 +1,20 @@
|
||||
# vim: set ft=sh:
|
||||
#!/bin/ash
|
||||
|
||||
run_earlyhook() {
|
||||
if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ -n "${ip}" ] && [ -n "${archiso_nbd_srv}" ]; then
|
||||
# Module autoloading like with loop devices does not work, doing manually...
|
||||
modprobe nbd 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
run_hook() {
|
||||
if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then
|
||||
if [ -n "${ip}" ] && [ -n "${archiso_nbd_srv}" ]; then
|
||||
|
||||
archiso_nbd_srv=$(eval echo ${archiso_nbd_srv})
|
||||
[[ -z "${archiso_nbd_name}" ]] && archiso_nbd_name="archiso"
|
||||
archiso_nbd_srv=$(eval echo "${archiso_nbd_srv}")
|
||||
[ -z "${archiso_nbd_name}" ] && archiso_nbd_name="archiso"
|
||||
|
||||
mount_handler="archiso_pxe_nbd_mount_handler"
|
||||
export mount_handler="archiso_pxe_nbd_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -29,19 +30,21 @@ archiso_pxe_nbd_mount_handler () {
|
||||
done
|
||||
|
||||
msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
||||
if [[ "${copytoram}" != "n" ]]; then
|
||||
nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0
|
||||
if [ "${copytoram}" != "n" ]; then
|
||||
nbd-client "${archiso_nbd_srv}" -N "${archiso_nbd_name}" /dev/nbd0
|
||||
copytoram="y"
|
||||
else
|
||||
nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} -systemd-mark -persist /dev/nbd0
|
||||
nbd-client "${archiso_nbd_srv}" -N "${archiso_nbd_name}" -systemd-mark -persist /dev/nbd0
|
||||
fi
|
||||
|
||||
archisodevice=/dev/nbd0
|
||||
export archisodevice=/dev/nbd0
|
||||
|
||||
archiso_mount_handler ${newroot}
|
||||
archiso_mount_handler "${newroot}"
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
if [ "${copytoram}" = "y" ]; then
|
||||
msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
||||
nbd-client -d /dev/nbd0
|
||||
fi
|
||||
}
|
||||
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,30 +1,40 @@
|
||||
# vim: set ft=sh:
|
||||
#!/bin/ash
|
||||
|
||||
run_hook() {
|
||||
if [[ -n "${ip}" && -n "${archiso_nfs_srv}" ]]; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ -n "${ip}" ] && [ -n "${archiso_nfs_srv}" ]; then
|
||||
|
||||
archiso_nfs_srv=$(eval echo ${archiso_nfs_srv})
|
||||
[[ -n "${archiso_nfs_opt}" ]] && archiso_nfs_opt="-o ${archiso_nfs_opt}"
|
||||
archiso_nfs_srv=$(eval echo "${archiso_nfs_srv}")
|
||||
|
||||
mount_handler="archiso_nfs_mount_handler"
|
||||
export mount_handler="archiso_nfs_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
archiso_nfs_mount_handler() {
|
||||
local mount_status
|
||||
newroot="${1}"
|
||||
mkdir -p "/run/archiso/bootmnt"
|
||||
msg ":: Mounting '${archiso_nfs_srv}'"
|
||||
# Do not put "${archiso_nfs_opt}" nfsmount fails!
|
||||
if ! nfsmount ${archiso_nfs_opt} "${archiso_nfs_srv}" "/run/archiso/bootmnt"; then
|
||||
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||
if [ -n "${archiso_nfs_opt}" ]; then
|
||||
nfsmount -o "${archiso_nfs_opt}" "${archiso_nfs_srv}" "/run/archiso/bootmnt"
|
||||
mount_status=$?
|
||||
else
|
||||
nfsmount "${archiso_nfs_srv}" "/run/archiso/bootmnt"
|
||||
mount_status=$?
|
||||
fi
|
||||
if [ $mount_status -gt 0 ]; then
|
||||
echo "ERROR: Mounting '${archiso_nfs_srv}'"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
|
||||
if [[ "${copytoram}" != "n" ]]; then
|
||||
if [ "${copytoram}" != "n" ]; then
|
||||
copytoram="y"
|
||||
fi
|
||||
|
||||
archiso_mount_handler ${newroot}
|
||||
archiso_mount_handler "${newroot}"
|
||||
}
|
||||
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,6 +1,8 @@
|
||||
#!/bin/ash
|
||||
|
||||
run_cleanuphook() {
|
||||
rm -rf /usr/lib/modules
|
||||
cp -ax / /run/initramfs
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
# vim: set ft=sh:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_module "cdrom"
|
||||
@ -22,9 +22,7 @@ build() {
|
||||
add_file /usr/lib/udev/rules.d/95-dm-notify.rules
|
||||
add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules
|
||||
if [[ $ARCHISO_GNUPG_FD ]]; then
|
||||
mkdir -p "$BUILDROOT$dest"/gpg
|
||||
gpg --homedir "$BUILDROOT$dest"/gpg --import <&$ARCHISO_GNUPG_FD
|
||||
mkdir -p "$BUILDROOT/gpg"
|
||||
gpg --homedir "$BUILDROOT/gpg" --import <& "$ARCHISO_GNUPG_FD"
|
||||
fi
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_module "amdgpu"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_runscript
|
||||
@ -9,5 +9,3 @@ cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via loop device.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/"
|
||||
@ -8,13 +8,13 @@ build() {
|
||||
add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig
|
||||
|
||||
# Add hosts support files+dns
|
||||
add_symlink /usr/lib/libnss_files.so.2 $(readlink /usr/lib/libnss_files.so.2)
|
||||
add_binary $(readlink -f /usr/lib/libnss_files.so.2)
|
||||
add_symlink /usr/lib/libnss_dns.so.2 $(readlink /usr/lib/libnss_dns.so.2)
|
||||
add_binary $(readlink -f /usr/lib/libnss_dns.so.2)
|
||||
add_symlink /usr/lib/libnss_files.so.2 "$(readlink /usr/lib/libnss_files.so.2)"
|
||||
add_binary "$(readlink -f /usr/lib/libnss_files.so.2)"
|
||||
add_symlink /usr/lib/libnss_dns.so.2 "$(readlink /usr/lib/libnss_dns.so.2)"
|
||||
add_binary "$(readlink -f /usr/lib/libnss_dns.so.2)"
|
||||
|
||||
add_dir /etc
|
||||
echo "hosts: files dns" > $BUILDROOT/etc/nsswitch.conf
|
||||
echo "hosts: files dns" > "$BUILDROOT/etc/nsswitch.conf"
|
||||
}
|
||||
|
||||
help() {
|
||||
@ -22,5 +22,3 @@ cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -1,11 +1,11 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_runscript
|
||||
|
||||
add_binary curl
|
||||
|
||||
add_file $(readlink -f /etc/ssl/certs/ca-certificates.crt) /etc/ssl/certs/ca-certificates.crt
|
||||
add_file "$(readlink -f /etc/ssl/certs/ca-certificates.crt)" /etc/ssl/certs/ca-certificates.crt
|
||||
}
|
||||
|
||||
help() {
|
||||
@ -13,5 +13,3 @@ cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE and HTTP.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_module "nbd"
|
||||
@ -13,5 +13,3 @@ cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE and NBD.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_module "nfs"
|
||||
@ -13,5 +13,3 @@ help() {
|
||||
This hook loads the necessary modules for boot via PXE and NFS.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build() {
|
||||
add_binary cp
|
||||
@ -12,9 +12,7 @@ help() {
|
||||
cat <<HELPEOF
|
||||
This hook will create a shutdown initramfs in /run/initramfs
|
||||
that we can pivot to on shutdown in order to unmount / and
|
||||
and others mount points, dm-snapshot devices and loopback devices.
|
||||
Mostly usefull for dm-snapshot persistent.
|
||||
and other mount points, dm-snapshot and loopback devices.
|
||||
Mostly useful for persistent dm-snapshot.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
||||
|
@ -5,15 +5,15 @@ mkdir /oldrun
|
||||
mount -n --move /oldroot/run /oldrun
|
||||
|
||||
# Unmount all mounts now.
|
||||
umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)
|
||||
umount "$(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)"
|
||||
|
||||
# Remove all dm-snapshot devices.
|
||||
dmsetup remove_all
|
||||
|
||||
# Remove all loopback devices.
|
||||
for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do
|
||||
if ! losetup -d ${_lup} 2> /dev/null; then
|
||||
umount -d ${_lup}
|
||||
if ! losetup -d -- "${_lup}" 2> /dev/null; then
|
||||
umount -d -- "${_lup}"
|
||||
fi
|
||||
done
|
||||
|
||||
@ -21,8 +21,8 @@ done
|
||||
umount /oldrun/archiso/cowspace
|
||||
|
||||
# Unmount boot device if needed (no copytoram=y used)
|
||||
if [[ ! -d /oldrun/archiso/copytoram ]]; then
|
||||
if [[ -d /oldrun/archiso/img_dev ]]; then
|
||||
if [ ! -d /oldrun/archiso/copytoram ]; then
|
||||
if [ -d /oldrun/archiso/img_dev ]; then
|
||||
umount /oldrun/archiso/img_dev
|
||||
else
|
||||
umount /oldrun/archiso/bootmnt
|
||||
@ -35,3 +35,5 @@ case "$1" in
|
||||
reboot|poweroff|halt) "$1" -f ;;
|
||||
*) halt -f;;
|
||||
esac
|
||||
|
||||
# vim: set ft=sh:
|
||||
|
Loading…
Reference in New Issue
Block a user