Uruchamianie Androida za pomocą GRUB-a, ale jak?

9

Mam mały problem. Mam siedem partycji:

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

Znalazłem samouczek, ale próbowałem tego i to nie działa. Oto link:

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

Użyłem tego Androida z android-x86.org i wersji android-x86-4.4-r1.iso.

To jest mój dokument 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}

Po uruchomieniu komputera pojawia się menedżer rozruchu GRUB i mogę wybrać system Android, ale nie uruchamia on systemu Android. Tło jest fioletowe i nic się nie dzieje.

Jaki byłby kompletny i działający 40_Custommskrypt?


Nie działa, jeśli utworzę skrypt w Grub Customizer i go zapiszę. Nie pojawia się w menu rozruchu, jeśli ponownie otworzę Grub Customizer, skrypt zostanie usunięty.

To jest mój kod:

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

Teraz mam jeden dodatkowy problem:

Jeśli uruchomię laptopa, pokaże to Ubuntu, Windows, Kali Linux i Android (co nie działa), ale jeśli uruchomię GRub Costumizer, Windowsa nie ma na liście ?! Ale dlaczego?

VirusPLayer
źródło

Odpowiedzi:

3

Odnośnie Androida x86 6.0

Przypisanie „EEEPC” dotyczy tylko urządzeń EEEPC firmy ASUS, używaj go tylko, jeśli go masz, w przeciwnym razie używaj android_x86, nie używaj generic_x86 , utkniesz na animacji rozruchu i będziesz musiał ponownie uruchomić, używając CTRL+, F1aby uzyskać dostęp do terminala i wydać rebootjako GUI nie zostanie załadowane. Wiem o tym, ponieważ spędziłem kilka godzin, słuchając złych, choć dobrych intencji, rad.

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

To była ostateczna konfiguracja, która działała dla mnie na starej szkole SONY VAIO 64-bitowej na potrójnym rozruchu.

'(0,4)'była lokalizacja mojego dysku twardego i partycji, na której zainstalowano system Android x86, odpowiednio go zmień. Nie potrzebujesz swojego UUID, potrzebujesz tylko dokładnie tego, co podałem powyżej, a lokalizacja instalacji jest jedyną zmianą.

Bus42
źródło
2

To jest od programistów XDA

Dla GRUB 1.97 - 1.99 i 2.00 +

  1. Aby to ułatwić, zainstaluj GRUB Customizer Wpisz je do emulatora terminala: Kod:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt-get update
    sudo apt-get install grub-customizer
    
  2. Otwórz konfigurator GRUB i wprowadź nowy wpis GRUB.

  3. Otwórz kartę „Źródła”, wpisz te:

    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
    

Oto, co zmienić:

  1. set root='(hd0,4)': Zmień (hd0,4) na partiton Zainstalowano system Android x86. Hd0 oznacza sda, więc jeśli zainstalujesz go na sdb, będzie to hd1 i tak dalej. Hd0,4 oznacza numer partycji, w moim przypadku hd0,4 oznacza sda4. Więc jeśli zainstalujesz go na sda6, będzie to hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: Losowa liczba tutaj to identyfikator UUID partycji. Zainstalowano system Android x86. Musisz zmienić go, aby poprawić UUID, możesz łatwo uzyskać identyfikator UUID, tworząc nowy wpis w GRUB Customizer, a następnie przejdź do karty Opcje, a następnie wybierz opcję „Linux” z menu rozwijanego. Zobaczysz listę rozwijaną partycji, wybierz partycję. Otwórz kartę źródłową, zobaczysz tam UUID.

  3. androidx86/: Katalog główny systemu Android x86 Zmień go na katalog główny systemu Android x86. Możesz zobaczyć, jaki jest twój root systemu Android x86, przechodząc do partycji Android x86, a zobaczysz nazwę folderu rozpoczynającą się od „android”, to jest root twojego Androida x86

  4. androidboot.hardware: Oczywiście twoje urządzenie. Uwaga: jeśli używasz Androida 2.3 - 4.0.3, zmień go na androidboot_hardware Oto lista sprzętu:

  • generic_x86 : Jeśli twojego sprzętu nie ma na liście, użyj tego
  • eeepc : Laptopy EEEPC
  • asus_laptop : Laptopy ASUS (tylko obsługiwane laptopy ASUS)
Mark Kirby
źródło
Musiałem użyć ścieżki bezwzględnej, tj /androidx86/kernel. W przeciwnym razie wystąpił błąd związany z brakiem pliku.
banan3'14
1

To pytanie ma dziesięć miesięcy, ale pomyślałem, że i tak pomogę. To jest naprawdę bardzo prosta poprawka. Rzucam poprawkę w mojej odpowiedzi zamiast naciskać „edytuj” w powyższej odpowiedzi, ponieważ nie chcę czekać na recenzowanie lub cokolwiek innego.

W każdym razie odpowiedź z największą liczbą głosów mówi, że powinieneś użyć następującego kodu:

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

