안드로이드용 가상 SD 카드. Android에서 microSD 메모리 카드의 고장. 지원되는 파일 시스템

메모리 카드를 여러 섹션으로 분할해야 하는 필요성은 일반적으로 Android 휴대폰/태블릿에 애플리케이션을 설치하기에 충분한 내장 메모리가 없을 때 발생합니다. 유사한 작업을 수행하면 예를 들어 microSD 카드의 두 번째 섹션으로 이동하여 휴대폰의 공간을 확보할 수 있습니다. 이전에는 및를 사용하여 메모리 카드에 파티션을 생성/병합하는 방법을 이미 설명했습니다.

메모리 카드 파티셔닝을 지원하는 특정 휴대폰/태블릿에 대한 복구를 찾는 것이 항상 가능한 것은 아닙니다. 따라서 이 문서에서는 Android 애플리케이션 AParted를 사용하여 복구를 수행하는 방법을 설명합니다.

이 애플리케이션은 다음 기능을 제공합니다(공식 문서 참조):

  • Android 기기의 외부/내부 메모리 분할.
  • Android 기기의 외부/내부 메모리를 포맷합니다.
  • 파티션 제거.
  • 파일 시스템 오류를 확인하고 수정합니다.
  • 파티션 크기 조정.
  • 파일 시스템을 업데이트하는 중입니다.

이 글에서는 그 중 첫 번째 것만 사용하겠습니다.

측설 준비 중

분할 과정 중에 메모리 카드에서 모든 파일이 삭제되므로 분할하기 전에 중요한 데이터(사진, 비디오 등)의 백업 복사본을 만드십시오.

귀하의 휴대폰에 이 프로그램이 있는지 확인하십시오. 이 프로그램이 없으면 AParted는 작동하지 않습니다.

애플리케이션을 실행하기 전에 Android 설정에서 메모리 카드를 비활성화해야 합니다. 이렇게 하려면 "설정 > 메모리"로 이동하여 연결된 microSD 카드 섹션에서 "안전하게 제거" 항목을 클릭하고 작업을 확인하세요.

미래 섹션의 레이아웃

AParted 애플리케이션을 실행하면 "CREATE" 탭에 직사각형 형태의 메모리 카드에 대한 두 가지 그래픽 표현이 표시됩니다. "SD 메모리 카드 msdos 파티션 테이블"이라는 문구가 있는 아래쪽 직사각형은 현재 파티션 레이아웃을 표시하고 위쪽 직사각형은 하나의 "새 msdos 파티션 테이블" - microSD 카드의 향후 파티션 레이아웃입니다.

첫 번째 섹션을 추가하려면 "추가" 버튼을 클릭하고 슬라이더를 사용하여 크기를 지정하세요. 이 섹션은 사진, 음악 등을 위한 외부 메모리로 휴대폰/태블릿에서 사용할 수 있습니다. 보다 정확한 분석을 위해 MB 숫자를 클릭하고 나타나는 필드에 정확한 크기를 메가바이트 단위로 입력한 후 "확인"을 클릭하여 변경 사항을 확인하세요. "포맷" 확인란을 활성화하고 "fat32" 파일 시스템을 변경하지 않은 상태로 둡니다.

microSD 카드에 두 번째 파티션을 추가하려면 "추가" 버튼을 다시 클릭하세요. 이 파티션은 향후 Android 기기의 시스템 메모리 확장 역할을 하게 됩니다. 슬라이더를 사용하여 나머지 공간을 모두 선택하고 "포맷" 확인란을 활성화한 상태로 두고 "fat32" 비문을 클릭한 후 "ext2", "ext3" 또는 "ext4" 파일 시스템 중 하나를 선택합니다.

여기서 재미가 시작됩니다. "ext4" 옵션을 선택하는 것이 좋습니다. 그러나 이 파일 시스템에서 파티션을 생성할 수 없는 데에는 Android 시스템의 커널/펌웨어, 메모리 카드의 등급/제조사(품질) 등

따라서 실험적으로 먼저 "ext4"를 사용하여 파티션을 생성한 다음 "ext3" 및 "ext2"를 사용해 보십시오. 결국 Link2SD 앱은 위의 파일 시스템을 모두 지원합니다.

위의 작업을 수행한 후 "새 msdos 파티션 테이블"이라고 표시된 직사각형에 메모리 카드의 향후 파티션 레이아웃이 표시되어야 합니다.

측설 수행

새 파티션의 레이아웃을 메모리 카드에 적용하려면 "적용" 버튼을 클릭하세요. AParted 애플리케이션은 이동식 미디어의 모든 데이터가 삭제된다는 경고를 표시합니다.

