Загрузка Android с GRUB, но как?


9

У меня небольшая проблема. У меня семь разделов:

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

Я нашел учебник, но я попробовал это, и оно не работает. Вот ссылка:

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

Я использовал этот Android от android-x86.org и версию android-x86-4.4-r1.iso.

Это мой документ 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}

Если я запускаю свой компьютер, появляется менеджер загрузки GRUB, и я могу выбрать Android, но он не загружает Android. Фон фиолетовый и ничего не происходит.

Какой будет полный и рабочий 40_Custommсценарий?


Это не сработает, если я сделаю скрипт в Grub Customizer и сохраню его. В меню загрузки не отображается, если я снова открою Grub Customizer, сценарий будет удален.

Это мой код:

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

Теперь у меня есть еще одна проблема:

Если я запускаю свой ноутбук, на нем отображаются Ubuntu, Windows, Kali Linux и Android (который не работает), но если я запускаю GRub Costumizer, Windows не появляется в списке ?! Но почему?

Ответы:


3

По поводу Android x86 6.0

«EEEPC» присвоение только для ASUS EEEPCs, только использовать его , если у вас есть, в противном случае использовать android_x86, не используйте generic_x86 , вы будете застревать в загрузочной анимации и необходимости перезагружать с помощью CTRL+ F1для доступа к терминалу и выдач reboot, что и GUI не будет загружен. Я знаю это, потому что я провел несколько часов, следуя плохим, хотя и доброжелательным, советам.

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

Это была последняя конфигурация, которая работала для меня на старой школе SONY VAIO 64 bit с настройкой тройной загрузки.

'(0,4)'было местоположение моего жесткого диска и раздела, на котором был установлен Android x86, измените его соответственно. Вам не нужен ваш UUID, вам нужно только то, что я положил выше, с единственным изменением в месте установки.


2

Это от разработчиков XDA

Для GRUB 1,97 - 1,99 и 2,00 +

  1. Чтобы сделать это легко, установите GRUB Customizer Введите их в эмуляторе терминала: Код:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt-get update
    sudo apt-get install grub-customizer
    
  2. Откройте настройщик GRUB и создайте новую запись GRUB.

  3. Откройте вкладку «Источники», введите эти:

    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
    

Вот что нужно изменить:

  1. set root='(hd0,4)': Изменить (hd0,4) на раздел Android x86 установлен. Hd0 означает sda, поэтому, если вы установите его в sdb, это будет hd1 и так далее. Hd0,4 означает номер раздела, в моем случае hd0,4 означает sda4. Так что если вы установите его на sda6, это будет hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: Случайное число здесь - это UUID раздела, на котором установлена ​​Android x86. Вы должны изменить его на правильный UUID, вы можете легко получить UUID, создав новую запись в настройщике GRUB, затем перейдите на вкладку «Параметры» и выберите опцию «Linux» в раскрывающемся списке. Вы увидите выпадающий раздел, выберите свой раздел. Откройте вкладку источника, вы увидите там UUID.

  3. androidx86/: Корень Android x86 Измените его на свой Android x86 root. Вы можете узнать, какой у вас root для Android x86, перейдя в раздел Android x86, и вы увидите имя папки, начинающееся с «android», это корень вашего Android x86

  4. androidboot.hardwareВаше устройство, конечно. Примечание. Если вы используете Android 2.3 - 4.0.3, измените его на androidboot_hardware. Вот список аппаратного обеспечения:

  • generic_x86 : Если вашего оборудования нет в списке, используйте это
  • eeepc : Ноутбуки EEEPC
  • asus_laptop : Ноутбуки ASUS (поддерживаются только ноутбуки ASUS)

Я должен был использовать абсолютный путь, то есть /androidx86/kernel. В противном случае я получил ошибку о том, что файл не найден.
banan3'14

1

Это вопрос десяти месяцев, но я решил, что все равно помогу. На самом деле это очень просто исправить. Я добавляю исправление в свой ответ вместо того, чтобы нажимать «изменить» в ответе выше, потому что я не хочу ждать рецензирования или чего-то еще.

В любом случае, ответ, набравший наибольшее количество голосов, гласит, что вы должны использовать следующий код:

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

