Arrancar Android con GRUB, pero ¿cómo?

9

Tengo un pequeño problema. Tengo siete particiones:

Device    Boot   Begin       End         Blocks     Id   System
/dev/sda1   *      206848   219013119   109403136    7  HPFS/NTFS/exFAT     <-- wINDOWS 7
/dev/sda2       219013120   735516671   258251776    7  HPFS/NTFS/exFAT     <--Musik,....
/dev/sda3       735516672   815638527    40060928    7  HPFS/NTFS/exFAT     <-- Android
/dev/sda4       815640574   976771071    80565249    5  Erweiterte          <-- No Idea:D
Partition 4 does not start at a physical sector boundary.
/dev/sda5       815640576   872494091    28426758   83  Linux               <--Kali Linux
/dev/sda6       970151936   976771071     3309568   82  Linux Swap / Solaris
/dev/sda7       872495104   970149887    48827392   83  Linux               <-- Ubuntu

Encontré un tutorial, pero lo intenté y no funciona. Aquí está el enlace:

http://www.webupd8.org/2012/03/how-to-dual-boot-android-x86-and-ubuntu.html

Usé este Android de android-x86.org y la versión android-x86-4.4-r1.iso.

Este es mi documento 40_Costum:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Android-x86" {
set root='(hd0,3)'
linux /android-x86-4.4-r1/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-x86-4.4-r1
initrd /android-x86-4.4-r1/initrd.img}

Si inicio mi PC , viene el administrador de arranque GRUB y puedo elegir Android, pero no arranca Android. El fondo es morado y no pasa nada.

¿Cuál sería un 40_Custommguión completo y funcional ?


No funciona si hago un script en Grub Customizer y lo guardo. No se muestra en el menú de inicio si abro Grub Customizer nuevamente, el script se elimina.

Este es mi código:

set root='(hd0,3)' 
`search --no-floppy --fs-uuid --set=root 28D9FDF951298246  
linux android-x86/kernel root=UUID=28D9FDF951298246  quiet 
androidboot.hardware=generic_x86 SRC=/android-x86 acpi_sleep=s3_bios,s3_mode 
initrd Android-x86/android-4.4-r1/initrd.img

Ahora tengo un problema extra:

Si inicio mi computadora portátil, muestra Ubuntu, Windows, Kali Linux y Android (que no funciona), pero si inicio GRub Costumizer, ¿Windows no aparece en la lista? ¿Pero por qué?

VirusPLayer
fuente

Respuestas:

3

En cuanto a Android x86 6.0

La asignación "EEEPC" es solo para los EEEPC de ASUS, solo úsela si tiene una, de lo contrario android_x86, no use generic_x86 , se quedará atascado en la animación de arranque y tendrá que reiniciar usando CTRL+ F1para acceder al terminal y emitir rebootcomo La GUI no se cargará. Sé esto porque pasé varias horas siguiendo malos, aunque bien intencionados, consejos.

set root='(hd0,4)'
linux /android-6.0-rc1/kernel quiet root=/dev/ram0 androidboot.hardware=android_x86 acpi_sleep=s3_bios,s3_mode SRC=/android-6.0-rc1
initrd /android-6.0-rc1/initrd.img

Esta fue la configuración final que funcionó para mí en un SONY VAIO de 64 bits de la vieja escuela en una configuración de arranque triple.

'(0,4)'fue la ubicación de mi disco duro y la partición en la que se instaló Android x86, cámbielo en consecuencia. No necesita su UUID, solo necesita exactamente lo que he puesto arriba con su ubicación de instalación como único cambio.

Bus42
fuente
2

Esto es de desarrolladores de XDA

Para GRUB 1.97 - 1.99 y 2.00 +

  1. Para hacerlo más fácil, instale GRUB Customizer. Escriba estos en el emulador de terminal: Código:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt-get update
    sudo apt-get install grub-customizer
    
  2. Abra el personalizador de GRUB y cree una nueva entrada de GRUB.

  3. Abra la pestaña 'Fuentes', escriba estas:

    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
    

Esto es lo que debe cambiar:

  1. set root='(hd0,4)': Cambie el (hd0,4) a partiton Android x86 está instalado. Hd0 significa sda, por lo que si lo instala en sdb, será hd1 y así sucesivamente. Hd0,4 significa el número de partición, en mi caso, hd0,4 significa sda4. Entonces, si lo instala en sda6, será hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: El número aleatorio aquí es el UUID de la partición Android x86 instalado. Debe cambiarlo para corregir el UUID, puede obtener fácilmente el UUID creando una nueva entrada en GRUB Customizer y luego vaya a la pestaña Opciones, luego seleccione la opción 'Linux' en el menú desplegable. Verá el menú desplegable de partición, seleccione su partición. Abra la pestaña de fuente, verá el UUID allí.

  3. androidx86/: La raíz de Android x86 Cámbielo a su raíz Android x86. Puede ver cuál es su raíz Android x86 navegando a la partición Android x86, y verá un nombre de carpeta que comenzó con 'android', esa es la raíz de su Android x86

  4. androidboot.hardware: Tu dispositivo, por supuesto. Nota: Si está utilizando Android 2.3 - 4.0.3, cámbielo a androidboot_hardware. Aquí está la lista de hardware:

  • generic_x86 : Si su hardware no está en la lista, use esto
  • eeepc : Computadoras portátiles EEEPC
  • asus_laptop : Portátiles ASUS (solo portátiles ASUS compatibles)
Mark Kirby
fuente
Tuve que usar una ruta absoluta, es decir /androidx86/kernel. De lo contrario, recibí un error sobre el archivo no encontrado.
banan3'14
1

Esta es una pregunta de diez meses, pero pensé que ayudaría de todos modos. En realidad es una solución muy simple. Estoy lanzando la solución en mi respuesta en lugar de presionar "editar" en la respuesta anterior porque no quiero esperar a la revisión por pares o lo que sea.

De todos modos, la respuesta con la mayor cantidad de votos indica que debe usar el siguiente código:

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

El problema está en la línea dos. Hay una tumba perdida (`) al comienzo de la línea dos. Literalmente tan simple como eso. A veces es la cosa más simple que hace que todo deje de funcionar.

