Загрузка 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, вам нужно только то, что я положил выше, с единственным изменением в месте установки.
Для GRUB 1,97 - 1,99 и 2,00 +
Чтобы сделать это легко, установите GRUB Customizer Введите их в эмуляторе терминала: Код:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer
Откройте настройщик GRUB и создайте новую запись 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
Вот что нужно изменить:
set root='(hd0,4)'
: Измените (hd0,4) на раздел Android x86 установлен. Hd0 означает sda, поэтому, если вы установите его в sdb, это будет hd1 и так далее. Hd0,4 означает номер раздела, в моем случае hd0,4 означает sda4. Так что если вы установите его на sda6, это будет hd0,6.
--set=root e1f9de05-8d18-48aa-8f08-f0377f663de3
: Случайное число здесь - это UUID раздела, на котором установлена Android x86. Вы должны изменить его на правильный UUID. Вы можете легко получить UUID, создав новую запись в настройщике GRUB, затем перейдите на вкладку "Параметры" и выберите опцию "Linux" в раскрывающемся списке. Вы увидите выпадающий раздел, выберите свой раздел. Откройте вкладку источника, там вы увидите UUID.
androidx86/
: Корень Android x86 Измените его на свой Android x86 root. Вы можете узнать, какой у вас root для Android x86, перейдя в раздел Android x86, и вы увидите имя папки, начинающееся с 'android', это корень вашего Android x86
androidboot.hardware
Ваше устройство, конечно. Примечание. Если вы используете Android 2.3 - 4.0.3, измените его на androidboot_hardware. Вот список аппаратного обеспечения:
generic_x86
: Если вашего оборудования нет в списке, используйте этоeeepc
: Ноутбуки EEEPCasus_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).