안드로이드에서 부팅이란 무엇입니까? Android의 부트로더란 무엇인가요? FastBoot 다운로드 및 설치

OS 및 하드웨어 매개변수를 미세 조정할 수 있도록 Android를 실행하는 모바일 장치 사용자는 때때로 가젯을 루팅하고 . 하지만 그게 다가 아니다 사용 가능한 방법장치 및 시스템 설정에 대한 확장된 액세스 권한을 얻습니다. Fastboot 모드라는 모드를 사용하여 장치의 "후드" 아래를 볼 수 있습니다.

패스트부트 모드란?

Fastboot 모드는 무엇을 의미하며 무엇과 관련이 있습니까? 미세 조정? 일부 노트북 모델에서는 실제로 BIOS 및 디버깅 응용 프로그램을 우회하여 시스템 부팅 속도를 최대화하는 역할을 하지만 모바일 장치에서는 그 목적이 다소 다릅니다. Android 스마트폰 및 태블릿에서 이 모드는 주로 컴퓨터를 사용하여 장치의 시스템 구성 요소에 대한 액세스 및 제어를 제공하는 데 필요합니다.

서비스 센터 전문가와 숙련된 사용자는 Fastboot 모드의 기능을 사용하여 소프트웨어 설치, 가젯 플래시, 응용 프로그램 복원, 작업 수행 등을 수행할 수 있습니다. 지원복구, 변경 사항 숨김 환경 설정. 개발자는 소프트웨어 테스트 및 기타 목적으로 "빠른 로딩"을 사용하는 경우가 많습니다.

모드의 목적을 설명했지만 Fastboot 모드가 본질적으로 무엇인지에 대한 질문에 아직 답변하지 않은 것 같습니다. 따라서 Android의 fastboot는 운영 체제와 별개로 독립적입니다. 소프트웨어 구성요소, 하드웨어 수준에서 구현되고 메모리 칩에 등록됩니다. 운영 체제에 심각한 문제가 발생하더라도 장치를 부팅할 수 있는 것은 이러한 독립성입니다. Fastboot 모드 프로그램 코드는 읽기 및 쓰기가 금지된 메모리 영역에 위치하여 손상을 방지합니다.

Fastboot 모드는 어떤 경우에 활성화됩니까?

Fastboot 환경은 표준 메뉴를 통해 수동으로 시작하거나 전원 버튼과 전원이 꺼진 장치의 볼륨 낮추기/높이기 키를 동시에 눌러 시작할 수 있습니다. 그러나 어떤 경우에는 모드가 자체적으로 시작되는데 이는 그다지 좋은 일이 아닙니다. 자발적 로딩의 이유는 플래시 실패, 표준 복구 환경을 수정된 환경으로 교체, 수퍼유저 권한 획득, 시스템 오류 및 Android OS 파일 손상 등일 수 있습니다.

Fastboot 모드를 종료하는 방법

모드 활성화는 열린 로봇 이미지와 전화기 화면 Fastboot 모드의 비문으로 표시됩니다.

이전에 가젯 구성을 변경한 적이 없다면 아마도 "빠른 부팅"으로 전환한 이유는 일종의 일시적인 결함이었을 것입니다. 스마트폰을 다시 시작해 보세요. 다시 시작한 후에도 전화기에 fastboot라고 표시되고 일반 작동 모드로 전환되지 않으면 더 심각한 문제가 있음을 나타낼 수 있습니다. 문제가 너무 심각해서 서비스 센터에서 가젯을 다시 플래시해야 할 수도 있지만, 그 전까지는 직접 빠른 부팅을 종료해야 합니다.

이를 수행하는 방법에는 두 가지 주요 방법이 있습니다. 전화 자체를 사용하는 것과 컴퓨터를 사용하는 것입니다. 정상적인 재부팅이 도움이 되지 않으면 장치를 끄고 부팅 모드 선택 메뉴가 화면에 나타나거나 전화기가 일반 모드로 부팅될 때까지 (약 10초) 전원 및 볼륨 낮추기 키를 동시에 누르십시오. 이 메뉴에서 일반 부팅 옵션을 선택하고 가젯이 일반 모드로 부팅될 때까지 기다립니다.

어떤 경우에는 배터리를 제거하면 디버깅 모드를 종료하는 데 도움이 됩니다(물론 제거 가능한 경우).

때때로 사용자는 서비스 센터에서 가젯을 선택한 후 빠른 부팅 모드에서 로딩을 처리해야 합니다. 이것은 일반적으로 이후에 발생합니다. 가능한 이유는 설정에서 fastboot 모드 기능이 활성화되어 있기 때문입니다. 이 경우 Fasboot 모드를 비활성화하려면 설정으로 이동한 다음 "디스플레이" 또는 "접근성" 섹션에서 "빠른 부팅" 항목을 찾아 선택을 취소하세요.

컴퓨터를 사용하여 Fastboot 모드를 종료하는 방법은 무엇입니까? PC에 애플리케이션을 설치하고, 휴대폰을 컴퓨터에 연결하고, USB 디버깅을 활성화하고, 관리자 권한으로 명령줄을 실행하고 명령을 실행하세요. 빠른 부팅 재부팅. 간단하지만 아주 효과적인 방법빠른 부팅을 비활성화합니다.

그래도 문제가 해결되지 않으면 장치를 공장 설정으로 재설정하십시오. 중요한 데이터를 모두 복사한 후 휴대폰에서 SIM 카드와 메모리 카드를 제거하고 부팅하십시오. 복구 모드, 메뉴에서 옵션을 찾으세요 데이터 삭제 / 공장 초기화이를 사용하여 롤백을 수행합니다.

