Inicializando o Android com GRUB, mas como?

9

Eu tenho um pequeno problema. Eu tenho sete partições:

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

Encontrei um tutorial, mas tentei isso e não funciona. Aqui está o link:

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

Eu usei este Android do android-x86.org e a versão android-x86-4.4-r1.iso.

Este é o meu 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}

Se eu iniciar o meu PC, o gerenciador de inicialização GRUB vem e posso escolher o Android, mas ele não inicializa o Android. O fundo é roxo e nada acontece.

O que seria um 40_Custommscript completo e funcional ?


Não funciona se eu criar um script no Grub Customizer e salvá-lo. Ele não aparece no menu de inicialização. Se eu abrir o Grub Customizer novamente, o script será removido.

Este é o meu 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

Agora eu tenho um problema extra:

Se eu iniciar o meu laptop, ele mostra Ubuntu, Windows, Kali Linux e Android (o que não funciona), mas se eu iniciar o GRub Costumizer, o Windows não estará listado ?! Mas por que?

VirusPLayer
fonte

Respostas:

3

Em relação ao Android x86 6.0

A atribuição "EEEPC" é apenas para ASUS EEEPCs, use-a apenas se você tiver uma; caso contrário android_x86, não use generic_x86 , você ficará preso na animação de inicialização e precisará reiniciar usando CTRL+ F1para acessar o terminal e emitir rebootcomo A GUI não será carregada. Eu sei disso porque passei várias horas seguindo conselhos ruins, embora bem-intencionados.

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

Essa foi a configuração final que funcionou para mim em um SONY VAIO de 64 bits da velha escola em uma configuração de inicialização tripla.

'(0,4)'foi o local do meu disco rígido e a partição do Android x86 foi instalada, altere-a de acordo. Você não precisa do seu UUID, precisa apenas exatamente do que eu coloquei acima, com o local da instalação sendo a única alteração.

Ônibus42
fonte
2

Isto é de XDA Developers

Para GRUB 1.97 - 1.99 e 2.00 +

  1. Para facilitar, instale o Personalizador GRUB Digite-os no 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 o personalizador do GRUB e faça uma nova entrada no GRUB.

  3. Abra a guia "Fontes", digite:

    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
    

Aqui está o que mudar:

  1. set root='(hd0,4)': Altere (hd0,4) para a partição Android x86 instalada. O hd0 significa sda; portanto, se você instalá-lo no sdb, será hd1 e assim por diante. O hd0,4 significa o número da partição, no meu caso, hd0,4 significa sda4. Então, se você instalá-lo no sda6, será hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: O número aleatório aqui é o UUID da partição Android x86 está instalado. Você deve alterá-lo para corrigir o UUID, você pode facilmente obter o UUID criando uma nova entrada no GRUB Customizer, vá para a guia Opções e selecione a opção 'Linux' no menu suspenso. Você verá a lista suspensa de partições, selecione sua partição. Abra a guia fonte, você verá o UUID lá.

  3. androidx86/: A raiz do Android x86 Altere-a para a raiz do Android x86. Você pode ver qual é a sua raiz do Android x86 navegando até a partição do Android x86 e verá um nome de pasta iniciado com 'android', que é a raiz do seu Android x86

  4. androidboot.hardware: Seu dispositivo, é claro. Nota: Se você estiver usando o Android 2.3 - 4.0.3, altere-o para androidboot_hardware Aqui está a lista de hardware:

  • generic_x86 : Se o seu hardware não estiver listado, use este
  • eeepc : Laptops EEEPC
  • asus_laptop : Laptops ASUS (apenas laptops ASUS suportados)
Mark Kirby
fonte
Eu tive que usar um caminho absoluto, ou seja /androidx86/kernel. Caso contrário, recebi um erro sobre o arquivo não encontrado.
banan3'14
1

Esta é uma pergunta de dez meses, mas achei que iria ajudar de qualquer maneira. Na verdade, é uma correção muito simples. Estou lançando a correção na minha resposta em vez de clicar em "editar" na resposta acima porque não quero esperar pela revisão por pares ou o que for.

De qualquer forma, a resposta com mais votos indica que você deve usar o seguinte 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

