anaconda/anaconda-40.22.3.13/dracut/parse-anaconda-dd.sh
2024-11-14 21:39:56 -08:00

32 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
# parse-anaconda-dd.sh: handle driver update disk settings
# Creates the following files:
# /tmp/dd_net: list of URLs to fetch
# /tmp/dd_disk: list of disk devices to load from
# /tmp/dd_interactive: "menu" if interactive mode requested
# /tmp/dd_todo: concatenation of the above files
# clear everything to ensure idempotency
rm -f /tmp/dd_interactive /tmp/dd_net /tmp/dd_disk /tmp/dd_todo
# parse any dd/inst.dd args found
for dd in $(getargs inst.dd=); do
case "$dd" in
# plain 'dd'/'inst.dd': Engage interactive mode!
dd|inst.dd) echo menu > /tmp/dd_interactive ;;
# network URLs: require net, add to dd_net
http:*|https:*|ftp:*|nfs:*|nfs4:*) set_neednet; echo "$dd" >> /tmp/dd_net ;;
# disks: strip "cdrom:" or "hd:" and add to dd_disk
cdrom:*|hd:*) echo "${dd#*:}" >> /tmp/dd_disk ;;
# images crammed into initrd: strip "file:" or "path:"
file:*|path:*) echo "${dd#*:}" >> /tmp/dd_disk ;;
# anything else is assumed to be a disk (or disk image)
*) echo "$dd" >> /tmp/dd_disk ;;
esac
done
# for convenience's sake, mash 'em all into one list
for dd_f in /tmp/dd_interactive /tmp/dd_net /tmp/dd_disk; do
[ -f $dd_f ] && cat $dd_f >> /tmp/dd_todo
done