또한 옵션을 선택하여 저장 내용을 지울 수 있습니다. 캐시 파티션 지우기.

휴대폰을 Fastboot 모드로 전환하는 방법

Fastboot 모드는 수정된 펌웨어를 설치하거나 PC를 통해 장치 구성을 변경해야 하는 경우 가장 자주 사용해야 하는 서비스 모드입니다. 루트 권한타사 프로그램을 사용하지 않고. 시스템에 대한 전체 액세스를 제공하려면 빠른 모드로 부팅해야 할 수도 있습니다. 안드로이드 폴더및 OS 복구(복구 모드 도구의 대안)

Fastboot 모드로 들어가는 방법 다른 장치아 다를 수도 있어요. 안에 아수스 스마트폰이렇게 하려면 Nexus 및 HTC에서 전원 및 볼륨 높이기 버튼을 누르고 있어야 합니다. Sony에서는 볼륨 높이기를 누르고 USB를 통해 가젯을 PC에 연결하면 빠른 부팅 모드가 로드됩니다. .

그러나 모든 모바일 장치에서 동일하게 작동하는 fastboot로 로드하는 보편적인 방법도 있습니다. 안드로이드 기기. 컴퓨터에 프로그램을 다운로드하여 설치하십시오. ADB 실행 . 그런 다음 전화 설정에서 USB 디버깅을 활성화하고 장치를 PC에 연결한 다음 Adb Run을 시작한 후 메뉴에서 선택하십시오. 재부팅 – 부트로더 재부팅.

가젯이 Fastboot 모드로 재부팅됩니다.

다른 OS와 마찬가지로 Android OS 소프트웨어, 때때로 실패할 수 있습니다. 이러한 문제 중 하나는 Fastboot Mode 또는 Select Boot Mode라는 단어가 포함된 스마트폰이나 태블릿 화면에 검은색 화면이 표시되는 것입니다. 유사한 사진을 본 많은 모바일 장치 소유자는 당황하기 시작하고 장치를 가장 가까운 작업장으로 가져갑니다. 그러나 대부분의 경우 Fastboot 모드를 직접 종료할 수 있으므로 성급한 조치를 취해서는 안 됩니다. Fastboot 모드의 원인, Android에서의 기능 및 제거 방법을 살펴보겠습니다.

목적과 원인

Fastboot는 개발자용 소프트웨어 패키지에 포함된 Android 운영 체제를 수정하고 사용자 정의하는 효과적인 도구입니다. 주요 작업은 사용자 정의 펌웨어를 설치하는 것입니다. 하지만 이 부트로더는 백업 설치, 다양한 업데이트, 메모리 카드 포맷 등에도 사용됩니다.

Select Boot Mode 및 Fastboot Mode는 내부 또는 외부 명령이 아닙니다. 운영 체제 자체보다 먼저 시작됩니다(예: Windows의 BIOS). 이를 통해 시스템을 구성할 수 있을 뿐만 아니라 Android가 충돌한 경우에도 다양한 문제를 해결할 수 있습니다.

다양성과 유용성에도 불구하고 Fastboot를 자체적으로 켜는 것은 소프트웨어 오류의 신호일 수 있습니다. Android에 이 모드가 나타나는 주요 이유는 다음과 같습니다.

  1. 사용자가 실수로 활성화했습니다. 이 도구는 가젯 메뉴를 통해 수동으로 실행할 수 있습니다.
  2. 안드로이드 오작동. 스마트폰이나 태블릿이 일반 모드로 부팅할 수 없는 경우 자동으로 Fastboot 모드로 전환됩니다.
  3. 을 통한 펌웨어 실패.
  4. 이후 시스템 디렉터리에서 실행 파일을 수동으로 제거 루트 잠금 해제입장.
  5. 악성 코드에 노출. 장치에 대한 슈퍼유저 권한이 있는 경우 일부 바이러스는 차단되거나 제거될 수도 있습니다. 시스템 파일, 이로 인해 운영 체제가 충돌하게 됩니다.

Fastboot 모드 부트 로더가 무엇인지, 그 출현 이유가 무엇인지 파악한 후 Xiaomi, Meizu, Lenovo 및 기타 모바일 장치 모델에서 부팅 모드를 종료하는 방법에 대한 질문을 고려할 수 있습니다.

Android에서 Fastboot 모드 비활성화

Fastboot 부트로더를 비활성화하는 방법에는 두 가지가 있습니다.

  • 휴대전화에서 직접;
  • PC를 통해.

하나의 옵션을 선택하는 것은 이 모드를 출시하게 된 이유에 따라 달라집니다. 예를 들어 Xiaomi 스마트폰에서 Fastboot 창이 로드되지 않도록 하는 방법을 살펴보겠습니다.

이 문제가 발생하면 먼저 전원 키를 20~30초 동안 길게 눌러보세요. 장치는 표준 모드로 재부팅되어야 합니다.

Fastboot 대신 Select Boot Mode 양식이 휴대폰 화면에 나타날 수 있습니다. 해당 필드는 다음을 의미합니다.

두 번째 옵션을 선택해 보세요. 도움이 되지 않으면 다음을 수행하십시오.


갈 수 있다면 샤오미 설정즉, OS가 작동 중이면 Fastboot 모드를 수동으로 비활성화해 보십시오. 이 장치에서 "접근성" 탭으로 이동하여 해당 항목 반대편에 있는 슬라이더를 꺼짐 위치로 드래그합니다.

