การบูต 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 บิตในการตั้งค่าการบูตสามครั้ง

'(0,4)'เป็นที่ตั้งของฮาร์ดไดรฟ์ของฉันและติดตั้งพาร์ติชั่น Android x86 ไว้ให้เปลี่ยนตามนั้น คุณไม่ต้องการ UUID ของคุณคุณต้องการเพียงสิ่งที่ฉันได้กล่าวไว้ข้างต้นโดยที่ตำแหน่งการติดตั้งของคุณเป็นเพียงการเปลี่ยนแปลงเท่านั้น


2

นี่คือจากนักพัฒนา XDA

สำหรับ GRUB 1.97 - 1.99 & 2.00 +

  1. เพื่อให้ง่ายติดตั้งตัวปรับแต่ง GRUB พิมพ์สิ่งเหล่านี้ลงในเครื่องจำลองเทอร์มินัล: รหัส:

    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 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ผมไม่แน่ใจว่าเกี่ยวกับการต่อไป แต่ผมคิดว่าด้วงไม่hd0, hd1, hd2ฯลฯ ในลำดับที่แตกต่างกว่าลินุกซ์ไม่sda/hda, sdb/hdb, sdc/hdcและอื่น ๆ อีกครั้งไม่แน่ใจ แต่ผมคิดว่าด้วงไม่ได้ในการสั่งซื้อทางกายภาพ (ที่พวกเขาจะ ถูกระบุใน BIOS ของคุณ) และ Linux ทำใน ... เอ่อ ... ฉันคิดว่าอย่างอื่น อีกครั้งไม่แน่ใจว่า

แต่ถ้าคุณต้องการที่จะคิดออกว่าพาร์ทิชันในรูปแบบพาร์ทิชันด้วง ( 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.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สามารถละเว้นได้ ในที่สุดฉันทำรายการด้วงต่อไปนี้:

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 ไปยังอุปกรณ์สำหรับบู๊ต ในกรณีของฉันไม่ว่าอุปกรณ์ของคุณจะอยู่ในระบบปฏิบัติการเช่น ubuntu เป็น / dev / sda หรือ / dev / sdb คุณควรเพิ่ม (hd0, x), x คือจำนวนพาร์ติชัน android x86 ของคุณในด้วง 2 รายการตราบใดที่คุณบูตเครื่องด้วยอุปกรณ์เดียวกับที่คุณติดตั้ง android x86 ของคุณ (ตัวอย่างเช่นคุณติดตั้ง android x86 ในไดรฟ์ usb ชื่อ U ที่พาร์ติชัน 3 และ U แสดงรายการใน Ubuntu เป็น / dev / sdc แต่คุณ บูตจาก U คุณควรเพิ่ม root = (hd0,3) แต่ไม่ใช่ root = (hd2,3) ใน grub)


ฉันพยายามปรับปรุงคำตอบของคุณ แต่ไม่สามารถทำให้หัวหรือหางของมัน คุณสามารถเปลี่ยนคำตอบได้หากคุณคลิกที่ลิงค์แก้ไขด้านล่างคำตอบของคุณ
MadMike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.