Android mit GRUB booten, aber wie?

9

Ich habe ein kleines Problem. Ich habe sieben Partitionen:

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

Ich habe ein Tutorial gefunden, aber ich habe es versucht und es funktioniert nicht. Hier ist der Link:

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

Ich habe dieses Android von android-x86.org und die Version android-x86-4.4-r1.iso verwendet.

Dies ist mein 40_Costum-Dokument:

#!/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}

Wenn ich meinen PC starte , kommt der GRUB- Boot-Manager und ich kann Android auswählen, aber Android wird nicht gestartet. Der Hintergrund ist lila und nichts passiert.

Was wäre ein vollständiges und funktionierendes 40_CustommSkript?


Es funktioniert nicht, wenn ich ein Skript in Grub Customizer erstelle und es speichere. Es wird im Startmenü nicht angezeigt, wenn ich den Grub Customizer erneut öffne. Das Skript wird entfernt.

Das ist mein Code:

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

Jetzt habe ich ein zusätzliches Problem:

Wenn ich meinen Laptop starte, werden Ubuntu, Windows, Kali Linux und Android angezeigt (was nicht funktioniert), aber wenn ich den GRub Costumizer starte, wird Windows nicht aufgelistet?! Aber warum?

VirusPLayer
quelle

Antworten:

3

In Bezug auf Android x86 6.0

Die „EEEPC“ Zuordnung ist nur für ASUS EEEPCs, es nur verwenden , wenn Sie eine haben, sonst verwendet android_x86, nicht generic_x86 verwenden , werden Sie an der Boot - Animation stecken und neu starten müssen mit CTRL+ F1dem Zugriff auf das Endgerät und die Frage , rebootwie die Die GUI wird nicht geladen. Ich weiß das, weil ich mehrere Stunden damit verbracht habe, schlechten, wenn auch gut gemeinten Ratschlägen zu folgen.

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

Dies war die endgültige Konfiguration, die für mich auf einem SONY VAIO 64-Bit der alten Schule mit einem Triple-Boot-Setup funktioniert hat.

'(0,4)'war der Speicherort meiner Festplatte und Partition, auf der Android x86 installiert wurde, ändern Sie sie entsprechend. Sie benötigen Ihre UUID nicht, Sie benötigen nur genau das, was ich oben angegeben habe, wobei Ihr Installationsort die einzige Änderung ist.

Bus42
quelle
2

Dies ist von XDA-Entwicklern

Für GRUB 1.97 - 1.99 & 2.00 +

  1. Installieren Sie GRUB Customizer, um dies zu vereinfachen. Geben Sie diese in den Terminalemulator ein: Code:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt-get update
    sudo apt-get install grub-customizer
    
  2. Öffnen Sie den GRUB-Customizer und erstellen Sie einen neuen GRUB-Eintrag.

  3. Öffnen Sie die Registerkarte 'Quellen' und geben Sie Folgendes ein:

    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
    

Folgendes muss geändert werden:

  1. set root='(hd0,4)': Ändern Sie die (hd0,4) auf Partiton Android x86 ist installiert. Das hd0 bedeutet sda. Wenn Sie es also auf sdb installieren, ist es hd1 und so weiter. Das hd0,4 bedeutet die Partitionsnummer, in meinem Fall bedeutet hd0,4 sda4. Wenn Sie es also auf sda6 installieren, ist es hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: Die Zufallszahl hier ist die UUID der Partition, auf der Android x86 installiert ist. Sie müssen sie ändern, um die UUID zu korrigieren. Sie können die UUID einfach abrufen, indem Sie einen neuen Eintrag im GRUB Customizer erstellen. Gehen Sie dann zur Registerkarte Optionen und wählen Sie die Option 'Linux' in der Dropdown-Liste. Sie sehen eine Partitions-Dropdown-Liste. Wählen Sie Ihre Partition aus. Öffnen Sie die Registerkarte Quelle. Dort wird die UUID angezeigt.

  3. androidx86/: Das Stammverzeichnis von Android x86 Ändern Sie es in Ihr Android x86-Stammverzeichnis. Sie können sehen, was Ihr Android x86-Stammverzeichnis ist, indem Sie zur Android x86-Partition navigieren. Außerdem wird ein Ordnername angezeigt, der mit 'android' beginnt. Dies ist das Stammverzeichnis Ihres Android x86-Stammverzeichnisses

  4. androidboot.hardware: Ihr Gerät natürlich. Hinweis: Wenn Sie Android 2.3 - 4.0.3 verwenden, ändern Sie es in androidboot_hardware. Hier ist die Liste der Hardware:

  • generic_x86 : Wenn Ihre Hardware nicht aufgeführt ist, verwenden Sie diese
  • eeepc : EEEPC-Laptops
  • asus_laptop : ASUS-Laptops (nur unterstützte ASUS-Laptops)
