diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2017-06-14 16:14:02 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2017-06-14 16:14:02 +0200 |
commit | cebd06d64b4ec930445f285b5d3297f988cd79d1 (patch) | |
tree | d8b3974499844cc294a96440162e4da3ff65b374 | |
parent | c21537e9e0cce6fb38591d1ecf9d93eccb599c90 (diff) | |
download | imagefish-cebd06d64b4ec930445f285b5d3297f988cd79d1.tar.gz |
add clover disk image generator
-rw-r--r-- | clover/config.plist | 60 | ||||
-rw-r--r-- | clover/config.plist.multibeast.good | 247 | ||||
-rw-r--r-- | clover/config.plist.stripped.qemu | 60 | ||||
-rwxr-xr-x | scripts/clover-image.sh | 153 |
4 files changed, 520 insertions, 0 deletions
diff --git a/clover/config.plist b/clover/config.plist new file mode 100644 index 0000000..97fc4fd --- /dev/null +++ b/clover/config.plist @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>Boot</key> + <dict> + <key>Arguments</key> + <string></string> + <key>DefaultVolume</key> + <string>clover</string> + <key>Log</key> + <true/> + <key>Secure</key> + <false/> + <key>Timeout</key> + <integer>3</integer> + </dict> + <key>Devices</key> + <dict> + <key>FakeID</key> + <dict> + <key>XHCI</key> + <string>0x0</string> + </dict> + </dict> + <key>GUI</key> + <dict> + <key>Scan</key> + <dict> + <key>Entries</key> + <true/> + <key>Tool</key> + <true/> + </dict> + <key>ScreenResolution</key> + <string>1024x768</string> + <key>Theme</key> + <string>embedded</string> + </dict> + <key>RtVariables</key> + <dict> + <key>BooterConfig</key> + <string>0x28</string> + <key>CsrActiveConfig</key> + <string>0x3</string> + </dict> + <key>SMBIOS</key> + <dict> + <key>Trust</key> + <false/> + </dict> + <key>SystemParameters</key> + <dict> + <key>InjectKexts</key> + <false/> + <key>InjectSystemID</key> + <true/> + </dict> +</dict> +</plist> diff --git a/clover/config.plist.multibeast.good b/clover/config.plist.multibeast.good new file mode 100644 index 0000000..1f9153e --- /dev/null +++ b/clover/config.plist.multibeast.good @@ -0,0 +1,247 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ACPI</key> + <dict> + <key>DSDT</key> + <dict> + <key>Debug</key> + <false/> + <key>DropOEM_DSM</key> + <false/> + <key>Fixes</key> + <dict> + <key>AddDTGP_0001</key> + <false/> + <key>AddHDMI_8000000</key> + <false/> + <key>AddIMEI_80000</key> + <false/> + <key>AddMCHC_0008</key> + <false/> + <key>AddPNLF_1000000</key> + <false/> + <key>DeleteUnused_400000</key> + <false/> + <key>FIX_ACST_4000000</key> + <false/> + <key>FIX_ADP1_800000</key> + <false/> + <key>FIX_INTELGFX_100000</key> + <false/> + <key>FIX_RTC_20000</key> + <false/> + <key>FIX_S3D_2000000</key> + <false/> + <key>FakeLPC_0020</key> + <false/> + <key>FiX_TMR_40000</key> + <false/> + <key>FiX_WAK_200000</key> + <false/> + <key>FixAirport_4000</key> + <false/> + <key>FixDarwin_0002</key> + <false/> + <key>FixDisplay_0100</key> + <false/> + <key>FixFirewire_0800</key> + <false/> + <key>FixHDA_8000</key> + <false/> + <key>FixHPET_0010</key> + <false/> + <key>FixIDE_0200</key> + <false/> + <key>FixIPIC_0040</key> + <false/> + <key>FixLAN_2000</key> + <false/> + <key>FixRegions_10000000</key> + <false/> + <key>FixSATA_0400</key> + <false/> + <key>FixSBUS_0080</key> + <false/> + <key>FixShutdown_0004</key> + <false/> + <key>FixUSB_1000</key> + <false/> + <key>NewWay_80000000</key> + <false/> + </dict> + <key>Name</key> + <string>DSDT.aml</string> + <key>ReuseFFFF</key> + <false/> + </dict> + <key>HaltEnabler</key> + <false/> + <key>SSDT</key> + <dict> + <key>DropOem</key> + <false/> + <key>Generate</key> + <dict> + <key>CStates</key> + <false/> + <key>PStates</key> + <false/> + </dict> + </dict> + </dict> + <key>Boot</key> + <dict> + <key>Arguments</key> + <string>dart=0</string> + <key>DefaultVolume</key> + <string>clover</string> + <key>Legacy</key> + <string>PBR</string> + <key>Log</key> + <true/> + <key>Secure</key> + <false/> + <key>Timeout</key> + <integer>3</integer> + <key>XMPDetection</key> + <string>NO</string> + </dict> + <key>Devices</key> + <dict> + <key>Audio</key> + <dict> + <key>Inject</key> + <string>1</string> + </dict> + <key>FakeID</key> + <dict> + <key>ATI</key> + <string>0x0</string> + <key>IMEI</key> + <string>0x0</string> + <key>IntelGFX</key> + <string>0x0</string> + <key>LAN</key> + <string>0x0</string> + <key>NVidia</key> + <string>0x0</string> + <key>SATA</key> + <string>0x0</string> + <key>WIFI</key> + <string>0x0</string> + <key>XHCI</key> + <string>0x0</string> + </dict> + <key>USB</key> + <dict> + <key>FixOwnership</key> + <false/> + <key>Inject</key> + <false/> + </dict> + <key>UseIntelHDMI</key> + <false/> + </dict> + <key>DisableDrivers</key> + <array> + <string>Nothing</string> + </array> + <key>GUI</key> + <dict> + <key>Hide</key> + <array> + <string>Windows</string> + <string>\EFI\BOOT\BOOTX64.EFI</string> + </array> + <key>Language</key> + <string>en:0</string> + <key>Mouse</key> + <dict> + <key>Enabled</key> + <true/> + <key>Speed</key> + <integer>8</integer> + </dict> + <key>Scan</key> + <dict> + <key>Entries</key> + <true/> + <key>Legacy</key> + <string>First</string> + <key>Tool</key> + <true/> + </dict> + <key>ScreenResolution</key> + <string>1024x768</string> + <key>Theme</key> + <string>embedded</string> + </dict> + <key>Graphics</key> + <dict> + <key>Inject</key> + <dict> + <key>ATI</key> + <false/> + <key>Intel</key> + <false/> + <key>NVidia</key> + <false/> + </dict> + </dict> + <key>KernelAndKextPatches</key> + <dict> + <key>AppleRTC</key> + <true/> + <key>AsusAICPUPM</key> + <true/> + <key>KernelCpu</key> + <false/> + <key>KernelHaswellE</key> + <false/> + <key>KernelLapic</key> + <false/> + <key>KernelPm</key> + <true/> + <key>KextsToPatch</key> + <array> + <dict> + <key>Comment</key> + <string>External icons patch</string> + <key>Find</key> + <data> + RXh0ZXJuYWw= + </data> + <key>Name</key> + <string>AppleAHCIPort</string> + <key>Replace</key> + <data> + SW50ZXJuYWw= + </data> + </dict> + </array> + </dict> + <key>RtVariables</key> + <dict> + <key>BooterConfig</key> + <string>0x28</string> + <key>CsrActiveConfig</key> + <string>0x3</string> + </dict> + <key>SMBIOS</key> + <dict> + <key>Trust</key> + <false/> + </dict> + <key>SystemParameters</key> + <dict> + <key>InjectKexts</key> + <string>Detect</string> + <key>InjectSystemID</key> + <true/> + <key>NvidiaWeb</key> + <false/> + </dict> +</dict> +</plist> diff --git a/clover/config.plist.stripped.qemu b/clover/config.plist.stripped.qemu new file mode 100644 index 0000000..97fc4fd --- /dev/null +++ b/clover/config.plist.stripped.qemu @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>Boot</key> + <dict> + <key>Arguments</key> + <string></string> + <key>DefaultVolume</key> + <string>clover</string> + <key>Log</key> + <true/> + <key>Secure</key> + <false/> + <key>Timeout</key> + <integer>3</integer> + </dict> + <key>Devices</key> + <dict> + <key>FakeID</key> + <dict> + <key>XHCI</key> + <string>0x0</string> + </dict> + </dict> + <key>GUI</key> + <dict> + <key>Scan</key> + <dict> + <key>Entries</key> + <true/> + <key>Tool</key> + <true/> + </dict> + <key>ScreenResolution</key> + <string>1024x768</string> + <key>Theme</key> + <string>embedded</string> + </dict> + <key>RtVariables</key> + <dict> + <key>BooterConfig</key> + <string>0x28</string> + <key>CsrActiveConfig</key> + <string>0x3</string> + </dict> + <key>SMBIOS</key> + <dict> + <key>Trust</key> + <false/> + </dict> + <key>SystemParameters</key> + <dict> + <key>InjectKexts</key> + <false/> + <key>InjectSystemID</key> + <true/> + </dict> +</dict> +</plist> diff --git a/scripts/clover-image.sh b/scripts/clover-image.sh new file mode 100755 index 0000000..d8d2ccc --- /dev/null +++ b/scripts/clover-image.sh @@ -0,0 +1,153 @@ +#!/bin/sh + +###################################################################### +# defaults + +iso="" +img="" +cfg="" + +###################################################################### +# create work dir + +function msg() { + local txt="$1" + local bold="\x1b[1m" + local normal="\x1b[0m" + echo -e "${bold}### ${txt}${normal}" +} + +function do_cleanup() { + msg "cleaning up ..." + if test "$GUESTFISH_PID" != ""; then + guestfish --remote -- exit >/dev/null 2>&1 || true + fi + sudo rm -rf "$WORK" +} + +WORK="${TMPDIR-/var/tmp}/${0##*/}-$$" +mkdir "$WORK" || exit 1 +trap 'do_cleanup' EXIT + +BASE="$(dirname $0)" + +###################################################################### +# parse args + +function print_help() { +cat <<EOF +usage: $0 [ options ] +options: + --iso <iso-image> + --img <disk-image> + --cfg <clover-config> +EOF +} + +while test "$1" != ""; do + case "$1" in + --iso) + iso="$2" + shift; shift + ;; + --img) + img="$2" + shift; shift + ;; + --cfg) + cfg="$2" + shift; shift + ;; + esac +done + +###################################################################### +# guestfish script helpers + +function fish() { + echo "#" "$@" + guestfish --remote -- "$@" || exit 1 +} + +function fish_init() { + local format + + case "$img" in + *.raw) format="raw" ;; + *) format="qcow2";; + esac + + msg "creating and adding disk image" + fish disk-create $img $format 256M + fish add $img + fish run +} + +function fish_fini() { + fish umount-all +} + +###################################################################### +# sanity checks + +if test ! -f "$iso"; then + echo "ERROR: iso not found: $iso" + exit 1 +fi +if test ! -f "$cfg"; then + echo "ERROR: cfg not found: $cfg" + exit 1 +fi +if test -f "$img"; then + if test "$allow_override" = "yes"; then + rm -f "$img" + else + echo "ERROR: image exists: $img" + exit 1 + fi +fi + +###################################################################### +# go! + +msg "copy files from iso" +guestfish -a "$iso" -m "/dev/sda:/:norock" <<EOF || exit 1 +copy-out /EFI $WORK +EOF + +#msg "[debug] list drivers in EFI/CLOVER" +#(cd $WORK/EFI/CLOVER; find driver* -print) + +export LIBGUESTFS_BACKEND=direct +eval $(guestfish --listen) +if test "$GUESTFISH_PID" = ""; then + echo "ERROR: starting guestfish failed" + exit 1 +fi + +fish_init + +msg "partition disk image" +fish part-init /dev/sda gpt +fish part-add /dev/sda p 2048 200000 +fish part-add /dev/sda p 202048 -2048 +fish part-set-gpt-type /dev/sda 1 C12A7328-F81F-11D2-BA4B-00A0C93EC93B +fish part-set-bootable /dev/sda 1 true +fish mkfs vfat /dev/sda1 label:EFI +fish mkfs vfat /dev/sda2 label:clover +fish mount /dev/sda2 / +fish mkdir /ESP +fish mount /dev/sda1 /ESP + +msg "copy files to disk image" +cp -v "$cfg" $WORK/config.plist +fish mkdir /ESP/EFI +fish mkdir /ESP/EFI/CLOVER +fish copy-in $WORK/EFI/BOOT /ESP/EFI +fish copy-in $WORK/EFI/CLOVER/CLOVERX64.efi /ESP/EFI/CLOVER +fish copy-in $WORK/EFI/CLOVER/drivers64UEFI /ESP/EFI/CLOVER +fish copy-in $WORK/EFI/CLOVER/drivers-Off/drivers64UEFI/OsxAptioFix2Drv-64.efi \ + /ESP/EFI/CLOVER/drivers64UEFI +fish copy-in $WORK/EFI/CLOVER/tools /ESP/EFI/CLOVER +fish copy-in $WORK/config.plist /ESP/EFI/CLOVER +fish_fini |