โดย ฟลาวิโอ เด สเตฟาโน
บทช่วยสอนนี้เหมาะสำหรับทุกคนที่ต้องการแท่ง USB ที่มีการติดตั้ง Kali แบบเต็ม เพื่อใช้กับ Mac ของคุณ สิ่งนี้ไม่ได้มีวัตถุประสงค์เพื่อทำการติดตั้ง Live Kali ด้วยความต่อเนื่อง
ปัญหาเมื่อคุณทำการติดตั้ง Kali บนแท่ง USB คือ Kali แบ่งพาร์ติชันดิสก์ด้วยระบบไฟล์ VFAT Mac OS รู้จักเฉพาะพาร์ติชัน HFS+ พร้อมด้วยไฟล์บางไฟล์ที่จำเป็นสำหรับพาร์ติชัน ป>
ดังนั้น คุณต้องมี:
- เครื่อง Mac ของคุณ
- แท่ง USB พร้อมตัวติดตั้ง Kali ISO
- อุปกรณ์ USB เป้าหมาย, การ์ด SD หรือไดรฟ์ภายนอก SSD ที่คุณจะติดตั้ง Kali (แนะนำขนาด 16GB และ USB 3.0)
บทช่วยสอนนี้ได้รับแรงบันดาลใจอย่างมากจากบทช่วยสอนนี้พร้อมการแก้ไขที่เหมาะสมสำหรับ Kali https://medium.com/@mmiglier/ubuntu-installation-on-usb-stick-with-pure-efi-boot-mac-เข้ากันได้กับ-469ad33645c9 ป>
การติดตั้ง USB Live
ก่อนอื่น ให้ติดตั้ง Kali บนแท่ง USB โดยทำตามบทช่วยสอนนี้ ฉันจะไม่รบกวนคุณเกี่ยวกับวิธีดำเนินการขั้นตอนนี้ แต่เริ่มต้นที่นี่:
$ sudo dd if={KALI_ISO.iso} of=/dev/{USB} bs=1m
เมื่อคุณพร้อม ให้รีบูท Mac ของคุณ ใส่แท่ง USB ทั้งสองอัน จากนั้นกด ALT และเลือก การบูต EFI เพื่อเริ่มโปรแกรมติดตั้ง Live