컴퓨터를 통해 Fastboot 모드 비활성화

운영 체제가 충돌하는 경우, 기술적으로 스마트폰 메뉴 사용이 불가능하거나 Fastboot를 비활성화하는 다른 방법이 효과적이지 않은 경우 PC 및 명령을 통해 문제 해결을 시도할 수 있습니다. 명령줄. 이는 다음과 같이 수행됩니다.


명령줄은 Fastboot 모드를 제거하는 가장 효과적인 방법입니다. 그래도 문제가 해결되지 않으면 문제는 활성화하는 방법입니다. 휴대 기기일반 모드에서는 여전히 관련이 있으므로 휴대폰의 펌웨어를 변경하거나 작업장에 가져가기만 하면 됩니다.

편집자의 선택

Android의 Fastboot 모드: 시스템 수준에서 [가젯을 사용한 조작]을 수행합니다.

때로는 휴대폰이나 태블릿 사용자 안드로이드 기반그것이 무엇인지 전혀 이해하지 못한 채 Fastboot 모드를 만나셨나요?

가젯을 켜면 애니메이션과 일부 데이터 목록이 포함된 화면이 표시되는데, 이는 시스템 오류를 더욱 연상시킵니다.

대개, 정기적으로 재부팅해도 이 문제가 해결되지 않습니다.스스로 알아내려고 노력하는 것보다 단계별로 지침을 따르는 것이 더 좋습니다. 결국 그것은 시스템 중 하나이며 그러한 것에 정통하지 않은 사용자는 실수로 자신의 장치에 해를 끼칠 수 있습니다.

결과적으로 이로 인해 서비스에 연락해야 시간과 비용이 낭비됩니다. 그러나 불필요한 서두르지 않고 문제를 파악하면 쉽게 피할 수 있습니다.

아래에서 프로세스가 무엇인지, 프로세스가 발생하는 이유 및 프로세스가 나타날 때 조치를 취하는 방법을 자세히 알아볼 수 있습니다.

내용물:

그것은 무엇입니까

Android 운영 체제에서는 다음을 제공합니다. 전체 권한컴퓨터를 통해 제어하려면 스마트폰이나 태블릿에 연결하세요. 이 접근 방식을 사용하면:

  • 응용 프로그램 설치;
  • 다양한 매개변수를 구성합니다.
  • 가젯을 플래시하세요.
  • 접근권한을 분배합니다.

Fastboot는 특정 OS의 일부가 아니지만 Android SDK 환경에서 흔히 볼 수 있습니다. Fastboot가 없으면 PC와 가젯 간의 통신을 완전히 설정할 수 없기 때문입니다.

이 경우 데이터 전송, 즉 장치 설정이 어렵다는 의미입니다.

운영 체제 자체보다 먼저 시작된다는 점은 주목할 가치가 있습니다. 이는 해당 모드가 가젯에 아직 설치되지 않은 경우에도 사용할 수 있음을 의미합니다.

왜 발생합니까?

이러한 모드가 있으면 매우 유용하지만 스마트폰을 이런 식으로 구성할 필요가 없는데 갑자기 창이 나타나면 어떻게 해야 할까요?

출현 이유 다를 수 있습니다:

  • 가젯을 플래시할 때 오류가 발생했습니다.
  • 실수로 키를 누르는 경우 – 스마트폰을 켜고 동시에 볼륨을 높이는 경우
  • 루트 사용자 권한 획득;
  • 시스템 오류.

어떤 경우든 기기 화면에 Android 아이콘과 가젯의 시스템 정보가 표시됩니다.

우선 Fastboot가 발생하면, .

볼륨 높이기 및 낮추기 버튼이 활성화되어 있습니다. 첫 번째 버튼으로는 화면에 표시되는 항목을 스크롤하고 두 번째 버튼으로는 선택합니다(예: 키 사용). 입력하다 PC에서).

따라서 우리는 비문에 도달합니다. "노멀부트"볼륨 낮추기 버튼으로 선택하세요.

그 후 스마트폰이 조용히 켜지면 최소한 문제가 없으며 시스템 오류도 원인이 아님을 나타냅니다. 때로는 컴퓨터 연결로 인해 발생하는 경우도 있습니다.

동기화가 발생하면 모든 작업을 수행합니다. 필요한 조치: 새로운 애플리케이션을 설치하고, 사진을 업로드하거나, 영화를 다운로드한 후, PC 연결을 끊어도 사라지지 않는 것을 볼 수 있습니다.

이는 서비스 센터에서 이 기능을 비활성화하지 않았기 때문일 수 있습니다. 이 문제는 스스로 처리할 수 있습니다.:

  • 가젯이 정상적으로 로드된 후 해당 가젯으로 이동하세요. "설정";
  • 그런 다음 탭을 선택하십시오 "화면";
  • 항목을 찾은 후 선택을 취소하십시오.

따라서 빠른 부팅 모드가 비활성화되고 켜져 있으면 더 이상 사용자를 방해하지 않습니다.

시스템 장애가 발생한 경우 수행할 작업

전환하는 경우 "일반 부팅"차단되거나 더 나쁜 경우 화면에 하나의 메시지만 표시됩니다. "Fastboot 모드"매개변수 요약이 없으면 어떤 이유로 가젯 시스템에 오류가 발생했으며 모든 문제를 해결하는 방법에는 두 가지 옵션이 있습니다.

옵션 1

언제든지 시스템을 복원하고 스마트폰을 다시 작동 상태로 되돌릴 수 있습니다.

