37 lines
		
	
	
	
		
			791 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
	
		
			791 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PATH=/usr/sbin:/usr/bin:/sbin:/bin
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								isofile=$1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[ -z "$isofile" ] && exit 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ismounted "/run/initramfs/isoscan" && exit 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mkdir -p "/run/initramfs/isoscan"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								do_iso_scan() {
							 | 
						||
| 
								 | 
							
								    local _name
							 | 
						||
| 
								 | 
							
								    local dev
							 | 
						||
| 
								 | 
							
								    for dev in /dev/disk/by-uuid/*; do
							 | 
						||
| 
								 | 
							
								        _name=$(dev_unit_name "$dev")
							 | 
						||
| 
								 | 
							
								        [ -e /tmp/isoscan-${_name} ] && continue
							 | 
						||
| 
								 | 
							
								        > /tmp/isoscan-${_name}
							 | 
						||
| 
								 | 
							
								        mount -t auto -o ro "$dev" "/run/initramfs/isoscan" || continue
							 | 
						||
| 
								 | 
							
								        if [ -f "/run/initramfs/isoscan/$isofile" ]; then
							 | 
						||
| 
								 | 
							
								            losetup -f "/run/initramfs/isoscan/$isofile"
							 | 
						||
| 
								 | 
							
								            rm -f -- "$job"
							 | 
						||
| 
								 | 
							
								            exit 0
							 | 
						||
| 
								 | 
							
								        else
							 | 
						||
| 
								 | 
							
								            umount "/run/initramfs/isoscan"
							 | 
						||
| 
								 | 
							
								        fi
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								do_iso_scan
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rmdir "/run/initramfs/isoscan"
							 | 
						||
| 
								 | 
							
								exit 1
							 |