ลง Windows 8 แบบไม่มี SuperDrive

เพิ่งใส่ SSD มาให้แมคครับ เลยเอา DVD ออกแล้วใส่ harddisk แทน

ทีนี้ถ้าใช้ Mac รุ่นเก่าๆ ที่ยังมี DVD ในตัวเนี่ยมันจะไม่สามารถ boot from USB ใน BIOS mode ได้ทำให้ลง Windows ใหม่ไม่ได้ ก็ไปนั่งค้นวิธีมาครับ เลยก๊อปมาไว้ในบล็อคไว้เผื่อจะหายแล้วจะลง Windows ใหม่อีกไม่ได้

In English (original source): Installing Windows 8 or Windows 7 on a Mac without Superdrive with VirtualBox (backup)

วิธีการนี้ใช้ได้ทั้ง Windows 7, 8 นะครับ

ช่วงที่ 1

ขั้นที่ 1 ติดตั้ง Windows

  1. ติดตั้งโปรแกรม VirtualBox
  2. สร้าง virtual machine ขึ้นมาใหม่ ตั้งแรมมากน้อยได้ตามต้องการ
  3. ตั้ง harddisk เป็นชนิด VDI แบบ dynamically allocated ขนาดประมาณสัก 10GB (ขนาดที่เหมาะสมที่สุดคือควรจะพอดีกับ Windows เปล่าๆ พอดี เยอะไปจะกินที่และเสียเวลา) และเตรียมพื้นที่ใน harddisk ไว้ขนาด 3 เท่าของขนาดที่กำหนดไว้ (เช่น 10GB ต้องมีพื้นที่ 30GB) คนละไดรฟ์กันได้
  4. ติดตั้ง Windows ตามปกติ

(user ที่ create ตอนติดตั้งควรเป็นชื่อ user ชั่วคราวแล้วค่อยไปสร้าง user ใช้จริงในขั้นตอนหลัง และ user อันนี้ไม่สามารถลบ home folder ออกไปได้)

ขั้นที่ 2 ลบ Partition System Reserved

เวลาติดตั้ง Windows จะทำ partition ไว้ 2 อันสำหรับระบบ BitLocker ซึ่ง Windows จะบูทจาก partition ตัวนี้ ก็ต้องปิด partition ตัวนี้ให้ไปใช้ partition หลักแทน

ขั้นตอนทั้งหมดนี้ทำใน Windows ที่ติดตั้งไว้ในขั้นตอนแรก ไม่สามารถ copy paste ข้ามจากแมคไปได้นะครับ ต้องพิมพ์เองหรือต่อเน็ตใน Windows มาก๊อปไป

(ถ้าเคยใช้ VirtualBox ไม่แนะนำให้ติดตั้ง Guest Additions เพราะอิมเมจเครื่องนี้จะใช้ติดตั้งเป็น OS จริง)

  1. กด win+r พิมพ์ diskmgmt.msc
  2. คลิกขวาที่ system reserved กด change drive letter and path…
  3. กด add แล้วตั้งเป็นไดรฟ์อะไรก็ได้ (ในขั้นตอนต่อๆ ไปจะเรียกเป็น drive E: และสมมุติว่า drive ที่ install Windows คือ C:)
  4. เปิด Administrator Command Prompt ด้วยการกด start ค้นหา command prompt คลิกขวาในรายการ กด run as administrator
  5. เฉพาะ Windows 8 สั่ง reagentc /disable แล้วดูที่ folder C:\Windows\System32\Recovery ว่ามีไฟล์ winre.wim หรือไม่
  6. สั่ง reg unload HKLM\BCD00000000
  7. copy file bootmgr ด้วยคำสั่ง robocopy e:\ c:\ bootmgr (อย่าลืมเปลี่ยนเป็นไดรฟ์ที่ดูไว้ในข้อ 3)
  8. copy folder boot ด้วยคำสั่ง robocopy e:\Boot C:\Boot /s
  9. ตรวจสอบว่าใน drive C: มี folder “Boot” และ file “bootmgr”
  10. สั่ง bcdedit /store c:\boot\bcd /set {bootmgr} device partition=C:
  11. สั่ง bcdedit /store c:\boot\bcd /set {memdiag} device partition=C:
  12. กลับไปที่ disk management คลิกขวาที่ system reserved กด change drive letter and path…
  13. กดปุ่ม remove > yes
  14. คลิกขวาที่ partition Windows กด mark partition as active กด Yes จะเห็นว่าคำว่า Active จะย้ายจาก system reserved มาที่ windows
  15. เฉพาะ windows 8 สั่ง reagentc /enable
  16. Reboot เครื่อง Windows ใน VirtualBox
  17. กลับไปที่ Disk management (ขั้นตอนที่ 1)
  18. จะเห็นว่า partition Windows มีคำว่า Active และ System
  19. คลิกขวาที่ partition System Reserved กด Delete Volume > Yes จะเปลี่ยนพื้นที่เป็น Unallocated
  20. Reboot เครื่อง Windows ใน VirtualBox อีกครั้ง