A questão está na linha dois. Há uma sepultura perdida (`) no início da linha dois. Literalmente tão simples quanto isso. Às vezes, é a coisa mais simples que faz tudo parar de funcionar.

Eu imagino que você encontrou uma maneira de adicionar o Android x86 ao GRUB ou simplesmente não liga mais, mas sim. Então, aqui está o código correto:

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

Aqui está o meu /etc/grub.d/40_customarquivo inteiro (excluindo as exec taillinhas comentadas e no início):

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,msdos2é a partição em que tenho o Android 4.4 R2 instalado e a47b5fe5-8969-4774-be9c-72c32a3fd14bé o UUID da referida partição e hd0,msdos4é a partição em que tenho o Android 5.0.2 (não oficial e altamente instável) instalado e d2edeae9-3dc8-41b1-b775-25d0a8028092sendo o UUID dessa partição.

Para mim, hd0,msdos2é /dev/sdb2e hd0,msdos4é /dev/sdb4. Eu não tenho certeza sobre o seguinte, mas eu acho que o GRUB faz hd0, hd1, hd2, etc. em uma ordem diferente do que o Linux faz sda/hda, sdb/hdb, sdc/hdc, etc. Novamente, não tenho certeza, mas acho que o GRUB faz isso de ordem física (como fariam identificados no BIOS) e o Linux faz isso de ... de outra maneira, eu acho. Novamente, não tenho certeza disso.

Mas sim, se você precisar descobrir qual partição no formato de partição GRUB ( hdX,msdosY) é a sua partição Android (o que eu vejo é /dev/sda3), reinicie o seu PC e pressione C para ir para uma linha de comando. Em seguida, digite (hde clique na guia (a guia preenche automaticamente as coisas) e, em seguida, lista todas as unidades como opções de preenchimento automático (sem 100% de certeza, mas tenho 70% de certeza de que não exibe unidades USB, a menos que sejam unidades SATA conectadas a uma porta USB adaptador SATA). Em seguida (hd0, digite e clique na guia e ele listará todas as partições hd0como opções de preenchimento automático. Se você tiver várias unidades, descobrir qual delas /dev/sda3é apenas uma questão de tentativa e erro com o uso do preenchimento automático ativado (hd. Não sei exatamente como são os resultados, mas sei que os resultados para(hd0, Vai (obviamente) exibir os identificadores de partição no estilo GRUB para todas as partições hd0(para você, seria msdos1através de msdos7, em GRUB, hdcomeça em 0, mas msdoscomeça em 1), os rótulos de todas as partições hd0e o sistema de arquivos ( geralmente você joga o Android x86 no ext2, mas como o possui no NTFS, ele exibia o sistema de arquivos como NTFS; para a maioria das pessoas, exibia o ext2, que é como eu sei qual é porque minhas partições Android são as únicas partições ext2 Eu tenho).

Hmm ... Inicialmente, pretendia corrigir o erro na linha dois da resposta mais popular e acabei com um tutorial quase completo sobre como adicionar o Android x86 ao GRUB ...

Andrew Endominium
fonte
1
  • Abrir 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Adicione a entrada de menu do 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
    

    (definido pathe *como o seu)

  • Atualizar grub:

    sudo update-grub
    
kevy
fonte
0

Nenhuma das outras respostas funcionou para mim, então decidi encontrar a solução nos arquivos fornecidos pela imagem ISO com os arquivos de instalação do Android-x86.

Em Android-x86 LiveCD1/efi/boot/android.cfgeu encontrei a seguinte entrada de menu:

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

A questão era quais eram os valores $kdire $androiddeveriam ser. Depois de montar a partição, instalei o sistema em ( sda2), encontrei o nome do diretório - cm-x86-14.1-r2.

$@são parâmetros adicionais ( quietna minha solução) e $srcpodem ser ignorados. Por fim, fiz a seguinte entrada do 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

E isso funciona.

banan3'14
fonte
0

Tudo isso foi muito útil, mas no final, faltava um pouco para mim e não funcionou até que eu adicionasse todas as 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

Como publicado por Banan3'14, estava certo, mas estava faltando:

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

Talvez isso estivesse implícito e eu sou novo demais para ter conseguido isso, mas depois que juntei tudo, funcionou.

    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
fonte
-1

Não se preocupe com o sda ou sdc, é sempre (hd0, x) no meu caso, se você instalou o android x86 no dispositivo de inicialização. Ou seja, no meu caso, se o seu dispositivo está listado em sistemas operacionais como ubuntu como / dev / sda ou / dev / sdb, você deve adicionar (hd0, x), x é o número da sua partição android x86, no grub 2 item, desde que você inicialize com o mesmo dispositivo em que instalou o android x86 (por exemplo, você instalou o android x86 em uma unidade USB denominada U na partição 3 e U listado no ubuntu como / dev / sdc, mas você inicialize a partir do U, adicione root = (hd0,3), mas não root = (hd2,3) no grub).

CRE
fonte
Eu tentei melhorar sua resposta. Mas não dá para entender. Você pode alterar sua resposta se clicar no link de edição abaixo da sua resposta.
21314 MadMike