다음으로, 메모리 카드 파티션을 분할하고 포맷하는 과정이 표시되며, 완료되면 하단 그래프 "SD 메모리 카드 msdos 파티션 테이블"에 미디어 분할 결과가 표시됩니다. 다시 휴대폰/태블릿의 “설정 > 저장소”로 이동하여 외부 메모리 섹션에서 “SD 카드 연결”을 클릭하세요. Android 시스템으로 microSD 카드를 연결하고 분석한 후 메모리가 설정한 크기로 줄어든 것을 확인할 수 있습니다.

휴대폰 상태에 SD 카드가 손상되었다는 메시지가 표시되면 Android 시스템을 재부팅하세요. 재부팅 후 메모리 카드가 자동으로 연결됩니다.

Link2SD 설정

설치하고 실행하세요. 프로그램은 메모리 카드에 두 번째 파티션이 있는지 자동으로 감지하고 마운트 스크립트를 생성하라는 메시지를 표시합니다. AParted 애플리케이션에서 메모리 카드를 분할할 때 지정한 두 번째 파티션의 파일 시스템을 목록에서 선택하고 요청을 확인한 후 작업을 완료한 후 "장치 재부팅" 버튼을 클릭합니다.

Android 시스템을 재부팅한 후 기기 메모리의 애플리케이션을 외부 메모리 카드의 두 번째 파티션으로 전송할 수 있습니다.

경쟁 애플리케이션을 개발하는 동안 데이터베이스 저장 문제에 직면했습니다. 문제는 외장 메모리 카드를 어떻게 식별하는가였습니다. 일반적으로 인터넷 검색에서는 정확한 답변을 제공하지 못했습니다. 따라서 찾은 모든 결과를 결합하여 수업을 구성했습니다. 누구든지 관심이 있다면 컷 아래를 살펴보세요.

이제 이론부터 시작하겠습니다.

술어

Google은 다음과 같은 개념이 있다고 말합니다.
  1. 내부 ( 내부) 메모리는 휴대폰에 내장된 메모리 카드의 일부입니다. 기본적으로 사용되는 경우 해당 애플리케이션 폴더는 다른 애플리케이션의 접근으로부터 보호됩니다(내부 저장소 사용).
  2. 외부 ( 외부) 메모리는 일반적인 "외부 저장소"입니다. 이는 내장 메모리의 일부일 수도 있고 제거할 수 있는 장치일 수도 있습니다. 일반적으로 이는 내장 메모리의 일부인데, 마지막으로 장치가 제거되는 것을 본 것은 Android 2.2에서 내장 메모리가 약 2GB이고 연결된 메모리가 외부 메모리가 되었습니다(외부 저장소 사용).
  3. 삭제됨( 이동할 수 있는) 메모리 - "외과적" 개입 없이 장치에서 제거할 수 있는 모든 저장소입니다.

KitKat 4.4 이전에는 API가 외부 메모리 경로를 검색하는 기능을 제공하지 않았습니다. 이번 버전(API 19)부터 공개 추상 파일 함수가 등장했습니다. getExternalFilesDirs(문자열 유형), 내부 및 외부 메모리에 대한 경로가 포함된 문자열 배열을 반환합니다. 하지만 슬롯에 삽입되는 SD 카드는 어떻습니까? 우리는 다시 그 경로를 얻을 수 없습니다.

검색결과

그 질문에 답하기 위해 나는 모든 것을 아는 Google에 의지했습니다. 하지만 그 역시 나에게 명쾌한 답을 주지는 않았다. 외부 메모리로 연결되지만 제거되는 저장 장치와는 아무런 관련이 없는 표준 기능을 사용하는 것부터 장치 장착 규칙 처리(Android는 Linux 커널에서 실행됨)에 이르기까지 많은 정의 옵션이 고려되었습니다. 후자의 경우, 마운트된 장치가 있는 폴더에 대한 "하드 와이어링된" 경로가 사용되었습니다(이 디렉토리는 버전마다 다릅니다). 버전마다 탑재 규칙이 변경된다는 점을 잊지 마세요.

결국, 나는 내가 얻은 모든 지식을 결합하기로 결정하고 외부 및 삭제된 장치에 대한 경로를 반환할 수 있는 나만의 클래스를 작성했습니다.

코드 설명

수업이 생성되었습니다. 마운트장치, 여기에는 장치 경로, 장치 유형 및 해시가 포함됩니다.
장치에는 두 가지 유형이 있습니다(내부 메모리는 시스템 API를 통해 접근할 수 있으므로 건드리지 않았습니다).

