GRUB으로 안드로이드 부팅하기


9

작은 문제가 있습니다. 7 개의 파티션이 있습니다 :

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-x86.org 및 android-x86-4.4-r1.iso 버전 에서이 Android를 사용했습니다.

이것은 내 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}

PC를 시작하면 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

안드로이드 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

이것은 트리플 부팅 설정의 구식 SONY VAIO 64 비트에서 저에게 효과적 인 최종 구성이었습니다.

'(0,4)'내 하드 드라이브와 안드로이드 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: 난수는 안드로이드 x86이 설치된 파티션의 UUID입니다. 올바른 UUID로 변경해야합니다. GRUB Customizer에서 새 항목을 생성하여 UUID를 쉽게 얻을 수 있습니다. 그런 다음 Options 탭으로 이동 한 다음 드롭 다운에서 '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

이것은 10 개월 된 질문이지만 어쨌든 도울 것이라고 생각했습니다. 실제로 매우 간단한 수정입니다. 동료 검토를 기다리는 것을 원하지 않기 때문에 위의 답변에서 "편집"을 누르는 대신 내 답변에 수정 사항을 던지고 있습니다.

어쨌든, 가장 많은 표를 얻은 답변은 다음 코드를 사용해야한다고 말합니다.

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

문제는 두 번째 줄에 있습니다. 두 번째 줄의 시작 부분에 길 잃은 무덤 (`)이 있습니다. 말 그대로 그렇게 간단합니다. 때로는 모든 것이 작동을 멈추게 만드는 가장 간단한 일입니다.

GRUB에 Android x86을 추가하는 방법을 찾았거나 더 이상 신경 쓰지 않는다고 상상합니다. 올바른 코드는 다음과 같습니다.

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,msdos2Android 4.4 R2가 설치된 a47b5fe5-8969-4774-be9c-72c32a3fd14b파티션이며 hd0,msdos4해당 파티션 의 UUID이며 Android 5.0.2 (비공식적이고 매우 불안정한)가 설치되어 있고 d2edeae9-3dc8-41b1-b775-25d0a8028092해당 파티션의 UUID 인 파티션입니다.

나를 위해, hd0,msdos2이다 /dev/sdb2하고 hd0,msdos4있다 /dev/sdb4. 나는 다음에 모르겠지만, GRUB가하는 생각 hd0, hd1, hd2, 등 다른 순서로 리눅스보다 sda/hda, sdb/hdb, sdc/hdc, 등을 다시는하지 않도록하지만, 나는 그들이 마찬가지로 GRUB은 (물리적 위해를 수행 생각 당신의 BIOS에서 확인) 그리고 리눅스는 ... 어 .. 어떤 다른 방법으로 그들을 수행합니다. 다시, 확실하지 않습니다.

그러나 그래, hdX,msdosY안드로이드 파티션이 GRUB 파티션 형식 ( ) 인 파티션을 알아 내야하는 경우 (내가 보는 것 /dev/sda3), PC를 다시 시작하고 C를 눌러 명령 줄로 이동하십시오. 그런 다음 (hd탭을 누르고 탭 (탭이 자동 완성 항목)하면 모든 드라이브를 자동 완성 옵션으로 표시합니다 (100 % 확실하지는 않지만 USB 드라이브가 USB에 연결된 SATA 드라이브가 아닌 한 USB 드라이브가 표시되지 않음) SATA 어댑터에 연결). 그런 다음을 입력 (hd0하고 tab 키를 누르면 모든 파티션이 hd0자동 완성 옵션으로 나열됩니다 . 드라이브가 여러 개인 경우 /dev/sda3자동 완성 기능을 사용하여 시행 착오를 일으키는 드라이브를 파악하십시오 (hd. 난 안 확신 정확하게 결과 모양을하지만 난 사실을 알고 계십니까 그 결과에 대한(hd0, 모든 파티션의 GRUB 스타일 파티션 식별자를 표시합니다 hd0(당신은 그것을 msdos1통해 msdos7; GRUB에서는 hd0 에서 시작하지만 msdos1에서 시작), 모든 파티션의 레이블 hd0및 파일 시스템 ( 일반적으로 ext2에 Android x86을 던지지 만 NTFS에 파일 시스템이 있기 때문에 파일 시스템을 NTFS로 표시합니다. 대부분의 사람들에게는 ext2가 표시됩니다. 내 안드로이드 파티션이 유일한 ext2 파티션이기 때문에 ext2를 알 수 있습니다. 나는 가지고있다).

흠 ... 나는 처음에 가장 인기있는 답변 중 두 번째 줄에서만 실수를 바로 잡으려고 의도했으며 GRUB에 Android x86을 추가하는 방법에 대한 완전한 자습서로 끝났습니다 ...


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

다른 답변은 저에게 도움이되지 않았으므로 Android-x86 설치 파일과 함께 ISO 이미지가 제공하는 파일에서 직접 솔루션을 찾기로 결정했습니다.

에서 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를 신경 쓰지 마십시오. 부팅 장치에 안드로이드 x86을 설치하면 항상 (hd0, x)입니다. 즉, 내 경우에는 장치가 우분투와 같은 OS에 / dev / sda 또는 / dev / sdb로 나열되어 있는지 여부에 관계없이 (hd0, x)를 추가해야합니다 .x는 grub에서 안드로이드 x86 파티션의 수입니다. 2 개의 항목, Android x86을 설치 한 것과 동일한 장치로 부팅하는 한 (예를 들어, 파티션 3에서 U라는 USB 드라이브에 Android x86을 설치하고, Ubuntu에 / dev / sdc로 나열된 U를 설치했지만 U에서 부팅하면 root = (hd0,3)를 추가해야하지만 grub에 root = (hd2,3)는 추가하지 않아야합니다.


나는 당신의 대답을 향상시키기 위해 노력했습니다. 그러나 머리 나 꼬리를 만들 수는 없습니다. 답변 아래 의 수정 링크 를 클릭하면 답변을 변경할 수 있습니다 .
MadMike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.