Mark Kirby
quelle
Ich musste einen absoluten Pfad benutzen, dh /androidx86/kernel. Ansonsten habe ich eine Fehlermeldung erhalten, dass die Datei nicht gefunden wurde.
Banan3'14
1

Dies ist eine zehn Monate alte Frage, aber ich dachte, ich würde trotzdem helfen. Es ist eigentlich eine sehr einfache Lösung. Ich werfe das Update in meine Antwort, anstatt bei der obigen Antwort auf "Bearbeiten" zu klicken, weil ich nicht auf Peer Review oder was auch immer warten möchte.

Wie auch immer, die Antwort mit den meisten Stimmen besagt, dass Sie den folgenden Code verwenden sollten:

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

Das Problem ist in Zeile zwei. Am Anfang der zweiten Zeile befindet sich ein streunendes Grab (`). Buchstäblich so einfach. Manchmal ist es das Einfachste, was dazu führt, dass alles nicht mehr funktioniert.

Ich stelle mir vor, dass Sie entweder einen Weg gefunden haben, Android x86 zu GRUB hinzuzufügen, oder es interessiert Sie einfach nicht mehr, aber ja. Also hier ist der richtige Code:

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

Hier ist meine gesamte /etc/grub.d/40_customDatei (mit Ausnahme der exec tailund der auskommentierten Zeilen am Anfang):

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
}

Offensichtlich hd0,msdos2ist die Partition, auf der Android 4.4 R2 installiert a47b5fe5-8969-4774-be9c-72c32a3fd14bist, die UUID dieser Partition und hd0,msdos4die Partition, auf der Android 5.0.2 (inoffiziell und sehr instabil) installiert ist und d2edeae9-3dc8-41b1-b775-25d0a8028092die UUID dieser Partition ist.

Für mich hd0,msdos2ist /dev/sdb2und hd0,msdos4ist /dev/sdb4. Ich bin nicht sicher auf der nächsten, aber ich denke , dass GRUB tut hd0, hd1, hd2etc. in einer anderen Reihenfolge als Linux tut sda/hda, sdb/hdb, sdc/hdcetc. Auch nicht sicher, aber ich denke , GRUB tut es in der physischen Ordnung (wie sie es in Ihrem BIOS identifiziert werden) und Linux macht sie auf ... äh ... auf eine andere Weise, denke ich. Auch hier bin ich mir nicht sicher.

Aber ja, wenn Sie herausfinden müssen, welche Partition im GRUB-Partitionsformat ( hdX,msdosY) Ihre Android-Partition ist (was ich sehe /dev/sda3), starten Sie Ihren PC neu und drücken Sie C, um zu einer Befehlszeile zu gelangen. Dann geben (hdund Hit Registerkarte (Tab autocompletes Dinge) , und es wird dann alle Laufwerke als die automatische Vervollständigung Optionen Liste (nicht 100% sicher , aber ich bin wie 70% sicher , dass es nicht USB - Laufwerke angezeigt werden, es sei denn , sie sind SATA - Laufwerke mit USB angeschlossen zum SATA-Adapter). Dann geben (hd0, und drücken Sie Tab und es werden alle Partitionen auf Liste hd0als die automatische Vervollständigung Optionen. Wenn Sie über mehrere Laufwerke verfügen, müssen Sie /dev/sda3bei Verwendung der automatischen Vervollständigung nur herausfinden, welches Laufwerk nur ein Versuch und Irrtum ist (hd. Ich bin mir nicht sicher , wie die Ergebnisse genau aussehen, aber ich weiß, dass die Ergebnisse für(hd0Wird (natürlich) zeigen die GRUB-Stil Partitionskennungen für alle Partitionen auf hd0(für Sie, würde es sein , msdos1durch msdos7, in GRUB hdbeginnt bei 0 , aber msdosbeginnt bei 1), wobei die Etiketten aller Partitionen auf hd0, und das Dateisystem ( Normalerweise werfen Sie Android x86 auf ext2, aber da Sie es auf NTFS haben, wird das Dateisystem als NTFS angezeigt. Für die meisten Benutzer wird ext2 angezeigt. Daher weiß ich, um welches es sich handelt, da meine Android-Partitionen die einzigen ext2-Partitionen sind Ich habe).

Hmm ... Ich hatte ursprünglich vorgehabt, nur den Fehler in Zeile zwei der beliebtesten Antwort zu korrigieren, und am Ende hatte ich ein fast vollständiges Tutorial zum Hinzufügen von Android x86 zu GRUB ...

Andrew Endominium
quelle
1
  • Öffnen 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Hinzufügen eines Android x86-Menüeintrags:

    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 pathund *wie deins)

  • Update Grub:

    sudo update-grub
    
kevy
quelle
0

Keine der anderen Antworten hat bei mir funktioniert, daher habe ich beschlossen, die Lösung selbst in den Dateien zu finden, die vom ISO-Image mit Android-x86-Installationsdateien bereitgestellt werden.

In Android-x86 LiveCD1/efi/boot/android.cfgfand ich folgenden Menüeintrag:

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

Die Frage war, was die Werte von $kdirund $androidsein sollten. Nach dem Mounten der Partition, auf der ich das System installiert habe ( sda2), habe ich den Namen des Verzeichnisses gefunden - cm-x86-14.1-r2.

$@sind zusätzliche Parameter ( quietin meiner Lösung) und $srckönnen ignoriert werden. Zum Schluss habe ich folgenden Madeneintrag gemacht:

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

Und es funktioniert.

banan3'14
quelle
0

Das war alles sehr hilfreich, aber am Ende fehlte es mir ein wenig und es würde nicht funktionieren, bis ich alle Teile hinzugefügt habe.

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

Wie von Banan3'14 gepostet war richtig, aber es fehlte:

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

Vielleicht war das impliziert und ich bin zu neu, um das zu bekommen, aber sobald ich alles zusammen hatte, funktionierte es.

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

Kümmere dich nicht um sda oder sdc, es ist in meinem Fall immer (hd0, x), wenn du das Android x86 auf dem Boot-Gerät installiert hast. Das heißt, in meinem Fall sollten Sie hinzufügen, ob Ihr Gerät in einem Betriebssystem wie Ubuntu als / dev / sda oder / dev / sdb aufgeführt ist (hd0, x), x ist die Nummer Ihrer Android x86-Partition im Grub 2 Element, solange Sie mit demselben Gerät booten, auf dem Sie Ihr Android x86 installiert haben (z. B. haben Sie Android x86 auf einem USB-Laufwerk mit dem Namen U auf Partition 3 installiert und U in Ihrem Ubuntu als / dev / sdc aufgeführt, aber Sie Booten Sie von U, dann sollten Sie root = (hd0,3) hinzufügen, aber nicht root = (hd2,3) im Grub.

CRE
quelle
Ich habe versucht, Ihre Antwort zu verbessern. Aber ich kann weder Kopf noch Schwanz daraus machen. Sie können Ihre Antwort ändern, indem Sie auf den Bearbeitungslink unter Ihrer Antwort klicken .
MadMike