Compare commits

..

2 commits

Author SHA1 Message Date
Tony Breeds
c9c105fe41 And actually make the changelog match the RPM version
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
2013-06-12 15:29:19 +10:00
Tony Breeds
fde967690c Increase TFTP Load Buffer to 32MB
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
2013-06-12 15:27:50 +10:00
28 changed files with 3984 additions and 1 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/yaboot-1.3.17.tar.gz
yaboot-1.3.17

View file

@ -1 +0,0 @@
2014-06-02: ppc32 package, ppc32 support is dropped in Fedora 21

336
efika.forth Normal file
View file

@ -0,0 +1,336 @@
\ FORTH
." Efika 5200B Device Tree Supplement 20071114" cr
." (c) 2007 Genesi USA, Inc." cr
." http://www.powerdeveloper.org/ for support" cr cr
\ headerless
s" /openprom" find-device
d# 20071114 encode-int s" device-tree-version" property
device-end
s" /builtin/ata" find-device
s" mpc5200-ata" encode-string
s" mpc5200b-ata" encode-string encode+
s" compatible" property
device-end
s" /builtin/sound" find-device
s" mpc5200-psc-ac97" encode-string
s" mpc5200b-psc-ac97" encode-string encode+
s" compatible" property
0x2 encode-int
0x2 encode-int encode+
0x3 encode-int encode+
s" interrupts" property
\ Audio is on PSC2, just for informational purposes
1 encode-int s" cell-index" property
device-end
\ Quick test to see if AC97 is enabled
0xf0000b00 dup dup l@ 0x20 and
0= if
." Enabling AC97" cr
dup l@ 0x20 or
swap l!
else
drop
then
\ SRAM compatibles
s" /builtin/sram" find-device
s" mpc5200-sram" encode-string
s" mpc5200b-sram" encode-string encode+
s" compatible" property
s" sram" device-type \ this is a contentious one
device-end
\ PIC compatibles
s" /builtin/pic" find-device
s" mpc5200-pic" encode-string
s" mpc5200b-pic" encode-string encode+
s" compatible" property
device-end
\ Serial compatibles. Also fix cell-index and port-number as per bindings
s" /builtin/serial" find-device
s" mpc5200-psc-uart" encode-string
s" mpc5200b-psc-uart" encode-string encode+
s" compatible" property
\ Serial port is PSC1 for informational purposes, Linux 0-indexes it
0 encode-int s" cell-index" property
\ Since this is the main, always there, preferred serial port..
0 encode-int s" port-number" property
device-end
\ Ethernet compatibles
s" /builtin/ethernet" find-device
s" mpc5200-fec" encode-string
s" mpc5200b-fec" encode-string encode+
s" compatible" property
device-end
\ BestComm compatibles, interrupt mess
s" /builtin/bestcomm" find-device
s" mpc5200-bestcomm" encode-string
s" mpc5200b-bestcomm" encode-string
encode+
s" compatible" property
\ make 16 interrupt property in a batch. We have to do the first one by
\ hand simply because of the way encode+ works.
0x3 encode-int 0x0 encode-int 0x3 encode-int encode+ encode+
0x10 1 do
0x3 encode-int encode+ i encode-int encode+ 0x3 encode-int encode+
loop
\ now we can store the damn thing
s" interrupts" property
device-end
\ New USB binding - change one of the numbers here to disable it for older kernels
\ as this is a destructive change
0 1 = if
s" /builtin/usb" find-device
s" usb-ohci" device-type
s" " encode-string s" big-endian" property
s" mpc5200-ohci" encode-string
s" mpc5200-usb-ohci" encode-string encode+
s" compatible" property
device-end
then
\ Go into the root node and kill off any mention of CHRP
s" /" find-device
s" efika" device-type
s" Efika 5200B" encode-string s" CODEGEN,board" property
s" Efika 5200B PowerPC System" encode-string s" CODEGEN,description" property
device-end
\ Fix the /builtin device-type for Linux
s" /builtin" find-device
s" soc" device-type
device-end
\ ADDING NEW ENTRIES TO THE DEVICE TREE
\
\ Clock Distribution Module - need this to change baud rates etc. and turn off
\ clocks for power management. Useful little thing. Needs an entry to find the
\ address without guessing (in case they change it in the 512X)
\ Clock Distribution Module
." Adding Clock Distribution Module" cr
s" /builtin" find-device
new-device
" cdm" 2dup device-name device-type
" MPC52xx Clock Distribution Module" encode-string " .description" property
0xf0000200 0x38 reg
" mpc5200-cdm" encode-string
" mpc5200b-cdm" encode-string
encode+
" compatible" property
finish-device
\ GPIO (Simple) Module
." Adding Simple GPIO Module" cr
s" /builtin" find-device
new-device
s" gpio" 2dup device-name device-type
s" MPC52xx Simple GPIO" encode-string s" .description" property
0xf0000b00 0x40 reg
s" mpc5200-gpio" encode-string
s" mpc5200b-gpio" encode-string encode+
s" compatible" property
0x10000000 encode-int s" gpio-mask" property
0x1 encode-int
0x7 encode-int
0x3 encode-int
encode+ encode+
s" interrupts" property
finish-device
\ GPIO (Wakeup) Module
." Adding Wakeup GPIO Module" cr
s" /builtin" find-device
new-device
s" gpio-wkup" 2dup device-name device-type
s" MPC52xx Wakeup GPIO" encode-string s" .description" property
0xf0000c00 0x28 reg
s" mpc5200-gpio-wkup" encode-string
s" mpc5200b-gpio-wkup" encode-string
encode+
s" compatible" property
0x30000000 encode-int s" gpio-mask" property
0x1 encode-int
0x8 encode-int encode+
0x3 encode-int encode+
0x1 encode-int encode+
0x3 encode-int encode+
0x3 encode-int encode+
s" interrupts" property
finish-device
\
\ High resolution (General Purpose and Slice) Timers
\
\ We ignore slice timer 0 since critical interrupt handling in Linux
\ is curiously missing
." Adding Slice Timer 1" cr
s" /builtin" find-device
new-device
s" slt" 2dup device-name device-type
s" MPC52xx Slice Timer 1" encode-string " .description" property
0xf0000710 0x10 reg
s" mpc5200-slt" encode-string
s" mpc5200b-slt" encode-string
encode+
s" compatible" property
1 encode-int " cell-index" property
\ The interrupt listed here is probably wrong
0x1 encode-int
0x0 encode-int encode+
0x3 encode-int encode+
s" interrupts" property
finish-device
\ Add all the GPTs to the device-tree
\ : gpt-add ( gpt-id -- )
\ depth
\ 1 > if
8 0 do i
dup 7 <= if
dup
0x9 +
swap dup
0x10 *
0xf0000600 +
swap dup
." Adding General Purpose Timer " .d cr
s" /builtin" find-device
new-device
s" gpt" 2dup device-name device-type
swap 0x10 reg
encode-int s" cell-index" property
s" MPC52xx General Purpose Timer X"
2dup + 1 - \ get the character position of the X
0x30 i + swap c! \ store ascii character of timer number
encode-string s" .description" property
s" mpc5200-gpt" encode-string
s" mpc5200b-gpt" encode-string encode+
s" fsl,mpc5200-gpt" encode-string encode+
s" fsl,mpc5200b-gpt" encode-string encode+
s" compatible" property
0x1 encode-int
2 pick encode-int encode+
0x3 encode-int encode+
s" interrupts" property
finish-device
then
loop
\ then
\ ;
\ Add watchdog marker to GPT0
s" /builtin/gpt@f0000600" find-device
s" " encode-string s" has-wdt" property
s" " encode-string s" fsl,has-wdt" property
device-end
\ PHY for ethernet. Thanks to Domen Puncer for this.
." Adding Ethernet PHY" cr
s" /builtin" find-device
new-device
1 encode-int s" #address-cells" property
0 encode-int s" #size-cells" property
s" mdio" 2dup device-name device-type
s" mpc5200b-fec-phy" encode-string s" compatible" property
0xf0003000 0x400 reg
0x2 encode-int
0x5 encode-int encode+
0x3 encode-int encode+
s" interrupts" property
new-device
s" ethernet-phy" 2dup device-name device-type
0x10 encode-int s" reg" property
my-self \ save our phandle to stack
ihandle>phandle
finish-device
finish-device
s" /builtin/ethernet" find-device
encode-int \ phy's phandle
s" phy-handle" property
device-end
\
\ HERE BE DRAGONS
\ SDRAM Controller (needed to enter deep sleep and turn off RAM clocks)
." Adding SDRAM Controller" cr
s" /builtin" find-device
new-device
s" sdram" device-name
s" memory-controller" device-type
0xf0000100 0x10 reg
s" MPC52xx SDRAM Memory Controller" encode-string s" .description" property
s" mpc5200b-sdram" encode-string
s" mpc5200-sdram" encode-string encode+
s" compatible" property
finish-device
\ XLB Arbiter (pipeline/bestcomm stuff enabled here)
." Adding XLB Arbiter" cr
s" /builtin" find-device
new-device
s" xlb" 2dup device-name device-type
0xf0001f00 0x100 reg
s" MPC52xx XLB Arbiter" encode-string s" .description" property
s" mpc5200-xlb" encode-string
s" mpc5200b-xlb" encode-string encode+
s" compatible" property
finish-device
\ Optionally uncomment and boot your Linux
\ s" hd:0 vmlinuz console= blah=" $boot

3
mirrors Normal file
View file

@ -0,0 +1,3 @@
http://penguinppc.org/projects/yaboot/
http://penguinppc.org/~eb/yaboot-archived/
http://penguinppc.org/~eb/yaboot-archived/yaboot.old/

1
sources Normal file
View file

@ -0,0 +1 @@
f599f52d1887a86fd798252d2946f635 yaboot-1.3.17.tar.gz

1
upstream Normal file
View file

@ -0,0 +1 @@
yaboot-1.3.12.tar.gz

37
upstream-key.gpg Normal file
View file

