본문 바로가기

개발노트/MAC

Intel 맥에서 M1 맥으로 마이그레이션 할 때 겪은 것들

회사에서 업무할 때, 지급받은 2018 Late Macbook Pro 를 사용하다가 이번에 14인치 Macbook M1 Pro 를 지급받아서 세팅을 했다.

기존 Intel 맥에서 이것저것 막 설치해서 사용해서 그런지, 결과적으로 M1 Mac 에서 포맷을 3번하고, "마이그레이션 지원" 앱을 통해 마이그레이션을 4번이나 시도한 끝에 다행히 기본적인 세팅은 끝낸 것 같다. 아직 안심하긴 이르지만, 아주 크리티컬한 문제가 있어서 기록해본다.

결과적으로 마이그레이션할 때, 기존 맥에서 Karabiner 앱을 사용하고 있었다면 이걸 삭제한 다음 마이그레이션을 진행하고, 이후에도 저 앱은 설치하지 않아야 한다는 사실을 기록/공유하기 위한 글이다.

다 지나고 난 지금 시점에서 생각해보니 귀찮지 않다면, 마이그레이션 지원 앱을 통해 데이터를 옮기지 말고 처음부터 세팅하는 게 오히려 속이 편하겠다는 생각도 들긴 하지만, 다시 돌아간다해도 나는 마이그레이션 지원 앱을 통해 데이터를 옮겼을 것 같긴 하다. 너무나 귀찮은 것.

 

1차 마이그레이션 시도

기존 Intel Mac 이 Bigsur 를 사용하고 있어서 monterey 로 업그레이드 함

기존 Intel Mac 의 OS 버전이 M1 Mac 의 OS 버전보다 더 최신이어서 M1 Mac 도 버전 업그레이드가 필요해서 업그레이드 함

이후 "마이그레이션 지원(Migration Assistant) 앱" 을 이용하여 모든 데이터를 체크하고 마이그레이션 함

마이그레이션 완료 후 일정 시간이 지나자 아무것도 하지 않았는데도 무한 재부팅되는 현상이 생겼다.

 

 

 

이 때, 어떻게 할 수가 없어서 포맷을 하고 다시 OSX 를 설치하였다.

 

2차 마이그레이션 시도

M1 Mac 에서 다시 OSX 를 설치하면서 새로운 local 사용자를 만들고(회사 보안 정책에 따라), 다시 마이그레이션 진행함

이 떄는 모든 데이터를 마이그레이션 하지 않고, /Users/{intel_mac_username} 데이터를 제외한 나머지 모두에 대해서 마이그레이션 하도록 옵션 선택을 했었음

마이그레이션 완료 후, User Data 가 없어서 동시에 이것저것 여러 설정을 많이 건드렸던 것 같다.

근데 이 때도 여러 설정을 하다가 재부팅을 한 번 했는데, 또 아무것도 하지 않았는데도 무한 재부팅되는 현상이 생겼다.

재부팅이 되고 나서 약 1~2분 이내에 다시 또 재부팅이 되는 현상.

1~2분 내에 어떤 조치를 취할 수가 없어서 또 포맷하고 OSX 재설치 ㅠㅠ

이 때, User Data 가 문제는 아니라는 생각이 들었기도 하고, User Data 가 없으니까 마이그레이션 한 의미가 없어진 것 같아서 Intel Mac 에서 사용자의 이름을 회사에서 요구하는 형태로 변경하고 다음 마이그레이션할 때는 또 모든 데이터를 마이그레이션 하도록 해야겠다고 생각함

 

3차 마이그레이션 시도

마이그레이션 완료 후, 한글 입력 관련하여 이런 저런 설정을 하다보니 다시 무한 재부팅 현상이 생겼음

여러 자료를 검색해보니 구름 입력기 아니면 Karabiner 를 의심하게 됨

자료를 찾다보니 Karabiner 쪽에 문제가 있을 가능성이 훨씬 높아보였음

검색해보니 M1 맥과 Karaniber 관련하여 커널 패닉 현상을 겪는 유저가 많다는 것을 알 수 있었음

Intel Mac 에서 Karabiner 를 지우고, 다시 포맷 후 OSX 재설치 하였음

 

4차 마이그레이션 시도

기존 Intel mac 에서 Karabiner 관련 앱을 모두 삭제하고 마이그레이션 지원 앱을 통해 모든 데이터에 대해 마이그레이션 되도록 옵션 설정 후 진행

Intel 맥에서 설정한 구름 입력기도 문제 없이 잘 이전됐음

그런데 기존 Intel Mac 에서 Karabiner 를 통해 설정하던 게, 한/영키 전환과 캡스락으로 클릭하기 등이 있었는데 이게 안 되니 많이 불편했다.

그래도 hidutil 을 이용하여 Karabiner 를 통해 하던 한/영키를 오른쪽 alt key 로 수행하는 것은 달성할 수 있어서 그나마 다행이었다.

