Tips

Hackintosh 101.1

1. Mở đầu.

Đa số các bạn đọc của EitGuide hiện đang viết ứng dụng Android hoặc Web trên các máy tính chạy Windows hoặc Linux. Và đa số trong đa số các bạn đó đều mong muốn một ngày được đặt chân lên mảnh đất màu mỡ mang tên App Store, vốn dĩ (được đồn đại, theo nhiều trang báo nổi tiếng quốc tế nói chung và Việt Nam nói riêng) mang lại doanh thu tốt hơn hẳn so với đối thủ cạnh tranh trực tiếp là Google Play. Theo một nghiên cứu gần đây, thì mặc dù chiếm chỉ khoảng 20% tỉ lệ “phủ sóng” trên 100% các thiết bị di động thông minh và máy tính bảng, nhưng Apple đã chi trả cho các lập trình viên số tiền gấp đôi so với Google. Quả là một kết quả cực kì ấn tượng mà nhà phát triển ứng dụng di động nào cũng bị hấp dẫn. Ngay cả ông lớn Google cũng hỗ trợ “con nhà hàng xóm” iOS ngang ngửa với “con ruột” là Android, khi tuyệt đại đa số các dịch vụ đều có mặt cho cả hai nền tảng, mà thậm chí, một số hoạt động và nhiều tính năng còn sớm có mặt trên iPhone và iPad từ vài tuần cho tới tận… nửa năm mới đổ bộ lên chú Robot xanh. Chẳng hạn, Dark mode trên YouTube mất tới gần 6 tháng để tới tay người dùng Android sau người dùng iPhone và iPad.

Tuy nhiên, đi kèm với tiềm năng đó là sự bỏ vốn không hề rẻ. Chẳng hạn như việc học viết ứng dụng. Cá nhân tôi thực tế chưa phải chi một đồng nào để học Android và Web (và Qt) vì trên YouTube đầy rẫy các loạt bài hướng dẫn lập trình Android và Web cho người mới bắt đầu, từ thượng vàng tới hạ cám, từ cung cấp những kiến thức cơ bản nhất, tới những thao tác phức tạp phải vận dụng rất nhiều chất xám, thì với lập trình cho iOS/macOS, tôi phải mua hẳn hai khóa học trên Udemy. Nhưng trước hết, bạn phải có cái máy Mac, hoặc chí ít là cái máy tính chạy macOS, là điều kiện cần. Không có máy Mac/macOS ư? Thôi đừng mua khóa học làm gì cho tốn tiền.

Sự thật là việc không có máy Mac đã “chặn cửa” các anh chị em coder khi có ý định rẽ sang iOS development. Bạn có thể dùng các cross platform frameworks như Flutter, React Native, hay Ionic để code một ứng dụng Android và bạn biết chắc chắn 100% là nó sẽ chạy y chang như vậy trên iOS. Code thì được rồi đó, debug cũng gỡ hết lỗi rồi đó, nhưng build thì như nào? Phải có macOS, vì các công cụ đóng gói cho iOS chỉ được tích hợp trong Xcode, mà Xcode thì chỉ có cho macOS mà thôi, mà macOS thì chỉ chạy trên máy Mac. Vì vậy, không có Mac, thì không có cách nào để build ứng dụng iOS và nói gì tới việc phát hành.

Hiện tại, cũng có nhiều giải pháp cho phép bạn build ứng dụng iOS “trên mây”, tức là bạn chỉ cần upload bộ mã nguồn lên dịch vụ của họ, và họ sẽ build iOS archive cho bạn. Tuy nhiên, đây là con dao hai lưỡi. Các bạn nào đã có sử dụng qua, xin vui lòng để lại vài lời comment bên dưới. Riêng cá nhân tôi, về phần mình, thì thích “tự xử” hơn. Vì vậy, tôi tìm tới giải pháp khác có vẻ chông gai hơn ở những ngày đầu, nhưng về sau thì bằng phẳng. Đó là Hackintosh.

2. Hackintosh là gì?

Vỏ quýt dày có móng tay nhọn. Máy Mac thật ra, về phần cứng, cũng chỉ là máy tính mà thôi. Vì vậy, nếu chúng ta tự dựng một cỗ máy tính có cấu hình tương tự như một chiếc máy Mac nào đó, và cài được macOS lên nó, thì chúng ta sẽ có một chiếc Hackintosh thay vì phải tốn tiền mua Macintosh.

