ผู้ที่ต้องการประสบการณ์ Android บน Desktop มี Android-based OS หลายตัว แต่ส่วนใหญ่เป็น Fork ของ Android x86 (PrimeOS, Remix OS, Phoenix OS x86) เพราะ Android x86 หยุดพัฒนาระยะหนึ่ง ทำให้นักพัฒนาคนอื่นต่อยอด
แต่ Android x86 กลับมาออก Update ต่อเนื่อง รวมถึง Android Oreo ลอง Android x86 ก่อนลอง Fork อื่นๆ (Remix OS หยุดพัฒนาแล้ว)
ข้อกำหนด
- Android x86 ISO
- UNetbootin
Ubuntu: sudo apt-get install unetbootin
Arch Linux: pacman -S unetbootin
ติดตั้งบน USB Flash Drive
- เปิด UNetbootin ชี้ไปที่ Android x86 ISO
- เลือก "USB Drive" กด OK
- UNetbootin จะคัดลอก Android x86 ไปที่ USB ทำให้กลายเป็น Portable Installer
- เสร็จแล้ว Reboot เข้า BIOS Menu
- หาเมนู Boot Priority เลือก Boot จาก USB Flash Drive
- GRUB Menu จะขึ้น เลือก Install Android x86 to Hard Drive
- เลือก Partition ติดตั้ง - หากไม่แน่ใจ อย่า Format Partition และ อย่าเขียนทับ OS อื่น
- จะถาม Install GRUB: ถ้าใช้ Windows อย่างเดียว ไม่มี Linux อื่น ให้ Yes หากมี Linux/GRUB อยู่แล้ว อย่า Install ทับ
- ถาม "Make system R/W" ให้ Yes จะ "Root" Android x86 และเปิด Read-Write /system Partition
- Reboot เพลิดเพลินกับ Android x86 ใหม่
ติดตั้งจาก CD/DVD
กระบวนการเกือบเหมือนกัน แต่ Burn Bootable CD จาก Android x86 ISO ใช้ ISO Burner ใดๆ ก็ได้ (Free ISO Burner)
ติดตั้งบน Virtual Machine
- ตั้งค่า VM ให้ RAM ขั้นต่ำ 512 MB (Oreo-based ควรมากกว่านี้)
- Load Android x86 ISO เข้า VM Menu > Start VM
- GRUB Menu เลือก Install to Hard Disk
- สร้าง Partition ใหม่ ติดตั้ง Android x86 Format เป็น ext3, ext2, ntfs, fat32 (fat32 จะมี Warning ไม่เซฟข้อมูลได้ = Live CD)
- Install GRUB ให้ Yes, Allow Make System R/W
- Reboot เมื่อเสร็จ
เพิ่ม Android x86 เข้า GRUB Menu
ติดตั้ง GRUB Customizer ก่อน จะง่ายกว่า
sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer
เปิด GRUB Customizer > Add New GRUB Entry > แท็บ Sources ใส่:
set root='(hd0,4)' search --no-floppy --fs-uuid --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3 linux androidx86/kernel root=UUID=e1f9de05-8d18-48aa-8f08-f0377f663de3 quiet androidboot.hardware=generic_x86 SRC=/androidx86 acpi_sleep=s3_bios,s3_mode initrd androidx86/initrd.img
ส่วน Bold ต้องแก้:
- set root='(hd0,4)': เปลี่ยน (hd0,4) เป็น Partition ที่ติดตั้ง Android x86 (HD0=SDA, HD1=SDB, ตัวเลข=Partition Number)
- --set=root UUID: UUID ของ Partition ใช้ GRUB Customizer ดูได้ที่แท็บ Options > Linux > Partition Dropdown > Source Tab
- androidx86/: Root ของ Android x86 เข้า Partition ดูโฟลเดอร์ชื่อ 'android' นั่นคือ Root
- androidboot.hardware: Hardware เฉพาะตัว Android x86 รุ่นเก่า (4.03) ใช้ androidboot_hardware (underscore) รุ่นใหม่ ไม่จำเป็น เพราะ Init Process ได้ค่า ro.hardware เอง
Hardware Options: generic_x86 (Default), eeepc (EEEPC), asus_laptop (ASUS รองรับ)
เคล็ดลับและ Tips
Android x86 ใช้ Android Market ไม่ได้ ใช้ Alternative App Stores:
- XDA Labs
- AndAppStore
- Aptoide
- APKMirror
เปิด Unknown Sources: Settings > Applications > Enable Unknown Sources
แสดงค่า Battery ให้ถูกต้อง
Android พัฒนาสำหรับ Battery เฉพาะ ทำให้ OS แสดงค่า Battery ผิดบน Hardware อื่น (Laptop) แก้ได้โดยเพิ่ม Entries ใน vendor/asus/eeepc/system.prop:
ro.sys.fs.power_supply.ac=/AC0 ro.sys.fs.power_supply.bat=/BAT0 ro.sys.fs.power_supply.ac.feature.online=/online ro.sys.fs.power_supply.bat.feature.status=/status ro.sys.fs.power_supply.bat.feature.present=/present ro.sys.fs.power_supply.bat.feature.capacity.now=/charge_now ro.sys.fs.power_supply.bat.feature.capacity.full=/charge_full ro.sys.fs.power_supply.bat.feature.voltage.now=/voltage_now ro.sys.fs.power_supply.bat.feature.voltage.full=/voltage_full ro.sys.fs.power_supply.bat.feature.tech=/technology #ro.sys.fs.power_supply.bat.features.bat.health is not supported #ro.sys.fs.power_supply.bat.features.bat.temperature is not supported
Entries นี้บอก Android Battery Service ให้หาข้อมูลที่ Path ถูกต้อง
Implement เอง: Re-implement IBatteryServiceStatus class ใน frameworks/base/libs/utils/IBatteryServiceStatus.cpp
Wake Up เครื่องจาก Sleep
ไม่สามารถ Wake ได้ด้วย Mouse/Keyboard ปกติ ต้องใช้ ESC, Menu, Arrow Keys กดค้าง ≥ 1 วินาที กด Menu ตอน Keyguard Unlock Screen, ใช้ Mouse Scroll Wheel บน Keyguard Unlock ได้
Boot บน Graphics ที่ไม่รองรับ
ตอน Boot Live-CD กด Tab ที่เมนู Boot Options จะได้ Boot Prompt:
kernel initrd=/initrd.img root=/dev/ram0 androidboot_hardware=generic_x86 acpi_sleep=s3_bios,s3_mode video=-16 quiet SRC= DATA= DPI=240
ลบ "quiet" เพื่อดู Kernel Messages แล้วตั้ง Video Mode Parameters:
- NoModeSet: Disable Kernel Mode Setting ไม่ให้ Kernel ตั้ง Resolution เอง
- Xforcevesa: บังคับใช้ VESA Driver
- รวมกันได้: "nomodeset xforcevesa" ลองหาที่ทำงาน