"И кроме мордобитиев - никаких чудес!"
Новый вариант кода, для загрузки Android-x86 из grub2:
submenu 'Android-x86 live' {
src='/opt/android-x86-2.2-r2-asus_laptop.iso'; key='root=/dev/ram0 androidboot_hardware=asus_laptop acpi_sleep=s3_bios,s3_mode quiet SRC= DATA= DPI=160'
src='/opt/android-x86-2.2-r2-eeepc.iso'; key='root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode quiet SRC= DATA= DPI=160'
src='/opt/android-x86-4.0-r1-eeepc.iso'; key='root=/dev/ram0 androidboot.hardware=eeepc acpi_sleep=s3_bios,s3_mode quiet SRC= DATA='
src='/opt/android-x86-4.0-r1-thinkpad.iso'; key='root=/dev/ram0 quiet androidboot.hardware=thinkpad video=1024x768 i915.lvds_downclock=1 i915.powersave=1 usbcore.autosuspend=2 quiet SRC= DATA='
src='/opt/android-x86-4.4-r5.iso'; key='root=/dev/ram0 androidboot.hardware=android_x86 quiet DATA='
src='/opt/android-x86-5.1-rc1.iso'; key='root=/dev/ram0 androidboot.hardware=android_x86 quiet nomodeset vga=788 SRC= DATA='
src='/opt/android-x86_64-6.0-r3.iso'; key='root=/dev/ram0 quiet SRC= DATA='
src='/opt/android-x86_64-7.1-r2.iso'; key='root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug nomodeset SRC= DATA='
src='/opt/android-x86_64-8.1-r1.iso'; key='root=/dev/ram0 androidboot.selinux=permissive quiet nomodeset SETUPWIZARD=0 SRC= DATA='
key='root=/dev/ram0 quiet --'; version='/opt/android'
insmod regexp; insmod part_gpt
root='x'; search -n -s -f ${src}
if [ ${root} = x ]
then search -n -s -f ${version}/system.sfs
if [ ${root} = x ]
then src='Android'
else if regexp "8.1" "${src}"; then key="androidboot.selinux=permissive SETUPWIZARD=0 SRC=${version} ${key}"; fi
if regexp "7.1" "${src}"; then key="androidboot.selinux=permissive buildvariant=userdebug SRC=${version} ${key}"; fi
if regexp "6.0" "${src}"; then key="SRC=${version} ${key}"; fi
if regexp "5.1" "${src}"; then key="androidboot.hardware=android_x86 CMDLINE SRC=${version} ${key}"; fi
if regexp "4.4" "${src}"; then key="androidboot.hardware=android_x86 SRC=${version} ${key}"; fi
if regexp "4.0-r1-thinkpad" "${src}"; then key="androidboot.hardware=thinkpad video=1024x768 i915.lvds_downclock=1 i915.powersave=1 usbcore.autosuspend=2 SRC=${version} ${key}"; fi
if regexp "4.0-r1-eeepc" "${src}"; then key="androidboot.hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=${version} ${key}"; fi
if regexp "2.2-r2-asus_laptop" "${src}"; then key="androidboot_hardware=asus_laptop acpi_sleep=s3_bios,s3_mode DPI=160 SRC=${version} DATA= ${key}"; fi
if regexp "2.2-r2-eeepc" "${src}"; then key="androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=${version} ${key}"; fi
avload='linux'; avinit="initrd ${version}/initrd.img"; src="${version}/kernel ${key}"
fi
else if regexp "8.1" "${src}"; then key="androidboot.selinux=permissive SETUPWIZARD=0 iso-scan/filename=${src} ${key}"; fi
if regexp "7.1" "${src}"; then key="androidboot.selinux=permissive buildvariant=userdebug iso-scan/filename=${src} ${key}"; fi
if regexp "6.0" "${src}"; then key="iso-scan/filename=${src} ${key}"; fi
if regexp "5.1" "${src}"; then key="androidboot.hardware=android_x86 iso-scan/filename=${src} ${key}"; fi
if regexp "4.4" "${src}"; then key="androidboot.hardware=android_x86 iso-scan/filename=${src} ${key}"; fi
if regexp "4.0" "${src}"; then version='memdisk vmalloc=184M'; fi
if regexp "2.2" "${src}"; then version='memdisk vmalloc=80M'; fi
if regexp "memdisk" "${version}"
then
if [ -e "/opt/syslinux/memdisk" ]
then avload='linux16'; avinit="initrd16 ${src}"; src="/opt/syslinux/${version} iso raw"
else src='memdisk'
fi
else loopback loop ${src}
root=(loop)
avload='linux'; avinit="initrd /initrd.img"; src="/kernel ${key}"
fi
fi
if [ ${root} = x ]; then msg="$src not exist!"; avload=''; else msg="Load $src from $root"; fi
echo "$msg"; sleep -v 4
if [ -n "${avload}" ]; then ${avload} ${src}; fi
if [ -n "${avinit}" ]; then ${avinit}; fi
}
Описание.
В переменной src путь и название файла исо-образа. В переменной version путь к каталогу, в котором код будет искать файлы андроида.
В коде сожержатся настройки для перечисленных файлов. Другие образы могут потребовать другие параметры. Для задания конкретного образа достаточно закомментировать строки "src=", которые идут после требуемой.
Например, если хотим загрузить /opt/android-x86_64-7.1-r2.iso, то комментируем строку src='/opt/android-x86_64-8.1-r1.iso'.
Груб будет искать на всех разделах. Если не найдет исо-образ, то ищет файл андроида в каталоге, указанном в переменной version. Если находит, то будет загружен андроид из этого каталога. Для этого варианта, в этот каталог, нужно распаковать содержимое того-же исо-образа, что выбран вами в переменной src.
Если будет найден исо-образ, то загрузка будет произведена из него. В этом случае каталог, указанный в переменной version, и его содержимое не нужны.
Загрузка из исо-образа работает с версии 4.4. Для более старых версияй, код проверяет наличие файла /opt/syslinux/memdisk. Если memdisk существует, то исо-образ загружается с его помощью. Происходит запуск ядра андроида. Но вот беда, ядро ищет андроид только в корне раздела.
Что-бы загрузка сработала, нужно в корень раздела из исо-образа распаковать четыре файла: kernel, initrd.img, ramdisk.img, system.sfs. Андроид загружается из этих файлов.
Фича. Если нужна загрузка именно из каталога, то необязательно удалять или другим способом прятать файл исо-образа. Достаточно в переменной src указать "немного неправильное название". Например: "pt/android-x86_64-7.1-r2.iso". Естесственно, код такого файла не найдет и начнется загрузка из каталога, но с параметрами для версии "7.1".
Пользователь добавил сообщение 22 Марта 2019, 11:09:42:
на моем железе даже 2.2 не идет через VirtualBox
Это слишком сложно, чтобы работало. Вам еще и в ВиртуалБоксе нужно задать оборудование, которое поймет Андроид.. А вы понятия не имеете, какая конфигурация нужна Андроиду.
По размеру озу, у вас должна запуститься 4.4, а может быть даже 5.1. Эти образы более универсальны, вроде как один образ под любое оборудование.
А более старые ориентированы под конкретное оборудование. Судя по названиям образов, для конкретных моделей ноутбуков. Как это заработает на десктопе - неизвестно.
Как конкретно не работает? Начать с самого начала.
Ядро андроид загрузилось? Андроид находит свои файлы? Появляется строка: "android detected..."?
как сделать подключение к интернету на андроид?
Сэм, этот вопрос уже к разработчику Андроид. Вероятно андроид не знаком с вашим wifi-устройством.
Версия 4.4 у меня тоже не нашла wifi. А версия 4.0 нашла. В "Settings" включил wifi и он сразу увидел сети. Подключился и вышел в интернет.