중요한! 복구 중에는 스마트폰에 저장된 모든 데이터가 포맷되므로 스스로를 보호하고 먼저 메모리 카드를 제거하는 것이 좋습니다.

먼저, 전원 버튼과 볼륨 높이기 버튼을 동시에 누르고 있어야 합니다. 나타나는 메뉴에서 데이터 삭제/공장 초기화 항목을 찾으세요.

그런 다음 이를 선택하고 모든 설정이 롤백될 때까지 기다립니다. 이 과정은 1분에서 몇 분 정도 걸릴 수 있습니다.

가젯이 재부팅되고 다시 원하는 용도로 사용할 수 있습니다.

그러나 브라우저에 설치된 애플리케이션과 북마크는 다시 복원해야 합니다. 이러한 절차를 수행하면 공장 설정으로 돌아가기 때문입니다.

옵션 2

위에 설명된 방법 중 어느 것도 확실히 작동하지 않는 경우 최후의 수단으로 이 옵션을 사용해야 합니다.

켤 때 나타나는 모드에 매개변수가 포함되어 있지 않고 가젯을 재부팅해도 아무 작업도 수행되지 않고 호출할 수도 없는 경우 다음을 수행해야 합니다.

  • 배터리를 제거하십시오.
  • 다시 삽입하십시오.
  • 전원 버튼을 30초 이상 길게 누릅니다.

Fastboot 모드가 다시 돌아오면서 이제 더욱 과감한 조치를 취해야 할 때라는 것이 분명해졌습니다.

장치를 재부팅해야 하지만 컴퓨터를 통해 재부팅해야 합니다.

메모!시스템 오류가 발생한 스마트폰을 사용하려면 적합한 드라이버가 필요합니다.

그다지 어렵지 않습니다.

검색 엔진을 사용하고 "장작"을 다운로드할 수 있는 일련의 추천 사이트에서 바이러스 유입 등과 관련된 불쾌한 사건을 제거하기 위해 공식 사이트를 선택하십시오.

1 압축을 푼다"장작"을 다운로드했습니다.

2 아카이브의 데이터 폴더에 넣어두세요;

3 이후 가젯을 PC에 연결 USB 케이블을 통해;

4 기다리려면 시간이 좀 걸릴 것입니다. 컴퓨터가 스마트폰을 인식하는 동안, 그 후 그는 가젯 작업을 시작하기 위해 드라이버 설치를 제안합니다.

5 이미 미리 다운로드해 두었으므로 "지정된 위치에서 설치"를 선택하세요.;

6 파일을 배치한 폴더를 선택하고 입력하다.

드라이버가 성공적으로 설치되면 명령줄을 통해 장치 작업을 시작해 보겠습니다..

  • 메뉴로 이동 "시작";
  • 우리가 작성하는 실행 라인에서 "cmd";

이 방법에는 PC를 사용하는 방법이 포함됩니다. 가장 효과적이다. 하지만 더 작고 간단한 복구 작업이 효과가 없을 경우에는 여전히 이 방법을 사용하는 것이 가장 좋습니다.

설정 입력 방법

그러한 필요성이 발생하는 경우 모든 것은 사용하는 스마트폰 모델에 따라 달라집니다.

그러나 그럼에도 불구하고 컴퓨터가 필요합니다. 시작하기 전에 가젯을 끄십시오.

이 모드로 작업한 후에는 정기적으로 방해가 되지 않도록 설정에서 다시 비활성화하는 것이 가장 좋습니다.

fastboot 또는 ADB가 어떻게 작동하는지 궁금한 적이 있습니까? 아니면 Android를 실행하는 스마트폰을 벽돌로 만드는 것이 거의 불가능한 이유는 무엇입니까? 아니면 Xposed 프레임워크의 마법이 어디에 있는지, 부팅 스크립트 /system/etc/init.d가 왜 필요한지 오랫동안 알고 싶었습니까? 복구 콘솔은 어떻습니까? Android의 일부인가요, 아니면 그 자체인가요? 설치 이유는 무엇인가요? 타사 펌웨어정기적인 복구가 작동하지 않습니까? 이 기사에서 이 모든 질문과 기타 많은 질문에 대한 답을 찾을 수 있습니다.

Android 작동 방식

대해 알아보세요 숨겨진 가능성 소프트웨어 시스템작동 원리를 이해하면 가능합니다. 어떤 경우에는 시스템 코드가 닫혀 있기 때문에 이것이 어려운 경우도 있지만, 안드로이드의 경우 시스템 전체를 안팎으로 연구할 수 있습니다. 이 기사에서는 Android의 모든 뉘앙스에 대해 이야기하지 않고 OS가 시작되는 방법과 전원 버튼을 누른 후 데스크탑이 나타나는 사이에 어떤 이벤트가 발생하는지에만 중점을 둘 것입니다.

그 과정에서 우리가 이 일련의 이벤트에서 무엇을 변경할 수 있는지, 그리고 맞춤형 펌웨어 개발자가 이러한 기능을 사용하여 OS 매개변수 조정, 애플리케이션 저장 공간 확장, 스왑 연결, 다양한 맞춤화 등과 같은 기능을 구현하는 방법에 대해 설명하겠습니다. 이 모든 정보는 자신만의 펌웨어를 만들고 다양한 해킹 및 수정을 구현하는 데 사용될 수 있습니다.

1단계. ABOOT 및 파티션 테이블