Вопрос в строке два. В начале второй строки есть бездомная могила (`). Буквально так просто. Иногда это самые простые вещи, которые заставляют все перестать работать.

Я полагаю, что вы либо нашли способ добавить Android x86 в GRUB, либо вам уже все равно, но да. Итак, вот правильный код:

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

Вот весь мой /etc/grub.d/40_customфайл (исключая exec tailзакомментированные строки в начале):

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
}

Очевидно, hd0,msdos2это раздел, на котором установлена ​​Android 4.4 R2, и a47b5fe5-8969-4774-be9c-72c32a3fd14bUUID указанного раздела, а hd0,msdos4также раздел, на котором установлена ​​Android 5.0.2 (неофициальная и крайне нестабильная) и d2edeae9-3dc8-41b1-b775-25d0a8028092которая является UUID этого раздела.

Для меня hd0,msdos2есть /dev/sdb2и hd0,msdos4есть /dev/sdb4. Я не уверен , что на следующий, но я думаю , что GRUB делает hd0, hd1, hd2и т.д. в другом порядке , чем Linux делает sda/hda, sdb/hdb, sdc/hdcи т.д. Опять же , не уверен, но я думаю , что GRUB делает это в физическом порядке (как если бы они быть идентифицированным в вашем BIOS) и Linux делает их ... э-э ... другим способом, я полагаю. Опять же, не уверен в этом.

Но да, если вам нужно выяснить, какой раздел в формате раздела GRUB ( hdX,msdosY) ваш раздел Android (который я вижу /dev/sda3), перезагрузите компьютер и нажмите C, чтобы перейти к командной строке. Затем введите (hdи нажмите вкладку (вкладка «Автозаполнение»), после чего на всех дисках будут перечислены варианты автозаполнения (не уверен на 100%, но я на 70% уверен, что он не отображает USB-накопители, если они не подключены к USB-накопителю SATA к адаптеру SATA). Затем введите (hd0и нажмите вкладку, и все разделы будут перечислены в hd0качестве параметров автозаполнения. Если у вас есть несколько дисков, выясните, какой из них /dev/sda3является методом проб и ошибок с помощью автозаполнения (hd. Я не уверен точно, как выглядят результаты, но я точно знаю, что результаты для(hd0, (очевидно) будет отображать идентификаторы разделов в стиле GRUB для всех включенных разделов hd0(для вас это будет msdos1через msdos7; в GRUB hdначинается с 0, но msdosначинается с 1), метки всех разделов hd0и файловой системы ( обычно вы выбрасываете Android x86 на ext2, но поскольку у вас он есть в NTFS, он отображает файловую систему как NTFS, для большинства людей он отображает ext2, поэтому я знаю, какой именно, потому что мои разделы Android являются единственными разделами ext2 Я имею).

Хм ... Я изначально намеревался исправить только ошибку во второй строке самого популярного ответа, и я закончил чертовски почти полный урок о том, как добавить Android x86 в GRUB ...


1
  • Открыть 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Добавить пункт меню 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
    

    (установить pathи *как твой)

  • Обновление grub:

    sudo update-grub
    

0

Ни один из других ответов не помог мне, поэтому я решил сам найти решение в файлах, предоставляемых ISO-образом с установочными файлами Android-x86.

В Android-x86 LiveCD1/efi/boot/android.cfgя нашел следующий пункт меню:

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

Вопрос был в том, какие ценности $kdirи $androidдолжны быть. После монтирования раздела я установил систему на ( sda2), нашел название каталога - cm-x86-14.1-r2.

$@являются дополнительными параметрами ( quietв моем решении) и $srcмогут быть проигнорированы. Наконец, я сделал следующую запись 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

И это работает.


0

Все это было очень полезно, но, в конце концов, мне немного не хватало, и это не сработает, пока я не добавлю все части.

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

Как написал Banan3'14 был прав, но его не было:

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

Возможно, это подразумевалось, и я слишком новичок, чтобы понять это, но как только я собрал все это, это сработало.

    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

Не беспокойтесь о sda или sdc, в моем случае это всегда (hd0, x), если вы установили Android x86 на загрузочное устройство. То есть, в моем случае, если ваше устройство указано в os, как ubuntu как / dev / sda или / dev / sdb, вы должны добавить (hd0, x), x это номер вашего раздела x86 для android, в grub 2, если вы загружаетесь с того же устройства, на котором вы установили свой android x86 (например, вы установили android x86 на USB-диск с именем U в разделе 3, а U указан в вашей Ubuntu как / dev / sdc, но вы загрузитесь с U, тогда вы должны добавить root = (hd0,3), но не root = (hd2,3) в grub).


Я пытался улучшить ваш ответ. Но не могу сделать ни голову, ни хвост. Вы можете изменить свой ответ, если нажмете на ссылку редактирования под своим ответом.
MadMike
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.