aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2017-06-14 16:14:02 +0200
committerGerd Hoffmann <kraxel@redhat.com>2017-06-14 16:14:02 +0200
commitcebd06d64b4ec930445f285b5d3297f988cd79d1 (patch)
treed8b3974499844cc294a96440162e4da3ff65b374
parentc21537e9e0cce6fb38591d1ecf9d93eccb599c90 (diff)
downloadimagefish-cebd06d64b4ec930445f285b5d3297f988cd79d1.tar.gz
add clover disk image generator
-rw-r--r--clover/config.plist60
-rw-r--r--clover/config.plist.multibeast.good247
-rw-r--r--clover/config.plist.stripped.qemu60
-rwxr-xr-xscripts/clover-image.sh153
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