Avvio di Android con GRUB, ma come?


9

Ho un piccolo problema Ho sette partizioni:

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

Ho trovato un tutorial, ma ho provato questo e non funziona. Ecco il link:

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

Ho usato questo Android da android-x86.org e la versione android-x86-4.4-r1.iso.

Questo è il mio 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 avvio il mio PC , arriva il boot manager di GRUB e posso scegliere Android, ma non avvia Android. Lo sfondo è viola e non succede nulla.

Quale sarebbe uno 40_Custommscript completo e funzionante ?


Non funziona se creo uno script in Grub Customizer e lo salvo. Non viene visualizzato nel menu di avvio se apro nuovamente Grub Customizer lo script viene rimosso.

Questo è il mio codice:

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

Ora ho un ulteriore problema:

Se avvio il mio laptop mostra Ubuntu, Windows, Kali Linux e Android (che non funziona), ma se avvio GRub Costumizer il Windows non è elencato ?! Ma perché?

Risposte:


3

Per quanto riguarda Android x86 6.0

L'assegnazione "EEEPC" è solo per i EEEPC ASUS, usala solo se ne hai una, altrimenti usa android_x86, non usi generic_x86 , rimarrai bloccato nell'animazione di avvio e dovrai riavviare usando CTRL+ F1per accedere al terminale e rilasciarlo rebootcome La GUI non verrà caricata. Lo so perché ho trascorso diverse ore a seguire un cattivo consiglio, sebbene ben intenzionato.

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

Questa è stata la configurazione finale che ha funzionato per me su una vecchia scuola SONY VAIO 64 bit su una configurazione a triplo avvio.

'(0,4)'era la posizione del mio disco rigido e partizione su cui era installato Android x86, cambiarlo di conseguenza. Non hai bisogno del tuo UUID, hai solo bisogno esattamente di quello che ho messo sopra con la tua posizione di installazione come unica modifica.


2

Questo è dagli sviluppatori XDA

Per GRUB 1.97 - 1.99 e 2.00 +

  1. Per semplificare, installa GRUB Customizer Digita questi nell'emulatore di terminale: Codice:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt-get update
    sudo apt-get install grub-customizer
    
  2. Apri il personalizzatore di GRUB e crea una nuova voce di GRUB.

  3. Apri la scheda "Fonti", digita questi:

    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
    

Ecco cosa cambiare:

  1. set root='(hd0,4)': Cambia (hd0,4) in partiton Android x86 installato. Hd0 significa sda, quindi se lo installi su sdb, sarà hd1 e così via. Hd0,4 significa il numero di partizione, nel mio caso hd0,4 significa sda4. Quindi, se lo installi su sda6, sarà hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: Il numero casuale qui è l'UUID della partizione Android x86 installato È necessario modificarlo per correggere l'UUID, puoi facilmente ottenere l'UUID creando una nuova voce in GRUB Customizer quindi vai alla scheda Opzioni, quindi seleziona l'opzione 'Linux' nel menu a discesa. Vedrai il menu a discesa della partizione, seleziona la tua partizione. Apri la scheda sorgente, vedrai l'UUID lì.

  3. androidx86/: La radice di Android x86 Modificala nella tua radice Android x86. Puoi vedere qual è il tuo root Android x86 navigando nella partizione x86 di Android e vedrai un nome di cartella iniziato con 'android', che è la radice del tuo Android x86

  4. androidboot.hardware: Il tuo dispositivo, ovviamente. Nota: se si utilizza Android 2.3 - 4.0.3, modificarlo in androidboot_hardware Ecco l'elenco di hardware:

  • generic_x86 : Se il tuo hardware non è elencato, usa questo
  • eeepc : Laptop EEEPC
  • asus_laptop : Laptop ASUS (solo laptop ASUS supportati)

Ho dovuto usare un percorso assoluto, cioè /androidx86/kernel. Altrimenti, ho ricevuto un errore sul file non trovato.
banan3'14

1

Questa è una domanda di dieci mesi, ma ho pensato che avrei aiutato comunque. In realtà è una soluzione molto semplice. Sto lanciando la correzione nella mia risposta invece di premere "modifica" sulla risposta sopra perché non voglio aspettare la revisione tra pari o altro.

Ad ogni modo, la risposta con il maggior numero di voti indica che è necessario utilizzare il seguente codice:

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

Il problema è nella seconda riga. C'è una tomba vagante (`) all'inizio della seconda riga. Letteralmente semplice. A volte è la cosa più semplice che fa smettere di funzionare tutto.

Immagino che o hai trovato il modo di aggiungere Android x86 a GRUB o semplicemente non ti interessa più, ma sì. Quindi ecco il codice corretto:

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

Ecco il mio intero /etc/grub.d/40_customfile (escludendo le exec tailrighe e quelle commentate all'inizio):

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
}

