36 lines
		
	
	
		
			883 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			36 lines
		
	
	
		
			883 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| # Detects Haiku on BeFS partitions.
 | |
| 
 | |
| . /usr/share/os-prober/common.sh
 | |
| 
 | |
| partition="$1"
 | |
| mpoint="$2"
 | |
| type="$3"
 | |
| 
 | |
| # Weed out stuff that doesn't apply to us
 | |
| case "$type" in
 | |
| 	befs|befs_be) debug "$partition is a BeFS partition" ;;
 | |
| 	*) debug "$partition is not a BeFS partition: exiting"; exit 1 ;;
 | |
| esac
 | |
| 
 | |
| if head -c 512 "$partition" | grep -qs "system.haiku_loader"; then
 | |
| 	debug "Stage 1 bootloader found"
 | |
| else
 | |
| 	debug "Stage 1 bootloader not found: exiting"
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| if system="$(item_in_dir "system" "$mpoint")" &&
 | |
| 	item_in_dir -q "haiku_loader" "$mpoint/$system" &&
 | |
| 	(item_in_dir -q "kernel_x86" "$mpoint/$system" ||
 | |
| 		item_in_dir -q "kernel_x86_64" "$mpoint/$system")
 | |
| then
 | |
| 	debug "Stage 2 bootloader and kernel found"
 | |
| 	label="$(count_next_label Haiku)"
 | |
| 	result "$partition:Haiku:$label:chain"
 | |
| 	exit 0
 | |
| else
 | |
| 	debug "Stage 2 bootloader and kernel not found: exiting"
 | |
| 	exit 1
 | |
| fi
 |