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.

113 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/lib/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
}