@ -0,0 +1,37 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.4 (GNU/Linux)
mQGiBDidlFMRBADZNm3oi7R/lCOxxi5+n1O8A3CXrDKWpkYY0F1TL9dxCLg8q/Lm
uxl0up5i8PjSPBh+h8wQTSB6Yzyv0TMOobXqhKWqD9RauUZW9e3DuMcePldjgHNt
IojqREtcPrLlVzb0yA/BdNFH0JbapzvwR+LWqu6X3ybsIRs/fmy3sanLCwCgoiTg
RvVlbnwyYkJ8cgfFSso1pS0D/iAQqt44GNL+TRSMantYEWQKsBeeYe/9SmJRs+4x
OQlr5Gm8uqaSqjepytfoS435bG7ITJTjquwnKy4eR046KltSsW8vtXwuV8JhZpmm
dXsNrXFalIkToTuTWXEXSuJ/A0ZPnKlGbaVUowKQZlLXCfqBNEWMb+rtpVrosBZr
Odp2A/9ZXOAYP3uC07X8LjX9K6a6EBIlHC/Y65r48RCDLY2N3Surk1PfvpWjKyU+
ZgI7r3QbIQMMZJkC+Ijw0MSLlP5NnZ4HJb90B6I2X0Qv8dLIEBltYlpgGk6/6Na9
r5N6xT87BBfIopab/QJEIGihgJnuo/fRiG1rCGUGztpjgkRsu7QjRXRoYW4gUi4g
QmVuc29uIDxlYkBwZW5ndWlucHBjLm9yZz6IYwQTEQIAGwIXgAUCQBSuywYLCQgH
AwIDFQIDAxYCAQIeAQASB2VHUEcAAQEJECSsexosRHr8/4kAn2FFW2AeANPsSPYZ
JzWgu7MGcc06AKCVKhUz/xlf4x5QpCJZyNJBYIExc7QlRXRoYW4gUi4gQmVuc29u
IDxlcmJlbnNvbkBhbGFza2EubmV0PohmBBMRAgAeAheABgsJCAcDAgMVAgMDFgIB
Ah4BBQJAFK7gAhkBABIHZUdQRwABAQkQJKx7GixEevxFWwCgnxGwZ5JWyAGE7oWo
S4KmYGeErFEAn3Re5SCCw8rpfZaqsSON6QQ5Qf8viEYEEBECAAYFAjkHScMACgkQ
v+EgZWshSJoU4gCfVe42kGRNpXfrVJ9l3yvvtS7wfasAoLMdZqVwnxphz6b4iHK+
KM3fCvfYiEYEEBECAAYFAjm5+d4ACgkQ6yQBygtWtRjpgwCfUEsZm2SKBrPiAltJ
tdFTVEaUrr8An0MmUqN3v6YyfrhVJdr0Oiu/pJApiEYEEBECAAYFAjmZNY8ACgkQ
TCUti147Jd+a7QCfQwK6OMe8b9XOH7O8Vk2CZVIYTogAn3+ABor7DStEYbf+Sfu5
jzllBpq9uQINBDidlZsQCACStwLYiAutk+4HJ3sID4tgdD225V2Hj7dQkiz+Pb55
lk1I3M2CEXkEBDKATRhlGXGDBvriskIRLfD0wmk6fW82Hyp2JfJ/I239L6emZB11
1LYU9BLeXdInntJeSGVpIbcf0cWwhFV15w0aoogVlUV1nDra3VBHYnxEU/vKAQfr
Htc1AFfD+UCRxu8OOvmro/7V1dwUyx0wF+3w475MK9rfXzVINLuwMxSGO2HgorU2
ZfpszTP+XEdoH6DTuQbj4b4mshWUIcwx3e8UznXFy8yfXsN1WhsDmDYBBEfxyiMs
H6zXBzwTBmCIztsKSQQaWk8MPmpaDkq7X0n66hqu0cznAAMFCACMpBzDzTV1ohRk
F9XbQ7TJqBI/5FpiKrzOabBkiRmXvFV1LKSVQ2J1VO27Cbrk0QGGwCT3Xp64vtzL
VR1r0h63FUkiatIAtRqkVsMovIW4tCqJfMz14/P2zIaaCv3y5hxqt1i3oOKFvZQX
SYOjZ07ic3SyowjNbI41s6YxBkzrzuhicSIyyoFL6tjR5GAJiL/yFmqsVgid6NVG
TVKX4HTG8lrwTcdVUWt/kO+VSJSM8Vc6uXD1XxQ7UEGF+GTwyTnyT5BgvjzQc7ER
KAT/z/aN0f368I9v+qTRoDbixzVo4XMXr2E+5kTcibJgLc8E3AzZl2Rml0rq5mGv
z1A8moxxiE4EGBECAAYFAjidlZsAEgkQJKx7GixEevwHZUdQRwABAZMcAKCUUpdW
5pH6MHrz+X+FxuHswIIqIQCgoQQK1sBh8lmIIK4ESlwg/xYoAsk=
=AFhg
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,27 @@
--- yaboot-1.3.10/ybin/yabootconfig.configfile 2003-06-19 17:33:50.000000000 -0400
+++ yaboot-1.3.10/ybin/yabootconfig 2003-06-19 17:39:26.000000000 -0400
@@ -103,6 +103,7 @@
default: determined from {chroot}/etc/fstab
-b, --boot set bootstrap partition, Example: /dev/hda2
default: first type: Apple_Bootstrap partition
+ -C, --config set config file name (Example: /etc/yaboot.conf)
--kernel-args add an append= line with specified arguments
-q, --quiet don't ask any questions/confirmation
--noinstall don't automatically run mkofboot
@@ -330,6 +331,16 @@
exit 1
fi
;;
+ -C|--config)
+ if [ -n "$2" ]; then
+ CONFIG="$2"
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
-q|--quiet)
QUIET=1
shift 1

11
yaboot-1.3.10-ext3.patch Normal file
View file

