slitaz-arm rev 118

Rename bootmenu to piboot since it's R-Pi only and move to rpi/ folder
author Christophe Lincoln <pankso@slitaz.org>
date Mon Apr 21 03:28:33 2014 +0200 (2014-04-21)
parents 128b9292c97e
children 349fa2f9498f
files bootmenu rpi/piboot
line diff
     1.1 --- a/bootmenu	Mon Apr 21 02:56:48 2014 +0200
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,238 +0,0 @@
     1.4 -#!/bin/sh
     1.5 -
     1.6 -# Check for depends ...
     1.7 -
     1.8 -mv -f /var/log/$0.log /var/log/$0.log.0 /dev/null
     1.9 -while read file pkg ; do
    1.10 -	[ "$(which $file)" ] && continue
    1.11 -	echo "Can't find $file. Please install $pkg." >> /var/log/$0.log
    1.12 -done <<EOT
    1.13 -kexec	kexec-tools
    1.14 -dialog	dialog
    1.15 -EOT
    1.16 -[ -s /var/log/$0.log ] && exec /init
    1.17 -
    1.18 -
    1.19 -cmdlinearg()
    1.20 -{
    1.21 -	grep -q $1= /proc/cmdline && sed "s/.*$1=\([^ ]*\).*/\1/" </proc/cmdline
    1.22 -}
    1.23 -
    1.24 -get()
    1.25 -{
    1.26 -	grep -sq ^$1 $2 && sed "/^$1/!d;s/$1[ :=]*//" $2
    1.27 -}
    1.28 -
    1.29 -list_entry()
    1.30 -{
    1.31 -	n=0
    1.32 -	while true ; do	
    1.33 -		n=$(($n+1))
    1.34 -		eval KEYWORD="\$KEYWORD_$n"
    1.35 -		eval ENTRY="\$ENTRY_$n"
    1.36 -		[ "$KEYWORD" ] || break
    1.37 -		[ "$KEYWORD" == "$default" ] && ENTRY="$ENTRY (default)"
    1.38 -		echo -n "$KEYWORD \"$ENTRY\" "
    1.39 -	done
    1.40 -}
    1.41 -
    1.42 -edit_menu()
    1.43 -{
    1.44 -while true; do
    1.45 -
    1.46 -	eval KERNEL="\$KERNEL_$1"
    1.47 -	eval INITRD="\$INITRD_$1"
    1.48 -	eval CMDLINE="\$CMDLINE_$1"
    1.49 -
    1.50 -	exec 3>&1
    1.51 -	value=$($DIALOG  --clear \
    1.52 -		--title "${edittitle:-Edit menu}" \
    1.53 -		--ok-label "Edit" \
    1.54 -		--cancel-label "Done" \
    1.55 -		--menu "" 20 72 14 \
    1.56 -		Kernel "$KERNEL" \
    1.57 -		Initramfs "$INITRD" \
    1.58 -		Cmdline "$CMDLINE" 2>&1 1>&3 )
    1.59 -	retval=$?
    1.60 -	exec 3>&-
    1.61 -	
    1.62 -	case $retval in
    1.63 -	1|255) return ;;
    1.64 -	esac
    1.65 -
    1.66 -	exec 3>&1
    1.67 -	case $value in
    1.68 -	Kernel)
    1.69 -		data=$($DIALOG  --clear --title "Select the kernel" \
    1.70 -			 --fselect "$mnt/$KEYWORD/$KERNEL" 10 72 2>&1 1>&3) ;;
    1.71 -	Initramfs)
    1.72 -		data=$($DIALOG  --clear --title "Select the initramfs" \
    1.73 -			 --fselect "$mnt/$KEYWORD/$INITRD" 10 72 2>&1 1>&3) ;;
    1.74 -	Cmdline)
    1.75 -		data=$($DIALOG  --clear --title "Edit $value" \
    1.76 -			 --inputbox "Cmdline" 20 72 2>&1 "$CMDLINE" 1>&3) ;;
    1.77 -	esac
    1.78 -	retval=$?
    1.79 -	exec 3>&-
    1.80 -	
    1.81 -	case $retval in
    1.82 -	1|255) continue ;;
    1.83 -	esac
    1.84 -	
    1.85 -	case $value in
    1.86 -	Kernel)		[ -f $data ] && eval KERNEL_$1=\$data ;;
    1.87 -	Initramfs)	[ -f $data ] && eval INITRD_$1=\$data ;;
    1.88 -	Cmdline)	eval CMDLINE_$1=\$data ;;
    1.89 -	esac
    1.90 -done
    1.91 -}
    1.92 -
    1.93 -web_boot_entry()
    1.94 -{
    1.95 -	[ "$USING_WEBBOOT" == "1" ] ||
    1.96 -	echo -n 'WebBoot "boot from Internet"'
    1.97 -}
    1.98 -
    1.99 -web_boot()
   1.100 -{
   1.101 -	USING_WEBBOOT=1
   1.102 -	[ -s $mnt/network.conf ] && cp $mnt/network.conf /etc
   1.103 -	/etc/init.d/network.sh start
   1.104 -	webpath=$(get webpath $mnt/menu.txt)
   1.105 -	[ "$webpath" ] || webpath=http://mirror.slitaz.org/pxe/arm/boot.php
   1.106 -	wget -O /root/webboot.sh $webpath 2>&1 > /dev/null
   1.107 -	[ -s /root/webboot.sh ] || return
   1.108 -	. /root/webboot.sh
   1.109 -	webprefix=$(dirname $webpath)
   1.110 -	editbutton=""
   1.111 -}
   1.112 -
   1.113 -: ${DIALOG=dialog}
   1.114 -
   1.115 -mount -t proc proc /proc
   1.116 -BOOTDEV=$(cmdlinearg bootdev)
   1.117 -mnt=/mnt
   1.118 -mount -t devtmpfs /dev /dev
   1.119 -
   1.120 -# A dirty hack: why devtmpfs does not mount ?
   1.121 -[ -b /dev/mmcblk0p1 ] || mknod -m 660 /dev/mmcblk0p1 b 179 1
   1.122 -
   1.123 -mount -r /dev/${BOOTDEV:-mmcblk0p1} $mnt
   1.124 -umount /dev
   1.125 -
   1.126 -
   1.127 -# Get global variables
   1.128 -
   1.129 -title=$(get title $mnt/menu.txt)
   1.130 -subtitle=$(get subtitle $mnt/menu.txt)
   1.131 -
   1.132 -timeout=$(get timeout $mnt/menu.txt)
   1.133 -timeout=${timeout:-30}
   1.134 -
   1.135 -default=$(get default $mnt/menu.txt)
   1.136 -
   1.137 -editbutton='--extra-button --extra-label "Edit"'
   1.138 -grep -qs ^noedit i$mnt/menu.txt && editbutton=
   1.139 -
   1.140 -kmap=$(get kmap $mnt/menu.txt)
   1.141 -[ "$kmap" ] && ! loadkeys $kmap && loadkmap < /usr/share/kmap/$kmap.kmap
   1.142 -
   1.143 -edittitle=$(get edittitle $mnt/menu.txt)
   1.144 -
   1.145 -
   1.146 -# Get OS variables
   1.147 -
   1.148 -n=0
   1.149 -for i in $mnt/*/ ; do
   1.150 -	grep -qs ^kernel $i/config.txt || continue
   1.151 -	n=$(($n+1))
   1.152 -	eval KERNEL_$n="\$(get kernel \$i/config.txt)"
   1.153 -	eval INITRD_$n="\$(get initramfs \$i/config.txt)"
   1.154 -	eval CMDLINE_$n="\$(cat \$i/cmdline.txt)"
   1.155 -	eval KEYWORD_$n="\$(basename \$i)"
   1.156 -	eval ENTRY_$n="\$(get entry \$i/menu.txt)"
   1.157 -done
   1.158 -
   1.159 -
   1.160 -# Main loop
   1.161 -
   1.162 -while true; do
   1.163 -
   1.164 -	exec 3>&1
   1.165 -	value=$(sh 2>&1 1>&3 <<EOT
   1.166 -	$DIALOG  --clear \
   1.167 -		--title "${title:-Boot menu}" \
   1.168 -		$editbutton \
   1.169 -		--ok-label "Boot" \
   1.170 -		--cancel-label "Halt" \
   1.171 -		--timeout $timeout \
   1.172 -		--menu "${subtitle:-Default boot in $timeout seconds}" 20 72 14 \
   1.173 -		$(list_entry) $(web_boot_entry) \
   1.174 -		Continue "Execute SliTaz boot sequence"
   1.175 -EOT
   1.176 -)
   1.177 -	retval=$?
   1.178 -	exec 3>&-
   1.179 -	
   1.180 -	n=0
   1.181 -	while true; do
   1.182 -		n=$(($n+1))
   1.183 -		eval KEYWORD="\$KEYWORD_$n"
   1.184 -		[ "$KEYWORD" ] || break
   1.185 -		[ "$KEYWORD" == "$value" ] && break
   1.186 -		case $value in
   1.187 -		*timeout)	[ "$KEYWORD" == "$default" ] && break ;;
   1.188 -		esac
   1.189 -	done
   1.190 -	
   1.191 -	case $retval in
   1.192 -		0)
   1.193 -			case "$value" in
   1.194 -			*WebBoot) web_boot ;;
   1.195 -			*)	break ;;
   1.196 -			esac ;;
   1.197 -		1|255)
   1.198 -			case "$value" in
   1.199 -			*timeout) break ;;
   1.200 -			esac
   1.201 -			umount $mnt
   1.202 -			umount /proc
   1.203 -			poweroff -f ;;
   1.204 -		3)
   1.205 -			[ "$KEYWORD" ] && edit_menu $n ;;
   1.206 -	esac
   1.207 -done
   1.208 -
   1.209 -
   1.210 -# Start OS
   1.211 -
   1.212 -case "$KEYWORD" in
   1.213 -
   1.214 -''|Continue)
   1.215 -	umount $mnt
   1.216 -	umount /proc
   1.217 -	exec /init ;;
   1.218 -
   1.219 -*)
   1.220 -	eval KERNEL="\$KERNEL_$n"
   1.221 -	eval INITRD="\$INITRD_$n"
   1.222 -	eval CMDLINE="\$CMDLINE_$n"
   1.223 -
   1.224 -	if [ "$webprefix" ]; then
   1.225 -		cd /root
   1.226 -		wget $webprefix/$KEYWORD/$KERNEL
   1.227 -		wget $webprefix/$KEYWORD/$INITRD
   1.228 -	else
   1.229 -		cd $mnt/$KEYWORD
   1.230 -		cp $KERNEL $INITRD /root
   1.231 -		cd /root
   1.232 -	fi
   1.233 -	[ "$INITRD" ] && INITRD="--initrd $(basename $INITRD)"
   1.234 -	[ "$CMDLINE" ] && CMDLINE="--command-line \"$CMDLINE\""
   1.235 -
   1.236 -	kexec -l $(basename $KERNEL) $INITRD $CMDLINE --atags
   1.237 -	umount $mnt
   1.238 -	umount /proc
   1.239 -	kexec -e ;;
   1.240 -
   1.241 -esac
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/rpi/piboot	Mon Apr 21 03:28:33 2014 +0200
     2.3 @@ -0,0 +1,245 @@
     2.4 +#!/bin/sh
     2.5 +#
     2.6 +# /sbin/piboot: SliTaz Raspberry Pi bootloader and web boot!
     2.7 +#
     2.8 +# (C) 2014 SliTaz GNU/Linux - ...
     2.9 +#
    2.10 +# AUTHORS: Pascal Bellard <pascal.bellard@slitaz.org>
    2.11 +#
    2.12 +
    2.13 +# Check for depends ...
    2.14 +mv -f /var/log/$0.log /var/log/$0.log.0 /dev/null
    2.15 +while read file pkg ; do
    2.16 +	[ "$(which $file)" ] && continue
    2.17 +	echo "Can't find $file. Please install $pkg." >> /var/log/$0.log
    2.18 +done <<EOT
    2.19 +kexec	kexec-tools
    2.20 +dialog	dialog
    2.21 +EOT
    2.22 +[ -s /var/log/$0.log ] && exec /init
    2.23 +
    2.24 +
    2.25 +cmdlinearg()
    2.26 +{
    2.27 +	grep -q $1= /proc/cmdline && sed "s/.*$1=\([^ ]*\).*/\1/" </proc/cmdline
    2.28 +}
    2.29 +
    2.30 +get()
    2.31 +{
    2.32 +	grep -sq ^$1 $2 && sed "/^$1/!d;s/$1[ :=]*//" $2
    2.33 +}
    2.34 +
    2.35 +list_entry()
    2.36 +{
    2.37 +	n=0
    2.38 +	while true ; do	
    2.39 +		n=$(($n+1))
    2.40 +		eval KEYWORD="\$KEYWORD_$n"
    2.41 +		eval ENTRY="\$ENTRY_$n"
    2.42 +		[ "$KEYWORD" ] || break
    2.43 +		[ "$KEYWORD" == "$default" ] && ENTRY="$ENTRY (default)"
    2.44 +		echo -n "$KEYWORD \"$ENTRY\" "
    2.45 +	done
    2.46 +}
    2.47 +
    2.48 +edit_menu()
    2.49 +{
    2.50 +while true; do
    2.51 +
    2.52 +	eval KERNEL="\$KERNEL_$1"
    2.53 +	eval INITRD="\$INITRD_$1"
    2.54 +	eval CMDLINE="\$CMDLINE_$1"
    2.55 +
    2.56 +	exec 3>&1
    2.57 +	value=$($DIALOG  --clear \
    2.58 +		--title "${edittitle:-Edit menu}" \
    2.59 +		--ok-label "Edit" \
    2.60 +		--cancel-label "Done" \
    2.61 +		--menu "" 20 72 14 \
    2.62 +		Kernel "$KERNEL" \
    2.63 +		Initramfs "$INITRD" \
    2.64 +		Cmdline "$CMDLINE" 2>&1 1>&3 )
    2.65 +	retval=$?
    2.66 +	exec 3>&-
    2.67 +	
    2.68 +	case $retval in
    2.69 +	1|255) return ;;
    2.70 +	esac
    2.71 +
    2.72 +	exec 3>&1
    2.73 +	case $value in
    2.74 +	Kernel)
    2.75 +		data=$($DIALOG  --clear --title "Select the kernel" \
    2.76 +			 --fselect "$mnt/$KEYWORD/$KERNEL" 10 72 2>&1 1>&3) ;;
    2.77 +	Initramfs)
    2.78 +		data=$($DIALOG  --clear --title "Select the initramfs" \
    2.79 +			 --fselect "$mnt/$KEYWORD/$INITRD" 10 72 2>&1 1>&3) ;;
    2.80 +	Cmdline)
    2.81 +		data=$($DIALOG  --clear --title "Edit $value" \
    2.82 +			 --inputbox "Cmdline" 20 72 2>&1 "$CMDLINE" 1>&3) ;;
    2.83 +	esac
    2.84 +	retval=$?
    2.85 +	exec 3>&-
    2.86 +	
    2.87 +	case $retval in
    2.88 +	1|255) continue ;;
    2.89 +	esac
    2.90 +	
    2.91 +	case $value in
    2.92 +	Kernel)		[ -f $data ] && eval KERNEL_$1=\$data ;;
    2.93 +	Initramfs)	[ -f $data ] && eval INITRD_$1=\$data ;;
    2.94 +	Cmdline)	eval CMDLINE_$1=\$data ;;
    2.95 +	esac
    2.96 +done
    2.97 +}
    2.98 +
    2.99 +web_boot_entry()
   2.100 +{
   2.101 +	[ "$USING_WEBBOOT" == "1" ] ||
   2.102 +	echo -n 'WebBoot "boot from Internet"'
   2.103 +}
   2.104 +
   2.105 +web_boot()
   2.106 +{
   2.107 +	USING_WEBBOOT=1
   2.108 +	[ -s $mnt/network.conf ] && cp $mnt/network.conf /etc
   2.109 +	/etc/init.d/network.sh start
   2.110 +	webpath=$(get webpath $mnt/menu.txt)
   2.111 +	[ "$webpath" ] || webpath=http://mirror.slitaz.org/pxe/arm/boot.php
   2.112 +	wget -O /root/webboot.sh $webpath 2>&1 > /dev/null
   2.113 +	[ -s /root/webboot.sh ] || return
   2.114 +	. /root/webboot.sh
   2.115 +	webprefix=$(dirname $webpath)
   2.116 +	editbutton=""
   2.117 +}
   2.118 +
   2.119 +: ${DIALOG=dialog}
   2.120 +
   2.121 +mount -t proc proc /proc
   2.122 +BOOTDEV=$(cmdlinearg bootdev)
   2.123 +mnt=/mnt
   2.124 +mount -t devtmpfs /dev /dev
   2.125 +
   2.126 +# A dirty hack: why devtmpfs does not mount ? 
   2.127 +# pankso@20140421: It mount fine on my side
   2.128 +[ -b /dev/mmcblk0p1 ] || mknod -m 660 /dev/mmcblk0p1 b 179 1
   2.129 +
   2.130 +mount -r /dev/${BOOTDEV:-mmcblk0p1} $mnt
   2.131 +umount /dev
   2.132 +
   2.133 +
   2.134 +# Get global variables
   2.135 +
   2.136 +title=$(get title $mnt/menu.txt)
   2.137 +subtitle=$(get subtitle $mnt/menu.txt)
   2.138 +
   2.139 +timeout=$(get timeout $mnt/menu.txt)
   2.140 +timeout=${timeout:-30}
   2.141 +
   2.142 +default=$(get default $mnt/menu.txt)
   2.143 +
   2.144 +editbutton='--extra-button --extra-label "Edit"'
   2.145 +grep -qs ^noedit i$mnt/menu.txt && editbutton=
   2.146 +
   2.147 +kmap=$(get kmap $mnt/menu.txt)
   2.148 +[ "$kmap" ] && ! loadkeys $kmap && loadkmap < /usr/share/kmap/$kmap.kmap
   2.149 +
   2.150 +edittitle=$(get edittitle $mnt/menu.txt)
   2.151 +
   2.152 +
   2.153 +# Get OS variables
   2.154 +
   2.155 +n=0
   2.156 +for i in $mnt/*/ ; do
   2.157 +	grep -qs ^kernel $i/config.txt || continue
   2.158 +	n=$(($n+1))
   2.159 +	eval KERNEL_$n="\$(get kernel \$i/config.txt)"
   2.160 +	eval INITRD_$n="\$(get initramfs \$i/config.txt)"
   2.161 +	eval CMDLINE_$n="\$(cat \$i/cmdline.txt)"
   2.162 +	eval KEYWORD_$n="\$(basename \$i)"
   2.163 +	eval ENTRY_$n="\$(get entry \$i/menu.txt)"
   2.164 +done
   2.165 +
   2.166 +
   2.167 +# Main loop
   2.168 +
   2.169 +while true; do
   2.170 +
   2.171 +	exec 3>&1
   2.172 +	value=$(sh 2>&1 1>&3 <<EOT
   2.173 +	$DIALOG  --clear \
   2.174 +		--title "${title:-Boot menu}" \
   2.175 +		$editbutton \
   2.176 +		--ok-label "Boot" \
   2.177 +		--cancel-label "Halt" \
   2.178 +		--timeout $timeout \
   2.179 +		--menu "${subtitle:-Default boot in $timeout seconds}" 20 72 14 \
   2.180 +		$(list_entry) $(web_boot_entry) \
   2.181 +		Continue "Execute SliTaz boot sequence"
   2.182 +EOT
   2.183 +)
   2.184 +	retval=$?
   2.185 +	exec 3>&-
   2.186 +	
   2.187 +	n=0
   2.188 +	while true; do
   2.189 +		n=$(($n+1))
   2.190 +		eval KEYWORD="\$KEYWORD_$n"
   2.191 +		[ "$KEYWORD" ] || break
   2.192 +		[ "$KEYWORD" == "$value" ] && break
   2.193 +		case $value in
   2.194 +		*timeout)	[ "$KEYWORD" == "$default" ] && break ;;
   2.195 +		esac
   2.196 +	done
   2.197 +	
   2.198 +	case $retval in
   2.199 +		0)
   2.200 +			case "$value" in
   2.201 +			*WebBoot) web_boot ;;
   2.202 +			*)	break ;;
   2.203 +			esac ;;
   2.204 +		1|255)
   2.205 +			case "$value" in
   2.206 +			*timeout) break ;;
   2.207 +			esac
   2.208 +			umount $mnt
   2.209 +			umount /proc
   2.210 +			poweroff -f ;;
   2.211 +		3)
   2.212 +			[ "$KEYWORD" ] && edit_menu $n ;;
   2.213 +	esac
   2.214 +done
   2.215 +
   2.216 +
   2.217 +# Start OS
   2.218 +
   2.219 +case "$KEYWORD" in
   2.220 +
   2.221 +''|Continue)
   2.222 +	umount $mnt
   2.223 +	umount /proc
   2.224 +	exec /init ;;
   2.225 +
   2.226 +*)
   2.227 +	eval KERNEL="\$KERNEL_$n"
   2.228 +	eval INITRD="\$INITRD_$n"
   2.229 +	eval CMDLINE="\$CMDLINE_$n"
   2.230 +
   2.231 +	if [ "$webprefix" ]; then
   2.232 +		cd /root
   2.233 +		wget $webprefix/$KEYWORD/$KERNEL
   2.234 +		wget $webprefix/$KEYWORD/$INITRD
   2.235 +	else
   2.236 +		cd $mnt/$KEYWORD
   2.237 +		cp $KERNEL $INITRD /root
   2.238 +		cd /root
   2.239 +	fi
   2.240 +	[ "$INITRD" ] && INITRD="--initrd $(basename $INITRD)"
   2.241 +	[ "$CMDLINE" ] && CMDLINE="--command-line \"$CMDLINE\""
   2.242 +
   2.243 +	kexec -l $(basename $KERNEL) $INITRD $CMDLINE --atags
   2.244 +	umount $mnt
   2.245 +	umount /proc
   2.246 +	kexec -e ;;
   2.247 +
   2.248 +esac