2.1. Vì sao bạn nên cân nhắc dùng Hackintosh?

Một trong những lí do mà các bạn chưa tìm tới máy Mac thật sự là vì giá cả. Giá một chiếc Mac “coi được” lại không hề rẻ. Chẳng hạn, chiếc MacBook Pro 15″ 2019 có giá khởi điểm lên tới trên 50tr VNĐ. Đây là một con số khá “khủng khiếp” mà ít ai dám mơ tới, kể cả những bạn có tiềm lực tài chính mạnh. Còn chiếc MacBook đáng mua nhất hiện tại là MacBook Pro 13″ 2019 vừa được ra mắt cách đây không lâu, hiện có giá khoảng 33tr (theo MacCenter, tại thời điểm bài viết này). 33tr có vẻ là một con số không quá đắt đỏ khi đem so sánh với một màn hình có độ phân giải lên tới 2560*1600 sắc nét, trong khi so bì với nhiều loại PC laptop thì chỉ đạt 1920*1080, mà chất lượng màu sắc có khi lại không bằng. Xét về mức độ “êm ái” thì chiếc MacBook này khá tốt, không ồn ào và thời lượng pin cũng dài cùng TouchBar hoành tráng. Ngoài ra, nó sẽ còn được cập nhật lên phiên bản macOS mới tới tận… 2026 nên thực sự 33tr bạn bỏ ra không quá cao. Nhưng bù lại, nó chỉ có 128GB ổ nhớ và 8GB RAM. Vì vậy, nếu bạn chỉ code Web và iOS/macOS thì nó hoàn toàn đáp ứng được và có phần dư dả. Nhưng nếu bạn code thêm Android thì 8GB thực tế là không đủ cho bộ sậu Android Studio và AVD ngày càng tiêu thụ RAM nhiều hơn. Ngoài ra, dù bàn phím hiện đã được tinh chỉnh nhiều, nhưng danh tiếng của bàn phím lẫy bướm trên MacBook thì hầu như coder nào cũng có nghe qua. Thêm một điểm gây lo lắng nữa là việc con chip T2 có thể gây kernel panic bất chợt buộc máy tính phải restart và có thể gây nên mất mát dữ liệu.

Một lựa chọn khác đã từng phổ biến cho tới trước chiếc MacBook 13″ trên là MacBook 15″ 2015. Lựa chọn này khá hợp lí, vì tầm tiền nó cũng khoảng 30tr mà thôi. Cấu hình cũng tương đối tốt, với 16GB RAM và đồ họa rời và bàn phím có chất lượng tốt. Nhưng phần cứng của nó tương đối cũ, và nó chỉ nhận thêm khoảng 3-4 phiên bản macOS nữa (nếu tính theo vòng đời của macOS Mojave và Catalina), và cũng như iOS, phiên bản macOS về sau càng được ít tối ưu hóa hơn cho các thiết bị phần cứng cũ, vì vậy vấn đề performance và thời lượng pin là hai lựa chọn mà bạn cần phải xem xét.

Nhưng cũng đâu phải bạn nào cũng có ngay 33tr bỏ ra ngay lập tức. Nhiều bạn không bỏ ra 20tr để mua những con máy PC có sẵn 8GB RAM, mà chỉ thường chi khoảng tầm 15tr với 4GB RAM và chi thêm một chút để nâng lên 8GB RAM, vẫn tiết kiệm được kha khá so với con số 20. Ngoài ra, cũng không ít các bạn sinh viên khi đậu vào các trường đại học chuyên ngành lập trình lại không nghĩ xa mà mua ngay những chiếc PC cấu hình khá ngon mà không mua ngay Mac, để sau này không muốn hoặc không dám chuyển sang Mac vì máy còn hoạt động tốt, ngon lành, bán đi thì uổng và mất đi một vật kỉ niệm dù có điều kiện về tài chính. Thành ra tôi được nghe nhiều bạn chia sẻ “Biết vậy thì ngày trước em mua cái Mac luôn cho rồi, bây giờ bỏ đi thì tiếc quá.”.