모든 것은 기본 부트로더로 시작됩니다. 전원을 켜면 시스템은 다음에 저장된 부트로더 코드를 실행합니다. 영구 기억장치. 그런 다음 fastboot 프로토콜을 기본적으로 지원하는 aboot 부트로더에 제어권을 전달하지만 제조업체는 모바일 칩또는 스마트폰/태블릿은 자신의 취향에 맞게 다른 부트로더를 선택할 권리가 있습니다. 예를 들어 Rockchip은 fastboot와 호환되지 않는 자체 부트로더를 사용하며 플래시 및 관리를 위해 독점 도구가 필요합니다.

fastboot 프로토콜은 PC에서 부트로더를 관리하는 시스템으로, 이를 통해 부트로더 잠금 해제, 새 커널 플래시 및 복구, 펌웨어 설치 등의 작업을 수행할 수 있습니다. 다른 모든 수단이 실패하는 상황에서도 스마트폰을 원래 상태로 복원할 수 있다는 것이 패스트부트의 존재 이유다. 실험 결과 Android가 포함된 모든 NAND 메모리 파티션을 지우고 스마트폰에서 복구하더라도 Fastboot는 그대로 유지됩니다.

제어권을 받은 aboot는 파티션 테이블을 확인하고 boot라는 파티션에 플래시된 커널로 제어권을 전송합니다. 그런 다음 커널은 동일한 파티션에서 RAM 이미지를 메모리로 추출하고 Android 또는 복구 콘솔을 로드하기 시작합니다. Android 기기의 NAND 메모리는 6개의 조건부 필수 섹션으로 구분됩니다.

  • 부팅 - 일반적으로 크기가 약 16MB인 커널과 RAM 디스크를 포함합니다.
  • 복구 - 복구 콘솔은 커널, 콘솔 응용 프로그램 세트 및 16MB 크기의 설정 파일로 구성됩니다.
  • 시스템 - Android가 포함되어 있으며 최신 장치에서는 크기가 1GB 이상입니다.
  • 캐시 - 캐시된 데이터를 저장하도록 설계되었으며 OTA 업데이트 중에 펌웨어를 저장하는 데에도 사용되므로 시스템 파티션 크기와 비슷한 크기를 갖습니다.
  • userdata - 설정, 애플리케이션 및 사용자 데이터가 포함되어 있으며 나머지 모든 NAND 메모리 공간이 여기에 할당됩니다.
  • 기타 - 시스템이 부팅해야 하는 모드(Android 또는 복구)를 결정하는 플래그가 포함되어 있습니다.

그 외에도 다른 섹션이 있을 수 있지만 일반적인 마크업은 스마트폰 설계 단계에서 결정되며 aboot의 경우 부트로더 코드에 재봉됩니다. 이는 다음을 의미합니다. 1) 파티션 테이블은 다음을 사용하여 항상 복원할 수 있으므로 삭제할 수 없습니다. 빠른 부팅 명령 OEM 형식; 2) 파티션 테이블을 변경하려면 부트로더를 잠금 해제하고 새 매개변수로 다시 플래시해야 합니다. 그러나 이 규칙에는 예외가 있습니다. 예를 들어, 동일한 Rockchip의 부트로더는 NAND 메모리의 첫 번째 블록에 파티션에 대한 정보를 저장하므로 이를 변경하기 위해 부트로더를 플래싱할 필요가 없습니다.

기타 섹션이 특히 흥미롭습니다. 원래는 메인 시스템과 별개로 다양한 설정을 저장하기 위해 만들어졌다는 가정이 있지만, 이 순간시스템을 로드해야 하는 파티션(부팅 또는 복구)을 부트로더에 알려주는 한 가지 목적으로만 사용됩니다. 특히 이 기능은 ROM 관리자 응용 프로그램에서 펌웨어 자동 설치로 시스템을 자동으로 재부팅하여 복구하는 데 사용됩니다. 기본적으로 Ubuntu Touch 듀얼 부팅 메커니즘이 구축되어 Ubuntu 부트로더를 복구하고 다음에 부팅할 시스템을 제어할 수 있습니다. 기타 파티션 삭제 - Android 로드, 데이터 채우기 - 복구 로드... 즉, Ubuntu Touch입니다.

2단계. 부팅 섹션

misc 섹션에 복구 부팅 플래그가 없으면 aboot는 부팅 섹션에 있는 코드로 제어를 전송합니다. 이것은 Linux 커널에 지나지 않습니다. 섹션의 시작 부분에 있으며 바로 뒤에는 Android 작동에 필요한 디렉터리, init 초기화 시스템 및 기타 도구가 포함된 cpio 및 gzip 아카이버를 사용하여 압축된 RAM 디스크 이미지가 옵니다. 부팅 파티션에는 파일 시스템이 없으며 커널과 RAM 디스크가 서로 뒤따릅니다. RAM 디스크의 내용은 다음과 같습니다.

  • 데이터 - 동일한 이름의 파티션을 마운트하기 위한 디렉토리입니다.
  • dev - 장치 파일;
  • proc - procfs가 여기에 마운트됩니다.
  • res - 충전기용 이미지 세트(아래 참조)
  • sbin - 유틸리티 유틸리티 및 데몬 세트(예: adbd)
  • sys - sysfs가 여기에 마운트됩니다.
  • system - 시스템 파티션을 마운트하기 위한 디렉터리입니다.
  • 충전기 - 충전 과정을 표시하는 애플리케이션입니다.
  • build.prop - 시스템 설정;
  • init - 초기화 시스템;
  • init.rc - 초기화 시스템 설정;
  • ueventd.rc - init에 포함된 uventd 데몬의 설정입니다.