ขั้นตอนที่ 3 เตรียม Windows

เวลาติดตั้ง Windows จะติดตั้งให้เหมาะสมกับ hardware แต่เราจะย้าย hardware จึงต้องมีการเตรียม Windows สำหรับการย้าย

  1. เปิด Administrator command prompt (ขั้นตอนที่ 2 ข้อ 4)
  2. สั่ง net stop WMPNetworkSvc (ถ้าขึ้นว่าปิดอยู่แล้วไม่เป็นไร) เสร็จแล้วปิดหน้าต่างได้เลย
  3. สร้างไฟล์ unattend.xml (ระวังเรื่องนามสกุลไฟล์ ควรเปิดตัวเลือก “Show extensions for known file type” ใน Folder options) และแก้ไขไฟล์ด้วย notepad มีข้อความดังนี้
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
     <settings pass="generalize">
          <component name="Microsoft-Windows-Security-Licensing-SLC"
processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <SkipRearm>1</SkipRearm>
          </component>
      </settings>
</unattend>
  1. Save file แล้ว move (cut) ไฟล์ไปที่ C:\Windows\System32\sysprep
  2. ใน Folder sysprep จะมีโปรแกรม sysprep ให้เปิดขึ้นมาและเลือกตัวเลือกดังนี้
    • System Cleanup Action list: System Out-of-Box Experience (OOBE)
    • Generalise: ติ๊ก
    • Shutdown Options: Shutdown
  3. กด OK แล้วเครื่องจะ shutdown เป็นอันเสร็จเรียบร้อย​ (และอย่าเปิด Virtual Machine ขึ้นมาอีก)

ถ้าเจอ error “A fatal error occurred while trying to Sysprep the machine.” ลองใช้คำสั่ง sysprep.exe /generalize /oobe /shutdown /unattend:unattend.xml ใน Administrator command prompt

ช่วงที่ 2 ทำ partition BOOTCAMP

ในช่วงนี้ให้ใช้โปรแกรม Daemon Tools for Mac mount DVD Windows ที่มี / ต่อ external dvd ใส่แผ่น Windows แล้วใช้โปรแกรม Boot Camp Assistant ทำตามขั้นตอนในหัวข้อถัดไปตั้งแต่ข้อ 8

หรือ

Hack Boot Camp Assistant

  1. เข้าไปที่ /Applications/Utilities คลิกขวาที่ Boot Camp Assistant เลือก Show Package Contents
  2. เปิดไฟล์ Contents/Info.plist ด้วย TextEdit (หรือ TextMate/Sublime/ฯลฯ) ถ้ามี permission error ไม่ให้เซฟให้ก๊อปไฟล์ไปที่ desktop แล้วทำขั้นตอนต่อไปจนเสร็จจึงก๊อปกลับมาที่เดิม
  3. ที่เมนูรูปแอปเปิ้ลบนซ้ายสุดของจอ กด About This Mac > More Info > System Report
  4. จด “Model Identifier” (ในตัวอย่างเป็น MacBookPro6,2) “Boot Rom Version” (ในตัวอย่างจะเป็น MBP61.0057.B0C)
  5. ในไฟล์ Info.plist ที่เปิดไว้ มองหา <key>DARequiredROMVersions</key> จะเห็น <string> หลายๆ อันอยู่ข้างล่าง ให้ก๊อปบรรทัดแรกสุดมาไว้ด้านบนอีกบรรทัด แล้วเปลี่ยนข้อความระหว่าง </string><string>...</string> เป็น Boot Rom Version ที่จดไว้
  6. มองหา <key>USBBootSupportedModels</key> (ถ้ามีคำว่า Pre หน้า USBBoot ให้ลบ Pre ออก) จะเห็น <string> ในลักษณะเดิม ให้ก๊อปมาแบบเดิมแล้วเปลี่ยนข้อความเป็น Model Identifier
  7. เซฟ
  8. เปิด Boot Camp Assistant จะเห็นว่าสามารถทำ USB ได้แล้ว ให้ทำ USB ไว้และจัด partition ให้ตามขั้นตอน (แนะนำให้เตรียม driver ไว้ด้วยซึ่งโปรแกรมจะดาวน์โหลดมาให้)
  9. แมคจะ reboot และบูทไม่ขึ้น ให้กดปุ่ม power แช่ไว้แล้วดึง USB ออก ถ้ายังบูทไม่ได้ลองกด alt แช่ไว้ก่อนเสียงบูทดัง เมื่อเข้าได้แล้วเข้าไปที่ System Preferences ปรับ Startup Disk กลับเป็นแมคเหมือนเดิม