#!/bin/bash
/usr/bin/hidutil property --matching '{"ProductID":0x5021}' --set '{"UserKeyMapping":[
           {
             "HIDKeyboardModifierMappingSrc": 0x7000000e2,
             "HIDKeyboardModifierMappingDst": 0x7000000e3
           },
           {
             "HIDKeyboardModifierMappingSrc": 0x7000000e3,
             "HIDKeyboardModifierMappingDst": 0x7000000e2
           },
           {
             "HIDKeyboardModifierMappingSrc": 0x7000000e6,
             "HIDKeyboardModifierMappingDst": 0x70000006d
           }
         ]}'

여기서 ProductID 는 '이 Mac에 관하여' > '시스템 리포트...' > '하드웨어' > USB 에 나오는 "제품 ID" 이다.

e2, e3, e6, 6d 관련된 key code 는 https://developer.apple.com/library/archive/technotes/tn2450/_index.html#//apple_ref/doc/uid/DTS40017618-CH1-KEY_TABLE_USAGES 에서 확인을 할 수 있다.

e2 : left alt

e3 : left command

e6 : right alt

6d : f18

 

위 스크립트는 LaunchAgents plist 를 통해 실행되도록 /Library/LaunchAgents/xxxx.plist 파일로 만들어주면 재부팅/로그인할 때마다 자동으로 실행해줘서 이제 신경쓰지 않아도 된다.

(근데 별도의 스크립트 없이 plist 만으로도 원래 저렇게 하는게 가능해야하는데, 이상하게 그렇게 하면 재부팅/로그인할 때 적용이 되지 않고 수동으로 load 를 해줘야 했다. 저 스크립트를 별도의 파일로 빼고, plist 파일에서는 저 스크립트를 실행하도록 해주는 방식으로 변경을 하니 잘 된다.)

이렇게 매핑되도록 한 다음, 아래와 같이 입력 소스 전환 단축키를 f18 로 변경해준다.

 

캡스락으로 클릭하기는 아직 못했지만, 이것도 keycode 가 있다면 remapping 해서 쓸 수 있을 것 같다.

 

+ 누군가 이 과정(Karabiner 대체)을 편하게 할 수 있도록 만들어 놓은 오픈 소스도 있다! 역시 대단한 오픈소스 생태계!

https://github.com/amarsyla/hidutil-key-remapping-generator

 

GitHub - amarsyla/hidutil-key-remapping-generator: Simple tool to generate HIDUTIL key remapping configurations for MacOS

Simple tool to generate HIDUTIL key remapping configurations for MacOS - GitHub - amarsyla/hidutil-key-remapping-generator: Simple tool to generate HIDUTIL key remapping configurations for MacOS

github.com

 

관련 링크

https://chuyeow.wtf/2020/06/24/remapping-keys-on-macos

https://developer.apple.com/library/archive/technotes/tn2450/_index.html#//apple_ref/doc/uid/DTS40017618-CH1-KEY_TABLE_USAGES

https://stackoverflow.com/questions/54392510/how-to-assign-a-key-remapping-to-specific-device-using-hidutil

https://apple.stackexchange.com/questions/329085/tilde-and-plus-minus-%C2%B1-in-wrong-place-on-keyboard/353941#353941

 

+ Updated 2022-02-19

무한 재부팅 현상을 포맷 없이 해결하려면, 재부팅 되자마자 빠르게 로그인 한 후, 터치패드 이용하여 런치 패드로 진입한 다음, Activity Monitor(활성 상태 보기) 앱을 켜서 karabiner 로 검색한 다음 나오는 모든 프로세스 선택(Cmd + A) 한 후, X 버튼을 눌러 프로세스를 강제 종료하면 또 재부팅되는 현상을 막을 수 있다. 그런 다음 karabiner 앱을 실행하여 Misc. 탭에 가서 Uninstall 을 해주면 포맷 없이 해당 문제를 해결할 수 있다.

혹~시나 karabiner 최신 버전(14.3)을 설치하면, 문제 없이 사용할 수 있으려나 싶어서 다시 설치해봤는데 설치 후 재부팅 하자 마자 바로 문제가 생겨서 맥도 패닉이 오고 나도 패닉이 왔다. 그래도 무한 재부팅 될 때, 재부팅 되고 나서 아주 찰나의 순간이 있는데 이 때, karabiner 가 fully 실행되기 전에 실행 자체를 막을 수 있다면, 포맷은 하지 않아도 될 것 같아서 시도해봤는데 다행히 잘 됐다. ㅠㅠ 다시는 설치 안 해!

karabiner 를 대체할 만한 제품을 찾고 있는데, BetterTouchTool 은 써보고 있는데 내가 karabiner 에서 쓰던 행태를 지원하지 않는 것 같아서 아쉽다는 생각이 든다. karabiner 가 정말 잘 만든 제품이라는 생각이 들기는 한데, 왜 14인치 m1 맥북 프로에서 문제가 발생하는 것일까..? 입력 모니터링 권한이 켜져있는 구름 입력기를 지워보고 karabiner 를 다시 설치해볼까? 싶기도 하다. ㅠㅠㅠㅠ

반응형