@ -0,0 +1,11 @@
--- yaboot-1.3.10/second/fs_ext2.c.ext3 2003-04-09 21:38:48.000000000 -0400
+++ yaboot-1.3.10/second/fs_ext2.c 2003-04-09 21:40:32.000000000 -0400
@@ -189,7 +189,7 @@
ofopened = 1;
/* Open the ext2 filesystem */
- result = ext2fs_open (buffer, EXT2_FLAG_RW, 0, 0, linux_io_manager, &fs);
+ result = ext2fs_open (buffer, EXT2_FLAG_DIRTY, 0, 0, linux_io_manager, &fs);
if (result) {
if(result == EXT2_ET_BAD_MAGIC)

View file

@ -0,0 +1,29 @@
--- yaboot-1.3.10/ybin/yabootconfig~ 2004-04-20 16:20:13.619375616 -0400
+++ yaboot-1.3.10/ybin/yabootconfig 2004-04-20 16:32:40.519829488 -0400
@@ -160,6 +160,8 @@
FDISK=mac-fdisk
elif (command -v pdisk > /dev/null 2>&1) ; then
FDISK=pdisk
+ elif (command -v parted > /dev/null 2>&1) ; then
+ FDISK=parted
else
echo 1>&2 "$PRG: Unable to locate mac-fdisk"
return 1
@@ -209,9 +211,16 @@
BOOT="${DISK}${BOOT}"
fi
debug "BOOT after fixup: $BOOT\n"
- else
+ elif [ "$FDISK" = mac-fdisk ] ; then
BOOT="$(v=`$FDISK -l "$DISK" 2>/dev/null | grep '\<Apple_Bootstrap\>'` ; echo ${v%%[ ]*})"
debug "BOOT=$BOOT\n"
+ else
+ BOOT="$(v=`$FDISK "$DISK" print 2>/dev/null | grep 'bootstrap'` ; echo ${v%%[ ]*})"
+ debug "BOOT before fixup: $BOOT\n"
+ if [ -n "$BOOT" ] ; then
+ BOOT="${DISK}${BOOT}"
+ fi
+ debug "BOOT after fixup: $BOOT\n"
fi
if [ -z "$BOOT" ] ; then
echo 1>&2 "$PRG: Unable to locate bootstrap partition on $DISK..."

View file

@ -0,0 +1,59 @@
--- yaboot-1.3.10/first/ofboot.name 2003-04-09 21:29:29.000000000 -0400
+++ yaboot-1.3.10/first/ofboot 2003-04-09 21:29:55.000000000 -0400
@@ -86,6 +86,13 @@
MENU=1
fi
+if [ -f /etc/redhat-release ]; then
+ PRODUCT=`sed "s/ release.*//g" /etc/redhat-release`
+else
+ PRODUCT="PowerPC GNU/Linux"
+fi
+
+
## create the variables.
##
## OSNAME="$1"
@@ -102,7 +109,7 @@
[ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file1: $5\n"
[ "$COUNT" = "$OSNUM" ] && c="."
BTYA=": boot$1 \" Loading second stage bootstrap...\" .printf 100 ms load-base release-load-area \" ${4}${5}\" \$boot ;"
- MENUYA="\" Press $3 for Red Hat Linux${c-,}\"(0d 0a)\" .printf"
+ MENUYA="\" Press $3 for $PRODUCT${c-,}\"(0d 0a)\" .printf"
GETYA=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
shift 5
COUNT="$(($COUNT + 1))"
@@ -315,7 +322,7 @@
MacRISC MacRISC3 MacRISC4
</COMPATIBLE>
<DESCRIPTION>
-Red Hat Linux First Stage Bootstrap
+$PRODUCT First Stage Bootstrap
</DESCRIPTION>
<BOOT-SCRIPT>
: .printf fb8-write drop ;
@@ -336,7 +343,7 @@
$BGCOLOR to background-color
\" \"(0C)\" .printf
-\" First Stage Red Hat Linux Bootstrap\"(0d 0a)\" .printf
+\" First Stage $PRODUCT Bootstrap\"(0d 0a)\" .printf
\" \"(0d 0a)\" .printf
$MENUOPTS
\" \"(0d 0a)\" .printf
--- yaboot-1.3.10/ybin/yabootconfig.name 2003-04-09 21:24:20.000000000 -0400
+++ yaboot-1.3.10/ybin/yabootconfig 2003-04-09 21:27:07.000000000 -0400
@@ -700,7 +700,12 @@
ENABLENETBOOT="enablenetboot\n"
fi
-MESG='"Welcome to Red Hat Linux!\\nHit <TAB> for boot options.\\n\\n"'
+if [ -f /etc/redhat-release ]; then
+ PRODUCT=`sed "s/ release.*//g" /etc/redhat-release`
+else
+ PRODUCT="PowerPC GNU/Linux"
+fi
+MESG="\"Welcome to $PRODUCT!\\nHit <TAB> for boot options.\\n\\n\""
## generate global section of yaboot.conf
GLOBAL="boot=${BOOT}${DEVICE:-}

View file

@ -0,0 +1,51 @@
--- yaboot-1.3.10/Makefile.sbindir 2003-04-28 18:14:43.000000000 -0400
+++ yaboot-1.3.10/Makefile 2003-04-28 18:15:44.000000000 -0400
@@ -9,6 +9,7 @@
ROOT =
PREFIX = usr/local
MANDIR = man
+SBINDIR= ${PREFIX}/sbin
# command used to get root (needed for tarball creation)
GETROOT = fakeroot
@@ -179,7 +180,7 @@
install: all strip
install -d -m 0755 ${ROOT}/etc/
- install -d -m 0755 ${ROOT}/${PREFIX}/sbin/
+ install -d -m 0755 ${ROOT}/${SBINDIR}
install -d -m 0755 ${ROOT}/${PREFIX}/lib
install -d -m 0755 ${ROOT}/${PREFIX}/lib/yaboot
install -d -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man5/
@@ -187,11 +188,11 @@
install -m 0644 second/yaboot ${ROOT}/$(PREFIX)/lib/yaboot
install -m 0755 util/addnote ${ROOT}/${PREFIX}/lib/yaboot/addnote
install -m 0644 first/ofboot ${ROOT}/${PREFIX}/lib/yaboot/ofboot
- install -m 0755 ybin/ofpath ${ROOT}/${PREFIX}/sbin/ofpath
- install -m 0755 ybin/ybin ${ROOT}/${PREFIX}/sbin/ybin
- install -m 0755 ybin/yabootconfig ${ROOT}/${PREFIX}/sbin/yabootconfig
- rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
- ln -s ybin ${ROOT}/${PREFIX}/sbin/mkofboot
+ install -m 0755 ybin/ofpath ${ROOT}/${SBINDIR}/ofpath
+ install -m 0755 ybin/ybin ${ROOT}/${SBINDIR}/ybin
+ install -m 0755 ybin/yabootconfig ${ROOT}/${SBINDIR}/yabootconfig
+ rm -f ${ROOT}/${SBINDIR}/mkofboot
+ ln -s ybin ${ROOT}/${SBINDIR}/mkofboot
@gzip -9 man/*.[58]
install -m 0644 man/bootstrap.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
install -m 0644 man/mkofboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
@@ -216,10 +217,10 @@
@echo
deinstall:
- rm -f ${ROOT}/${PREFIX}/sbin/ofpath
- rm -f ${ROOT}/${PREFIX}/sbin/ybin
- rm -f ${ROOT}/${PREFIX}/sbin/yabootconfig
- rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
+ rm -f ${ROOT}/${SBINDIR}/ofpath
+ rm -f ${ROOT}/${SBINDIR}/ybin
+ rm -f ${ROOT}/${SBINDIR}/yabootconfig
+ rm -f ${ROOT}/${SBINDIR}/mkofboot
rm -f ${ROOT}/${PREFIX}/lib/yaboot/yaboot
rm -f ${ROOT}/${PREFIX}/lib/yaboot/ofboot
rm -f ${ROOT}/${PREFIX}/lib/yaboot/addnote

View file

@ -0,0 +1,32 @@
--- yaboot-1.3.13/ybin/ybin~ 2005-08-10 15:09:32.000000000 +0100
+++ yaboot-1.3.13/ybin/ybin 2005-08-11 16:13:36.000000000 +0100
@@ -353,17 +353,19 @@ checkconf()
fi
## make sure $mntpoint is on $boot, this matters to nvram updating.
- if [ "$(v=`df "$mntpoint" 2> /dev/null | grep ^/dev/` ; echo ${v%%[ ]*})" != "$boot" -a -d "$mntpoint" ] ; then
- echo 1>&2 "$PRG: $mntpoint is not located on $boot"
- local CONFERR=1
- ## more then one subdirectory deep is not supported. no sed available on boot floppies ( / -> \ )
- elif [ "$mntpoint" != "$(v=`df "$mntpoint" 2> /dev/null | grep ^/dev/` ; echo ${v##*[ ]})" ] ; then
- echo "$(v=`df "$mntpoint" 2>/dev/null | grep ^/dev/`; m=${v##*[ ]}; echo "${mntpoint##*$m/}")" | grep -q /
- if [ $? = 0 ] ; then
- echo 1>&2 "$PRG:$ERR $mntpoint is more then one subdirectory deep from root of $boot"
+ if [ -n "$magicboot" -o "$nonvram" = 0 ]; then
+ if [ "$(v=`df "$mntpoint" 2> /dev/null | grep ^/dev/` ; echo ${v%%[ ]*})" != "$boot" -a -d "$mntpoint" ] ; then
+ echo 1>&2 "$PRG: $mntpoint is not located on $boot"
local CONFERR=1
- else
- OFDIR="$(v=`df "$mntpoint" 2>/dev/null | grep ^/dev/`; m=${v##*[ ]}; echo "${mntpoint##*$m/}")"
+ ## more than one subdirectory deep is not supported. no sed available on boot floppies ( / -> \ )
+ elif [ "$mntpoint" != "$(v=`df "$mntpoint" 2> /dev/null | grep ^/dev/` ; echo ${v##*[ ]})" ] ; then
+ echo "$(v=`df "$mntpoint" 2>/dev/null | grep ^/dev/`; m=${v##*[ ]}; echo "${mntpoint##*$m/}")" | grep -q /
+ if [ $? = 0 ] ; then
+ echo 1>&2 "$PRG:$ERR $mntpoint is more then one subdirectory deep from root of $boot"
+ local CONFERR=1
+ else
+ OFDIR="$(v=`df "$mntpoint" 2>/dev/null | grep ^/dev/`; m=${v##*[ ]}; echo "${mntpoint##*$m/}")"
+ fi
fi
fi

View file

@ -0,0 +1,13 @@
--- yaboot-1.3.13/ybin/ybin.dontwritehome 2006-08-10 14:33:06.000000000 -0400
+++ yaboot-1.3.13/ybin/ybin 2006-08-10 14:33:15.000000000 -0400
@@ -821,6 +821,10 @@
return 1
fi
+ ## N.B.: SELinux does not like bootloader executables writing to
+ ## root's homedir, so we lie about HOME here.
+ export HOME=/boot
+
## hmount is really more of a way to make sure we have a valid HFS
## filesystem before proceding, and hcopy requires it...
hmount "$boot" > /dev/null

View file

@ -0,0 +1,14 @@
--- yaboot-1.3.17/second/prom.c.orig 2011-10-18 12:41:46.924310275 +1100
+++ yaboot-1.3.17/second/prom.c 2011-10-18 12:43:17.202121228 +1100
@@ -622,6 +622,11 @@
void *ret;
ret = call_prom ("claim", 3, 1, virt, size, align);
+
+ /* Pegasos II SmartFirmware returns zero for failure, usefully */
+ if (virt && !ret)
+ ret = (void *)-1;
+
if (ret == (void *)-1)
prom_printf("ERROR: claim of 0x%x at 0x%x failed\n", size, (int)virt);
else

View file

@ -0,0 +1,82 @@
--- yaboot-1.3.17/ybin/ybin.orig 2011-10-18 12:33:25.000000000 +1100
+++ yaboot-1.3.17/ybin/ybin 2011-10-18 12:46:28.621720442 +1100
@@ -77,6 +77,8 @@
fstype=raw
elif (cat /proc/cpuinfo 2> /dev/null | grep ^platform | grep -q 'PowerNV') ; then
fstype=raw
+elif (cat /proc/cpuinfo 2> /dev/null | grep ^machine | grep -q 'Pegasos') ; then
+ fstype=ext2
else
fstype=hfs
fi
@@ -281,13 +283,13 @@
fi
case "$fstype" in
- hfs|msdos|raw)
+ hfs|msdos|raw|ext2)
;;
*)
if [ "$ARGFS" = 1 ] ; then
- echo 1>&2 "$PRG: --filesystem must be either \`hfs', \`msdos', or \`raw'"
+ echo 1>&2 "$PRG: --filesystem must be either \`hfs', \`msdos', \`ext2' or \`raw'"
else
- echo 1>&2 "$PRG:$ERR \`fstype' must be either \`hfs', \`msdos', or \`raw'"
+ echo 1>&2 "$PRG:$ERR \`fstype' must be either \`hfs', \`msdos', \`ext2' or \`raw'"
fi
local CONFERR=1
;;
@@ -950,12 +952,16 @@
## used by mnt_install so mntpoint= can be supported in a cleaner way.
mnt()
{
+ local mountopts="rw"
+
## we can even create bootstrap filesystem images directly if you
## ever wanted too.
if [ -f "$boot" ] ; then
- local loop=",loop"
+ mountopts="$mountopts,loop"
+ fi
+ if [ "$fstype" = "msdos" ] ; then
+ mountopts="$mountopts,umask=077"
fi
-
if [ -e "$TMP/bootstrap.$$" ] ; then
echo 1>&2 "$PRG: $TMP/bootstrap.$$ exists, aborting."
return 1
@@ -974,7 +980,7 @@
fi
[ "$VERBOSE" = 1 ] && echo "$PRG: Mounting $boot..."
- mount -t "$fstype" -o rw,umask=077$loop "$boot" "$TMP/bootstrap.$$"
+ mount -t "$fstype" -o rw,$mountopts$loop "$boot" "$TMP/bootstrap.$$"
if [ $? != 0 ] ; then
echo 1>&2 "$PRG: An error occured mounting $boot"
return 1
@@ -1261,6 +1267,25 @@
fi
return 0
;;
+ ext2)
+ if (command -v mkfs.ext2 > /dev/null 2>&1) ; then
+ [ -x `command -v mkfs.ext2` ] || FAIL=1 ; else FAIL=1 ; fi
+ if [ "$FAIL" = 1 ] ; then
+ echo 1>&2 "$PRG: mkfs.ext2 is not installed or cannot be found"
+ return 1
+ fi
+
+ [ "$VERBOSE" = 1 ] && echo "$PRG: Creating ext2 filesystem on $boot..."
+ if (command -v dd > /dev/null 2>&1) ; then
+ dd if=/dev/zero of="$boot" bs=512 count=1600 > /dev/null 2>&1
+ fi
+ mkfs.ext2 -L bootstrap "$boot" > /dev/null
+ if [ $? != 0 ] ; then
+ echo 1>&2 "$PRG: ext2 filesystem creation failed!"
+ return 1
+ fi
+ return 0
+ ;;
esac
}

View file

@ -0,0 +1,14 @@
--- yaboot-1.3.17/second/prom.c.orig 2011-10-18 12:48:11.388505271 +1100
+++ yaboot-1.3.17/second/prom.c 2011-10-18 12:49:36.553326950 +1100
@@ -395,10 +395,8 @@
char c;
int a;
- while ((a = (int)call_prom ("read", 3, 1, prom_stdin, &c, 1)) == 0)
+ while ((a = (int)call_prom ("read", 3, 1, prom_stdin, &c, 1)) <= 0)
;
- if (a == -1)
- prom_abort ("EOF on console\n");
return c;
}

View file