Problem jest w drugiej linii. Na początku drugiego wiersza znajduje się zbłąkany grób (`). Dosłownie tak proste. Czasami jest to najprostsza rzecz, która powoduje, że wszystko przestaje działać.

Wyobrażam sobie, że albo znalazłeś sposób, aby dodać Androida x86 do GRUBA, albo już cię to nie obchodzi, ale tak. Oto poprawny kod:

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

Oto cały mój /etc/grub.d/40_customplik (z wyjątkiem exec tailwierszy i komentarzy skomentowanych na początku):

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
}

Oczywiście hd0,msdos2jest to partycja, na której mam zainstalowany system Android 4.4 R2 i a47b5fe5-8969-4774-be9c-72c32a3fd14bjest to UUID tej partycji i hd0,msdos4jest to partycja, na której mam zainstalowany system Android 5.0.2 (nieoficjalny i wysoce niestabilny) d2edeae9-3dc8-41b1-b775-25d0a8028092, który jest UUID tej partycji.

Dla mnie hd0,msdos2jest /dev/sdb2i hd0,msdos4jest /dev/sdb4. Nie jestem pewien, co następuje, ale myślę, że GRUB robi hd0, hd1, hd2, itd. W innej kolejności niż Linux robi sda/hda, sdb/hdb, sdc/hdc, itd. I znowu, nie jestem pewien, ale myślę, GRUB robi to w celu fizycznego (tak samo, jak być zidentyfikowanym w BIOS-ie), a Linux robi to w ... hmm ... w inny sposób, tak myślę. Znowu nie jestem tego pewien.

Ale tak, jeśli chcesz dowiedzieć się, która partycja w formacie partycji GRUB ( hdX,msdosY) twoja partycja na Androida jest (co widzę, że jest /dev/sda3), uruchom ponownie komputer i naciśnij C, aby przejść do wiersza polecenia. Następnie wpisz (hdi wciśnij tab (tab autouzupełnianie rzeczy), a następnie wyświetli listę wszystkich dysków jako opcje autouzupełniania (nie jestem w 100% pewien, ale jestem pewien, że 70% jest pewien, że nie wyświetla napędów USB, chyba że są to napędy SATA połączone z USB na adapter SATA). Następnie wpisz (hd0i naciśnij klawisz Tab, a wyświetli się lista wszystkich partycji hd0jako opcji autouzupełniania. Jeśli masz wiele dysków, ustalenie, który z nich /dev/sda3jest tylko kwestią prób i błędów przy korzystaniu z autouzupełniania (hd. Nie jestem pewien , jak dokładnie wyglądają wyniki, ale wiem na pewno , że wyniki(hd0Będzie (oczywiście) wyświetla GRUB stylu identyfikatory partycji dla wszystkich partycjach hd0(na ty, że to będzie msdos1poprzez msdos7; w GRUB, hdzaczyna się od 0, ale msdoszaczyna się od 1), etykiety wszystkich partycjach hd0, a system plików ( zwykle wrzucasz Androida x86 na ext2, ale skoro masz go na NTFS, wyświetlałby system plików jako NTFS; dla większości ludzi wyświetlałby ext2, dlatego wiem, który to jest, ponieważ moje partycje Androida są jedynymi partycjami ext2 Mam).

Hmm ... Początkowo zamierzałem tylko poprawić błąd w drugiej linii najpopularniejszej odpowiedzi, a skończyłem z cholernie prawie pełnym samouczkiem na temat dodawania Androida x86 do GRUBa ...

Andrew Endatorium
źródło
1
  • Otwórz 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Dodaj pozycję menu systemu 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
    

    (ustaw pathi *jako twoje)

  • Zaktualizuj grub:

    sudo update-grub
    
Kevy
źródło
0

Żadna z pozostałych odpowiedzi nie działała dla mnie, dlatego postanowiłem sam znaleźć rozwiązanie w plikach dostarczonych przez obraz ISO z plikami instalacyjnymi systemu Android-x86.

W Android-x86 LiveCD1/efi/boot/android.cfgznalazłem następujący wpis menu:

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

Pytanie tylko, jakie wartości $kdiri $androidpowinno być. Po zamontowaniu partycji zainstalowałem system na ( sda2), znalazłem nazwę katalogu - cm-x86-14.1-r2.

$@są dodatkowymi parametrami ( quietw moim rozwiązaniu) i $srcmożna je zignorować. Na koniec zrobiłem następujący wpis 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

I to działa.

banan3'14
źródło
0

To wszystko było bardzo pomocne, ale ostatecznie trochę mi brakowało i nie zadziałałoby, dopóki nie dodałem wszystkich części.

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

Jak pisał Banan3'14 miał rację, ale brakowało:

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

Może to zasugerowano i jestem zbyt nowy, żeby to zrozumieć, ale kiedy już to wszystko udało mi się zebrać, zadziałało.

    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
źródło
-1

Nie przejmuj się sda lub sdc, zawsze jest to (hd0, x) w moim przypadku, jeśli zainstalowałeś system Android x86 na urządzeniu rozruchowym. To znaczy, w moim przypadku, czy twoje urządzenie jest wymienione w systemie OS jak Ubuntu jako / dev / sda lub / dev / sdb, powinieneś dodać (hd0, x), x jest liczbą partycji Androida x86 w grub 2 element, o ile uruchamiasz się przy użyciu tego samego urządzenia, na którym zainstalowałeś Androida x86 (na przykład zainstalowałeś Androida x86 na dysku USB o nazwie U na partycji 3, a U na twojej Ubuntu jako / dev / sdc, ale ty boot z U, wtedy powinieneś dodać root = (hd0,3), ale nie root = (hd2,3) w grub).

CRE
źródło
Próbowałem poprawić twoją odpowiedź. Ale nie mogę zrobić z tego głowy ani ogona. Możesz zmienić swoją odpowiedź, jeśli klikniesz link edytuj pod swoją odpowiedzią.
MadMike,