mkefiboot: Add support for disk label files
The Apple boot picker provides drive names by reading small icon files off the filesystem. Add support for including them.
This commit is contained in:
parent
d909789b95
commit
4df59e77b2
@ -2,6 +2,7 @@
|
|||||||
<%
|
<%
|
||||||
EFIBOOTDIR="EFI/BOOT"
|
EFIBOOTDIR="EFI/BOOT"
|
||||||
APPLE_EFI_ICON=inroot+"/usr/share/pixmaps/bootloader/fedora.icns"
|
APPLE_EFI_ICON=inroot+"/usr/share/pixmaps/bootloader/fedora.icns"
|
||||||
|
APPLE_EFI_DISKNAME=inroot+"/usr/share/pixmaps/bootloader/fedora-media.vol"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
mkdir ${EFIBOOTDIR}
|
mkdir ${EFIBOOTDIR}
|
||||||
@ -19,7 +20,7 @@ ${make_efiboot("images/macboot.img", imgtype="apple")}
|
|||||||
eficonf = "%s/BOOT%s.conf" % (EFIBOOTDIR, efiarch)
|
eficonf = "%s/BOOT%s.conf" % (EFIBOOTDIR, efiarch)
|
||||||
args = "--label=ANACONDA"
|
args = "--label=ANACONDA"
|
||||||
if disk: args += " --disk"
|
if disk: args += " --disk"
|
||||||
if imgtype == "apple": args += ' --apple --icon=%s --product="%s %s"' % (APPLE_EFI_ICON, product.name, product.version)
|
if imgtype == "apple": args += ' --apple --icon=%s --diskname=%s --product="%s %s"' % (APPLE_EFI_ICON, APPLE_EFI_DISKNAME, product.name, product.version)
|
||||||
%>
|
%>
|
||||||
%if include_kernel:
|
%if include_kernel:
|
||||||
copy ${KERNELDIR}/vmlinuz ${EFIBOOTDIR}
|
copy ${KERNELDIR}/vmlinuz ${EFIBOOTDIR}
|
||||||
|
@ -27,11 +27,14 @@ def mkefiboot(bootdir, outfile, label):
|
|||||||
'''Make an EFI boot image with the contents of bootdir in EFI/BOOT'''
|
'''Make an EFI boot image with the contents of bootdir in EFI/BOOT'''
|
||||||
mkdosimg(None, outfile, label=label, graft={'EFI/BOOT':bootdir})
|
mkdosimg(None, outfile, label=label, graft={'EFI/BOOT':bootdir})
|
||||||
|
|
||||||
def mkmacboot(bootdir, outfile, label, icon=None, product='Generic'):
|
def mkmacboot(bootdir, outfile, label, icon=None, product='Generic',
|
||||||
|
diskname=None):
|
||||||
'''Make an EFI boot image for Apple's EFI implementation'''
|
'''Make an EFI boot image for Apple's EFI implementation'''
|
||||||
graft = {'EFI/BOOT':bootdir}
|
graft = {'EFI/BOOT':bootdir}
|
||||||
if icon:
|
if icon and os.path.exists(icon):
|
||||||
graft['.VolumeIcon.icns'] = icon
|
graft['.VolumeIcon.icns'] = icon
|
||||||
|
if diskname and os.path.exists(diskname):
|
||||||
|
graft['EFI/BOOT/.disk_label'] = diskname
|
||||||
mkhfsimg(None, outfile, label=label, graft=graft)
|
mkhfsimg(None, outfile, label=label, graft=graft)
|
||||||
macmunge(outfile, product)
|
macmunge(outfile, product)
|
||||||
|
|
||||||
@ -112,6 +115,8 @@ if __name__ == '__main__':
|
|||||||
help="filesystem label to use (default: %(default)s)")
|
help="filesystem label to use (default: %(default)s)")
|
||||||
parser.add_argument("-i", "--icon", metavar="ICONFILE",
|
parser.add_argument("-i", "--icon", metavar="ICONFILE",
|
||||||
help="icon file to include (for Apple EFI image)")
|
help="icon file to include (for Apple EFI image)")
|
||||||
|
parser.add_argument("-n", "--diskname", metavar="DISKNAME",
|
||||||
|
help="disk name image to include (for Apple EFI image)")
|
||||||
parser.add_argument("-p", "--product", metavar="PRODUCT",
|
parser.add_argument("-p", "--product", metavar="PRODUCT",
|
||||||
help="product name to use (for Apple EFI image)")
|
help="product name to use (for Apple EFI image)")
|
||||||
parser.add_argument("bootdir", metavar="EFIBOOTDIR",
|
parser.add_argument("bootdir", metavar="EFIBOOTDIR",
|
||||||
@ -126,9 +131,12 @@ if __name__ == '__main__':
|
|||||||
parser.error("need root permissions")
|
parser.error("need root permissions")
|
||||||
if opt.icon and not opt.imgtype == "apple":
|
if opt.icon and not opt.imgtype == "apple":
|
||||||
print "Warning: --icon is only useful for Apple EFI images"
|
print "Warning: --icon is only useful for Apple EFI images"
|
||||||
|
if opt.diskname and not opt.imgtype == "apple":
|
||||||
|
print "Warning: --diskname is only useful for Apple EFI images"
|
||||||
# do the thing!
|
# do the thing!
|
||||||
if opt.imgtype == "apple":
|
if opt.imgtype == "apple":
|
||||||
mkmacboot(opt.bootdir, opt.outfile, opt.label, opt.icon, opt.product)
|
mkmacboot(opt.bootdir, opt.outfile, opt.label, opt.icon, opt.product,
|
||||||
|
opt.diskname)
|
||||||
else:
|
else:
|
||||||
mkefiboot(opt.bootdir, opt.outfile, opt.label)
|
mkefiboot(opt.bootdir, opt.outfile, opt.label)
|
||||||
if opt.disk:
|
if opt.disk:
|
||||||
|
Loading…
Reference in New Issue
Block a user