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

VirusPLayer
источник

Ответы:

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

Bus42
источник
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
    
kevy
источник
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

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

banan3'14
источник
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).

CRE
источник
Я пытался улучшить ваш ответ. Но не могу сделать ни голову, ни хвост. Вы можете изменить свой ответ, если нажмете на ссылку редактирования под своим ответом.
MadMike