Me imagino que has encontrado una manera de agregar Android x86 a GRUB o simplemente ya no te importa, pero sí. Así que aquí está el código correcto:

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

Aquí está mi /etc/grub.d/40_customarchivo completo (excluyendo las exec taillíneas comentadas al principio):

menuentry "Android x86 4.4 R2" --class android --class gnu-linux --class gnu --class os {
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root a47b5fe5-8969-4774-be9c-72c32a3fd14b
    linux /android-4.4-r2/kernel root=UUID=a47b5fe5-8969-4774-be9c-72c32a3fd14b quiet      androidboot.hardware=generic_x86 SRC=/android-4.4-r2 acpi_sleep=s3_bios,s3_mode
    initrd /android-4.4-r2/initrd.img
}
menuentry "Android x86 5.0.2 UNOFFICIAL" --class android --class gnu-linux --class gnu --class os {
    set root='(hd0,msdos4)'
    search --no-floppy --fs-uuid --set=root d2edeae9-3dc8-41b1-b775-25d0a8028092
    linux /android-2014-12-25/kernel root=UUID=d2edeae9-3dc8-41b1-b775-25d0a8028092 quiet      androidboot.hardware=generic_x86 SRC/android-2014-12-25 acpi_sleep=s3_bios,s3_mode
    initrd /android-2014-12-25/initrd.img
}

Obviamente hd0,msdos2es la partición en la que tengo instalado Android 4.4 R2 y a47b5fe5-8969-4774-be9c-72c32a3fd14bes el UUID de dicha partición y hd0,msdos4es la partición en la que tengo instalado Android 5.0.2 (no oficial y altamente inestable) y d2edeae9-3dc8-41b1-b775-25d0a8028092es el UUID de esa partición.

Para mí, hd0,msdos2es /dev/sdb2y hd0,msdos4es /dev/sdb4. No estoy seguro sobre lo siguiente, pero creo que hace GRUB hd0, hd1, hd2, etc, en un orden diferente que hace Linux sda/hda, sdb/hdb, sdc/hdc, etc Una vez más, no estoy seguro, pero creo que GRUB lo hace en orden físico (como lo harían ser identificado en su BIOS) y Linux los hace en ... uhh ... de otra manera, supongo. De nuevo, no estoy seguro de eso.

