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.
		
		
		
		
		
			
		
			
				
					
					
						
							112 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							112 lines
						
					
					
						
							2.7 KiB
						
					
					
				# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
						|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
						|
# | 
						|
# Filename: package/.../syslinux/stone_mod_extlinux.sh | 
						|
# Copyright (C) 2006 - 2008 The OpenSDE Project | 
						|
# Copyright (C) 2004 - 2006 The T2 SDE Project | 
						|
# Copyright (C) 1998 - 2003 Clifford Wolf | 
						|
# | 
						|
# 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 --- | 
						|
# | 
						|
# [MAIN] 70 extlinux extlinux (syslinux) Boot Loader Setup | 
						|
# [SETUP] 90 extlinux | 
						|
 | 
						|
rootdev_cache= | 
						|
bootdev_cache= | 
						|
bootdrive_cache= | 
						|
 | 
						|
rootdev() | 
						|
{ | 
						|
	[ -n "$rootdev_cache" ] || rootdev_cache=$( | 
						|
					grep '^/dev/.* / ' /proc/mounts | | 
						|
					head -n 1 | cut -d' ' -f1 ) | 
						|
	echo "$rootdev_cache" | 
						|
} | 
						|
 | 
						|
bootdev() | 
						|
{ | 
						|
	[ -n "$bootdev_cache" ] || bootdev_cache=$( | 
						|
					grep '^/dev/.* /boot ' /proc/mounts | | 
						|
					head -n 1 | cut -d' ' -f1 ) | 
						|
	[ -n "$bootdev_cache" ] || bootdev_cache=$( rootdev ) | 
						|
	echo "$bootdev_cache" | 
						|
} | 
						|
 | 
						|
bootdrive() | 
						|
{ | 
						|
	[ -n "$bootdrive_cache" ] || bootdrive_cache=$( | 
						|
					bootdev | sed -r 's/p?[0-9]*$//' ) | 
						|
	echo "$bootdrive_cache" | 
						|
} | 
						|
 | 
						|
extlinux_kernel_list() | 
						|
{ | 
						|
	local label= first=1 initrd= x= | 
						|
        for x in `(cd /boot/ ; ls -1 vmlinuz_* ) | sort -r` ; do | 
						|
                if [ $first = 1 ] ; then | 
						|
                        label=linux ; first=0 | 
						|
                else | 
						|
                        label=linux-${x/vmlinuz_/} | 
						|
                        label=${label/-dist/} | 
						|
                fi | 
						|
		initrd=initrd-${x/vmlinuz_/}.img | 
						|
 | 
						|
                cat <<-EOT | 
						|
 | 
						|
		LABEL $label | 
						|
		    KERNEL  /$x | 
						|
		    APPEND  initrd=/$initrd root=$( rootdev ) ro | 
						|
		EOT | 
						|
        done | 
						|
} | 
						|
 | 
						|
extlinux_create_conf() | 
						|
{ | 
						|
	mkdir -p $extlinuxdir | 
						|
 | 
						|
	cat > $extlinuxconf <<-EOT | 
						|
	DEFAULT linux | 
						|
	PROMPT 1 | 
						|
	TIMEOUT 300 | 
						|
	EOT | 
						|
 | 
						|
	extlinux_kernel_list >> $extlinuxconf | 
						|
 | 
						|
	gui_message "This is the new $extlinuxconf file: | 
						|
 | 
						|
$( cat $extlinuxconf )" | 
						|
 | 
						|
} | 
						|
 | 
						|
extlinux_install() | 
						|
{ | 
						|
	gui_cmd "Installing extlinux in $extlinuxdir" \ | 
						|
		"mkdir -p $extlinuxdir; extlinux -i $extlinuxdir" | 
						|
} | 
						|
 | 
						|
extlinux_clean_mbr() | 
						|
{ | 
						|
	cat /usr/share/syslinux/mbr.bin > "$1" | 
						|
} | 
						|
 | 
						|
main() | 
						|
{ | 
						|
	local extlinuxdir=/boot/extlinux | 
						|
	local extlinuxconf=$extlinuxdir/extlinux.conf | 
						|
	local drive=$( bootdrive ) | 
						|
 | 
						|
	while gui_menu extlinux 'Extlinux (syslinux) Boot Loader Setup' \ | 
						|
                '(Re-)Create extlinux.conf with installed kernels' 'extlinux_create_conf' \ | 
						|
                "(Re-)Install extlinux in $extlinuxdir" 'extlinux_install' \ | 
						|
		"Clean $drive's MBR (use with care)" "extlinux_clean_mbr '$drive'" \ | 
						|
                "Edit $extlinuxconf (recommended)" \ | 
						|
						"gui_edit 'Extlinux Config File' $extlinuxconf" | 
						|
	do : ; done | 
						|
} | 
						|
 | 
						|
 |