보통 안드로이드 기기를 루팅하면 DRM 레벨이 L1 에서 L3로 떨어지면서, 여러가지 불이익이 발생한다.
그러나 Xperia 1 V 는 루팅해도 DRM 레벨이 그대로 L1 을 유지한다는 것을 알게되었다.
https://github.com/forhekset/xperia-1v-policyman
그래서 한 번 해 보고 기록을 남겨 봄..
부트로더 언락 키 받기
먼저 공식 사이트로 가서 부트로더 언락키를 얻어야 한다.
https://opendevices.sony.net/aosp-on-xperia-open-devices/get-started/unlock-bootloader#unlock-code
모델을 선택후, 가이드에 따라 *#*#7378423#*#* 입력 -> IMEI 를 입력하면 언락키를 확인할 수 있다.


그러면 1회용 언락키가 발급된다. 이 키를 어딘가 저장해둔다.
만약 여기서 부트로더 언락이 허용되지 않는 단말이면 키 발급이 진행 되지 않으며, 이 기기는 합법적인 루팅이 불가능하다.
기기 전용 드라이버 구하기
언락을 하려면 안드로이드 기기를 fastboot 모드로 PC에 연결시켜야 한다.
fastboot 접속을 하려면 별도의 드라이버가 설치되어야 한다.
아래 URL 에서 드라이버를 받는다.
https://opendevices.sony.net/aosp-on-xperia-open-devices/downloads/drivers

펌웨어 파일 구하기
xperifirm 을 통해 본인이 사용하는 폰 모델명에 맞는 최신 펌웨어를 다운 받는다.
반드시 본인의 기기에 설치된 버전과 동일한 버전의 펌웨어를 구한 다음 다음 단계로 진행해야 한다.
참고: https://tars.tistory.com/entry/xperifirm
XperiFirm 5.8.1 공식 다운로드 링크
https://drive.google.com/file/d/1SCokyNWNxtdwrUANyTulKLbL1S1wNdq4/view XperiFirm 5.8.1 (by Igor Eisberg).zip drive.google.com 이 버전에는 arm64빌드도 포함되어 있다.
blog.razor1911.xyz
기기 백업 및 초기화
부트로더를 언락하면 기기가 바로 초기화된다. 따라서 언락 전에 필요한 자료를 모두 백업해둔다.
그리고 가급적 기기를 먼저 초기화 시켜둔다. 기기를 초기화 시키지 않고 부트로더를 언락시키면 자동으로 기기가 잠기면서 앞서 사용했던 구글 계정 정보 입력을 요구하기 때문에 그냥 먼저 해두는 것이 좋다.
fastboot 모드 접속을 위한 드라이버 설치 (Windows OS)
그 후 기기를 끄고 볼륨 + 버튼을 누른 상태로 PC에 연결을 하면 화면이 켜지는 대신 화면 최상단의 LED 가 파란색으로 표시된다.
그러면 fastboot 모드로 연결이 된 것이다.
그 후, 장치 관리자를 보면 아래 디바이스명 혹은 그냥 android 라는 이름으로 장치가 느낌표와 같이 떠 있게 된다.

아래와 같은 순서로 드라이버를 설치한다.
1. 해당 기기를 우클릭
2. 드라이버 업데이트
3. 내 컴퓨터에서 드라이버 찾아보기
4. 컴퓨터의 사용 가능한 드라이버 목록에서 직접 선택
5. 디스크 있음 -> 찾아보기
6. 앞서 받은 Xperia 드라이버 파일 압축 해제 후 폴더 내 inf 파일을 선택.
7. 보안상 위험이 있을 수 있다는 경고 메시지가 표시되면 확인 눌러서 설치 진행. (디지털 서명이 되어 있지 않아서 경고가 발생함)
부트로더 언락 진행 (bootloader 모드)
cmd -> adb 도구가 있는 폴더로 이동 후, 아래와 같이 기기가 접속되어 있는지 확인해본다.
fastboot device

언락 코드를 입력한다. 0x<발급 받은 키> 형태로 입력하면 되며, 즉시 반영된다.
fastboot oem unlock 0x9999999999999