이것은 말하자면 시스템의 뼈대입니다. NAND 메모리 파티션의 파일 시스템을 연결하기 위한 디렉토리 세트와 시스템 부팅의 나머지 작업을 처리할 초기화 시스템입니다. 여기서 핵심 요소는 init 애플리케이션과 해당 init.rc 구성입니다. 이에 대해서는 나중에 자세히 설명하겠습니다. 그동안 sbin, proc 및 sys 디렉토리뿐만 아니라 Charger 및 ueventd.rc 파일에 주목하고 싶습니다.

충전기 파일은 배터리 아이콘을 표시하는 작업만 수행하는 작은 애플리케이션입니다. 안드로이드와는 아무런 관련이 없으며, 기기가 꺼진 상태에서 충전기에 연결되어 있을 때 사용됩니다. 이 경우 Android는 로드되지 않으며 시스템은 단순히 커널을 로드하고 RAM 디스크를 연결하고 충전기를 시작합니다. 후자는 가능한 모든 상태의 이미지가 res 디렉토리 내의 일반 PNG 파일에 저장되는 배터리 아이콘을 표시합니다.

ueventd.rc 파일은 시스템 부팅 중에 생성되어야 하는 sys 디렉터리의 장치 파일을 결정하는 구성입니다. Linux 커널 기반 시스템에서 하드웨어에 대한 액세스는 dev 디렉터리 내의 특수 파일을 통해 수행되며 init의 일부인 ueventd 데몬이 Android에서의 생성을 담당합니다. 정상적인 상황에서는 다음과 같이 작동합니다. 자동 모드, 커널에서 파일을 생성하는 명령을 허용하지만 일부 파일은 독립적으로 생성해야 합니다. ueventd.rc에 나열되어 있습니다.

재고 Android의 sbin 디렉토리에는 일반적으로 adbd, 즉 PC에서 시스템 디버깅을 담당하는 ADB 데몬 외에는 아무것도 포함되어 있지 않습니다. OS 부팅 초기에 실행되며 다음을 감지할 수 있습니다. 가능한 문제 OS 초기화 단계에서. 사용자 정의 펌웨어에서는 이 디렉토리에서 파티션을 ext3/4로 다시 포맷해야 하는 경우 필요할 수 있는 mke2fs와 같은 여러 다른 파일을 찾을 수 있습니다. 또한 모더는 수백 개의 Linux 명령을 호출할 수 있는 BusyBox를 여기에 배치하는 경우가 많습니다.

Linux용 proc 디렉터리는 표준입니다. 다음 부팅 단계에서 init는 가상 디렉터리인 procfs를 연결합니다. 파일 시스템, 모든 시스템 프로세스에 대한 정보에 대한 액세스를 제공합니다. 시스템은 sysfs를 sys 디렉토리에 연결하여 하드웨어 및 해당 설정에 대한 정보에 대한 액세스를 엽니다. 예를 들어 sysfs를 사용하면 장치를 절전 모드로 전환하거나 사용되는 절전 알고리즘을 변경할 수 있습니다.

build.prop 파일은 낮은 수준의 저장을 위한 것입니다. 안드로이드 설정. 나중에 시스템은 이러한 설정을 재설정하고 현재 액세스할 수 없는 system/build.prop 파일의 값으로 덮어씁니다.


텍스트에서 발췌

  • 실험 결과 스마트폰에서 모든 NAND 메모리 섹션의 내용을 삭제하더라도 Fastboot는 그대로 유지됩니다.
  • 복구 섹션은 완전히 자급자족하며 미니어처를 포함합니다. 운영 체제, 이는 Android와 관련이 없습니다.
  • fstab 파일을 약간 수정하면 init가 메모리 카드에서 시스템을 부팅하도록 강제할 수 있습니다.

2단계, 대안. 복구 섹션

misc 섹션에 복구 부팅 플래그가 설정되어 있거나 사용자가 볼륨 낮추기 키를 누른 상태에서 스마트폰을 켜면 aboot는 복구 섹션 시작 부분에 있는 코드로 제어권을 넘겨줍니다. 부팅 파티션과 마찬가지로 여기에는 메모리에 압축이 풀리고 파일 시스템의 루트가 되는 RAM 디스크와 커널이 포함됩니다. 그러나 여기서는 RAM 디스크의 내용이 다소 다릅니다.

OS 로딩의 여러 단계 사이의 전환 링크 역할을 하는 부팅 섹션과 달리, 복구 섹션완전히 독립적이며 Android와 전혀 관련이 없는 소형 운영 체제를 포함하고 있습니다. 복구에는 자체 코어, 자체 애플리케이션(명령) 세트 및 사용자가 서비스 기능을 활성화할 수 있는 자체 인터페이스가 있습니다.

표준(재고) 복구에는 일반적으로 스마트폰 제조업체의 키로 서명된 펌웨어 설치, 삭제 및 재부팅이라는 세 가지 기능만 있습니다. ClockworkMod 및 TWRP와 같은 수정된 타사 복구에는 훨씬 더 많은 기능이 있습니다. 파일 시스템을 포맷하고, 임의의 키로 서명된 펌웨어를 설치하고(읽기: 사용자 정의), 다른 파티션에 파일 시스템을 마운트하고(OS 디버깅 목적으로), 펌웨어 프로세스 및 기타 여러 기능을 자동화할 수 있는 스크립트 지원을 포함할 수 있습니다.

예를 들어 스크립트를 사용하면 부팅 후 메모리 카드에서 자동으로 복구가 발견되는지 확인할 수 있습니다. 필수 펌웨어, 설치하고 Android로 재부팅했습니다. 이 기능은 ROM 관리자, 자동 점멸 장치 및 자동 업데이트 CyanogenMod 및 기타 펌웨어.

