f640a2faab
New images find their root device by looking at the CDLABEL. Since pungi is building ISO images separately from lorax, if it uses a different ISO Volume Label we'll end up with unbootable images. This changes the volume labels to match what pungi uses, so both should boot OK.
94 lines
3.2 KiB
Cheetah
94 lines
3.2 KiB
Cheetah
<%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel"/>
|
|
<%
|
|
configdir="tmp/config_files"
|
|
BOOTDIR="ppc"
|
|
LIVEDIR="LiveOS"
|
|
MACDIR=BOOTDIR+"/mac"
|
|
NETBOOTDIR="images/netboot"
|
|
|
|
WRAPPER="usr/sbin/wrapper"
|
|
WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
|
|
|
|
bitsizes = set()
|
|
prepboot = ""
|
|
%>
|
|
|
|
mkdir ${LIVEDIR}
|
|
install ${runtime_img} ${LIVEDIR}/squashfs.img
|
|
|
|
## basic ppc stuff
|
|
mkdir ${BOOTDIR}
|
|
install ${configdir}/bootinfo.txt ${BOOTDIR}
|
|
install boot/efika.forth ${BOOTDIR}
|
|
## boot dir for CHRP systems
|
|
mkdir ${BOOTDIR}/chrp
|
|
install usr/lib/yaboot/yaboot ${BOOTDIR}/chrp
|
|
## boot dir for PowerMacs
|
|
mkdir ${MACDIR}
|
|
install usr/lib/yaboot/yaboot ${MACDIR}
|
|
install ${configdir}/ofboot.b ${MACDIR}
|
|
|
|
%for kernel in kernels:
|
|
<%
|
|
bits = 64 if kernel.arch == "ppc64" else 32
|
|
KERNELDIR=BOOTDIR+"/ppc%s" % bits
|
|
NETIMG=NETBOOTDIR+"/ppc%s.img" % bits
|
|
bitsizes.add(bits)
|
|
%>
|
|
mkdir ${KERNELDIR} ${NETBOOTDIR}
|
|
install ${configdir}/yaboot.conf.in ${KERNELDIR}/yaboot.conf
|
|
installkernel images-${kernel.arch} ${kernel.path} ${KERNELDIR}/vmlinuz
|
|
installinitrd images-${kernel.arch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
|
|
|
|
replace @PRODUCT@ ${product.name} ${KERNELDIR}/yaboot.conf
|
|
replace @VERSION@ ${product.version} ${KERNELDIR}/yaboot.conf
|
|
replace @BITS@ ${bits} ${KERNELDIR}/yaboot.conf
|
|
replace @ROOT@ root=live:CDLABEL=PBOOT ${KERNELDIR}/yaboot.conf
|
|
|
|
## kernel-wrapper magic that makes the netboot combined ppc{32,64}.img
|
|
runcmd ${inroot}/${WRAPPER} -p of \
|
|
-D ${inroot}/${WRAPPER_DATA} \
|
|
-i ${outroot}/${KERNELDIR}/initrd.img \
|
|
${outroot}/${KERNELDIR}/vmlinuz \
|
|
-o ${outroot}/${NETIMG}
|
|
treeinfo images-${kernel.arch} zimage ${NETIMG}
|
|
## PReP is 32-bit only
|
|
%if bits == 32:
|
|
## Yes, this is supposed to be a relative path
|
|
<% prepboot="-prep-boot " + NETIMG %>
|
|
%endif
|
|
%endfor
|
|
|
|
runcmd ${inroot}/usr/lib/yaboot/addnote ${outroot}/${BOOTDIR}/chrp/yaboot
|
|
|
|
## copy yaboot.conf into /etc
|
|
mkdir etc
|
|
%if len(bitsizes) == 2:
|
|
## magic ppc biarch tree! we need magic ppc biarch 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@ 'root=live:CDLABEL=${isolabel|udev}' etc/yaboot.conf
|
|
%else:
|
|
copy ${KERNELDIR}/yaboot.conf etc/yaboot.conf
|
|
%endif
|
|
|
|
runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
|
|
${prepboot} -part -hfs -T -r -l -J \
|
|
-A "${product.name} ${product.version}" -sysid PPC -V '${isolabel}' \
|
|
-volset "${product.version}" -volset-size 1 -volset-seqno 1 \
|
|
-hfs-volid ${product.version} -hfs-bless ${outroot}/${MACDIR} \
|
|
-map ${inroot}/${configdir}/mapping \
|
|
-no-desktop -allow-multidot -graft-points \
|
|
etc=${outroot}/etc \
|
|
${BOOTDIR}=${outroot}/${BOOTDIR} \
|
|
${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
|
|
${LIVEDIR}=${outroot}/${LIVEDIR}
|
|
|
|
%if len(bitsizes) == 2:
|
|
treeinfo images-ppc boot.iso images/boot.iso
|
|
treeinfo images-ppc64 boot.iso images/boot.iso
|
|
%else:
|
|
treeinfo images-${kernel.arch} boot.iso images/boot.iso
|
|
%endif
|