@ -0,0 +1,249 @@
--- yaboot-1.3.13/ybin/yabootconfig.yabootconfig 2005-07-25 16:09:39.000000000 -0400
+++ yaboot-1.3.13/ybin/yabootconfig 2005-07-25 16:25:03.000000000 -0400
@@ -34,6 +34,7 @@
NOINSTALL=0
QUIET=0
DEBUG=0
+LABEL="Linux"
SIGINT="$PRG: Interrupt caught ... exiting"
export LC_COLLATE=C
@@ -319,6 +320,16 @@
exit 1
fi
;;
+ --kernel)
+ if [ -n "$2" ] ; then
+ KERNELIMAGE="$2"
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
--kernel-args)
if [ -n "$2" ] ; then
KERNARGS="$2"
@@ -347,10 +358,88 @@
NOINSTALL=1
shift 1
;;
+ --enablecdboot)
+ CDBOOT=1
+ shift 1
+ ;;
+ --enablenetboot)
+ NETBOOT=1
+ shift 1
+ ;;
--debug)
DEBUG=1
shift 1
;;
+ --delay)
+ if [ -n "$2" ] ; then
+ DELAY=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
+ --label)
+ if [ -n "$2" ] ; then
+ LABEL=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
+ --initrd)
+ if [ -n "$2" ] ; then
+ INITRDPATH=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
+ --macosx)
+ if [ -n "$2" ] ; then
+ MACOSXDEV=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
+ --macos)
+ if [ -n "$2" ] ; then
+ MACOSDEV=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
+ --darwin)
+ if [ -n "$2" ] ; then
+ DARWINDEV=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
+ --defaultos)
+ if [ -n "$2" ] ; then
+ DEFOS=$2
+ shift 2
+ else
+ echo 1>&2 "$PRG: option requires an argument $1"
+ echo 1>&2 "Try \`$PRG --help' for more information."
+ exit 1
+ fi
+ ;;
"")
break
;;
@@ -474,7 +563,7 @@
READLINKKV=`readlink /usr/src/linux`
## find the kernel in the usual places and (if not --quiet) ask the
## user if we cannot find one.
-for k in "vmlinux" "vmlinux-`uname -r`" "vmlinux-`uname -r`" "$READLINKKV" ; do
+for k in "${KERNELIMAGE}" "vmlinux" "vmlinux-`uname -r`" "vmlinux-`uname -r`" "$READLINKKV" ; do
if [ -f "${CHROOT}${k}" ] ; then
KERNEL="${CHROOT}${k}"
break;
@@ -721,6 +812,36 @@
HEADER="## see also: /usr/share/doc/yaboot/examples for example configurations.\n"
fi
+## find the kernel in the usual places and (if not --quiet) ask the
+## user if we cannot find one.
+if [ -f "${CHROOT}${INITRDPATH}" ] ; then
+ REALINITRD="${CHROOT}${INITRDPATH}"
+
+ ## if there is a separate /boot partition we must strip off the /boot
+ ## mountpoint or else yaboot will not find the kernel.
+ if [ "$KERNDIR" != "$CHROOT" ] ; then
+ INITRD="${REALINITRD##*$KERNDIR}"
+ else
+ INITRD="$REALINITRD"
+ fi
+
+ ## fix chrooted path
+ if [ "$CHROOT" != / ] ; then
+ INITRD="${INITRD##*$CHROOT}"
+ fi
+
+ ## fix relative path (caused by chroot path fix)
+ case "$INITRD" in
+ /*)
+ true
+ ;;
+ *)
+ INITRD="/${INITRD}"
+ ;;
+ esac
+ INITRDLINE="\tinitrd=$INITRD\n"
+fi
+
## setup append line
if [ -n "$KERNARGS" ] ; then
APPEND="\tappend=\"${KERNARGS}\"\n"
@@ -731,24 +850,64 @@
INITRDIMGS="\tinitrd=$INITRDIMG\n\tinitrd-size=8192\n"
fi
+## setup default OS bits for ybin
+if [ -n "$DEFOS" ] ; then
+ if [ "$DEFOS" = "macosx" ] ; then
+ DEFAULTOS="defaultos=${DEFOS}\n"
+ elif [ "$DEFOS" = "macos" ] ; then
+ DEFAULTOS="defaultos=${DEFOS}\n"
+ elif [ "$DEFOS" = "darwin" ] ; then
+ DEFAULTOS="defaultos=${DEFOS}\n"
+ else
+ DEFAULTOS="defaultos=linux\n"
+ fi
+else
+ DEFAULTOS="defaultos=linux\n"
+fi
+if [ -n "$DELAY" ] ; then
+ MENUDELAY="delay=${DELAY}\n"
+fi
+
+## setup enabling cd or network boot from OF
+if [ -n "$CDBOOT" ] ; then
+ ENABLECDBOOT="enablecdboot\n"
+fi
+if [ -n "$NETBOOT" ] ; then
+ ENABLENETBOOT="enablenetboot\n"
+fi
+
+MESG='"Welcome to Red Hat Linux!\\nHit <TAB> for boot options.\\n\\n"'
+
## generate global section of yaboot.conf
-GLOBAL="## yaboot.conf generated by $PRG $VERSION
-##
-## run: \"man yaboot.conf\" for details. Do not make changes until you have!!
-${HEADER}##
-## For a dual-boot menu, add one or more of:
-## bsd=/dev/hdaX, macos=/dev/hdaY, macosx=/dev/hdaZ\n
-boot=${BOOT}${DEVICE:-}
+GLOBAL="boot=${BOOT}${DEVICE:-}
+init-message=$MESG
partition=$PARTITION
-root=$ROOT
timeout=30
-install=${INSTALL}${OFBOOT:-}\n"
+install=${INSTALL}${OFBOOT:-}
+default=$LABEL
+${DEFAULTOS:-}${MENUDELAY:-}${ENABLECDBOOT:-}${ENABLENETBOOT:-}"
## generate image= section
IMAGES="
image=$IMAGE
-\tlabel=Linux
-\tread-only\n${APPEND:-}${INITRDIMGS:-}"
+\tlabel=$LABEL
+\troot=$ROOT
+\tread-only\n
+${INITRDLINE-}${APPEND:-}"
+
+if [ -n "$MACOSXDEV" ] ; then
+ MACOSX="macosx=${MACOSXDEV}\n"
+fi
+
+if [ -n "$MACOSDEV" ] ; then
+ MACOS="macos=${MACOSDEV}\n"
+fi
+
+if [ -n "$DARWINDEV" ] ; then
+ DARWIN="darwin=${DARWINDEV}\n"
+fi
+
+OTHER="${MACOSX}${MACOS}${DARWIN}${BSD}"
## safely create a tmp file then move it into place after we are sure
## it was written.
@@ -767,7 +928,9 @@
exit 1
fi
-$PRINTF "${GLOBAL}${IMAGES}" > "$TMPCONF"
+printf "${GLOBAL}
+${IMAGES}
+${OTHER}" > "$TMPCONF"
if [ $? != 0 ] ; then
echo 1>&2 "$PRG: Unable to write temporary file ${TMPCONF}, aborting..."
exit 1

View file

@ -0,0 +1,41 @@
From f6058147054159eba994eb9589e2ebabe4a05570 Mon Sep 17 00:00:00 2001
From: Tony Breeds <tony@bakeyournoodle.com>
Date: Wed, 19 Oct 2011 13:36:49 +1100
Subject: [PATCH] fs_swap: Reduce severity of not finding a partition table on
boot device.
When booted from a cdrom the fs_swap would exit with FILE_ERR_BADDEV,
this causes fs_open to abort too early.
We don't need to check file->device_kind != FILE_DEVICE_BLOCK as we're
only called when that is true.
Demote the return value to FILE_ERR_BAD_FSYS which allows fs_open to
look for other filesystems on the device.
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
---
second/fs_swap.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/second/fs_swap.c b/second/fs_swap.c
index 87da877..1efb96e 100644
--- a/second/fs_swap.c
+++ b/second/fs_swap.c
@@ -59,9 +59,10 @@ swap_open(struct boot_file_t* file, struct partition_t* part,
DEBUG_ENTER;
DEBUG_OPEN;
- if (file->device_kind != FILE_DEVICE_BLOCK || part == NULL) {
- DEBUG_LEAVE(FILE_ERR_BADDEV);
- return FILE_ERR_BADDEV;
+ if (part == NULL) {
+ DEBUG_F("No partions on %s, not checking for swap\n", device_name);
+ DEBUG_LEAVE(FILE_ERR_BAD_FSYS);
+ return FILE_ERR_BAD_FSYS;
}
/* We assume that device is "short" and is correctly NULL terminsated */
--
1.7.6.4

View file

@ -0,0 +1,34 @@
From f70d675c9b833e57b605fc94702cd66e97c717f5 Mon Sep 17 00:00:00 2001
From: Tony Breeds <tony@bakeyournoodle.com>
Date: Mon, 13 May 2013 14:42:21 +1000
Subject: [PATCH] fs_of: Increase the LOAD_BUFFER_SIZE to 32MB
Okay this is the last time. To go bigger than this we'll almost
certainly break smaller systems, if we haven't already.
Also 32MB is as big as std. TFTP will go. To transfer more than that we
need to support tftp block-size and tftp rollover. Basically we'd
*require* HPA's tftp daemon and we'd need to write a TFTP client in
yaboot. So we'll stay at 32MB for a while I think.
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
---
second/fs_of.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/second/fs_of.c b/second/fs_of.c
index fc88e8e..13f5e2c 100644
--- a/second/fs_of.c
+++ b/second/fs_of.c
@@ -44,7 +44,7 @@
#include "errors.h"
#include "debug.h"
-#define LOAD_BUFFER_SIZE 0x1800000
+#define LOAD_BUFFER_SIZE 0x2000000
static int of_open(struct boot_file_t* file,
struct partition_t* part, struct boot_fspec_t* fspec);
--
1.7.10.4

View file

