โดย Flavio De Stefano
บทช่วยสอนนี้สำหรับผู้ที่ต้องการ USB Stick ที่ติดตั้ง Kali Linux แบบ Full Installation (ไม่ใช่ Live USB with Persistence) ใช้กับ Mac ได้
ปัญหา: ทำไม Kali USB Boot ไม่ได้บน Mac?
Kali Installer สร้าง Partition ด้วย VFAT File System แต่ Mac Bootloader รู้จักเฉพาะ HFS+ Partition พร้อมไฟล์ Boot ที่จำเป็น → Mac ไม่เห็น USB เป็น Bootable
สิ่งที่ต้องเตรียม
- Mac (Intel หรือ Apple Silicon — บทช่วยสอนนี้สำหรับ Mac Intel)
- USB Stick ตัวแรก: โหลด Kali ISO Installer (สร้างด้วย
dd) - USB Stick ตัวที่สอง (Target): ติดตั้ง Kali ลงไปที่นี่ — ขนาด 16GB+ USB 3.0 แนะนำ (หรือ SD Card / External SSD)
อ้างอิงจาก: Ubuntu Installation on USB Stick with Pure EFI Boot (Mac Compatible) — ปรับให้เข้ากับ Kali
ขั้นตอนที่ 1: สร้าง Kali Live USB (Installer)
$ sudo dd if={KALI_ISO.iso} of=/dev/{USB_INSTALLER} bs=1m
Reboot Mac → เสียบ USB ทั้ง 2 ตัว → กด Option (⌥) เลือก EFI Boot เข้า Live Installer
ขั้นตอนที่ 2: ติดตั้ง Kali ลง Target USB (Manual Partitioning)
- ใน Installer: เลือก Timezone, Keyboard ตามปกติ
- หน้า Partition Disks → เลือก Manual
- เลือก Target USB Drive (ดูจากขนาด/ชื่อ) → Continue (สร้าง Partition Table)
- กลับหน้าเดิม → เลือก FREE SPACE ภายใต้ Target Drive → Continue
- เลือก Automatically partition the free space → ตามค่า Default → Finish partitioning and write changes to disk
- รอติดตั้ง ~30 นาที
ขั้นตอนที่ 3: Boot จาก GRUB Live (เพื่อเข้าระบบ Kali ที่ติดตั้งแล้ว)
Mac Reboot → กด Option (⌥) → เลือก EFI Boot อีกครั้ง → จะเข้าสู่ GRUB Menu ของ Live USB
ใน GRUB กด c เข้า GRUB CLI
หา Disk/Partition ของ Kali ที่ติดตั้งไว้
grub> ls
(memdisk) (hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) ...
ถอด USB Installer ออก → พิมพ์ ls อีกครั้ง → hd{X} ที่หายไปคือ Target USB
หา Partition ที่มี /boot/grub (มักเป็น gpt2):
grub> ls (hdX,gpt2)/boot/grub
unicode.pf2 ... ← ถ้าเจอ unicode.pf2 = ถูกต้อง
ดู UUID ของ Partition นั้น:
grub> ls -l (hdX,gpt2)
Partition hd2,gpt2: Filesystem type ext* ... UUID e86c20b9-83e1-447d-a3be-d1ddaad6c4c6 ...
จด UUID ไว้
Boot เข้า Kali ที่ติดตั้งแล้ว ผ่าน GRUB CLI
(ใช้ Tab Autocomplete ช่วยพิมพ์ path vmlinuz/initrd)
grub> set root=(hdX,gpt2)
grub> linux /boot/vmlinuz-...efi.signed root=UUID=your-uuid-here
grub> initrd /boot/initrd.img-...
grub> boot
จะเข้าสู่ Full Kali Installation (Login ด้วย Password ที่ตั้งตอน Install)
ขั้นตอนที่ 4: แก้ EFI Partition ให้ Boot ได้จาก Mac Bootloader โดยตรง
หลัง Login เข้า Kali แล้ว ให้แก้ Partition Table และ Reinstall GRUB ให้ใช้ HFS+
4.1 เปลี่ยน Partition Type จาก EF00 (EFI) เป็น AF00 (HFS+)
$ fdisk -l # หา Target Disk (เช่น /dev/sdd)
$ gdisk /dev/sdd
Command (? for help): p # ดู Partition Table — Partition 1 ควรเป็น EF00 512MiB
Command (? for help): d # Delete Partition 1
Partition number (1-3): 1
Command (? for help): n # New Partition
Partition number (1-128, default 1): 1
First/Last sector: Enter (Default)
Hex code or GUID (L to show codes, Enter = 8300): AF00 # Apple HFS/HFS+
Command (? for help): w # Write
Do you want to proceed? (Y/N): Y
4.2 Format Partition ใหม่เป็น HFS+
ต้องติดตั้ง hfsprogs (จาก Debian Repo):
$ echo "deb https://ftp.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/debian.list
$ apt update
$ apt install hfsprogs
$ mkfs.hfsplus /dev/sdd1 -v Kali # Format Partition 1 เป็น HFS+ Label "Kali"
4.3 แก้ /etc/fstab
$ gedit /etc/fstab
หาบรรทัด:
# /boot/efi was on /dev/sdX1 during installation
UUID=XXXXXXX /boot/efi vfat defaults 0 1
ลบ 2 บรรทัดนี้ออก
Unmount เดิม:
$ mount | grep /boot/efi
/dev/sdY1 on /boot/efi ...
$ umount /dev/sdY1
เพิ่ม Entry ใหม่ (Auto-detect FS):
$ echo "UUID=$(blkid -o value -s UUID /dev/sdd1) /boot/efi auto defaults 0 0" >> /etc/fstab
4.4 Reinstall GRUB ให้ใช้ HFS+ EFI Partition
$ mkdir -p /boot/efi/EFI/Kali
$ echo "This file is required for booting" > /boot/efi/EFI/Kali/mach_kernel
$ echo "This file is required for booting" > /boot/efi/mach_kernel
$ grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id=Kali
4.5 "Bless" Bootloader ให้ Mac Bootloader รู้จัก (hfs-bless)
$ cd /root
$ git clone https://github.com/detly/mactel-boot
$ cd mactel-boot
$ make
$ ./hfs-bless /boot/efi/EFI/Kali/System/Library/CoreServices/boot.efi
4.6 สร้าง GRUB Config ใหม่
$ sed -i 's/GRUB_HIDDEN/#GRUB_HIDDEN/g' /etc/default/grub
$ sed -i 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=0.1/' /etc/default/grub
$ grub-mkconfig -o /boot/grub/grub.cfg
Reboot → กด Option (⌥) → ควรเห็น USB Stick ใน Mac Bootloader แล้ว!
เสริม: รัน USB นี้ใน VirtualBox บน macOS
สร้าง VMDK Raw Disk Point ไปที่ USB:
$ diskutil list # หา Disk Identifier (เช่น /dev/disk3)
$ diskutil unmountDisk /dev/disk3
$ sudo VBoxManage internalcommands createrawvmdk -filename ~/Kali.vmdk -rawdisk /dev/disk3
$ chmod 777 ~/Kali.vmdk
$ chmod 777 /dev/disk3
ใน VirtualBox UI:
- New VM → Type: Linux, Version: Debian (64-bit)
- Hard Disk: Choose Existing → เลือก
~/Kali.vmdk - Settings → System → Motherboard → Enable EFI
- Start VM → กด F12 ทันที → Boot Maintenance Manager → Boot from File → SATA_DRIVE > EFI > Kali > System > Library > CoreServices > boot.efi
จะบูทเข้าสู่ Kali ใน VM ได้!
Stay tuned :) 🎯