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.
175 lines
4.1 KiB
175 lines
4.1 KiB
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
# |
|
# Filename: package/.../yaboot/stone_mod_yaboot.sh |
|
# Copyright (C) 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 yaboot Yaboot Boot Loader Setup |
|
# [SETUP] 90 yaboot |
|
|
|
create_kernel_list() { |
|
first=1 |
|
for x in `(cd /boot/ ; ls vmlinux_* ) | sort -r` ; do |
|
if [ $first = 1 ] ; then |
|
label=linux ; first=0 |
|
else |
|
label=linux-${x/vmlinux_/} |
|
fi |
|
ver=${x/vmlinux_} |
|
cat << EOT |
|
|
|
image=$bootpath/$x |
|
label=$label |
|
root=$rootdev |
|
initrd=$bootpath/initrd-${ver}.img |
|
read-only |
|
EOT |
|
done |
|
} |
|
|
|
create_yaboot_conf() { |
|
cat << EOT > /etc/yaboot.conf |
|
|
|
# /etc/yaboot.conf created with the T2 SDE Yaboot STONE module |
|
|
|
# The bootstrap partition |
|
boot=$bootstrapdev |
|
|
|
device=hd: |
|
|
|
# The partition with the yaboot binaries |
|
partition=$yabootpart |
|
|
|
# Initial multi-boot menu delay |
|
delay=5 |
|
|
|
# Second yaboot image chooser delay |
|
timeout=80 |
|
|
|
install=$yabootpath/lib/yaboot/yaboot |
|
magicboot=$yabootpath/lib/yaboot/ofboot |
|
|
|
#fgcolor=black |
|
#bgcolor=green |
|
|
|
enablecdboot |
|
enablenetboot |
|
enableofboot |
|
EOT |
|
|
|
[ "$macosxpart" ] && \ |
|
echo -e "\nmacosx=$macosxdev\n" \ |
|
>> /etc/yaboot.conf |
|
|
|
create_kernel_list >> /etc/yaboot.conf |
|
|
|
gui_message "This is the new /etc/yaboot.conf file: |
|
|
|
$( cat /etc/yaboot.conf )" |
|
} |
|
|
|
yaboot_install() |
|
{ |
|
# format the boostrap if not already done |
|
if hmount $bootstrapdev > /dev/null ; then |
|
humount |
|
else |
|
if gui_yesno "The boostrap device \ |
|
$bootstrapdev is not yet HFS formated. \ |
|
Format now?" ; then |
|
hformat $bootstrapdev |
|
else |
|
return 1 |
|
fi |
|
fi |
|
|
|
# maybe an unpatched yaboot and no devfsd (e.g. during install) |
|
[ ! -c /dev/nvram ] && ln -s /dev/misc/nvram /dev/nvram |
|
|
|
yaboot_install_doit |
|
} |
|
|
|
yaboot_install_doit() { |
|
gui_cmd 'Installing Yaboot' "echo 'calling ybin' ; ybin" |
|
} |
|
|
|
device4() |
|
{ |
|
local dev="`sed -n 's,\([^ ]*\) / .*,\1,p' /proc/mounts | tail -n 1`" |
|
if [ ! "$dev" ] ; then # try the higher dentry |
|
local try="`dirname $1`" |
|
dev="`grep \" $try \" /proc/mounts | tail -n 1 | \ |
|
cut -d ' ' -f 1`" |
|
fi |
|
if [ -h "$dev" ] ; then |
|
echo "/dev/`readlink $dev`" |
|
else |
|
echo $dev |
|
fi |
|
} |
|
|
|
realpath() { |
|
dir="`dirname $1`" |
|
file="`basename $1`" |
|
dir="`dirname $dir`/`readlink $dir`" |
|
dir="`echo $dir | sed 's,[^/]*/\.\./,,g'`" |
|
echo $dir/$file |
|
} |
|
|
|
main() { |
|
rootdev="`device4 /`" |
|
dev="${rootdev%%[0-9]*}" |
|
bootdev="`device4 /boot`" |
|
yabootdev="`device4 /usr`" |
|
|
|
bootstrappart="`parted $dev print | grep bootstrap | sed 's/ .*//'`" |
|
bootstrapdev="$dev$bootstrappart" |
|
|
|
macosxpart="`parted $dev print | grep "hfs+.*OS X" | head -n 1 | sed 's/ .*//'`" |
|
[ "$macosxpart" ] && macosxdev="$dev$macosxpart" |
|
|
|
if [ "$rootdev" = "$bootdev" ] |
|
then bootpath=/boot ; else bootpath= ; fi |
|
|
|
if [ "$rootdev" = "$yabootdev" ] |
|
then yabootpath=/usr ; else yabootpath= ; fi |
|
yabootpart="`echo $yabootdev | sed 's/[^0-9]*//'`" |
|
|
|
if [ ! -f /etc/yaboot.conf ] ; then |
|
if gui_yesno "Yaboot does not appear to be configured. |
|
Automatically install yaboot now?"; then |
|
create_yaboot_conf |
|
if ! yaboot_install; then |
|
gui_message "There was an error while installing yaboot." |
|
fi |
|
fi |
|
fi |
|
|
|
while |
|
|
|
gui_menu yaboot 'Yaboot Boot Loader Setup' \ |
|
"Following settings only for expert use: (default)" ""\ |
|
"Bootstrap Device ...... $bootstrapdev" "" \ |
|
"Yaboot partition:path . $yabootpart:$yabootpath" "" \ |
|
"Root Device ........... $rootdev" "" \ |
|
"Boot Device ........... $bootdev" "" \ |
|
"MacOS X partition ..... $macosxdev" "" \ |
|
'' '' \ |
|
'(Re-)Create default /etc/yaboot.conf' 'create_yaboot_conf' \ |
|
'(Re-)Install the yaboot boot chrp script and binary' 'yaboot_install' \ |
|
'' '' \ |
|
"Edit /etc/yaboot.conf (Config file)" \ |
|
"gui_edit 'Yaboot Configurationp' /etc/yaboot.conf" |
|
do : ; done |
|
} |
|
|
|
|