@ -0,0 +1,380 @@
From cf53e4804fb8862bf6ac6564ba5fa458bf3c0600 Mon Sep 17 00:00:00 2001
From: Tony Breeds <tony@bakeyournoodle.com>
Date: Tue, 12 Jun 2012 15:19:02 +1000
Subject: [PATCH] Add more libc helper functions for e2fsprogs.
I've added debug() statements for all of the stub functions. So if
things get "strange" we at least know we've been playing around in this
backwater.
Portions of this patch are based on the work by Joseph Jezak <josejx@gentoo.org>
specifically the *_chk() functions.
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
---
include/nonstd.h | 48 +++++++++++-
lib/malloc.c | 7 ++
lib/nonstd.c | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 284 insertions(+), 6 deletions(-)
diff --git a/include/nonstd.h b/include/nonstd.h
index bad5f48..a967380 100644
--- a/include/nonstd.h
+++ b/include/nonstd.h
@@ -22,14 +22,60 @@
#ifndef NONSTD_H
#define NONSTD_H
+/* Copied from asm-generic/errno-base.h */
+#define EPERM 1 /* Operation not permitted */
+#define EBADF 9 /* Bad file number */
+#define EACCES 13 /* Permission denied */
+
typedef int FILE;
+typedef unsigned int uid_t;
+typedef int pid_t;
+typedef unsigned int mode_t;
+typedef int ssize_t;
+typedef long long off64_t;
+typedef long off_t;
+
+struct stat;
+struct timezone;
+struct timeval;
+
extern FILE *stdout;
+extern FILE *stderr;
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int fputs(const char *s, FILE *stream);
int fflush(FILE *stream);
char *getenv(const char *name);
-
+int gethostname(char *name, size_t len);
+int gettimeofday(struct timeval *tv, struct timezone *tz);
+int * __errno_location(void);
+unsigned int sleep(unsigned int seconds);
+int rand(void);
+void srand(unsigned int seed);
+long int random(void);
+void srandom(unsigned int seed);
+uid_t geteuid(void);
+uid_t getuid(void);
+pid_t getpid(void);
+int stat(const char *path, struct stat *buf);
+int stat64(const char *path, struct stat *buf);
+int fstat(int fd, struct stat *buf);
+int fstat64(int fd, struct stat *buf);
+int open(const char *pathname, int flags, mode_t mode);
+int open64(const char *pathname, int flags, mode_t mode);
+off_t lseek(int fd, off_t offset, int whence);
+off64_t lseek64(int fd, off64_t offset, int whence);
+ssize_t read(int fildes, void *buf, size_t nbyte);
+int close(int fd);
+void *calloc(size_t nmemb, size_t size);
+void perror(const char *s);
+void exit(int status);
+int ioctl(int d, int request, ...);
+size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
+long sysconf(int name);
+int getpagesize(void);
+void qsort(void *base, size_t nmemb, size_t size,
+ int(*compar)(const void *, const void *));
#endif
diff --git a/lib/malloc.c b/lib/malloc.c
index 0121112..b21490c 100644
--- a/lib/malloc.c
+++ b/lib/malloc.c
@@ -107,6 +107,13 @@ int posix_memalign(void **memptr, size_t alignment, size_t size)
return 0;
}
+void *calloc(size_t nmemb, size_t size)
+{
+ unsigned char *p = malloc(nmemb * size);
+ memset(p, 0x0, nmemb * size);
+ return p;
+}
+
void *realloc(void *ptr, unsigned int size)
{
char *caddr, *oaddr = ptr;
diff --git a/lib/nonstd.c b/lib/nonstd.c
index 5aeb0cb..6549283 100644
--- a/lib/nonstd.c
+++ b/lib/nonstd.c
@@ -23,11 +23,142 @@
#include "types.h"
#include "stddef.h"
#include "stdlib.h"
+#include "string.h"
#include "ctype.h"
#include "prom.h"
#include "nonstd.h"
+#include "debug.h"
-FILE *stdout;
+#define __unused __attribute__((unused))
+
+static FILE _stdout;
+static FILE _stderr;
+FILE *stdout = &_stdout;
+FILE *stderr = &_stderr;
+
+static int fake_errno;
+
+int * __errno_location(void)
+{
+ DEBUG_F("Stub function called");
+ return &fake_errno;
+}
+
+uid_t geteuid(void)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+uid_t getuid(void)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+pid_t getpid(void)
+{
+ DEBUG_F("Stub function called");
+ return 1;
+}
+
+/* selected by roll of a six sided dice ... that's random right? */
+int rand(void)
+{
+ DEBUG_F("Stub function called");
+ return 4;
+}
+
+void srand(unsigned int seed __unused)
+{
+ DEBUG_F("Stub function called");
+}
+
+long int random(void)
+{
+ DEBUG_F("Stub function called");
+ return 4;
+}
+
+void srandom(unsigned int seed __unused)
+{
+ DEBUG_F("Stub function called");
+}
+
+unsigned int sleep(unsigned int seconds)
+{
+ prom_sleep(seconds);
+ return 0;
+}
+
+int stat(const char *path __unused, struct stat *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EACCES;
+}
+
+int stat64(const char *path __unused, struct stat *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EACCES;
+}
+
+int fstat(int fd __unused, struct stat *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EBADF;
+}
+
+int fstat64(int fd __unused, struct stat *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EBADF;
+}
+
+int open(const char *pathname, int flags __unused, mode_t mode __unused)
+{
+ return (int) prom_open((char *)pathname);
+}
+
+int open64(const char *pathname, int flags __unused, mode_t mode __unused)
+{
+ return (int) prom_open((char *)pathname);
+}
+
+off_t lseek(int fd __unused, off_t offset __unused, int whence __unused)
+{
+ DEBUG_F("Stub function called");
+ return EBADF;
+}
+
+off64_t lseek64(int fd __unused, off64_t offset __unused, int whence __unused)
+{
+ DEBUG_F("Stub function called");
+ return EBADF;
+}
+
+ssize_t read(int filedes, void *buf, size_t nbyte)
+{
+ return prom_read((void *)filedes, buf, nbyte);
+}
+
+int close(int fd __unused)
+{
+ prom_close((void *)fd);
+ return 0;
+}
+
+int gethostname(char *name __unused, size_t len __unused)
+{
+ DEBUG_F("Stub function called");
+ return EPERM;
+}
+
+int gettimeofday(struct timeval *tv __unused, struct timezone *tz __unused)
+{
+ DEBUG_F("Stub function called");
+ return EPERM;
+}
int printf(const char *format, ...)
{
@@ -39,7 +170,7 @@ int printf(const char *format, ...)
return 0;
}
-int fprintf(FILE *stream, const char *format, ...)
+int fprintf(FILE *stream __unused, const char *format, ...)
{
va_list ap;
va_start (ap, format);
@@ -49,19 +180,113 @@ int fprintf(FILE *stream, const char *format, ...)
return 0;
}
-int fputs(const char *s, FILE *stream)
+int fputs(const char *s, FILE *stream __unused)
{
prom_printf("%s", s);
return 0;
}
-int fflush(FILE *stream)
+int fflush(FILE *stream __unused)
{
+ DEBUG_F("Stub function called");
return 0;
}
-char *getenv(const char *name)
+char *getenv(const char *name __unused)
{
+ DEBUG_F("Stub function called");
return NULL;
}
+
+int __printf_chk(int flag __unused, const char *format, ...)
+{
+ va_list ap;
+ va_start (ap, format);
+ prom_vfprintf (prom_stdout, format, ap);
+ va_end (ap);
+
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+int __sprintf_chk(char *str __unused, int flag __unused,
+ size_t strlen __unused, const char * format __unused, ...)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+
+}
+
+int __fprintf_chk(FILE *stream __unused, int flag __unused,
+ const char *format, ...)
+{
+ va_list ap;
+ va_start (ap, format);
+ prom_vfprintf (prom_stdout, format, ap);
+ va_end (ap);
+
+ return 0;
+}
+
+void *__memcpy_chk(void *dest, const void *src, size_t n,
+ size_t destlen __unused)
+{
+ DEBUG_F("Stub function called");
+ /* FIXME: We really could check that dest+destlen < src, to ensure
+ * we're not overwriting the src */
+ return memcpy(dest, src, n);
+}
+
+void perror(const char *s)
+{
+ DEBUG_F("Stub function called");
+ prom_printf(s);
+}
+
+void exit(int status __unused)
+{
+ prom_exit();
+ for(;;);
+}
+
+int ioctl(int d __unused, int request __unused, ...)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+/* As we do not implement fopen() I think we're only going to get called
+ * with stdout and stderr. If that's the case we degenerate to prom_write()
+ * on stdout */
+size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
+{
+ if ((stream == stdout) || (stream == stderr)) {
+ DEBUG_F("Stub function called on known stream");
+ prom_write(prom_stdout, (void *)ptr, size * nmemb);
+ } else {
+ DEBUG_F("Stub function called on unknown stream");
+ }
+ return nmemb;
+}
+
+long sysconf(int name __unused)
+{
+ DEBUG_F("Stub function called");
+ return -1;
+}
+
+int getpagesize(void)
+{
+ DEBUG_F("Stub function called");
+ /* I think this is safe to assume */
+ return 4096;
+}
+
+void qsort(void *base __unused, size_t nmemb __unused, size_t size __unused,
+ int(*compar)(const void *, const void *))
+{
+ DEBUG_F("Stub function called");
+ /* I'm quite nervous about not implementing this. Could we end up with
+ * disk corruption. Couldn't we? */
+}
--
1.7.7.6

View file

@ -0,0 +1,145 @@
diff --git a/include/nonstd.h b/include/nonstd.h
index a967380..a23f98e 100644
--- a/include/nonstd.h
+++ b/include/nonstd.h
@@ -26,6 +26,7 @@
#define EPERM 1 /* Operation not permitted */
#define EBADF 9 /* Bad file number */
#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
typedef int FILE;
@@ -37,8 +38,11 @@ typedef long long off64_t;
typedef long off_t;
struct stat;
+struct stat64;
struct timezone;
struct timeval;
+struct rlimit;
+struct utsname;
extern FILE *stdout;
extern FILE *stderr;
@@ -78,4 +82,14 @@ long sysconf(int name);
int getpagesize(void);
void qsort(void *base, size_t nmemb, size_t size,
int(*compar)(const void *, const void *));
+ssize_t write(int fd, const void *buf, size_t count);
+int fallocate(int fd, int mode, off_t offset, off_t len);
+unsigned long long int strtoull(const char *nptr, char **endptr, int base);
+int fsync(int fd);
+int __open64_2(const char *pathname, int flags);
+int __xstat64(int vers, const char *name, struct stat64 *buf);
+int uname(struct utsname *buf);
+int getrlimit(int resource, struct rlimit *rlim);
+int setrlimit(int resource, const struct rlimit *rlim);
+int __fxstat64(int vers, int fd, struct stat64 *buf);
#endif
diff --git a/include/stdlib.h b/include/stdlib.h
index 0b5e99a..921fc9b 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -19,6 +19,7 @@ extern void release (void *ptr);
extern int sprintf(char * buf, const char *fmt, ...);
extern int vsprintf(char *buf, const char *fmt, va_list args);
extern long simple_strtol(const char *cp,char **endp,unsigned int base);
+extern unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base);
#define strtol(x,y,z) simple_strtol(x,y,z)
#endif
diff --git a/lib/nonstd.c b/lib/nonstd.c
index 6549283..129d674 100644
--- a/lib/nonstd.c
+++ b/lib/nonstd.c
@@ -115,6 +115,19 @@ int fstat64(int fd __unused, struct stat *buf __unused)
return EBADF;
}
+int __xstat64(int vers __unused, const char *name __unused,
+ struct stat64 *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EBADF;
+}
+
+int __fxstat64(int vers __unused, int fd __unused, struct stat64 *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EBADF;
+}
+
int open(const char *pathname, int flags __unused, mode_t mode __unused)
{
return (int) prom_open((char *)pathname);
@@ -125,6 +138,11 @@ int open64(const char *pathname, int flags __unused, mode_t mode __unused)
return (int) prom_open((char *)pathname);
}
+int __open64_2(const char *pathname, int flags __unused)
+{
+ return (int) prom_open((char *)pathname);
+}
+
off_t lseek(int fd __unused, off_t offset __unused, int whence __unused)
{
DEBUG_F("Stub function called");
@@ -290,3 +308,57 @@ void qsort(void *base __unused, size_t nmemb __unused, size_t size __unused,
/* I'm quite nervous about not implementing this. Could we end up with
* disk corruption. Couldn't we? */
}
+
+/* FIXME: I'd like to call prom_write here, but we can't ber certain that
+ * we'll have "text" so just move along nothing to see here
+ */
+ssize_t write(int fd, const void *buf, size_t count)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+int fallocate(int fd __unused, int mode __unused, off_t offset __unused,
+ off_t len __unused)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+unsigned long long int strtoull(const char *nptr, char **endptr, int base)
+{
+ return simple_strtoull(nptr, endptr, base);
+}
+
+int fsync(int fd __unused)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+/* Return EFAULT here as it's too hard in yaboot to know the size of struct
+ * utsname. If we don't touch it and return 0 bad things might happen.
+ * Lets hope the caller handles failure
+ */
+int uname(struct utsname *buf __unused)
+{
+ DEBUG_F("Stub function called");
+ return EFAULT;
+}
+
+int getrlimit(int resource __unused, struct rlimit *rlim __unused)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+int setrlimit(int resource __unused, const struct rlimit *rlim __unused)
+{
+ DEBUG_F("Stub function called");
+ return 0;
+}
+
+void __stack_chk_fail(void)
+{
+ DEBUG_F("Stub function called");
+}

View file

@ -0,0 +1,10 @@
--- yaboot-1.3.17/Makefile.orig 2011-10-18 17:08:21.488819995 +1100
+++ yaboot-1.3.17/Makefile 2011-10-18 17:08:30.038802076 +1100
@@ -40,7 +40,6 @@
YBCFLAGS += -DTEXTADDR=$(TEXTADDR) -DDEBUG=$(DEBUG)
YBCFLAGS += -DMALLOCADDR=$(MALLOCADDR) -DMALLOCSIZE=$(MALLOCSIZE)
YBCFLAGS += -DKERNELADDR=$(KERNELADDR)
-YBCFLAGS += -Werror -fdiagnostics-show-option
YBCFLAGS += -I ./include
YBCFLAGS += -fno-strict-aliasing

132
yaboot-1.3.3-man.patch Normal file
View file

@ -0,0 +1,132 @@
diff -bpurN yaboot-1.3.17.orig/man/mkofboot.8 yaboot-1.3.17/man/mkofboot.8
--- yaboot-1.3.17.orig/man/mkofboot.8 2011-10-18 12:33:25.000000000 +1100
+++ yaboot-1.3.17/man/mkofboot.8 2011-10-18 14:51:53.540964413 +1100
@@ -88,7 +88,7 @@ utility. You should only need to define
.TP
.BR \-i ,\ \-\-install\ \fIboot-file
Use \fIboot-file\fR as the primary boot loader executable, instead of
-the default\fI/usr/local/lib/yaboot/yaboot\fR(8).
+the default\fI/usr/lib/yaboot/yaboot\fR(8).
.TP
.BR \-C ,\ \-\-config\ \fIconfig-file
Use \fIconfig-file\fR as the \fBmkofboot\fR/\fByaboot\fR(8) configuration
@@ -162,8 +162,8 @@ Print out usage information and exit.
Print out the version number and exit.
.SH FILES
.nf
-/usr/local/lib/yaboot/yaboot \- boot loader executable
-/usr/local/lib/yaboot/ofboot \- OpenFirmware boot script
+/usr/lib/yaboot/yaboot \- boot loader executable
+/usr/lib/yaboot/ofboot \- OpenFirmware boot script
/etc/yaboot.conf \- boot loader/mkofboot configuration file
.fi
.SH ENVIRONMENT
@@ -179,7 +179,7 @@ it is important that your system use a s
program otherwise \fBmkofboot\fR will be vulnerable to race conditions.
The Debian mktemp is derived from OpenBSD and thus should be secure.
-\fI/usr/local/lib/yaboot/ofboot\fR now contains code executed by /bin/sh (by
+\fI/usr/lib/yaboot/ofboot\fR now contains code executed by /bin/sh (by
\fBmkofboot\fR) it is thus critical that it not be writable by anyone
but root. It is also critical that \fI/etc/yaboot.conf\fR not be
writable by anyone but root since a different \fIofboot\fR script could be
diff -bpurN yaboot-1.3.17.orig/man/yaboot.conf.5 yaboot-1.3.17/man/yaboot.conf.5
--- yaboot-1.3.17.orig/man/yaboot.conf.5 2011-10-18 12:33:25.000000000 +1100
+++ yaboot-1.3.17/man/yaboot.conf.5 2011-10-18 14:51:53.541964410 +1100
@@ -136,7 +136,7 @@ Example:
boot=/dev/hda2
device=hd:
partition=3
- magicboot=/usr/local/lib/yaboot/ofboot
+ magicboot=/usr/lib/yaboot/ofboot
timeout=50
root=/dev/hda3
read-only
@@ -228,7 +228,7 @@ executable so this can be optional. Whe
magicboot script will be executed by OF automatically at boot (instead
of the \fBinstall\fR file.) See man \fBbootstrap\fR(8) for more
information on this. As of ybin 0.22 you should set this to
-/usr/local/lib/yaboot/ofboot which is a autoconfiguring first stage
+/usr/lib/yaboot/ofboot which is a autoconfiguring first stage
loader for yaboot. It is capable of presenting a dual boot menu for
GNU/Linux, MacOS and MacOSX. If dual booting is not required or
configured it will simply load yaboot directly. You must specify this
@@ -307,7 +307,7 @@ You must also have the BSD bootloader
When you define this option you will be presented with a simple menu at
bootup allowing you to hit L to boot GNU/Linux or B to boot BSD (along
with other choices if configured). This will only work if you are
-using the new \fI/usr/local/lib/yaboot/ofboot\fR script. When this is
+using the new \fI/usr/lib/yaboot/ofboot\fR script. When this is
set to a unix device node (ie \fI/dev/hda11\fR) then ybin will use the
\fBofpath\fR(8) utility to determine the OpenFirmware device path.
.TP
@@ -316,7 +316,7 @@ The OpenFirmware or Unix device path to
partition. When you define this option you will be presented with a
simple menu at bootup allowing you to hit L to boot GNU/Linux or M to
boot MacOS (along with other choices if configured). This will only
-work if you are using the new \fI/usr/local/lib/yaboot/ofboot\fR
+work if you are using the new \fI/usr/lib/yaboot/ofboot\fR
script. When this is set to a unix device node (ie \fI/dev/hda11\fR)
then ybin will use the \fBofpath\fR(8) utility to determine the
OpenFirmware device path.
@@ -326,7 +326,7 @@ The OpenFirmware or unix device path to
When you define this option you will be presented with a simple menu
at bootup allowing you to hit L to boot GNU/Linux or X to boot MacOSX
(along with other choices if configured). This will only work if you
-are using the new \fI/usr/local/lib/yaboot/ofboot\fR script. When
+are using the new \fI/usr/lib/yaboot/ofboot\fR script. When
this is set to a unix device node (ie \fI/dev/hda11\fR) then ybin will
use the \fBofpath\fR(8) utility to determine the OpenFirmware device
path.
@@ -347,7 +347,7 @@ The OpenFirmware or unix device path to
When you define this option you will be presented with a simple menu
at bootup allowing you to hit L to boot GNU/Linux or D to boot Darwin
(along with other choices if configured). This will only work if you
-are using the new \fI/usr/local/lib/yaboot/ofboot\fR script. When
+are using the new \fI/usr/lib/yaboot/ofboot\fR script. When
this is set to a unix device node (ie \fI/dev/hda11\fR) then ybin will
use the \fBofpath\fR(8) utility to determine the OpenFirmware device
path.
@@ -591,8 +591,8 @@ device=hd:
root=/dev/hda3
partition=3
timeout=20
-install=/usr/local/lib/yaboot/yaboot
-magicboot=/usr/local/lib/yaboot/ofboot
+install=/usr/lib/yaboot/yaboot
+magicboot=/usr/lib/yaboot/ofboot
fgcolor=black
bgcolor=green
default=Linux
diff -bpurN yaboot-1.3.17.orig/man/ybin.8 yaboot-1.3.17/man/ybin.8
--- yaboot-1.3.17.orig/man/ybin.8 2011-10-18 12:33:25.000000000 +1100
+++ yaboot-1.3.17/man/ybin.8 2011-10-18 14:51:53.541964410 +1100
@@ -103,7 +103,7 @@ You should only need to define this opti
.TP
.BR \-i ,\ \-\-install\ \fIboot-file
Use \fIboot-file\fR as the primary boot loader executable, instead of
-the default \fI/usr/local/lib/yaboot/yaboot\fR.
+the default \fI/usr/lib/yaboot/yaboot\fR.
.TP
.BR \-C ,\ \-\-config\ \fIconfig-file
Use \fIconfig-file\fR as the \fBybin\fR/\fByaboot\fR(8) configuration
@@ -176,8 +176,8 @@ Print out usage information and exit.
Print out the version number and exit.
.SH FILES
.nf
-/usr/local/lib/yaboot/yaboot \- boot loader executable
-/usr/local/lib/yaboot/ofboot \- OpenFirmware boot script
+/usr/lib/yaboot/yaboot \- boot loader executable
+/usr/lib/yaboot/ofboot \- OpenFirmware boot script
/etc/yaboot.conf \- boot loader/ybin configuration file
.fi
.SH ENVIRONMENT
@@ -193,7 +193,7 @@ It is important that your system use a s
program, otherwise \fBybin\fR will be vulnerable to race conditions.
The Debian mktemp is derived from OpenBSD and thus should be secure.
-\fI/usr/local/lib/yaboot/ofboot\fR now contains code executed by /bin/sh (by
+\fI/usr/lib/yaboot/ofboot\fR now contains code executed by /bin/sh (by
\fBybin\fR). It is thus critical that it not be writable by anyone but
root. It is also critical that \fI/etc/yaboot.conf\fR not be writable
by anyone but root since a different \fIofboot\fR script could be

29
yaboot-1.3.6-ofboot.patch Normal file
View file

@ -0,0 +1,29 @@
--- yaboot-1.3.6/first/ofboot.orig Thu Mar 7 04:19:09 2002
+++ yaboot-1.3.6/first/ofboot Thu Mar 7 04:21:49 2002
@@ -102,7 +102,7 @@
[ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file1: $5\n"
[ "$COUNT" = "$OSNUM" ] && c="."
BTYA=": boot$1 \" Loading second stage bootstrap...\" .printf 100 ms load-base release-load-area \" ${4}${5}\" \$boot ;"
- MENUYA="\" Press $3 for GNU/Linux${c-,}\"(0d 0a)\" .printf"
+ MENUYA="\" Press $3 for Red Hat Linux${c-,}\"(0d 0a)\" .printf"
GETYA=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
shift 5
COUNT="$(($COUNT + 1))"
@@ -315,7 +315,7 @@
MacRISC MacRISC3 MacRISC4
</COMPATIBLE>
<DESCRIPTION>
-PowerPC GNU/Linux First Stage Bootstrap
+Red Hat Linux First Stage Bootstrap
</DESCRIPTION>
<BOOT-SCRIPT>
: .printf fb8-write drop ;
@@ -336,7 +336,7 @@
$BGCOLOR to background-color
\" \"(0C)\" .printf
-\" First Stage GNU/Linux Bootstrap\"(0d 0a)\" .printf
+\" First Stage Red Hat Linux Bootstrap\"(0d 0a)\" .printf
\" \"(0d 0a)\" .printf
$MENUOPTS
\" \"(0d 0a)\" .printf

94
yaboot-1.3.6-rh.patch Normal file
View file

@ -0,0 +1,94 @@
--- yaboot-1.3.6/Makefile.rh Fri May 17 15:08:25 2002
+++ yaboot-1.3.6/Makefile Fri May 17 15:09:32 2002
@@ -178,32 +178,32 @@
strip --remove-section=.comment --remove-section=.note util/addnote
install: all strip
- install -d -o root -g root -m 0755 ${ROOT}/etc/
- install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/sbin/
- install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/lib
- install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/lib/yaboot
- install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man5/
- install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man8/
- install -o root -g root -m 0644 second/yaboot ${ROOT}/$(PREFIX)/lib/yaboot
- install -o root -g root -m 0755 util/addnote ${ROOT}/${PREFIX}/lib/yaboot/addnote
- install -o root -g root -m 0644 first/ofboot ${ROOT}/${PREFIX}/lib/yaboot/ofboot
- install -o root -g root -m 0755 ybin/ofpath ${ROOT}/${PREFIX}/sbin/ofpath
- install -o root -g root -m 0755 ybin/ybin ${ROOT}/${PREFIX}/sbin/ybin
- install -o root -g root -m 0755 ybin/yabootconfig ${ROOT}/${PREFIX}/sbin/yabootconfig
+ install -d -m 0755 ${ROOT}/etc/
+ install -d -m 0755 ${ROOT}/${PREFIX}/sbin/
+ install -d -m 0755 ${ROOT}/${PREFIX}/lib
+ install -d -m 0755 ${ROOT}/${PREFIX}/lib/yaboot
+ install -d -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man5/
+ install -d -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man8/
+ install -m 0644 second/yaboot ${ROOT}/$(PREFIX)/lib/yaboot
+ install -m 0755 util/addnote ${ROOT}/${PREFIX}/lib/yaboot/addnote
+ install -m 0644 first/ofboot ${ROOT}/${PREFIX}/lib/yaboot/ofboot
+ install -m 0755 ybin/ofpath ${ROOT}/${PREFIX}/sbin/ofpath
+ install -m 0755 ybin/ybin ${ROOT}/${PREFIX}/sbin/ybin
+ install -m 0755 ybin/yabootconfig ${ROOT}/${PREFIX}/sbin/yabootconfig
rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
ln -s ybin ${ROOT}/${PREFIX}/sbin/mkofboot
@gzip -9 man/*.[58]
- install -o root -g root -m 0644 man/bootstrap.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
- install -o root -g root -m 0644 man/mkofboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
- install -o root -g root -m 0644 man/ofpath.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ofpath.8.gz
- install -o root -g root -m 0644 man/yaboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yaboot.8.gz
- install -o root -g root -m 0644 man/yabootconfig.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yabootconfig.8.gz
- install -o root -g root -m 0644 man/ybin.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ybin.8.gz
- install -o root -g root -m 0644 man/yaboot.conf.5.gz ${ROOT}/${PREFIX}/${MANDIR}/man5/yaboot.conf.5.gz
+ install -m 0644 man/bootstrap.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
+ install -m 0644 man/mkofboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
+ install -m 0644 man/ofpath.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ofpath.8.gz
+ install -m 0644 man/yaboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yaboot.8.gz
+ install -m 0644 man/yabootconfig.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yabootconfig.8.gz
+ install -m 0644 man/ybin.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ybin.8.gz
+ install -m 0644 man/yaboot.conf.5.gz ${ROOT}/${PREFIX}/${MANDIR}/man5/yaboot.conf.5.gz
@gunzip man/*.gz
@if [ ! -e ${ROOT}/etc/yaboot.conf ] ; then \
- echo "install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf"; \
- install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf; \
+ echo "install -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf"; \
+ install -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf; \
else \
echo "/etc/yaboot.conf already exists, leaving it alone"; \
fi
--- yaboot-1.3.6/etc/yaboot.conf.fhs Thu May 23 15:56:11 2002
+++ yaboot-1.3.6/etc/yaboot.conf Thu May 23 15:57:29 2002
@@ -10,7 +10,7 @@
## specify a partition number for this! On IBM hardware you can
## generally comment this out.
-device=hd:
+## device=hd:
## partition is the partition number where the kernel images are
## located. The kernel images should be on your root filesystem, so
@@ -20,7 +20,7 @@
## option can be either set globally as shown here, or per image in
## the image= sections
-partition=3
+partition=2
## delay is the amount of time in seconds the dual boot menu (if one
## is configured, by the presense of macos, macosx, etc options here)
@@ -35,13 +35,13 @@
## section in this config file or the value of default=).
timeout=40
-install=/usr/local/lib/yaboot/yaboot
-magicboot=/usr/local/lib/yaboot/ofboot
+install=/usr/lib/yaboot/yaboot
+magicboot=/usr/lib/yaboot/ofboot
## Change the default colors, fgcolor is the text color, bgcolor is
## the screen background color. (default: fgcolor=white, bgcolor=black)
-#fgcolor=black
-#bgcolor=green
+fgcolor=white
+bgcolor=black
## Password supplied in plaintext, required for yaboot to boot, unless
## restricted is also present (see below). Be sure to

1685
yaboot-sha2.patch Normal file

File diff suppressed because it is too large Load diff

473
yaboot.spec Normal file
View file

@ -0,0 +1,473 @@
Summary: Linux bootloader for Power Macintosh "New World" computers.
Name: yaboot
Version: 1.3.17
Release: 7%{?dist}
License: GPLv2+
Group: System Environment/Base
Source: http://yaboot.ozlabs.org/releases/yaboot-%{version}.tar.gz
Source1: efika.forth
Patch1: yaboot-1.3.3-man.patch
Patch2: yaboot-1.3.6-ofboot.patch
Patch3: yaboot-1.3.6-rh.patch
Patch4: yaboot-1.3.13-yabootconfig.patch
Patch6: yaboot-1.3.10-proddiscover.patch
Patch7: yaboot-1.3.10-ext3.patch
Patch8: yaboot-1.3.10-sbindir.patch
Patch9: yaboot-1.3.10-configfile.patch
Patch10: yaboot-1.3.10-parted.patch
Patch17: yaboot-1.3.13-pegasos-claim.patch
Patch18: yaboot-1.3.13-pegasos-ext2.patch
Patch21: yaboot-1.3.13-pegasos-serial.patch
Patch22: yaboot-1.3.13-allow-deep-mntpoint.patch
Patch28: yaboot-1.3.13-dontwritehome.patch
# Don't use insecure MD5, use SHA-2
Patch40: yaboot-sha2.patch
# Do not use Werror, the compiler in F16/Rawhide is hitting warnings that
# Upstream doesn't see. Bypass them for now.
Patch41: yaboot-1.3.17-no-werror.patch
# When booted from a cdrom the fs_swap would exit with FILE_ERR_BADDEV,
# this causes fs_open to abort too early and breaks booting from DVD
Patch42: yaboot-1.3.17-fs_swap.patch
Patch43: yaboot-1.3.17-link_with_new_e2fsprogs.patch
Patch44: yaboot-1.3.17-link_with_new_e2fsprogs2.patch
Patch45: yaboot-1.3.17-increase_load_buffer.patch
URL: http://yaboot.ozlabs.org/
BuildRoot: %{_tmppath}/%{name}-root
Obsoletes: ybin
ExclusiveArch: ppc
# hfsutils will not be in RHEL6.
# hfsutils is needed only for non-IBM ppc machines
%if 0%{?fedora} || 0%{?rhel} < 6
Requires: hfsutils
%endif
BuildRequires: e2fsprogs-static
# yaboot is bootloader. It contains ELF object, but it is not Linux or MacOS
# executable file. Yaboot is meant to be executed only by OpenFirmware.
# So debuginfo rpm is nonsense
%global debug_package %{nil}
%description
yaboot is a bootloader for PowerPC machines which works on New World ROM
machines (Rev. A iMac and newer) and runs directly from Open Firmware,
eliminating the need for Mac OS.
yaboot can also bootload IBM pSeries machines.
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch17 -p1
%patch18 -p1
%patch21 -p1
%patch22 -p1
%patch28 -p1
%patch40 -p1
%patch41 -p1
%patch42 -p1
%patch43 -p1
%patch44 -p1
%patch45 -p1
%build
make VERSIONEXTRA='\ (Red Hat %version-%release)' DEBUG=1
cp -a second/yaboot{,.debug}
make clean
make VERSIONEXTRA='\ (Red Hat %version-%release)'
%install
%makeinstall ROOT=$RPM_BUILD_ROOT PREFIX=%{_prefix} MANDIR=share/man SBINDIR=/sbin
rm -f $RPM_BUILD_ROOT/etc/yaboot.conf
touch $RPM_BUILD_ROOT/etc/yaboot.conf
mkdir -p $RPM_BUILD_ROOT/boot
install -m0644 %{SOURCE1} $RPM_BUILD_ROOT/boot/efika.forth
install -m0644 second/yaboot.debug $RPM_BUILD_ROOT/usr/lib/yaboot/
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc COPYING README* doc/*
/boot/efika.forth
/sbin/ofpath
/sbin/ybin
/sbin/yabootconfig
/sbin/mkofboot
/usr/lib/yaboot/addnote
/usr/lib/yaboot/ofboot
/usr/lib/yaboot/yaboot
/usr/lib/yaboot/yaboot.debug
%{_mandir}/man8/bootstrap.8.gz
%{_mandir}/man8/mkofboot.8.gz
%{_mandir}/man8/ofpath.8.gz
%{_mandir}/man8/yaboot.8.gz
%{_mandir}/man8/yabootconfig.8.gz
%{_mandir}/man8/ybin.8.gz
%{_mandir}/man5/yaboot.conf.5.gz
%ghost %config(noreplace) %{_sysconfdir}/yaboot.conf
%changelog
* Wed Jun 12 2013 Tony Breeds <tony@bakeyournoodle.com> - 1.3.17-7
- Backport f70d675c to increase LOAD_BUFFER to 32MB
- Resolves 973324
- Resolves 973208
* Wed Sep 05 2012 Tony Breeds <tony@bakeyournoodle.com> - 1.3.17-6
- Add patch to link against *even newer* e2fsprogs.
* Wed Sep 05 2012 Tony Breeds <tony@bakeyournoodle.com> - 1.3.17-5
- Add patch from upstream to link with newer e2fsprogs
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.17-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.17-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Mon Oct 19 2011 Tony Breeds <tony@bakeyournoodle.com> - 1.3.17-2
- Fix fs_swap to not break boot CDs
* Mon Oct 18 2011 Tony Breeds <tony@bakeyournoodle.com> - 1.3.17-1
- Update to upstream 1.3.18 release
* Mon Oct 17 2011 Jiri Skala <jskala@redhat.com> - 1.3.16-7
- fixes #746408 - yaboot discards parameters after CAS reboot
* Mon Sep 26 2011 Tony Breeds <tony@bakeyournoodle.com> - 1.3.16-6
- Add no-strict-aliasing to YBCFLAGS
- Add detection for PowerVM Firmware.
* Wed Aug 31 2011 Tony Breeds <tony@bakeyournoodle.com> - 1.3.16-5
- yaboot-ppc64.patch incorrectly removed the -melfppc32linux from LDFLAGS. DOn't know why this hasn't been a problem 'til now.
* Thu Aug 11 2011 Tony Breeds <tony@bakeyournoodle.com> - 1.3.16-4
- truncate memcpy() extract_vendor_options() to avoid clobbering the stack. (closes 729684)
* Tue Apr 12 2011 Tony Breeds <tony@bakeyournoodle.com> - 1.3.16-3
- Add fix for failing to link against posix_memalign() (closes 689415)
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.16-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Mon Jul 19 2010 Roman Rakus <rrakus@redhat.com> - 1.3.16-1
- Update to 1.3.16 version
* Thu Jun 03 2010 Roman Rakus <rrakus@redhat.com> - 1.3.14-34
- added dependency on e2fsprogs-static package
* Wed May 26 2010 Roman Rakus <rrakus@redhat.com> - 1.3.14-33
- Allow yaboot to allocate up to 256MB of memory
* Wed May 26 2010 Roman Rakus <rrakus@redhat.com> - 1.3.14-32
- Added missing yaboot-1.3.14-netinfo.patch
Resolves: #553061
- Better iSCSI booting
Resolves: #553748
- Allow copy&paste
Resolves: #593377
- Bump release to 32 (as in RHEL6)
* Fri Jan 22 2010 Roman Rakus <rrasku@redhat.com> 1.3.14-22
- SHA2 support
* Thu Oct 29 2009 Roman Rakus <rrakus@redhat.com> - 1.3.14-21
- When netbooting "clobber" the LOAD_BUFFER and move the kernel into it to make
room for RTAS (#530330)
- Adding better netboot support more work on (#458438)
* Mon Oct 19 2009 Roman Rakus <rrakus@redhat.com> - 1.3.13-20
- Only require hfsutils on fedora and rhel <= 5
- Explicitly build a DEBUG=1 version of yaboot to aid in debugging
- Calling of_open() on a LINUX_NATIVE parttions seesm to work but end up with a
garbage file. Add check to of_open to skip these parttions (#526021).
* Thu Sep 10 2009 Roman Rakus <rrakus@redhat.com> - 1.3.14-19
- Increase TFTP buffer to 32MB
* Wed Sep 09 2009 Roman Rakus <rrakus@redhat.com> - 1.3.14-18
- Do not require hfsutils on RHEL 6
* Fri Aug 14 2009 Roman Rakus <rrakus@redhat.com> - 1.3.14-17
- ipv6 support
- don't build debuginfo package
* Fri Aug 07 2009 Bill Nottingham <notting@redhat.com> - 1.3.14-16
- fix patch file for (#515555)
* Fri Aug 07 2009 Roman Rakus <rrakus@redhat.com> - 1.3.14-15
- Fix bad return code in verbose mode (#515555)
* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.14-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Sun Jun 07 2009 David Woodhouse <David.Woodhouse@intel.com> - 1.3.14-13
- Don't set up bi_recs. Especially not in the middle of the kernel text.
* Mon Apr 06 2009 tony@bakeyournoodle.com - 1.3.14-12
- Increase the TFTP load buffer from 20MiB to 25MiB. (#483051)
* Fri Mar 13 2009 tony@bakeyournoodle.com - 1.3.14-11
- Adding better netboot support (#458438)
- Allocate more buffer space for larger kernels and initrds (#472225)
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.14-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Thu Jan 22 2009 Josh Boyer <jwboyer@gmail.com> - 1.3.14-9
- Add patch to handle relocatable kernels
* Thu Nov 27 2008 Roman Rakus <rrakus@redhat.com> - 1.3.14-8
- Bumped release, so preupgrade is now silent and go through
* Fri Nov 21 2008 David Woodhouse <David.Woodhouse@intel.com> - 1.3.14-7
- Fix 'ybin --bootonce' (#471425)
- Fix maximum token length, to fix preupgrade (#471321)
* Wed Nov 05 2008 Roman Rakus <rrakus@redhat.com> - 1.3.14-6
- Changed kernel load base address
Resolves: #468492
* Mon Aug 11 2008 Roman Rakus <rrakus@redhat.com> - 1.3.14-5
- Clearing in specfile
- Fixed patches for --fuzz=0
* Wed May 28 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 1.3.14-4
- fix license tag
* Wed Apr 16 2008 Roman Rakus <rrakus@redhat.com> - 1.3.14-3
- Upstream 1.3.14
* Thu Mar 27 2008 David Woodhouse <dwmw2@redhat.com> - 1.3.13-11
- Correct off-by-one error in Amiga partition numbers
* Thu Mar 27 2008 David Woodhouse <dwmw2@redhat.com> - 1.3.13-10
- Don't increment partition number to work around bplan firmware
brokenness when the config file was specified on the command line
* Fri Feb 08 2008 David Cantrell <dcantrell@redhat.com> - 1.3.13-9
- Rebuild for gcc-4.3
* Wed Nov 28 2007 David Woodhouse <dwmw2@redhat.com> - 1.3.13-8
- Correct default config file location on Efika
- Disable new USB bindings in efika.forth for now
* Tue Nov 27 2007 David Woodhouse <dwmw2@redhat.com> - 1.3.13-7
- Add efika.forth for fixing up Efika device-tree
* Tue Nov 27 2007 David Woodhouse <dwmw2@redhat.com> - 1.3.13-6
- Detect broken bplan firmware and don't add ":0" to block device names
* Tue Aug 21 2007 David Cantrell <dcantrell@redhat.com> - 1.3.13-5
- Rebuild
* Thu Nov 16 2006 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-4
- Add support for usb/firewire from Alex Kanavin (#208768)
* Thu Nov 09 2006 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-3
- Apply addnote patch (#184714)
* Wed Aug 23 2006 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-2
- Fix ybin with SELinux (#201414)
* Mon Aug 21 2006 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-1
- Fix multi disk G5 patch for all cases
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1.3.13-0.18.1
- rebuild
* Tue Feb 21 2006 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.18
- Drop telnet console patch for now (#182180)
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1.3.13-0.17.1
- bump again for double-long bug on ppc(64)
* Thu Feb 09 2006 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.17
- Fix ofpath for multi-disk G5 (#180182)
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1.3.13-0.16.2
- rebuilt for new gcc4.1 snapshot and glibc changes
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
- rebuilt
* Wed Sep 14 2005 Jeremy Katz <katzj@redhat.com> - 1.3.13-0.16
- fix paths
* Wed Sep 14 2005 Jeremy Katz <katzj@redhat.com> - 1.3.13-0.15
- fix build on ppc64
* Wed Sep 14 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.14
- New netboot patch handling device=alias: for non network case
* Tue Sep 13 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.13
- Print version-release of yaboot
* Mon Sep 12 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.12
- reworking of netboot patch (Nathan Lynch)
* Sat Aug 20 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.11
- drop netboot patch as mac cds fail to load yaboot.conf
* Wed Aug 17 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.10
- No colours on unsupported consoles (eg telnet)
- Improved pSeries netbooting (Nathan Lynch)
* Sun Aug 14 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.9
- Try harder to allocate malloc region
* Thu Aug 11 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.8
- Allow mntpoint to be more than one directory into the partition
as long as magicboot and nvram are not being used.
* Thu Aug 11 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.7
- Fix error in swraid2 patch -- don't dereference NULL pointer.
* Tue Aug 9 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.6
- Fix handling of prom 'read' method, to make Pegasos serial work
* Tue Aug 9 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.5
- Fix Pegasos partition hack
* Tue Aug 9 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.4
- Make default boot after timeout work again
- Pegasos disagrees about partition numbering
* Sat Jul 30 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.3
- Accept config file path on command line
- Make ofpath work on Pegasos
* Fri Jul 29 2005 David Woodhouse <dwmw2@redhat.com> - 1.3.13-0.2
- Workaround claim bug in Pegasos SmartFirmware
- Handle ext2 boot partition
* Fri Jul 22 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.13-0.1
- Upstream 1.3.13
- Add patches on yaboot-1.3.x tree
- Try dropping ppc64 initrd patch
* Tue Mar 15 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.12-9
- GCC 4 rebuild
* Wed Feb 02 2005 Paul Nasrat <pnasrat@redhat.com> - 1.3.12-8
- addnote support for IBM,RPA-Client-Config note (#145739)
- Patch to recognise l-lan as a network device
* Wed Jul 28 2004 Paul Nasrat <pnasrat@redhat.com> - 1.3.12-7
- Add yaboot.conf as ghost
* Sat Jul 10 2004 Paul Nasrat <pnasrat@redhat.com> - 1.3.12-6
- Rebuild
* Sat Jul 10 2004 Paul Nasrat <pnasrat@redhat.com> - 1.3.12-5
- Added hfsutils requires for pmac
* Wed Jun 23 2004 David Woodhouse <dwmw2@redhat.com> - 1.3.12-4
- Increase TFTP load buffer size to 8MiB.
* Fri Jun 18 2004 Jeremy Katz <katzj@redhat.com> - 1.3.12-3
- s/Copyright/License/
- fix build with gcc 3.4
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Mon May 24 2004 Paul Nasrat <pnasrat@redhat.com> 1.3.12-1
- update to 1.3.12
* Tue Apr 20 2004 David Woodhouse <dwmw2@redhat.com> 1.3.10-10
- make yabootconfig use parted if available
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Fri Aug 22 2003 Elliot Lee <sopwith@redhat.com> 1.3.10-8
- Build for rawhide
* Fri Jun 20 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-7
- allow passing configfile name to yabootconfig with -C
* Wed Jun 18 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-6
- don't ship (invalid) default yaboot.conf
- update to newer version of ppc64 initrd patch
* Mon Apr 28 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-5
- clean up how yabootconfig adds stuff, do some rediff'ing
- install ybin, etc in /sbin instead of /usr/sbin (#83229)
* Wed Apr 23 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-4
- make sure there's a newline at the end of yaboot.conf generated by
yabootconfig
* Wed Apr 9 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-3
- try to read product name from /etc/redhat-release instead of hard coding
- add patch (from silo) to allow mounting dirty fs's instead of mounting
read-write
* Thu Apr 3 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-2
- add patch from Peter Bergner <bergner@vnet.ibm.com> to add support for
ppc64 initrds (warning: breaks ppc32 initrds)
* Thu Mar 20 2003 Jeremy Katz <katzj@redhat.com> 1.3.10-1
- update to 1.3.10
- fix ofboot patch to use Red Hat Linux instead of Yellow Dog Linux
- include patch from Dan Burcaw for yabootconfig so that it can be used
from the installer
* Tue Jan 21 2003 Elliot Lee <sopwith@redhat.com> 1.3.8-1
- Update to new version
* Wed Dec 11 2002 Tim Powers <timp@redhat.com> 1.3.6-1b.2rh
- rebuild
- added ExclusiveArch
* Wed Mar 06 2002 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- modify for YDL 2.2
* Fri Dec 07 2001 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- update to 1.3.6
* Sat Oct 06 2001 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- update to 1.3.4
* Sun Sep 30 2001 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- updated to yaboot 1.3.3
* Tue Sep 25 2001 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- add makefile patch
* Sun Sep 23 2001 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- update to 1.3.1
- obsoletes ybin
* Thu Aug 08 2001 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- updated to 1.2.3 per Ben H's urgent announcement
- removed obsoleted patches
* Tue Jan 16 2001 Hollis Blanchard <hollis@terrasoftsolutions.com>
- hacked out bug preventing manual boot from yaboot prompt (may break CHRP)
- removed ybin's man pages
- moved to /usr/lib/yaboot for ybin, FHS compliance
- changed permissions to 644 (can't run yaboot under Linux)
* Sat Nov 18 2000 Hollis Blanchard <hollis@terrasoftsolutions.com>
- updated to yaboot 0.9
- added man pages from ybin
- added sample yaboot.conf and bootscript (and README's)
* Sun Feb 27 2000 Dan Burcaw <dburcaw@terrasoftsolutions.com>
- modified for YDL
* Wed Jan 18 2000 Tom Rini <trini@kernel.crashing.org>
- created