Pero sí, si necesita averiguar qué partición en formato de partición GRUB ( hdX,msdosY) es su partición de Android (que veo /dev/sda3), reinicie su PC y presione C para ir a una línea de comando. Luego escriba (hdy presione la pestaña (la pestaña completa automáticamente las cosas) y luego mostrará todas las unidades como opciones de autocompletar (no estoy 100% seguro, pero estoy 70% seguro de que no muestra unidades USB a menos que sean unidades SATA conectadas con un USB al adaptador SATA). A continuación (hd0, escriba y presione la pestaña y enumerará todas las particiones hd0como opciones de autocompletar. Si tiene varias unidades, descubrir cuál /dev/sda3es solo una cuestión de prueba y error al usar el autocompletado (hd. No estoy seguro exactamente de cómo se ven los resultados, pero sé a ciencia cierta que los resultados para(hd0, (obviamente) mostrará los identificadores de partición de estilo GRUB para todas las particiones activadas hd0(para usted, sería a msdos1través de msdos7; en GRUB, hdcomienza en 0 pero msdoscomienza en 1), las etiquetas de todas las particiones hd0y el sistema de archivos ( por lo general, arroja Android x86 en ext2, pero como lo tiene en NTFS, mostrará el sistema de archivos como NTFS; para la mayoría de las personas mostrará ext2, que es cómo sé cuál es porque mis particiones de Android son las únicas particiones ext2 Yo tengo).

Hmm ... inicialmente tenía la intención de corregir el error en la línea dos de la respuesta más popular y terminé con un maldito tutorial casi completo sobre cómo agregar Android x86 a GRUB ...

Andrew Endominium
fuente
1
  • Abierto 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Agregar entrada de menú de Android x86:

    menuentry "Android-4.3-x86" --class android {
    set root='(hd*,msdos*)'
    linux /path/android-4.3-x86/kernel quiet root=/dev/ram0 androidboot.hardware=tx2500 acpi_sleep=s3_bios,s3_mode SRC=/path/android-4.3-x86 vga=788
    initrd /path/android-4.3-x86/initrd.img
    

    (conjunto pathy *como tuyo)

  • Actualización de grub:

    sudo update-grub
    
kevy
fuente
0

Ninguna de las otras respuestas funcionó para mí, así que decidí encontrar la solución yo mismo en los archivos proporcionados por la imagen ISO con los archivos de instalación de Android-x86.

En Android-x86 LiveCD1/efi/boot/android.cfgencontré la siguiente entrada del menú:

set root=$android
linux $kdir/kernel root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug $src $@
initrd $kdir/initrd.img

La pregunta era cuáles eran los valores $kdiry cuáles $androiddeberían ser. Después de montar la partición, instalé el sistema en ( sda2), encontré el nombre del directorio - cm-x86-14.1-r2.

$@son parámetros adicionales ( quieten mi solución) y $srcpueden ignorarse. Finalmente, hice la siguiente entrada de grub:

set root='(hd0,2)'
linux /cm-x86-14.1-r2/kernel quiet root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug
initrd /cm-x86-14.1-r2/initrd.img

Y funciona.

banan3'14
fuente
0

Todo esto fue muy útil, pero al final, me faltaba un poco y no funcionaría hasta que agregue todas las partes.

set root='(hd0,2)'
linux /cm-x86-14.1-r2/kernel quiet root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug
initrd /cm-x86-14.1-r2/initrd.img

Según lo publicado por Banan3'14 tenía razón, pero faltaba:

search --no-floppy --fs-uuid --set=root a47b5fe5-8969-4774-be9c-72c32a3fd14b

Tal vez eso estaba implícito y soy demasiado nuevo para haberlo conseguido, pero una vez que lo conseguí todo, funcionó.

    set root='(hd0,2)'
 search --no-floppy --fs-uuid --set=root a47b5fe5-8969-4774-be9c-72c32a3fd14b
    linux /cm-x86-14.1-r2/kernel quiet root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug
    initrd /cm-x86-14.1-r2/initrd.img
Karen Schmidt
fuente
-1

No se moleste con el sda o el sdc, siempre es (hd0, x) en mi caso si instaló el android x86 en el dispositivo de arranque. Es decir, en mi caso, si su dispositivo está listado en sistemas operativos como ubuntu como / dev / sda o / dev / sdb, debe agregar (hd0, x), x es el número de su partición x86 de Android, en el grub 2 elemento, siempre que inicie con el mismo dispositivo en el que instaló su Android x86 (por ejemplo, instaló Android x86 en una unidad usb llamada U en la partición 3 y U en su ubuntu como / dev / sdc, pero usted arranque desde U, entonces debe agregar root = (hd0,3) pero no root = (hd2,3) en el grub).

CRE
fuente
Traté de mejorar tu respuesta. Pero no puedo hacer la cabeza o la cola. Puede cambiar su respuesta si hace clic en el enlace de edición debajo de su respuesta.
MadMike