GRUB2 as the ISO boot loader for POWER arch
Currently, yaboot is the ISO boot loader in fedora and the Fedora on POWER team is making an effort in order to replace it by GRUB2 in the F20 release cycle. I'm sending a lorax patch so you guys can comment on it. I'm planning to create a feature page for that too. This patch only change the lorax template for ppc and should not affect other archs, like x86. -- Paulo Flabiano Smorigo Software Engineer Linux Technology Center - IBM Systems & Technology Group
This commit is contained in:
parent
27a77100f5
commit
44638fbc8d
@ -51,6 +51,8 @@ Requires: syslinux >= 4.02-5
|
|||||||
|
|
||||||
%ifarch ppc ppc64
|
%ifarch ppc ppc64
|
||||||
Requires: kernel-bootwrapper
|
Requires: kernel-bootwrapper
|
||||||
|
Requires: grub2
|
||||||
|
Requires: grub2-tools
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch s390 s390x
|
%ifarch s390 s390x
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<chrp-boot> <description>Linux</description>
|
<chrp-boot>
|
||||||
<os-name>Linux</os-name>
|
<description>grub 2.00</description>
|
||||||
<boot-script>boot &device;:\ppc\chrp\yaboot</boot-script>
|
<os-name>grub 2.00</os-name>
|
||||||
|
<boot-script>boot &device;:\boot\grub\powerpc-ieee1275\core.elf</boot-script>
|
||||||
<icon size=64,64 color-space=3,3,2>
|
<icon size=64,64 color-space=3,3,2>
|
||||||
<bitmap> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
<bitmap> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
||||||
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
||||||
|
34
share/config_files/ppc/grub.cfg.in
Normal file
34
share/config_files/ppc/grub.cfg.in
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
set default=0
|
||||||
|
set timeout=5
|
||||||
|
|
||||||
|
echo -e "\nWelcome to the @PRODUCT@ @VERSION@ installer!\n\n"
|
||||||
|
|
||||||
|
for BITS in 32 64; do
|
||||||
|
if [ -d "/ppc/ppc${BITS}" ]; then
|
||||||
|
menuentry "Install @PRODUCT@ @VERSION@ (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os {
|
||||||
|
linux /ppc/ppc${2}/vmlinuz @ROOT@ ro
|
||||||
|
initrd /ppc/ppc${2}/initrd.img
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "Test this media & install @PRODUCT@ @VERSION@ (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os {
|
||||||
|
linux /ppc/ppc${2}/vmlinuz @ROOT@ rd.live.check ro
|
||||||
|
initrd /ppc/ppc${2}/initrd.img
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "Rescue a @PRODUCT@ system (${BITS}-bit kernel)" $BITS --class fedora --class gnu-linux --class gnu --class os {
|
||||||
|
linux /ppc/ppc${2}/vmlinuz @ROOT@ rescue ro
|
||||||
|
initrd /ppc/ppc${2}/initrd.img
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
submenu 'Other options...' {
|
||||||
|
menuentry 'Reboot' {
|
||||||
|
reboot
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry 'Exit to Open Firmware' {
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
|||||||
<%
|
<%
|
||||||
configdir="tmp/config_files/ppc"
|
configdir="tmp/config_files/ppc"
|
||||||
BOOTDIR="ppc"
|
BOOTDIR="ppc"
|
||||||
|
GRUBDIR="boot/grub"
|
||||||
LIVEDIR="LiveOS"
|
LIVEDIR="LiveOS"
|
||||||
MACDIR=BOOTDIR+"/mac"
|
MACDIR=BOOTDIR+"/mac"
|
||||||
NETBOOTDIR="images/netboot"
|
NETBOOTDIR="images/netboot"
|
||||||
@ -9,7 +10,6 @@ NETBOOTDIR="images/netboot"
|
|||||||
WRAPPER="usr/sbin/wrapper"
|
WRAPPER="usr/sbin/wrapper"
|
||||||
WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
|
WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
|
||||||
|
|
||||||
bitsizes = set()
|
|
||||||
prepboot = ""
|
prepboot = ""
|
||||||
|
|
||||||
## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
|
## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
|
||||||
@ -37,13 +37,18 @@ mkdir ${BOOTDIR}
|
|||||||
## boot stuff for normal (CHRP/PREP) PPC systems
|
## boot stuff for normal (CHRP/PREP) PPC systems
|
||||||
install ${configdir}/bootinfo.txt ${BOOTDIR}
|
install ${configdir}/bootinfo.txt ${BOOTDIR}
|
||||||
install boot/efika.forth ${BOOTDIR}
|
install boot/efika.forth ${BOOTDIR}
|
||||||
mkdir ${BOOTDIR}/chrp
|
|
||||||
install usr/lib/yaboot/yaboot ${BOOTDIR}/chrp
|
mkdir ${GRUBDIR}/powerpc-ieee1275
|
||||||
runcmd ${inroot}/usr/lib/yaboot/addnote ${outroot}/${BOOTDIR}/chrp/yaboot
|
runcmd grub2-mkimage -O powerpc-ieee1275 -d /usr/lib/grub/powerpc-ieee1275 -p '()/boot/grub' \
|
||||||
## special boot dir for PowerMacs
|
-o ${outroot}/${GRUBDIR}/powerpc-ieee1275/core.elf iso9660 ext2 ofnet net tftp http
|
||||||
mkdir ${MACDIR}
|
install /usr/lib/grub/powerpc-ieee1275/*.mod ${GRUBDIR}/powerpc-ieee1275
|
||||||
install usr/lib/yaboot/yaboot ${MACDIR}
|
install /usr/lib/grub/powerpc-ieee1275/*.lst ${GRUBDIR}/powerpc-ieee1275
|
||||||
install ${configdir}/ofboot.b ${MACDIR}
|
|
||||||
|
|
||||||
|
install ${configdir}/grub.cfg.in ${GRUBDIR}/grub.cfg
|
||||||
|
replace @PRODUCT@ '${product.name}' ${GRUBDIR}/grub.cfg
|
||||||
|
replace @VERSION@ ${product.version} ${GRUBDIR}/grub.cfg
|
||||||
|
replace @ROOT@ "${rootarg}" ${GRUBDIR}/grub.cfg
|
||||||
|
|
||||||
## copy mapping and magic files needed for isos
|
## copy mapping and magic files needed for isos
|
||||||
install ${configdir}/mapping ${BOOTDIR}
|
install ${configdir}/mapping ${BOOTDIR}
|
||||||
@ -59,7 +64,6 @@ install ${configdir}/magic ${BOOTDIR}
|
|||||||
## separate dirs/images for each arch
|
## separate dirs/images for each arch
|
||||||
KERNELDIR=BOOTDIR+"/ppc%s" % bits
|
KERNELDIR=BOOTDIR+"/ppc%s" % bits
|
||||||
NETIMG=NETBOOTDIR+"/ppc%s.img" % bits
|
NETIMG=NETBOOTDIR+"/ppc%s.img" % bits
|
||||||
bitsizes.add(bits)
|
|
||||||
%>
|
%>
|
||||||
## install kernel
|
## install kernel
|
||||||
mkdir ${KERNELDIR} ${NETBOOTDIR}
|
mkdir ${KERNELDIR} ${NETBOOTDIR}
|
||||||
@ -71,13 +75,6 @@ install ${configdir}/magic ${BOOTDIR}
|
|||||||
installupgradeinitrd images-${kernel.arch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
|
installupgradeinitrd images-${kernel.arch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
## install arch-specific bootloader config
|
|
||||||
install ${configdir}/yaboot.conf.in ${KERNELDIR}/yaboot.conf
|
|
||||||
replace @BITS@ ${bits} ${KERNELDIR}/yaboot.conf
|
|
||||||
replace @PRODUCT@ '${product.name}' ${KERNELDIR}/yaboot.conf
|
|
||||||
replace @VERSION@ ${product.version} ${KERNELDIR}/yaboot.conf
|
|
||||||
replace @ROOT@ "${rootarg}" ${KERNELDIR}/yaboot.conf
|
|
||||||
|
|
||||||
## kernel-wrapper magic that makes the netboot combined ppc{32,64}.img
|
## kernel-wrapper magic that makes the netboot combined ppc{32,64}.img
|
||||||
runcmd ${inroot}/${WRAPPER} -p of \
|
runcmd ${inroot}/${WRAPPER} -p of \
|
||||||
-D ${inroot}/${WRAPPER_DATA} \
|
-D ${inroot}/${WRAPPER_DATA} \
|
||||||
@ -92,19 +89,6 @@ install ${configdir}/magic ${BOOTDIR}
|
|||||||
%endif
|
%endif
|
||||||
%endfor
|
%endfor
|
||||||
|
|
||||||
## choose correct yaboot.conf
|
|
||||||
mkdir etc
|
|
||||||
%if len(bitsizes) == 2:
|
|
||||||
## both kernels means hybrid - use the magic hybrid config
|
|
||||||
install ${configdir}/yaboot.conf.3264 etc/yaboot.conf
|
|
||||||
replace @PRODUCT@ ${product.name} etc/yaboot.conf
|
|
||||||
replace @VERSION@ ${product.version} etc/yaboot.conf
|
|
||||||
replace @ROOT@ "${rootarg}" etc/yaboot.conf
|
|
||||||
%else:
|
|
||||||
## single arch - use the arch-specific yaboot.conf from above
|
|
||||||
copy ${KERNELDIR}/yaboot.conf etc/yaboot.conf
|
|
||||||
%endif
|
|
||||||
|
|
||||||
## make boot.iso
|
## make boot.iso
|
||||||
runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
|
runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
|
||||||
${prepboot} -part -hfs -T -r -l -J \
|
${prepboot} -part -hfs -T -r -l -J \
|
||||||
@ -113,8 +97,8 @@ runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
|
|||||||
-hfs-volid ${product.version} -hfs-bless ${outroot}/${MACDIR} \
|
-hfs-volid ${product.version} -hfs-bless ${outroot}/${MACDIR} \
|
||||||
-map ${inroot}/${configdir}/mapping \
|
-map ${inroot}/${configdir}/mapping \
|
||||||
-no-desktop -allow-multidot -graft-points \
|
-no-desktop -allow-multidot -graft-points \
|
||||||
etc=${outroot}/etc \
|
|
||||||
${BOOTDIR}=${outroot}/${BOOTDIR} \
|
${BOOTDIR}=${outroot}/${BOOTDIR} \
|
||||||
|
${GRUBDIR}=${outroot}/${GRUBDIR} \
|
||||||
${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
|
${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
|
||||||
${LIVEDIR}=${outroot}/${LIVEDIR}
|
${LIVEDIR}=${outroot}/${LIVEDIR}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user