사용자 정의 복구는 /system/addon.d/ 디렉터리에 있는 백업 스크립트도 지원합니다. 전에 펌웨어 복구펌웨어를 플래시하기 전에 스크립트를 확인하고 실행합니다. 이러한 스크립트 덕분에 새 펌웨어 버전을 설치한 후에도 gapps가 사라지지 않습니다.

빠른 부팅 명령

fastboot에 액세스하려면 Android SDK를 설치하고 케이블을 사용하여 스마트폰을 PC에 연결한 다음 두 볼륨 버튼을 모두 눌러 전원을 켜야 합니다. 그런 다음 SDK 내부의 platform-tools 하위 디렉터리로 이동하여 다음 명령을 실행해야 합니다.

빠른 부팅 장치

장치 이름이 화면에 표시됩니다. 기타 사용 가능한 명령:

  • fatsboot OEM 잠금 해제- 넥서스에서 부트로더 잠금 해제
  • 파일.zip 업데이트- 펌웨어 설치;
  • 플래시 부팅 boot.img- 부팅 파티션 이미지를 플래싱합니다.
  • 플래시 복구 복구.img- 복구 파티션 이미지를 플래싱합니다.
  • 플래시 시스템 system.img- 시스템 이미지를 깜박입니다.
  • OEM 형식- 파괴된 파티션 테이블을 복원합니다.

3단계. 초기화

따라서 제어를 받은 커널은 RAM 디스크를 연결하고 모든 하위 시스템과 드라이버를 초기화한 후 Android 초기화를 시작하는 init 프로세스를 시작합니다. 이미 말했듯이 init에는 init.rc 구성 파일이 있으며, 이 파일을 통해 프로세스는 시스템을 시작하기 위해 정확히 무엇을 해야 하는지 학습합니다. 안에 최신 스마트폰이 구성은 수백 줄의 인상적인 길이를 가지며 import 지시문을 사용하여 기본 구성에 연결된 여러 하위 구성의 예고편도 갖추고 있습니다. 그러나 그 형식은 매우 간단하며 기본적으로 블록으로 구분된 명령 집합입니다.

각 블록은 로딩 단계, 즉 Android 개발자 용어로 작업을 정의합니다. 블록은 on 지시문과 그 뒤의 작업 이름(예: on early-init 또는 post-fs)으로 서로 구분됩니다. 명령 블록은 동일한 이름의 트리거가 실행되는 경우에만 실행됩니다. 부팅할 때 init는 early-init, init, early-fs, fs, post-fs, early-boot 및 boot 트리거를 차례로 활성화하여 해당 명령 블록을 시작합니다.


구성 파일이 처음에 나열된 여러 구성을 추가로 가져오는 경우(거의 항상 그렇습니다), 그 안에 있는 동일한 이름의 명령 블록이 기본 구성과 결합되므로 트리거가 실행될 때 init가 모든 파일의 해당 블록에서 명령을 실행합니다. 이는 기본 구성에 모든 장치에 공통된 명령이 포함되어 있고 각 장치에 특정한 명령이 별도의 파일에 기록되는 경우 여러 장치에 대한 구성 파일을 생성하는 편의를 위해 수행됩니다.

추가 구성 중 가장 주목할만한 것은 initrc.device_name.rc라는 이름입니다. 여기서 장치 이름은 ro.hardware 시스템 변수의 내용에 따라 자동으로 결정됩니다. 이는 장치별 명령 블록이 포함된 플랫폼별 구성 파일입니다. 커널 조정을 담당하는 명령 외에도 다음과 같은 내용도 포함되어 있습니다.

Mount_all ./fstab.device_name

이는 이제 init가 다음 구조를 갖는 ./fstab.device_name 파일에 나열된 모든 파일 시스템을 마운트해야 함을 의미합니다.

Device_name(파티션) mount_point file_system fs_options 기타 옵션

여기에는 일반적으로 내부 NAND 파티션의 파일 시스템을 /system(OS), /data(응용 프로그램 설정) 및 /cache(캐시된 데이터) 디렉터리에 마운트하기 위한 지침이 포함되어 있습니다. 그러나 이 파일을 약간 수정하면 init가 메모리 카드에서 시스템을 부팅하도록 강제할 수 있습니다. 이렇게 하려면 메모리 카드를 1GB/ext4, 2GB/ext4, 1GB/ext4 및 나머지 fat32 공간의 세 가지 4개 섹션으로 나누십시오. 다음으로 /dev 디렉터리에서 메모리 카드 파티션의 이름을 확인하고(장치마다 다름) 이를 fstab 파일의 원래 장치 이름으로 바꿔야 합니다.


boot init 블록이 끝나면 class_start 기본 명령이 나타날 가능성이 높습니다. 이 명령은 기본 클래스와 관련된 구성에 나열된 모든 서비스를 시작해야 함을 알려줍니다. 서비스에 대한 설명은 서비스 지시문으로 시작하고 서비스 이름과 서비스를 시작하기 위해 실행해야 하는 명령이 이어집니다. 블록에 나열된 명령과 달리 서비스는 항상 실행되어야 하므로 스마트폰 수명 동안 init는 백그라운드에서 중단되고 이를 모니터링합니다.

최신 Android에는 수십 개의 서비스가 포함되어 있지만 그 중 두 개는 특별한 상태를 가지며 시스템의 전체 수명 주기를 결정합니다.

