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

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

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 не появляется в списке?! Но почему?

7 ответов

По поводу Android x86 6.0

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

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, вам нужно только то, что я положил выше, с единственным изменением в месте установки.

Это от разработчиков 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)
  • открыто 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
    

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

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

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-72c32a3fd14b UUID указанного раздела и 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-накопители, если они не подключены к SATA-накопителям с USB на 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...

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

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

Ни один из других ответов не помог мне, поэтому я решил сам найти решение в файлах, предоставляемых 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

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

Не беспокойтесь о 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).

Другие вопросы по тегам