Am installing the latest, (2016.2) as of today, version on a macmini 2,1, trying to have a triple boot on it. Lion and Win 7 are installed, via Bootcamp. Had the dreaded EFI32 related problem, kept getting the "Select CD-ROM Boot Type" dialog, with no possibility to type anything. Did a lot of trial and research, burned a nice pile of unusable dvd's from both the 32 and 64bit official versions, until I found a pretty straightforward method in this post. The resulting iso was recognised at startup while holding the "alt" key, (as a windows disk), and is running the installer as I type. In short:
• Download "kali-linux-2016.2-amd64.iso"
• create a folder on your desktop (e.g. "Kali_bootable")
• copy the above ISO in the newly created folder
Convert the ISO
This is done via a very simple C program.
First, start TextEdit, copy / paste the below code and save it in "Kali_bootable", as isomacprog.c (it will end with a .txt extension, erase it once it has been saved).
Code:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
//static char *iso_name = {"mac.iso"};
//cc -g -Wall isomacprog.c -o isomacprog
int main(int argc, char **argv)
{
int fd, ret;
unsigned char buf[2048 - 64];
off_t lba;
size_t buf_size = 2048 - 64;
if (argc < 2) {
fprintf(stderr, "No iso name assigned\n");
exit(1);
}
char *iso_name = argv[1];
fd = open(iso_name, O_RDWR);
if (fd == -1)
goto err_ex;
if (lseek(fd, (off_t) 32768 + 2048 + 71, SEEK_SET) == -1)
goto err_ex;
ret = read(fd, buf, 4);
if (ret == -1)
goto err_ex;
if (ret < 4) {
fprintf(stderr, "Cannot read 4 bytes from %s\n", iso_name);
exit(1);
}
lba = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
if (lseek(fd, lba * 2048 + 64, SEEK_SET) == -1)
goto err_ex;
memset(buf, 0, buf_size);
ret = write(fd, buf, buf_size);
if (ret == -1)
goto err_ex;
if (ret < buf_size) {
fprintf(stderr, "Cannot write %d bytes to %s\n", (int) buf_size, iso_name);
exit(1);
}
close(fd);
printf("done\n");
exit(0);
err_ex:;
perror(iso_name);
exit(1);
}
Now we'll have to compile it in order to create an executable. Open the Terminal (HD -> Applications -> Utilities) and type
Code:
cc -g -Wall /Users/yourusername/Desktop/Kali_bootable/isomacprog.c -o /Users/yourusername/Desktop/Kali_bootable/isomacprog
• do not forget to correct the pathes to your real user folder (replace "yourusername" by the real one, e.g. "steve"
• you can drag and drop the "isomacprog.c" file in the Terminal from the "Kali_bootable" folder previously created on your Desktop
• the executable output file to be created "isomacprog" can be named the same way, just remove the .c ending
You should end with a new executable file named "isomacprog" in the "Kali_bootable" folder.
After that, make a COPY of the original ISO
Code:
cp /Users/yourusername/Desktop/Kali_bootable/kali-linux-2016.2-amd64.iso /Users/yourusername/Desktop/Kali_bootable/kali-linux-2016.2-amd64_oldmacversion.iso
• you can drag and drop the "kali-linux-2016.2-amd64.iso" file in the Terminal from the "Kali_bootable" folder previously created on your Desktop
• you can drag and drop the "kali-linux-2016.2-amd64.iso" file in the Terminal from the "Kali_bootable" folder previously created on your Desktop and just modify it's name (add for ex. "_oldmacversion") for the output file
A new .ISO named "kali-linux-2016.2-amd64_oldmacversion.iso" should then appear in the "Kali_bootable" folder on your destop
Then modify it into a bootable under EFI32 version
Code:
/Users/yourusername/Desktop/Kali_bootable/isomacprog /Users/yourusername/Desktop/Kali_bootable/kali-linux-2016.2-amd64_oldmacversion.iso
You now can proceed with burning the new and modified .ISO named "kali-linux-2016.2-amd64_oldmacversion.iso"
It should appear as a windows disk after holding the "alt" key at startup on a mac with 32bit EFI and run normally, allowing you to use it as a live cd or proceed with the installation.
In the hope it helps :-)