Ovviamente hd0,msdos2è la partizione su cui ho installato Android 4.4 R2 ed a47b5fe5-8969-4774-be9c-72c32a3fd14bè l'UUID di detta partizione ed hd0,msdos4è la partizione su cui ho installato Android 5.0.2 (non ufficiale e altamente instabile) ed d2edeae9-3dc8-41b1-b775-25d0a8028092essendo l'UUID di quella partizione.

Per me, hd0,msdos2è /dev/sdb2ed hd0,msdos4è /dev/sdb4. Non sono sicuro su quanto segue, ma credo che GRUB fa hd0, hd1, hd2, ecc in un ordine diverso rispetto Linux fa sda/hda, sdb/hdb, sdc/hdc, ecc Anche in questo caso, non è sicuro, ma penso che GRUB lo fa in modo fisico (come farebbero essere identificato nel BIOS) e Linux li fa in ... uhh ... in qualche altro modo, immagino. Ancora una volta, non ne sono sicuro.

Ma sì, se hai bisogno di capire quale partizione in formato di partizione GRUB ( hdX,msdosY) è la tua partizione Android (che vedo è /dev/sda3), riavvia il PC e premi C per passare a una riga di comando. Quindi digita (hde premi la scheda (la scheda completa automaticamente le cose) e quindi elencherà tutte le unità come opzioni di completamento automatico (non sicuro al 100% ma sono sicuro al 70% che non visualizza le unità USB a meno che non siano unità SATA connesse con una USB all'adattatore SATA). Quindi digitare (hd0e premere la scheda e verranno elencate tutte le partizioni hd0come opzioni di completamento automatico. Se si dispone di più unità, capire quale /dev/sda3è solo una questione di tentativi ed errori con l'utilizzo del completamento automatico attivato (hd. Io non sono sicuro sono esattamente ciò che i risultati assomigliano ma so per certo che i risultati(hd0, mostrerà (ovviamente) gli identificatori di partizione in stile GRUB per tutte le partizioni su hd0(per te, sarebbe msdos1attraverso msdos7; in GRUB, hdinizia da 0 ma msdosinizia da 1), le etichette di tutte le partizioni su hd0e il filesystem ( di solito si lancia Android x86 su ext2 ma dato che ce l'hai su NTFS, visualizzerebbe il filesystem come NTFS; per la maggior parte delle persone visualizzerebbe ext2 che è come so quale sia perché le mie partizioni Android sono le uniche partizioni ext2 Io ho).

Hmm ... Avevo inizialmente intenzione di correggere l'errore solo nella seconda riga della risposta più popolare e ho finito con un dannato tutorial quasi completo su come aggiungere Android x86 a GRUB ...


1
  • Aperto 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Aggiungi voce di menu 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
    

    (set pathe *come il tuo)

  • Aggiorna grub:

    sudo update-grub
    

0

Nessuna delle altre risposte ha funzionato per me, quindi ho deciso di trovare la soluzione da solo nei file forniti dall'immagine ISO con i file di installazione di Android-x86.

In Android-x86 LiveCD1/efi/boot/android.cfgho trovato la seguente voce di menu:

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

La domanda era: quali sono i valori di $kdire$android dovevano essere. Dopo aver montato la partizione ho installato il sistema su ( sda2), ho trovato il nome della directory - cm-x86-14.1-r2.

$@sono parametri aggiuntivi ( quietnella mia soluzione) e $srcpossono essere ignorati. Alla fine ho inserito la seguente voce di 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 funziona


0

Tutto questo è stato molto utile, ma alla fine mancava un po 'per me e non avrebbe funzionato fino a quando non avessi aggiunto tutte le parti.

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

Come pubblicato da Banan3'14 aveva ragione, ma mancava:

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

Forse era implicito e sono troppo nuovo per averlo capito, ma una volta che ho messo tutto insieme, ha funzionato.

    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

-1

Non preoccuparti di sda o sdc, è sempre (hd0, x) nel mio caso se hai installato Android x86 sul dispositivo di avvio. Vale a dire, nel mio caso, se il tuo dispositivo è elencato in os come ubuntu come / dev / sda o / dev / sdb, dovresti aggiungere (hd0, x), x è il numero della tua partizione x86 android, nel grub 2 elementi, purché si avvii con lo stesso dispositivo in cui è stato installato Android x86 (ad esempio, Android X86 è stato installato in un'unità USB denominata U nella partizione 3 e U elencato nel proprio ubuntu come / dev / sdc, ma si avvia da U, quindi dovresti aggiungere root = (hd0,3) ma non root = (hd2,3) nel grub).


Ho provato a migliorare la tua risposta. Ma non riesco a capirlo. Puoi cambiare la tua risposta se fai clic sul link modifica sotto la tua risposta.
MadMike,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.