기기를 재시작 시킨다.
fastboot reboot

이제부터 부팅 시, Xperia 로고가 표시되기 이전에 디바이스가 언락 되었다는 경고? 메시지가 짧게 표시되기 시작한다.
펌웨어에서 init.boot.img 추출하기
xperifirm 을 통해 다운로드한 펌웨어 폴더를 살펴보면 이런 파일이 있다.
init_boot_X-FLASH-ALL-25B1.sin

sin 파일을 img 로 변환시켜주는 도구를 다운받는다. (UnSIN)
https://xdaforums.com/t/tool-unsin-sin-v3-v4-v5-unpacker-v2-0.3128106/
간단하게 init_boot_X-FLASH-ALL-25B1.sin 파일을 unsin.exe 파일 위로 드래그를 하면 img 파일이 바로 생성된다.

공식 Magisk 설치 및 img 파일 패치
Magisk github repo 에서 최신 버전의 apk 를 받은 후, 폰에 설치한다.
apk 를 폰에 넣을 때, 변환된 init_boot_X-FLASH-ALL-25B1.img 파일도 같이 폰에 넣어준다.
https://github.com/topjohnwu/Magisk/tags
GitHub - topjohnwu/Magisk: The Magic Mask for Android
The Magic Mask for Android. Contribute to topjohnwu/Magisk development by creating an account on GitHub.
github.com
Magisk 실행 후 설치 > 해당 img 파일을 선택해서 패치를 진행한다.


패치된 img 파일을 다시 PC로 가져온다.
magisk_patched-31100_LKaGY.img

패치된 img 파일을 기기에 다시 플래싱하기 (fastbootd 모드)
init_boot 를 플래싱할 때에는 bootloader 모드가 아닌 fastbootd 모드로 부팅해야 한다.
디버그 모드를 ON 후, PC 에 연결하고 아래 커맨드를 통해 fastbootd 에 진입한다.
adb reboot fastboot
한 번 더 정보를 확인해본다.
C:\platform-tools>fastboot devices
XXXXXXXXX fastboot
C:\platform-tools>fastboot getvar is-userspace
is-userspace: yes
Finished. Total time: 0.001s
C:\platform-tools>fastboot getvar product
product: pdx234_jp
Finished. Total time: 0.001s
C:\platform-tools>fastboot getvar current-slot
current-slot: b
Finished. Total time: 0.001s
C:\platform-tools>fastboot getvar has-slot:init_boot
has-slot:init_boot: yes
Finished. Total time: 0.001s
내용이 모두 정상으로 확인되면, 이제 init_boot 를 플래싱한다.
C:\platform-tools>fastboot flash init_boot magisk_patched-31100_LKaGY.img
Sending 'init_boot_b' (8192 KB) OKAY [ 0.292s]
Writing 'init_boot_b' OKAY [ 0.035s]
Finished. Total time: 0.361s
C:\platform-tools>
플래싱이 성공하면 이어서 재시작을 시킨다.
C:\platform-tools>fastboot reboot
Rebooting OKAY [ 0.000s]
Finished. Total time: 0.001s
Magisk 확인
재시작이 완료되면 Magisk 앱을 확인해본다.
이제 Magisk 의 설치 상태가 Installed 로 바뀌어 있는 것을 알 수 있다.

DRM 레벨 확인
정말 L1 이 그대로 유지됨을 알 수 있다. 그러나 넷플릭스 등은 실행되지 않는다.
(쿠팡플레이도 실행이 차단되나, 그것은 우회하기 쉬움)


부트로더 다시 잠그기
fastbootd 모드에서 원본 init_boot 파일을 플래싱하고,
bootloader 모드에서 부트로더를 잠궈주면 된다.
// fastbootd 로 재부팅하기
adb reboot fastboot
//fastboot 모드에서 원본 img 플래싱
fastboot flash init_boot init_boot_X-FLASH-ALL-25B1.img
fastboot reboot
// bootloader 로 재부팅하기
adb reboot bootloader
// bootloader 모드에서 다시 잠그기
fastboot oem lock
fastboot reboot