Date: Fri, 12 Sep 2014 16:37:57 +0000 (UTC) From: Ed Maste <emaste@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r271470 - stable/10/release/amd64 Message-ID: <201409121637.s8CGbvmJ032512@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: emaste Date: Fri Sep 12 16:37:56 2014 New Revision: 271470 URL: http://svnweb.freebsd.org/changeset/base/271470 Log: MFC r264995 (nwhitehorn): Add script to setup bootable CD ISOs for both BIOS and EFI systems. Tested and working on QEMU. Actually using this script as the regular image generator, like with the memstick one, will require that the kernel support EFI too. In particular, the following two things are required: 1. vt(9) be the default console driver 2. vt_efifb and vt_vga be able to coexist usefully in the same kernel One other note here is that this requires newfs_msdos and mdconfig, which is really ugly. NetBSD's makefs at least seems to support FAT now. If that actually works, it should be imported and we can get rid of the mdconfig mess. Approved by: re Relnotes: Yes Sponsored by: The FreeBSD Foundation Added: stable/10/release/amd64/mkisoimages-uefi.sh - copied unchanged from r264995, head/release/amd64/mkisoimages-uefi.sh Modified: Directory Properties: stable/10/ (props changed) Copied: stable/10/release/amd64/mkisoimages-uefi.sh (from r264995, head/release/amd64/mkisoimages-uefi.sh) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/release/amd64/mkisoimages-uefi.sh Fri Sep 12 16:37:56 2014 (r271470, copy of r264995, head/release/amd64/mkisoimages-uefi.sh) @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Module: mkisoimages.sh +# Author: Jordan K Hubbard +# Date: 22 June 2001 +# +# $FreeBSD$ +# +# This script is used by release/Makefile to build the (optional) ISO images +# for a FreeBSD release. It is considered architecture dependent since each +# platform has a slightly unique way of making bootable CDs. This script +# is also allowed to generate any number of images since that is more of +# publishing decision than anything else. +# +# Usage: +# +# mkisoimages.sh [-b] image-label image-name base-bits-dir [extra-bits-dir] +# +# Where -b is passed if the ISO image should be made "bootable" by +# whatever standards this architecture supports (may be unsupported), +# image-label is the ISO image label, image-name is the filename of the +# resulting ISO image, base-bits-dir contains the image contents and +# extra-bits-dir, if provided, contains additional files to be merged +# into base-bits-dir as part of making the image. + +if [ "x$1" = "x-b" ]; then + # This is highly x86-centric and will be used directly below. + bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot" + + # Make EFI system partition (should be done with makefs in the future) + dd if=/dev/zero of=efiboot.img bs=4k count=100 + device=`mdconfig -a -t vnode -f efiboot.img` + newfs_msdos -F 12 -m 0xf8 /dev/$device + mkdir efi + mount -t msdosfs /dev/$device efi + mkdir -p efi/efi/boot + cp ${4}/boot/loader.efi efi/efi/boot/bootx64.efi + umount efi + rmdir efi + mdconfig -d -u $device + bootable="-o bootimage=i386;efiboot.img -o no-emul-boot $bootable" + + shift +else + bootable="" +fi + +if [ $# -lt 3 ]; then + echo Usage: $0 '[-b] image-label image-name base-bits-dir [extra-bits-dir]' + exit 1 +fi + +LABEL=`echo $1 | tr '[:lower:]' '[:upper:]'`; shift +NAME=$1; shift + +publisher="The FreeBSD Project. http://www.FreeBSD.org/" +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab +makefs -t cd9660 $bootable -o rockridge -o label=$LABEL -o publisher="$publisher" $NAME $* +rm $1/etc/fstab +rm -f efiboot.img
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409121637.s8CGbvmJ032512>