Vì vậy, giải pháp Hackintosh nghe có vẻ hợp lí, chí ít là cho những bạn đang có hầu bao từ 20tr trở xuống. Không phải sinh viên nào cũng được sinh ra trong gia đình khá giả, vì vậy 33tr so với một bạn có thể là bình thường, nhưng so với một bạn khác thì lại trị giá tới… hơn hai cái laptop. Nên nếu bạn không có khả năng mua máy Mac, thì có thể cân nhắc cài Hackintosh. Còn nếu bạn có khả năng mua một chiếc Macintosh thật thụ, thì tốt nhất bạn nên ra ngay MacCenter hoặc FptShop hoặc TGDĐ mà mua ngay và luôn.

Một khả năng khác mà các bạn ít gặp (nhưng là trường hợp của tôi, vì vậy tôi để ở cuối phần) là việc dùng máy bàn, tức desktop. Do đó, lựa chọn của tôi là iMac hoặc Mac mini, vì tôi có nằm mơ cũng không dám nghĩ tới iMac Pro hay chiếc siêu Mac Pro bào phô mai có giá 6 ngàn đô la Trump. Nhưng chúng còn chua chát hơn cả MacBook Pro và Mac mini khi không có tùy chọn 16GB RAM. Vì vậy, tôi quyết định cài Hackintosh. Và may mắn thay, chiếc iMac Fake của tôi chạy ổn.

2.2. Vì sao bạn đừng nên dùng Hackintosh khi có thể mua một chiếc Macintosh thực?

Trừ khi bạn vừa mới được sinh vào hôm qua và hôm nay đã đọc bài viết này, thì ai cũng biết hàng dựng bao giờ cũng có chất lượng kém hơn hàng chính hãng. Và Hackintosh cũng không phải là ngoại lệ. Mà ngược lại, nó còn là minh chứng rõ ràng nhất cho nhận xét này. May mắn thay, phần cứng của tôi tương thích tốt với macOS Mojave nên không tốn quá nhiều công sức để cài cắm các thứ cho nó ổn định. Nhưng lên Catalina là cả một vấn đề khiến tôi mất tới mấy ngày để giải quyết cho xong. Và may mắn một lần nữa là các patches của tôi thành công, nếu không thì tôi đã không ngồi đây mà chia sẻ với các bạn về vấn đề này. Vì vậy, bạn đừng “ngộ nhận” là Hackintosh ổn định. Sự thật là ổn định hay không còn tùy thuộc vào phần cứng và kinh nghiệm của bạn nữa. Tôi dùng ngon nhưng chưa chắc bạn dùng sẽ ngon như vậy, nhưng cũng có khả năng không nhỏ là máy bạn hoạt động ổn hơn của tôi.

Vấn đề đầu tiên là kiểm tra độ tương thích. Thực bụng mà nói, desktop dễ hơn laptop.

  • Đa số các mainboard cho máy bàn đều được “cho kèm” một con GPU tích hợp của Intel. Đối với phần lớn những mainboard của Gigabyte thì những con đồ họa tích hợp đều may mắn tương thích với macOS. Vì vậy, nếu card màn hình của bạn không tương thích với macOS thì may ra bạn còn có thể trông cậy vào con GPU tích hợp sẵn này. Còn máy tính xách tay thì bắt buộc bạn phải tìm hiểu về GPU.
  • Bạn nên có GPU của AMD/ATI và bạn nên mua những model giống với những model được sử dụng trong máy Mac như MacBook hay iMac như RX400 hoặc RX500(X). Nếu bạn đang dùng AMD Vega, thì tôi không thể chắc chắn là sẽ hoạt động tốt hay không tốt. Lí do là khác với Windows (và Linux) khi AMD có cung cấp driver cho bạn tự cài vào HĐH, macOS có driver được tích hợp sẵn nên nếu card màn hình không được hỗ trợ bởi macOS hoặc cộng đồng thì cho dù có cài được macOS nhưng performance sẽ vô cùng lag như trong máy ảo vbox.
  • Đối với các bạn sử dụng card Nvidia: Hiện chúng ta có kext từ cộng đồng là Nvidia web driver. Nhưng nó chỉ hoạt động với một số model nhất định mà thôi. Tôi không có kiến thức về phần này nên bạn vui lòng tự tìm hiểu tính tương thích nếu bạn đang dùng đồ họa Nvidia.
  • Nếu bạn sử dụng máy bàn thì cơ hội để chạy ethernet thành công là rất cao, đặc biệt là với các dòng mainboard của Gigabyte. Còn đối với máy xách tay “đặt đùi” (lap-top) thì tôi đã gặp những trường hợp giải quyết được vấn đề GPU rồi nhưng không có driver để chạy chip Wifi và dĩ nhiên là họ phải ngậm ngùi quay về Windows. Rất đáng tiếc.

