Khởi động Android bằng GRUB, nhưng bằng cách nào?


9

Tôi có một vấn đề nhỏ. Tôi có bảy phân vùng:

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

Tôi đã tìm thấy một hướng dẫn, nhưng tôi đã thử nó và nó không hoạt động. Đây là liên kết:

http://www.webupd8.org/2012/03/how-to-dual-boot-android-x86-and-ubfox.html

Tôi đã sử dụng Android này từ android-x86.org và phiên bản android-x86-4.4-r1.iso.

Đây là tài liệu 40_Costum của tôi:

#!/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}

Nếu tôi khởi động PC, trình quản lý khởi động GRUB xuất hiện và tôi có thể chọn Android, nhưng nó không khởi động Android. Nền là màu tím và không có gì xảy ra.

Điều gì sẽ là một 40_Custommkịch bản hoàn chỉnh và làm việc ?


Nó không hoạt động nếu tôi tạo một tập lệnh trong Grub Customizer và lưu nó. Nó không hiển thị trên menu khởi động nếu tôi mở Grub Customizer một lần nữa đoạn script bị xóa.

Đây là mã của tôi:

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

Bây giờ tôi có thêm một vấn đề:

Nếu tôi Khởi động máy tính xách tay của mình, nó sẽ hiển thị Ubuntu, Windows, Kali Linux và Android (không hoạt động), nhưng nếu tôi khởi động GRub Costumizer thì Windows không được liệt kê?! Nhưng tại sao?

Câu trả lời:


3

Liên quan đến Android x86 6.0

Việc gán "EEEPC" chỉ dành cho ASUS EEEPC, chỉ sử dụng nó nếu bạn có, nếu không sử dụng android_x86, không sử dụng generic_x86 , bạn sẽ bị kẹt tại hoạt hình khởi động và phải khởi động lại bằng cách sử dụng CTRL+ F1để truy cập thiết bị đầu cuối và phát hành rebootnhư là GUI sẽ không được tải. Tôi biết điều này bởi vì tôi đã dành vài giờ theo lời khuyên xấu, mặc dù có ý tốt.

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

Đây là cấu hình cuối cùng hoạt động với tôi trên SONY VAIO 64 bit cũ trên thiết lập khởi động ba.

'(0,4)'là vị trí của ổ cứng và phân vùng Android x86 của tôi đã được cài đặt, thay đổi nó cho phù hợp. Bạn không cần UUID của bạn, bạn chỉ cần chính xác những gì tôi đã đặt ở trên với vị trí cài đặt của bạn là thay đổi duy nhất.


2

Đây là từ Nhà phát triển XDA

Dành cho GRUB 1,97 - 1,99 & 2,00 +

  1. Để làm cho nó dễ dàng, hãy cài đặt GRUB Customizer Nhập những thứ này vào trình giả lập thiết bị đầu cuối: Mã:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt-get update
    sudo apt-get install grub-customizer
    
  2. Mở tùy biến GRUB và tạo một mục GRUB mới.

  3. Mở tab 'Nguồn', nhập những thứ sau:

    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
    

Đây là những gì cần thay đổi:

  1. set root='(hd0,4)': Thay đổi (hd0,4) thành partiton Android x86 được cài đặt. Hd0 có nghĩa là sda, vì vậy nếu bạn cài đặt nó vào sdb, nó sẽ là hd1, v.v. Hd0,4 có nghĩa là số phân vùng, trong trường hợp của tôi, hd0,4 có nghĩa là sda4. Vì vậy, nếu bạn cài đặt nó trên sda6, nó sẽ là hd0,6.

  2. --set=root e1f9de05-8d18-48aa-8f08-f0377f663de3: Số ngẫu nhiên ở đây là UUID của phân vùng Android x86 đã được cài đặt Bạn phải thay đổi nó để sửa UUID, bạn có thể dễ dàng lấy UUID bằng cách tạo mục nhập mới trong GRUB Customizer sau đó chuyển đến tab Tùy chọn, sau đó chọn tùy chọn 'Linux'. Bạn sẽ thấy phân vùng thả xuống, chọn phân vùng của bạn. Mở tab nguồn, bạn sẽ thấy UUID ở đó.

  3. androidx86/: Root của Android x86 Thay đổi nó thành root Android x86 của bạn. Bạn có thể xem root Android x86 của mình bằng cách điều hướng đến phân vùng Android x86 và bạn sẽ thấy tên thư mục bắt đầu bằng 'android', đó là root của Android x86 của bạn

  4. androidboot.hardware: Thiết bị của bạn, tất nhiên. Lưu ý: Nếu bạn đang sử dụng Android 2.3 - 4.0.3, hãy đổi nó thành androidboot_hardware Đây là danh sách phần cứng:

  • generic_x86 : Nếu phần cứng của bạn không được liệt kê, hãy sử dụng
  • eeepc : Máy tính xách tay EEEPC
  • asus_laptop : Máy tính xách tay ASUS (chỉ hỗ trợ máy tính xách tay ASUS)

