Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Android

คู่มือติดตั้งและแก้ไขปัญหา Android x86 บน Desktop

ผู้ที่ต้องการประสบการณ์ 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

  1. เปิด UNetbootin ชี้ไปที่ Android x86 ISO
  2. เลือก "USB Drive" กด OK
  3. UNetbootin จะคัดลอก Android x86 ไปที่ USB ทำให้กลายเป็น Portable Installer
  4. เสร็จแล้ว Reboot เข้า BIOS Menu
  5. หาเมนู Boot Priority เลือก Boot จาก USB Flash Drive
  6. GRUB Menu จะขึ้น เลือก Install Android x86 to Hard Drive
  7. เลือก Partition ติดตั้ง - หากไม่แน่ใจ อย่า Format Partition และ อย่าเขียนทับ OS อื่น
  8. จะถาม Install GRUB: ถ้าใช้ Windows อย่างเดียว ไม่มี Linux อื่น ให้ Yes หากมี Linux/GRUB อยู่แล้ว อย่า Install ทับ
  9. ถาม "Make system R/W" ให้ Yes จะ "Root" Android x86 และเปิด Read-Write /system Partition
  10. Reboot เพลิดเพลินกับ Android x86 ใหม่

ติดตั้งจาก CD/DVD

กระบวนการเกือบเหมือนกัน แต่ Burn Bootable CD จาก Android x86 ISO ใช้ ISO Burner ใดๆ ก็ได้ (Free ISO Burner)

ติดตั้งบน Virtual Machine

  1. ตั้งค่า VM ให้ RAM ขั้นต่ำ 512 MB (Oreo-based ควรมากกว่านี้)
  2. Load Android x86 ISO เข้า VM Menu > Start VM
  3. GRUB Menu เลือก Install to Hard Disk
  4. สร้าง Partition ใหม่ ติดตั้ง Android x86 Format เป็น ext3, ext2, ntfs, fat32 (fat32 จะมี Warning ไม่เซฟข้อมูลได้ = Live CD)
  5. Install GRUB ให้ Yes, Allow Make System R/W
  6. 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" ลองหาที่ทำงาน