공개 열거형 MountDeviceType( EXTERNAL_SD_CARD, REMOVABLE_SD_CARD )
그리고 클래스가 생성되었습니다. StorageHelper, 사용 가능한 메모리 카드를 검색합니다.

StorageHelper 클래스는 시스템 환경( 환경) 및 Linux 유틸리티 사용 , 또는 오히려 실행 결과입니다.

방법 1 - 환경
환경 작업을 할 때 표준 getExternalStorageDirectory() 함수를 사용하여 외부 메모리에 대한 정보를 얻습니다. 삭제되는 메모리에 대한 정보를 얻으려면 환경 변수 " 보조 저장".

항상 하나의 외부 메모리가 있고 일반적으로 항상 존재하므로 가독성을 확인하고 해시를 계산하고 기억합니다. 삭제해야 할 메모리가 많을 수 있으므로 결과 문자열을 구분 기호로 분할하여 각 값을 확인해야 합니다.

함수 fillDevicesEnvirement

문자열 경로 = android.os.Environment.getExternalStorageDirectory() .getAbsolutePath(); if (!path.trim().isEmpty() && android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) ( testAndAdd(path, MountDeviceType.EXTERNAL_SD_CARD); ) // 리무버 가져오기 String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); if (rawSecondaryStoragesStr != null && !rawSecondaryStoragesStr.isEmpty()) ( // 모든 보조 SD-CARD가 배열로 분할됨 final String rawSecondaryStorages = rawSecondaryStoragesStr .split(File.pathSeparator); for (String rawSecondaryStorage: rawSecondaryStorages) ( testAndAdd(rawSecondaryStorage, MountDeviceType.REMOVABLE_SD_CARD); ) )


솔루션은 stackoverflow에서 가져왔습니다. 답은 저 아래 어딘가에 있습니다.
방법 2 - 마운트
오랫동안 삭제되는 메모리의 경로를 시스템에서 알려주지 못했기 때문에 마운트된 장치의 방향을 살펴보기로 했습니다. 시스템에는 외부 장치 장착 규칙을 설명하는 구성 파일이 있습니다. 모든 것이 괜찮겠지만 Android 버전 4.*에서는 단순한 필사자가 이 파일에 액세스할 수 없으므로 이 방법은 고려하지 않겠습니다.

마운트 유틸리티로 돌아가 보겠습니다. 매개변수 없이 실행하면 명령이 마운트된 파일 시스템 목록을 반환합니다. 삭제되는 장치는 일반적으로 FAT 파일 시스템 형식이므로 " 지방". 외부 메모리는 매개변수 " 퓨즈".

참고: 이 방법을 사용할 때 장착된 장치의 유형이 항상 올바르게 결정되는 것은 아닙니다(대부분 고려하지 않았을 가능성이 높습니다). 다양한 Android 버전에서 차이점을 발견했습니다. 따라서 이 방법을 추가로 사용할 수 있습니다.

fillDevicesProcess 함수

