Завантаження 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 EEEPC, використовуйте його лише якщо у вас є, інакше використовуйте 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

Це була остаточна конфігурація, яка працювала для мене на старому шкільному 64-бітному SONY VAIO на потрійній установці завантаження.

'(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) на partiton Android x86 встановлено. Hd0 означає sda, тому якщо встановити його на sdb, він буде hd1 тощо. Hd0,4 означає номер розділу, в моєму випадку hd0,4 означає sda4. Отже, якщо встановити його на sda6, він буде hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: Випадкове число тут встановлено UUID розділу Android Android x86. Ви повинні змінити його, щоб виправити UUID, ви можете легко отримати UUID, створивши новий запис у програмі GRUB Customizer, потім перейдіть на вкладку "Параметри", а потім виберіть опцію "Linux" у спадному меню. Ви побачите випадаючий розділ і виберіть свій розділ. Відкрийте вкладку джерела, там ви побачите UUID.

  3. androidx86/: Корінь Android x86 Змініть його на свій корінь Android x86. Ви можете побачити, який ваш корінь 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-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 ...


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і *як ваш)

  • Оновити груб:

    sudo update-grub
    

0

Жоден з інших відповідей для мене не працював, тому я вирішив сам знайти рішення у файлах, наданих ISO-образом з інсталяційними файлами Android-x86.

У Android-x86 LiveCD1/efi/boot/android.cfgI знайшов наступний пункт меню:

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їх можна ігнорувати. Нарешті, я зробив такий запис про грубку:

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 - номер вашого розділу Android and86 x86, в 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.