โปรแกรมติดตั้ง Kali จะถามคำถามต่างๆ เกี่ยวกับเขตเวลาและรูปแบบแป้นพิมพ์ของคุณ
ดำเนินการต่อจนกว่าจะขอให้คุณแบ่งพาร์ติชันดิสก์ ให้เลือก:ด้วยตนเอง จากนั้นเลือกเป้าหมาย USB ของคุณ ไดรฟ์ (ที่คุณต้องการติดตั้ง Kali) คุณสามารถรับรู้ได้จากปัจจัยต่างๆ เช่น ตามขนาดของมัน คลิกดำเนินการต่อ: นี่จะแบ่งพาร์ติชันไดรฟ์ของคุณ
ตอนนี้กลับมาที่หน้าจอเดิมอีกครั้งและเลือกพื้นที่ว่าง ใต้ไดรฟ์เป้าหมาย USB คลิก ดำเนินการต่อ และเลือก แบ่งพาร์ติชันพื้นที่ว่างโดยอัตโนมัติ ปฏิบัติตามตัวเลือกที่แนะนำ จากนั้นคลิกที่ เสร็จสิ้นการแบ่งพาร์ติชันและเขียนการเปลี่ยนแปลงลงดิสก์ .
กระบวนการติดตั้งในขณะนี้จะคัดลอกข้อมูลลงดิสก์ รอจนกว่าจะเสร็จสิ้น (ใช้เวลาประมาณ 30 นาที)
บูตจาก GRUB Live
เมื่อเสร็จแล้ว Mac ของคุณจะรีบูตและคุณต้องกด ALT อีกครั้ง เลือก การบูต EFI อีกครั้ง
สิ่งที่เราต้องทำตอนนี้คือโหลดระบบ Kali ที่ติดตั้งไว้ผ่าน Live GRUB เนื่องจากระบบที่เราติดตั้งไม่มีบูตโหลดเดอร์ที่ MacOS รู้จัก
เมื่อโหลด GRUB แล้ว ให้กด c เพื่อรับอินเทอร์เฟซบรรทัดคำสั่ง GRUB
ตอนนี้คุณต้องเข้าใจว่า HD ใดคือการติดตั้ง Kali ของคุณ เมื่อต้องการทำเช่นนี้ เมื่อโหลด GRUB cli แล้ว ให้พิมพ์ ls; นำแท่ง USB ออกแล้วพิมพ์ ls อีกครั้ง
grub> ls
(memdisk) (hd0) (hd1) (hd1,gpt3) (hd1, gpt2) (hd1,gpt1) ...
คุณจะสังเกตเห็นว่า hd{X} หายไป:นั่นคือแรงผลักดันของคุณ ตอนนี้คุณต้องค้นหา gpt. ของคุณ อาจเป็น gpt2 , แต่เพื่อความแน่ใจ ให้พิมพ์:
grub> ls (hdX,gpt2)/boot/grub
unicode.pf2 ...
หากคำสั่งระบุว่า unicode.. มันเป็น gpt ที่ถูกต้อง ลอง gpts อื่น ๆ มิฉะนั้น ตอนนี้ให้ค้นหา UUID ของพาร์ติชันของคุณแล้วใส่คำอธิบายประกอบ
grub> ls -l (hdX},gpt{X})
Partition hd2,gpt2: Filesystem type ext* 〈...snip...〉 UUID e86c20b9-83e1-447d-a3be-d1ddaad6c4c6 - Partition start at [...]
ตอนนี้เราไม่สามารถตั้งค่าพารามิเตอร์เป็น GRUB เพื่อบูตได้ (ใช้ แท็บ กุญแจสำคัญในการเติมข้อความอัตโนมัติ):
grub> set root=(hd{X},gpt{X})
grub> linux /boot/vmlinuz〈...tab here!...〉.efi.signed root=UUID=〈the UUID〉
grub> initrd /boot/initrd〈...tab here!...〉
grub> boot
นี่ควรบูต การติดตั้ง Kali แบบเต็ม ของคุณ โดยใช้ Live GRUB คุณสามารถแยกความแตกต่างจากสภาพแวดล้อม Live ด้วยรหัสผ่านที่ระบบรู้จักในระหว่างกระบวนการเข้าสู่ระบบ
การแก้ไขพาร์ติชัน EFI
เมื่อคุณเข้าสู่ระบบในการติดตั้ง Kali แล้ว ให้เปิด Terminal แล้วพิมพ์:
$ fdisk -l
และค้นหาไดรฟ์ของคุณ
ตอนนี้ เปิด gdisk (ติดตั้งโดยค่าเริ่มต้นบน Kali) เพื่อแบ่งพาร์ติชันไดรฟ์ (โปรดใช้ความระมัดระวังเป็นพิเศษที่นี่):
$ gdisk /dev/sd{X}
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: hybrid
BSD: not present
APM: not present
GPT: present
Found valid GPT with hybrid MBR; using GPT.
Command (? for help):
พิมพ์ตารางพาร์ติชันและยืนยันว่าพาร์ติชันแรกมีประเภท EF00:
Command (? for help): p
Disk /dev/sdd: ...
[...]
Number Start (sector) End (sector) Size Code Name
1 2048 1050623 512.0 MiB EF00 EFI System Partition
[...]
ตอนนี้เราต้อง:
- ลบพาร์ติชัน EF00 นั้น
- สร้าง HFS+ ใหม่ทันทีในตำแหน่ง
Command (? for help): d
Partition number (1-3): 1
Command (? for help): n
Partition number (1-128, default 1): 1
Just leave defaults values in the sector phase
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): AF00
Changed type of partition to 'Apple HFS/HFS+'
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdd.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
ตอนนี้เรามีพาร์ติชัน HFS+ ที่ไม่ได้ฟอร์แมตแล้ว ในการฟอร์แมต เราต้องการเครื่องมือบางอย่าง แต่เพื่อให้ได้เครื่องมือเหล่านี้ เราจำเป็นต้องเพิ่มรายการแหล่งที่มา Debian ไปที่ apt. ป>
$ echo "deb http://ftp.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/debian.list
$ apt update
$ apt install hfsprogs
เราสามารถฟอร์แมตพาร์ติชั่นนั้นได้:
$ mkfs.hfsplus /dev/sd{X}1 -v Kali
Initialized /dev/sd{X}1 as a 512 MB HFS Plus volume
ตอนนี้เราต้องแก้ไข /etc/fstab ไฟล์:
$ gedit /etc/fstab
นี่จะเป็นการเปิด Gedit ในไฟล์นี้ ให้แปลบรรทัดเหล่านี้:
# /boot/efi เปิด /dev/sd{X}1 ระหว่างการติดตั้ง
UUID={XXXXXXX} /boot/efi vfat ค่าเริ่มต้น 0 1 ป>
และลบออก
ตอนนี้ ให้ถอนการติดตั้งพาร์ติชันสำหรับเริ่มระบบ โดยแปลเป็นภาษาท้องถิ่นโดยใช้:
$ mount | grep /boot/efi
/dev/sd{Y}1 on /boot/efi ...
$ umount /dev/sd{Y}1
จากนั้นรันสิ่งนี้เพื่อเพิ่มรายการที่จำเป็นลงในไฟล์ fstab ของคุณ:
$ echo "UUID=$(blkid -o value -s UUID /dev/sd{X}1) /boot/efi auto defaults 0 0" >> /etc/fstab
ตอนนี้เราต้องติดตั้ง GRUB ใหม่เพื่อให้สามารถใช้พาร์ติชัน HFS+ ที่จัดรูปแบบใหม่สำหรับข้อมูล EFI ได้:
$ 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
จากนั้นเราจำเป็นต้อง "อวยพร" รหัส bootloader เพื่อให้ Mac bootloader ทำการบู๊ตได้ เพื่อทำเช่นนั้น เราจำเป็นต้องมี hfsbless ไบนารีที่ไม่สามารถใช้งานได้ผ่าน apt ไม่มีปัญหา เพียงโคลนพื้นที่เก็บข้อมูลและสร้าง:
$ 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
ขั้นตอนสุดท้ายคือการสร้างการกำหนดค่าด้วง:
$ 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
เพอร์เฟคโต! ตอนนี้ให้รีบูตและคุณจะเห็นแท่ง USB ของคุณใน bootloader ของ Mac โดยกด ALT .
การจำลอง USB ผ่าน Virtualbox
หากคุณต้องการบูตอุปกรณ์ USB นี้ผ่าน Virtualbox (บน Mac OSX) มีเคล็ดลับง่ายๆ ให้ทำเช่นนั้น
ก่อนอื่น คุณต้องสร้างดิสก์ VMDK ที่ชี้ไปยังเซกเตอร์ของแท่ง USB ของคุณ ดังนั้น เรามาระบุดิสก์นั้นกันดีกว่า:
$ diskutil list
/dev/disk0 (internal):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 500.3 GB disk0
1: EFI EFI 314.6 MB disk0s1
2: Apple_APFS Container disk1 499.3 GB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +499.3 GB disk1
Physical Store disk0s2
1: APFS Volume Macintosh HD 222.0 GB disk1s1
2: APFS Volume Preboot 22.4 MB disk1s2
3: APFS Volume Recovery 519.9 MB disk1s3
4: APFS Volume VM 3.2 GB disk1s4
/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *32.0 GB disk3
ในกรณีของเรา คือ /dev/disk3 ยกเลิกการต่อเชื่อมก่อนดำเนินการต่อ:
$ diskutil unmountDisk /dev/disk{X}
เมื่อติดตั้ง VirtualBox แล้ว ให้รัน:
$ sudo VBoxManage internalcommands createrawvmdk -filename ~/Kali.vmdk -rawdisk /dev/disk{X}
$ chmod 777 ~/Kali.vmdk
$ chmod 777 /dev/disk{X}
เพอร์เฟคโต ตอนนี้ให้รัน Virtualbox UI และสร้างเครื่องใหม่ด้วยการตั้งค่าต่อไปนี้:

เมื่อ VirtualBox ถามถึงดิสก์ ให้เราชี้ไปที่ VMDK ที่สร้างไว้ก่อนหน้านี้:

ก่อนที่จะสตาร์ทเครื่อง ไปที่การตั้งค่าและปรับจำนวนกระบวนการ วิดีโอ และหน่วยความจำของคุณ
สิ่งสำคัญคือการตั้งค่า เปิดใช้งาน EFI ภายใต้ ระบบ> Motherboa ถ.

สิ่งนี้จะช่วยให้คุณสามารถบูตผ่าน EFI ได้ ตอนนี้ให้เริ่มเครื่องเสมือนแล้วกด F12 ทันที .
เลือก ตัวจัดการการบำรุงรักษาการบูต: ป>

เลือก บูตจากไฟล์: ป>

จากนั้นเลือก {SATA_DRIVE}> EFI> Kali> ระบบ> ไลบรารี> CoreServ น้ำแข็ง> boot.efi

และ voila:

คอยติดตาม :)
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น