try ( 런타임 런타임 = Runtime.getRuntime(); proc = Runtime.exec("mount"); try ( is = proc.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); while( (line = br.readLine()) != null) ( if (line.contains("secure")) 계속; if (line.contains("asec")) 계속; if (line.contains("fat") ) (// TF 카드 문자열 columns = line.split(" "); if (columns != null && columns.length > 1) ( testAndAdd(columns, MountDeviceType.REMOVABLE_SD_CARD); ) ) else if (line.contains(" 퓨즈")) (// 내부(외부) // 저장 String columns = line.split(" "); if (columns != null && columns.length > 1) ( // mount = mount.concat(columns + " \n"); testAndAdd(columns, MountDeviceType.EXTERNAL_SD_CARD); ) ) ) ) 마지막으로 ( ... ) ) catch (예외 e) ( ... )

전체 클래스의 소스 코드는 아직 어디에도 없습니다. 언젠가는 이를 gitHub에 게시하려고 합니다.

또 누가 어떤 방법을 사용하나요?

태그: 태그 추가

돌고래는 가상 SD 카드에 데이터를 저장할 수 있습니다. sd.raw. 기본적으로 128MB 크기로 생성됩니다.

가상 SD 카드는 Dolphin의 홈브류 앱에 중요한 용도로 사용됩니다. Project M과 Mario Kart Wii 사용자 정의 트랙은 두 가지 좋은 예입니다. 일부 홈브류 앱은 해당 앱이 설계된 실제 하드웨어의 SD 카드에 저장된 파일을 통해서만 작동할 수 있기 때문입니다.

내용물

가상 SD 카드 만들기

실제 하드웨어의 SDHC 카드에서 실행하려는 일부 홈브루 앱에는 호환성 문제가 있으므로 Project M과 같은 대형 홈브루 앱의 경우 크기가 최소 1GB이고 최상의 호환성을 위해 2GB 이하인 앱을 만드는 것이 좋습니다. .

명령줄 및 실행 파일

WinImage는 이상하게도 비동기화 및 기타 예측할 수 없는 문제를 일으킬 수 있기 때문에 신뢰할 수 없습니다. ImDisk는 괜찮을 것입니다.

가상 SD 카드를 마운트하고 편집하기 위한 빠른 가이드 ImDisk 가상 디스크 드라이버:

  1. 마우스 오른쪽 버튼을 클릭하세요. sd.raw파일을 클릭한 다음 "ImDisk 가상 디스크로 마운트"상황에 맞는 메뉴에서.
  2. 체크박스 이동식 미디어그럼 때려 "좋아요". 미리 정의된 드라이브 문자와 그 밖의 모든 기능은 정상적으로 작동합니다.
    • 이제 가상 SD 카드가 기본 탐색기 창에서 읽고 쓸 수 있는 "이동식 디스크"로 나타납니다.
  3. 가상 SD 카드 편집이 완료되면 "이동식 디스크"를 마우스 오른쪽 버튼으로 클릭하고 "ImDisk 가상 디스크 마운트 해제"상황에 맞는 메뉴에서.
    • 돌핀과 함께 사용하기 전에 가상 SD 카드를 분리해야 합니다.

돌고래 세팅

옵션 > 구성... > Wii >로 이동하여 활성화합니다. SD 카드 삽입.

용법

홈브루 앱으로

홈브류 앱에 사용되는 외부 파일은 다음 폴더에 저장되어야 합니다. sd.raw그리고 홈브류 앱 자체( boot.elf또는 boot.dol)가 Dolphin을 로드하려면 외부에 존재해야 합니다. 예를 들어 프로젝트 M은 SD 루트에서 로드됩니다. \프로젝트\ Dolphin은 다음을 통해 프로젝트 M을 시작해야 합니다. \apps\projectm\boot.elf, 아니다가상 SD 카드에 편의상 가상 SD 카드 내부와 외부에 동일한 복사본을 병렬로 배치하는 것이 이상적입니다.

그러나 Wii용 홈브루 익스플로잇을 통해 가상 SD 카드에서 홈브루 앱을 시작할 수 있습니다.

Wii 게임 런처 앱은 특정 Wii 게임이 기본 ISO로 설정된 경우에만 작동합니다. Dolphin 게임 목록 내에서 Wii 게임에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) 다음을 클릭합니다. 기본 ISO로 설정. Dolphin으로 홈브류 앱을 로드하기 전에 이 작업을 수행하세요.

넷플레이의 경우

Netplay는 생성된 크기와 루트 내의 동일한 파일/폴더 구조에 관계없이 복제되지 않은 가상 SD 카드를 읽는 경우 결국 동기화를 해제합니다. 그것을 방지하기 위해, sd.raw netplay를 시작하기 전에 호스트 "컴퓨터에서 참여자" 컴퓨터로 복사해야 합니다. 가상 SD 카드가 쓰기 차단이 비활성화된 상태에서 오프라인 또는 온라인으로 사용된 경우 MD5 체크섬은 변경되지만(파일의 "액세스한 날짜"는 가상 SD 카드와 "다름)" 비동기화를 일으키지 않습니다. 다른 곳에서 왔거나 "다른" 파일로 수정된 파일이 있을 수 있습니다.

Wii 게임 런처 앱의 경우 양쪽 사용자는 먼저 게임 목록에 동일한 홈브류 앱과 게임 사본을 가지고 있어야 하며, 이전 섹션에서 언급한 대로 게임을 기본 ISO로 설정해야 합니다.

일부 Android 장치에는 메모리 카드(일반적으로 microSD 형식)용 슬롯이 있습니다. 장치가 SD 카드를 지원하는 경우 다음을 수행할 수 있습니다.

  • 메모리 용량을 늘리십시오.
  • 일부 기능과 응용 프로그램에는 카드를 사용하십시오.

기기에 SD 카드 슬롯이 있는지 확인하려면 제조업체 웹사이트를 방문하세요.

메모.이 단계 중 일부는 Android 6.0 이상을 실행하는 기기에서만 수행할 수 있습니다.

SD 카드를 설치하는 방법

1단계: SD 카드를 삽입합니다.
  1. SD 카드 슬롯이 어디에 있는지 확인하세요.
  2. 전화기를 끄십시오.
  3. SD 카드 트레이를 제거하거나 장치의 후면 커버를 제거하세요(모델에 따라 다름). 필요한 경우 카드를 고정하는 탭을 들어 올립니다.
  4. SD 카드를 슬롯에 넣습니다. 고정 탭을 올린 경우 낮추십시오.
  5. SD 카드 트레이나 기기 뒷면 커버를 다시 설치하세요.
2단계: SD 카드를 켭니다.
  1. SD 카드 알림이 나타날 때까지 기다립니다.
  2. 딸깍 하는 소리 곡조.
  3. 원하는 저장 유형을 선택하세요.
    • 이동식 저장소:
      모든 파일(사진, 음악 등)과 함께 카드를 다른 장치로 전송할 수 있습니다. 애플리케이션을 이동식 드라이브로 이동할 수 없습니다.
    • 내부 메모리:
      카드에는 해당 기기의 앱과 데이터만 저장할 수 있습니다. 다른 기기로 옮기면 해당 기기의 모든 데이터가 삭제됩니다.
  4. 화면의 지시에 따라 SD 카드를 설정하세요.
  5. 완료되면 클릭하세요. 준비가 된.

SD 카드 사용 방법

앱을 SD 카드로 이동하는 방법

카드를 내부 저장소로 연결한 경우 해당 카드로 애플리케이션을 전송할 수 있습니다.

메모.모든 애플리케이션을 SD 카드로 전송할 수 있는 것은 아닙니다.

파일을 SD 카드로 이동하는 방법

SD 카드를 이동식 저장장치로 설치하면 음악, 사진 등 다양한 파일을 SD 카드로 전송할 수 있습니다. 그 후에는 기기 내부 메모리에서 삭제할 수 있습니다.

1단계: SD 카드에 파일을 복사합니다.

2단계: 내부 저장소에서 파일을 삭제합니다.

SD 카드의 내용을 확인하고 남은 공간을 확인할 수 있습니다.

SD 카드를 내부 저장소로 사용하는 경우

SD 카드를 이동식 저장장치로 사용하는 경우

  1. 화면 상단에서 아래로 스와이프하여 알림 패널을 엽니다.
  2. SD 카드 알림 아래에서 열려 있는.

이 도구를 사용하면 휴대폰이나 태블릿의 SD 카드/USB 드라이브에 파티션을 만들고 관리할 수 있습니다. 스왑 파티션을 생성하여 장치에 더 많은 RAM을 추가할 수 있습니다. 손상된 SD 카드 파일 시스템을 복구할 수도 있습니다. "기본" 파티션 유형만 지원합니다.
기능:

  • 파티션 생성;
  • 파티션 삭제;
  • 손상된 파일 시스템 복구.

지원되는 파일 시스템:

  • FAT16, FAT32, EXT2, EXT3, EXT4, SWAP, NTFS(MoalBoal 버전부터 시작).

요구사항:

  • 루트 전화;
  • Busybox의 가용성;
  • 내부 메모리에 설치;
  • 애플리케이션 작업을 시작하기 전에 SD 카드를 분리하십시오.

프로그램을 사용하여 파티션을 만드는 방법에 대한 지침

가장 먼저 할 일은 모든 중요한 파일을 플래시 드라이브에서 PC로 전송하는 것입니다. 즉, 그 후에는 모든 것이 플래시 드라이브에서 삭제됩니다.

- 프로그램 열기

만들기 섹션에서 더하기 기호 "+"를 두 번 클릭합니다.

첫 번째 섹션 "파트 1"에서는 Fat32를 선택하고 두 번째 "파트 2"에서는 원하는 ext2/3/4 또는 스왑을 선택합니다.
- 슬라이더를 사용하여 각 섹션의 크기를 설정하고 '형식' 확인란을 선택해야 합니다.

"알았어" 확인

모든 것이 준비되었습니다.

플래시 드라이브를 전체 용량으로 되돌리는 방법
플래시 드라이브에서 두 번째 파티션을 삭제하기로 결정한 경우 이를 수행할 수 있습니다.
- 휴대폰 설정, "메모리"로 이동하여 "SD 카드 제거"를 클릭하세요.
- 프로그램 열기
- 만들기 섹션에서 더하기 기호 "+"를 한 번 클릭합니다.
- "1부"에서 Fat32를 선택하고 슬라이더를 플래시 드라이브의 전체 용량으로 설정하고 "포맷" 확인란을 선택해야 합니다.

소프트 키, "변경 사항 적용" 클릭




맨 위