Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Mac

ติดตั้ง Kali Linux บน USB ด้วย EFI Boot บน Mac: คู่มือฉบับสมบูรณ์ + Virtualization Tips

โดย 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)

  1. ใน Installer: เลือก Timezone, Keyboard ตามปกติ
  2. หน้า Partition Disks → เลือก Manual
  3. เลือก Target USB Drive (ดูจากขนาด/ชื่อ) → Continue (สร้าง Partition Table)
  4. กลับหน้าเดิม → เลือก FREE SPACE ภายใต้ Target Drive → Continue
  5. เลือก Automatically partition the free space → ตามค่า Default → Finish partitioning and write changes to disk
  6. รอติดตั้ง ~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:

  1. New VM → Type: Linux, Version: Debian (64-bit)
  2. Hard Disk: Choose Existing → เลือก ~/Kali.vmdk
  3. Settings → System → Motherboard → Enable EFI
  4. Start VM → กด F12 ทันที → Boot Maintenance Manager → Boot from File → SATA_DRIVE > EFI > Kali > System > Library > CoreServices > boot.efi

จะบูทเข้าสู่ Kali ใน VM ได้!


Stay tuned :) 🎯