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