Tôi đã phải sử dụng một con đường tuyệt đối, tức là /androidx86/kernel. Nếu không, tôi đã gặp một lỗi về tập tin không tìm thấy.
banan3'14

1

Đây là một câu hỏi mười tháng tuổi nhưng tôi nghĩ rằng dù sao tôi cũng sẽ giúp. Đó thực sự là một sửa chữa rất đơn giản. Tôi đang đưa ra cách khắc phục trong câu trả lời của mình thay vì nhấn "chỉnh sửa" cho câu trả lời ở trên vì tôi không muốn chờ đánh giá ngang hàng hay bất cứ điều gì.

Dù sao, câu trả lời có nhiều phiếu nhất cho biết bạn nên sử dụng mã sau:

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

Vấn đề là ở dòng hai. Có một ngôi mộ đi lạc (`) ở đầu dòng hai. Nghĩa đen đơn giản như thế. Đôi khi, đó là những điều đơn giản nhất khiến mọi thứ ngừng hoạt động.

Tôi tưởng tượng rằng bạn đã tìm thấy cách thêm Android x86 vào GRUB hoặc bạn không quan tâm nữa nhưng vâng. Vì vậy, đây là mã chính xác:

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

Đây là toàn bộ /etc/grub.d/40_customtập tin của tôi (không bao gồm các dòng exec tailvà nhận xét ở đầu):

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
}

Rõ ràng hd0,msdos2là phân vùng mà tôi đã cài đặt Android 4.4 R2 và a47b5fe5-8969-4774-be9c-72c32a3fd14blà UUID của phân vùng đã nói và hd0,msdos4là phân vùng mà tôi đã cài đặt Android 5.0.2 (không chính thức và rất không ổn định) và d2edeae9-3dc8-41b1-b775-25d0a8028092là UUID của phân vùng đó.

Đối với tôi, hd0,msdos2/dev/sdb2hd0,msdos4/dev/sdb4. Tôi không chắc chắn về những điều sau đây, nhưng tôi nghĩ rằng GRUB không hd0, hd1, hd2, vv trong một trật tự khác với Linux không sda/hda, sdb/hdb, sdc/hdcvv Một lần nữa, không chắc chắn, nhưng tôi nghĩ rằng GRUB làm nó theo thứ tự vật lý (như họ sẽ được xác định trong BIOS của bạn) và Linux thực hiện chúng theo ... uhh ... một số cách khác, tôi đoán vậy. Một lần nữa, không chắc chắn về điều đó.

Nhưng vâng, nếu bạn cần tìm ra phân vùng nào ở định dạng phân vùng GRUB ( hdX,msdosY) phân vùng Android của bạn (mà tôi thấy là /dev/sda3), hãy khởi động lại PC của bạn và nhấn C để đi đến một dòng lệnh. Sau đó nhập (hdvà nhấn tab (tab tự động hoàn thành mọi thứ) và sau đó nó sẽ liệt kê tất cả các ổ đĩa dưới dạng tùy chọn tự động hoàn thành (không chắc chắn 100% nhưng tôi chắc chắn 70% nó không hiển thị ổ USB trừ khi chúng là ổ đĩa SATA được kết nối với USB sang bộ chuyển đổi SATA). Sau đó nhập (hd0và nhấn tab và nó sẽ liệt kê tất cả các phân vùng trên hd0dưới dạng tùy chọn tự động hoàn thành. Nếu bạn có nhiều ổ đĩa, hãy tìm ra ổ đĩa nào /dev/sda3chỉ là vấn đề của bản dùng thử và lỗi khi sử dụng tự động hoàn tất (hd. Tôi không chắc chính xác kết quả trông như thế nào nhưng tôi thực sự biết rằng kết quả cho(hd0, sẽ (rõ ràng) hiển thị các định danh phân vùng kiểu GRUB cho tất cả các phân vùng trên hd0(đối với bạn, nó sẽ msdos1thông qua msdos7; trong GRUB, hdbắt đầu từ 0 nhưng msdosbắt đầu từ 1), nhãn của tất cả các phân vùng trên hd0và hệ thống tệp ( thông thường bạn ném Android x86 lên ext2 nhưng vì bạn có nó trên NTFS, nên nó sẽ hiển thị hệ thống tệp dưới dạng NTFS, đối với hầu hết mọi người, nó sẽ hiển thị ext2, đó là cách tôi biết đó là phân vùng Android nào là phân vùng ext2 duy nhất Tôi có).

Hmm ... Ban đầu tôi dự định chỉ sửa lỗi trong dòng hai câu trả lời phổ biến nhất và tôi đã kết thúc với một hướng dẫn gần đầy chết tiệt về cách thêm Android x86 vào GRUB ...


1
  • Mở 40_custom:

    sudo -H gedit /etc/burg.d/40_custom
    
  • Thêm mục nhập menu 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
    

    (đặt path*là của bạn)

  • Cập nhật grub:

    sudo update-grub
    

0

Không có câu trả lời nào khác phù hợp với tôi, vì vậy tôi quyết định tự tìm giải pháp trong các tệp được cung cấp bởi hình ảnh ISO với các tệp cài đặt Android-x86.

Trong Android-x86 LiveCD1/efi/boot/android.cfgtôi tìm thấy mục menu sau:

set root=$android
linux $kdir/kernel root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug $src $@
initrd $kdir/initrd.img

Câu hỏi là giá trị của $kdir$androidnên là gì. Sau khi gắn phân vùng tôi đã cài đặt hệ thống trên ( sda2), tôi tìm thấy tên của thư mục - cm-x86-14.1-r2.

$@là các tham số bổ sung ( quiettrong giải pháp của tôi) và $srccó thể bỏ qua. Cuối cùng, tôi đã thực hiện mục grub sau:

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

Và nó hoạt động.


0

Điều này rất hữu ích, nhưng cuối cùng, nó đã thiếu một chút cho tôi và nó sẽ không hoạt động cho đến khi tôi thêm vào tất cả các phần.

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

Như được đăng bởi Tun3'14 là đúng, nhưng nó đã bị thiếu:

search --no-floppy --fs-uuid --set=root a47b5fe5-8969-4774-be9c-72c32a3fd14b

Có lẽ điều đó đã được ngụ ý và tôi quá mới để có được điều đó, nhưng một khi tôi đã có được tất cả cùng nhau, nó đã hoạt động.

    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

Đừng bận tâm với sda hoặc sdc, nó luôn luôn là (hd0, x) trong trường hợp của tôi nếu bạn cài đặt android x86 cho thiết bị khởi động. Điều đó có nghĩa là, trong trường hợp của tôi, cho dù thiết bị của bạn được liệt kê trong os như ubfox là / dev / sda hoặc / dev / sdb, bạn nên thêm (hd0, x), x là số phân vùng android x86 của bạn, trong grub 2 mục, miễn là bạn khởi động với cùng một thiết bị bạn đã cài đặt Android x86 của mình (ví dụ: bạn đã cài đặt android x86 trong ổ USB có tên U ở phân vùng 3 và U được liệt kê trong ubfox của bạn là / dev / sdc, nhưng bạn khởi động từ U, sau đó bạn nên thêm root = (hd0,3) nhưng không phải root = (hd2,3) trong grub).


Tôi đã cố gắng cải thiện câu trả lời của bạn. Nhưng không thể làm cho đầu hoặc đuôi của nó. Bạn có thể thay đổi câu trả lời nếu bạn nhấp vào liên kết chỉnh sửa bên dưới câu trả lời của bạn.
MadMike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.