You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							86 lines
						
					
					
						
							2.1 KiB
						
					
					
				| #!/bin/sh | |
| # --- SDE-COPYRIGHT-NOTE-BEGIN --- | |
| # This copyright note is auto-generated by ./scripts/Create-CopyPatch. | |
| # | |
| # Filename: package/.../mkinitramfs/files/50-kernel.sh | |
| # Copyright (C) 2007 - 2008 The OpenSDE Project | |
| # | |
| # More information can be found in the files COPYING and README. | |
| # | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; version 2 of the License. A copy of the | |
| # GNU General Public License can be found in the file COPYING. | |
| # --- SDE-COPYRIGHT-NOTE-END --- | |
|  | |
| MODINFO=${MODINFO:-/sbin/modinfo} | |
| DEPMOD=${DEPMOD:-/sbin/depmod} | |
|  | |
| set -e | |
|  | |
| if [ -n "$moddir" ]; then | |
|  | |
| 	# sanity checks | |
| 	for tool in $MODINFO $DEPMOD; do | |
| 		if [ ! -x "$tool" ]; then | |
| 			echo "ERROR: $tool is no available" | |
| 			exit 1 | |
| 		fi | |
| 	done | |
|  | |
| 	if [ "$running" ]; then | |
| 		echo "TODO: building on a running system, we can take the list of active modules." | |
| 	fi | |
|  | |
| 	module_install() { | |
| 		local module= source= target= | |
|  | |
| 		if [ -r "$1" ]; then | |
| 			# absolute path | |
| 			source="$1" | |
| 			module=${source##*/}; module=${module%.ko} | |
| 		else | |
| 			module="$1" | |
| 			source="$( find "$moddir/kernel" -name "$module.ko" | head -n 1 )" | |
| 		fi | |
|  | |
| 		if [ -r "$source" ]; then | |
| 			target="lib/modules/$kernelver/${source#$moddir/}" | |
|  | |
| 			if [ ! -f $target ]; then | |
| 				echo -n " $module" | |
| 				mkdir -p "${target%/*}" | |
| 				cp "$source" "$target" | |
|  | |
| 				for dep in $( $MODINFO "$source" | grep "^depends:" | tr -s ' ' | cut -d' ' -f2 | tr ',' ' ' ); do | |
| 					module_install "$dep" | |
| 				done | |
| 			fi | |
| 		else | |
| 			modules_missing="$modules_missing $module" | |
| 			echo -n " [$module]" | |
| 		fi | |
| 	} | |
|  | |
|  | |
| 	echo -n "Installing modules:" | |
| 	modules_missing= | |
|  | |
| 	if [ -n "$MKINITRD_MODULES" ]; then | |
| 		for module in $MKINITRD_MODULES; do | |
| 			module_install "$module" | |
| 		done | |
| 	fi | |
|  | |
| 	# greedy^3 | |
| 	find $moddir/kernel/drivers/{block,ata,ide,ieee1394,md,scsi,cdrom,usb,message} \ | |
| 		$moddir/kernel/{lib,fs} \ | |
| 		-type f | while read file; do | |
| 		module_install "$file" | |
| 		done | |
| 	echo | |
|  | |
| 	$DEPMOD -ae -b "$tmpdir" -F "$sysmap" "$kernelver" | |
|  | |
| 	[ -z "$modules_missing" ] || echo "Failed to find:$modules_missing" | |
| fi
 | |
| 
 |