Partition เอง

ตอนลงผม Partition เอง ไม่ได้ทำตามขั้นตอนเค้านะ ก็คือใช้ Disk Utilities แบ่ง FAT32 ไว้อันนึง จบ แต่ห้ามมี partition มากกว่า 2 อันใน Disk Utilities

ช่วงที่ 3 Clone Virtual Machine

ขั้นที่ 1 เตรียม harddisk

ในขั้นตอนนี้ต้องใช้พื้นที่อีก 2 เท่าของขนาดที่กำหนดไว้ในขั้นตอนที่ 3 ในช่วงที่ 1 ขั้นที่ 1 (ไว้ใน harddisk ก็ได้)

  1. เปิด VirtualBox กดที่ File > Media Manager
  2. เลือก Disk ของเครื่องแล้วกด Copy
  3. กด Next ไปเรื่อยๆ แต่ตั้ง “Fixed size” และชื่ออิมเมจไม่ควรมีเว้นวรรค
  4. เปิด Terminal (/Applications/Utilities/Terminal หรือใช้ Spotlight)
  5. พิมพ์ sudo VBoxManage internalcommands converttoraw Win7_copy.vdi win7.raw ตรง Win7_copy.vdi ไม่ต้องพิมพ์เอง แต่ให้เปิด Finder ไปที่ folder “VirtualBox VMs” และลากไฟล์ตามชื่อที่ตั้งเอาไว้มาในหน้าต่าง Terminal ส่วนตรง win7.raw สามารถพิมพ์เป็น full path ได้ตามต้องการ (เช่น /Volumes/Old\ Bootcamp/win7.raw)
  6. ใส่รหัสผ่าน (จะไม่มีดาวออกมาตอนพิมพ์ เป็นปกติ) เสร็จแล้วรอโปรแกรมทำงาน (สังเกตจากขนาดของไฟล์ .raw จะโตขึ้นจนเท่ากับขนาดที่ตั้งเอาไว้ตอนแรก)
  7. พิมพ์ sudo hdiutil attach -imagekey diskimage-class=CRawDiskImage win7.raw ตรง win7.raw ให้ใช้ตำแหน่งไฟล์เดียวกับข้อ 5 จะเห็น disk “Untitled” บน Desktop

ขั้นที่ 2 Clone

  1. ติดตั้งโปรแกรม WinClone (ไม่ฟรีครับ ^^)
  2. แท็บ Image เลือก “Untitled” แล้วกด Image เซฟไฟล์ไว้ที่ไหนก็ได้
  3. เสร็จแล้วกดเลือกไฟล์ที่สร้างขึ้น กด Restore เลือก harddisk ที่ทำไว้ใน Boot Camp Assistant กด Restore
  4. Reboot แล้วกด alt ก่อนเสียงบูท จะมีให้เข้า partition Windows
  5. ติดตั้ง Windows ตามปกติ
  6. อย่าลืมติดตั้งไดรฟ์เวอร์ BOOTCAMP

แนะนำว่า Windows ควรจะ create user ใหม่แล้วค่อยใช้งานนะครับเพราะเหมือน user เดิมจะไม่ค่อยเสถียร

ถ้าใช้ iMac 2009 แล้วมีปัญหาจอดำ ให้ลบไฟล์ C:\WINDOWS\SYSTEM32\DRIVERS\ATIKMDAG.SYS ออก โดยหา driver NTFS สำหรับ OSX (เช่น tuxera หรือ ntfs-3g) แล้วลบออกด้วย OSX

fsck!

fscking!

นั่งโชว์ XBMC ให้พ่ออยู่ zsh บอก history file corrupt เราก็งงว่าเชลล์ยังไม่ได้กดสักกะตัวมันจะพังทันทีที่กดได้ไง สักพักนึง Plex เปิดไม่ติด เอาแล้วไง

เลยยกกลับมาโต๊ะแล้วเข้า single user สั่ง fsck -fy โดน error ปาเต็มหน้า หลังจากนั้นก็ได้ลง Lion ใหม่สมใจ (อยากลงนานแล้ว เหมือนเครื่องช้ามาก)

เสียดายงาน อยากได้งานคืนทั้ง NSC งานม. 4 งานม. 5 โค้ดหุ่น โค้ด project ที่ไม่ได้ใช้ โค้ดงานลูกค้าอีก โชคดีที่ Twitica ไม่หายแต่รุ่น Mac น่ะหายไปแล้ว