init.rc 명령

init 프로세스에는 내장된 명령 세트가 있으며, 그 중 다수는 표준입니다. 리눅스 명령. 그 중 가장 주목할만한 것은:

  • exec /경로/대상/명령- 외부 명령을 실행합니다.
  • ifup 인터페이스- 네트워크 인터페이스를 높입니다.
  • 수업_시작 수업_이름- 지정된 클래스에 속하는 서비스를 시작합니다.
  • 수업_중지 수업_이름- 서비스를 중지합니다.
  • insmod /경로/to/모듈- 커널 모듈을 로드합니다.
  • FS 장치 디렉토리 마운트- 파일 시스템을 연결합니다.
  • setprop 이름 값- 시스템 변수를 설정합니다.
  • service_name 시작- 지정된 서비스를 시작합니다.
  • 트리거 이름- 트리거를 활성화합니다(지정된 명령 블록 실행).
  • /path/to/file 줄 쓰기- 파일에 한 줄을 씁니다.

4단계. Zygote 및 app_process

로딩의 특정 단계에서 init는 구성이 끝날 때 다음 블록과 같은 것을 만나게 됩니다.

서비스 zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server 클래스 기본 소켓 zygote 스트림 660 루트 시스템 onrestart 쓰기 /sys/android_power/request_state wake onrestart 쓰기 /sys/power/state on onrestart 재시작 미디어 onrestart 재시작 netd

이는 초기화, 시스템 서비스 시작, 사용자 애플리케이션 시작 및 중지 및 기타 여러 작업을 담당하는 Android 시스템의 핵심 구성 요소인 Zygote 서비스에 대한 설명입니다. Zygote는 위의 구성 부분에서 매우 명확하게 볼 수 있는 작은 응용 프로그램 /system/bin/app_process를 사용하여 시작됩니다. app_process 작업은 /system/lib/libandroid_runtime.so 공유 라이브러리에 있는 코드인 Dalvik 가상 머신을 시작한 다음 그 위에서 Zygote를 실행하는 것입니다.

이 모든 작업이 완료되고 Zygote가 제어권을 갖게 되면 모든 프레임워크의 Java 클래스(현재 2000개 이상)를 로드하여 Java 애플리케이션 런타임 구축을 시작합니다. 그런 다음 창 관리자, 상태 표시줄, 패키지 관리자, 그리고 가장 중요하게는 향후 시작 및 종료 수신을 담당하게 될 활동 관리자를 포함하여 대부분의 상위 수준(Java로 작성됨) 시스템 서비스를 포함하는 system_server를 시작합니다. 신호 응용 프로그램.

그런 다음 Zygote는 /dev/socket/zygote 소켓을 열고 절전 모드로 전환하여 데이터를 기다립니다. 이때 이전에 실행된 Activity Manager는 브로드캐스트 인텐트 Intent.CATEGORY_HOME을 보내 데스크탑 생성을 담당하는 애플리케이션을 찾고 소켓을 통해 Zygote에 이름을 부여합니다. 후자는 차례로 애플리케이션을 최상위에서 포크하고 실행합니다. 가상 기기. 짜잔, 우리 화면에는 Activity Manager가 발견하고 Zygote가 시작한 데스크탑과 상태 표시줄 서비스의 일부로 system_server가 시작한 상태 표시줄이 있습니다. 아이콘을 탭하면 데스크탑은 이 애플리케이션의 이름이 포함된 인텐트를 보내고 Activity Manager는 이를 수신한 후 Zygote 데몬에 애플리케이션을 시작하라는 명령을 보냅니다.

정보

Linux 용어로 RAM 디스크는 Linux에만 존재하는 일종의 가상 하드 디스크입니다. 랜덤 액세스 메모리. 부팅 프로세스 초기에 커널은 이미지에서 디스크 내용을 추출하고 이를 루트 파일 시스템(rootfs)으로 마운트합니다.

부팅 프로세스 중에 Android는 세 가지 다른 부팅 화면을 표시합니다. 첫 번째는 전원 버튼을 누른 직후에 나타나 Linux 커널에 플래시되고, 두 번째는 초기화 초기 단계에 표시되며 /initlogo.rle 파일에 기록됩니다(거의 현재 사용됨) 마지막은 bootanimation 응용 프로그램을 사용하여 시작되며 /system/media/bootanimation.zip 파일에 포함되어 있습니다.

표준 트리거 외에도 init를 사용하면 장치를 USB에 연결, 스마트폰 상태 변경, 시스템 변수 상태 변경 등 다양한 이벤트에 의해 트리거될 수 있는 자체 트리거를 정의할 수 있습니다.

무엇보다도 Activity Manager는 메모리가 부족할 때 백그라운드 애플리케이션도 종료합니다. 여유 메모리 임계값은 /sys/module/lowmemorykiller/parameters/minfree 파일에 포함되어 있습니다.

이 모든 것이 다소 혼란스러워 보일 수 있지만 가장 중요한 것은 세 가지 간단한 사항을 기억하는 것입니다.

여러 면에서 Android는 다른 운영 체제와 매우 다르기 때문에 바로 파악하기가 어렵습니다. 그러나 모든 것이 어떻게 작동하는지 이해한다면 가능성은 끝이 없습니다. iOS와는 달리 윈도우 폰, Google 운영 체제는 코드를 작성하지 않고도 동작을 심각하게 변경할 수 있는 매우 유연한 아키텍처를 갖추고 있습니다. 대부분의 경우 필요한 구성과 스크립트를 수정하는 것으로 충분합니다.




맨 위