Vấn đề thứ hai là việc tạo một USB Installer đòi hỏi phải có máy Mac hoặc Hackintosh khác (để cho gọn thì từ đây về sau, tôi gọi chung là máy Mac). Trên mạng có đầy những hướng dẫn tạo Installer trên Windows. Tuy nhiên, chúng tiềm ẩn nhiều nguy cơ khác nhau, mà đáng sợ nhất là việc bạn bị lừa đảo để tải về các phần mềm “xạo” mang đầy virus thay vì phần mềm tạo Mac USB Installer, hay phần mềm creator đó lại chứa nhiều đoạn mã độc nằm mãi trong máy tính của bạn. Vì vậy, tốt nhất là bạn nên tạo bộ cài từ máy Mac. Nếu không có và cũng không quen ai có máy Mac, bạn có thể tạo máy ảo vbox theo hướng dẫn ở đây. Lag ư? Lo gì? Chúng ta chỉ “mượn” cái máy ảo để làm bộ cài mà thôi.

Vấn đề thứ ba là về hiệu năng và những lỗi vặt do kém tương thích. Thậm chí, máy của tôi đang chạy đồ họa 460 đúng y chang như mẫu MacBook Pro 15″ 2016, nên dù kernel đã hỗ trợ tốt, nhưng vẫn xảy ra nhiều trường hợp bị crash và treo máy. Tất nhiên, cũng giống như bảng dừng trên ứng dụng Android, nguyên nhân thì muôn hình vạn trạng và bạn phải biết được lí do thì mới có cách khắc phục. Nếu bạn chỉ hỏi tôi “Vì sao máy em bị crash” thì có tài thánh tôi cũng không thể giúp được gì.

Do đó, Hackintosh không phải là giải pháp tốt nhất. Tốt nhất là bạn cứ nên mua Macintosh khi có khả năng, còn Hackintosh chỉ là giải pháp tạm thời, mang tính “cho đỡ thèm”. Tất nhiên, nếu phần cứng tương thích tốt nên không xuất hiện lỗi vặt, Xcode chạy ngon, Terminal chạy ổn, thì bạn hoàn toàn có thể gắn bó với con máy Hackintosh của mình cho tới khi nào không còn tương thích hoặc sửa lỗi được nữa. Lúc nào còn chạy ngon thì ta tạm tính theo lúc đó.

3. Tổng kết

Ngoài các lí do mà tôi đưa ra bên trên dưới góc nhìn cá nhân, riêng bạn sẽ có thêm những quan điểm vì sao nên hoặc không nên dùng Hackintosh. Có thể coi Hackintosh như một lần đầu tư của bạn. Rủi ro cao, công sức bỏ ra không phải là ít, nhưng hiệu quả thì cũng đa dạng, có máy chạy ngọt canh như (hoặc chí ít cũng gần như) một chiếc Macintosh thật thụ, cũng có máy chạy “cà giật”, màn hình bị sọc hoặc bắt Wifi kém, có máy khác lại cho chất lượng hình ảnh tuyệt vời, nhưng tiếc là không có âm thanh. Vì vậy, nếu bạn đang nghĩ tới Hackintosh, vui lòng tìm hiểu thật kĩ cấu hình coi có tương thích hay không. Vì không như Windows, khi các nhà sản xuất phần cứng (hardware vendors) cung cấp drivers cho bạn tha hồ cài cắm, hay như Linux với đóng góp cực tốt từ cộng đồng trong việc tối ưu kernel, thì macOS không có những lợi thế đó. Nếu phần cứng không tương thích tốt và không có các kexts hiện đã được phát hành sẵn từ cộng đồng, thì nhiều khả năng bạn sẽ không có được một chiếc Hackintosh ra ngợm để sử dụng.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.