IT 주제, 특히 리눅스를 다룹니다.

Posted
Filed under Android

안드로이드 7.0 업데이트의 시혜를 받는 첫 넥서스 기기는 Nexus 5X 였다. 며칠 전 Google 서버에 Factory image가 올라와서, 심심하던 찰나에 업데이트를 진행했다.

Android 7.0 Nougat 소개 홈페이지

여러가지 새로운 기능이 탑재되었는데, 흥미로운 것만 꼽아보자면...

  • 72개의 새로운 이모지
  • 스플릿 스크린: 2개 앱을 한 화면에 보여주기
  • Vulkan API: 고성능 3D 게임에 특화
  • VR 모드
  • Doze: 주머니 속 폰의 배터리 절약
  • Quick Setting 사용자 정의
  • Data Saver: 백그라이드 앱의 데이터 사용 중지
  • 텍스트 및 아이콘 사이즈 변경
  • 파일 기반 암호화 지원 (현재 알파 버전)

이전부터 Cyagnogenmod 골수 사용자인 내 경우에는 크게 와닿는 기능은 없지만 그래도 업데이트가 나쁘진 않겠지.


현재 구글의 베타 프로그램에 등록해야만 업데이트 할 수 있는 것으로 알고 있으나, 나의 Nexus 5X는 서브폰일 뿐. 팩토리 이미지로 깔끔(?)하게 업데이트하는 것이 좋아서 아래와 같이 진행해 보았다.

이제 업데이트 방법을 간단히 정리해 보겠다. 텍스트 기반이니 적당히 이해하시고 따라오시라.

부트로더가 변경되기 때문에, 부트로더 언락이 필수적이다. 아래 과정을 따라하면, 장치가 완전히 초기화된다. 데이터 삭제되니, 필수적으로 백업을 해두기 바란다.

  1. Factory image 다운로드
  2. Google USB Driver 다운로드
  3. 반디집 등으로 .tgz 파일을 압축 해제
  4. 개발자 옵션 활성화: 설정 > 휴대전화 정보 > 빌드 번호 7회 터치
  5. 개발자 옵션 진입: 설정 > 개발자 옵션
  6. OEM 잠금 해제 활성화
  7. fastboot 모드 진입: 전원 종료 후 Power + Volume down 키 약 2초간 누름
  8. DEVICE STATE - locked 확인
  9. cmd 창을 열어 압축 해제된 폴더로 이동
  10. OEM 잠금 해제 명령 실행: fastboot oem unlock
  11. 폰에서 YES 로 이동(볼륨 업/다운키)하여 선택(파워키)
  12. Factory image update 명령 실행: flash-all.bat

이후 정상적인 부팅 과정을 거쳐 설정을 진행하게 된다.


부트로더 락을 하실 분은 아래 순서를 진행한다. 장치가 완전히 초기화되기 때문에, 설정 진행하기 전 바로 따라하는 것이 좋다.

  1. fastboot 모드 진입: 전원 종료 후 Power + Volume down 키 약 2초간 누름
  2. cmd 창을 열어 압축 해제된 폴더로 이동
  3. OEM 잠금 명령 실행: fastboot oem lock
  4. 폰에서 YES 로 이동(볼륨 업/다운키)하여 선택(파워키)
  5. 재부팅: (상단 START 선택 상태) 파워키 1회 누르기

모든 과정이 완료되었다. 몇장의 스크린샷으로 마무리를 대신한다.

업데이트 후 메인 화면

변경된 Quick Setting

Quick Setting 사용자 설정하기

새로운 알림창

변경된 설정창의 정보

휴대전화 정보

2016/08/28 09:17 2016/08/28 09:17
Posted
Filed under Android

최근 OnePlus 3 를 구입하여 사용중이며, 어제 좀 더 최적화된 OS를 만끽하기 위해 cm13 을 올렸다. 계속 사용해오던 ROM이지만, 한가지 눈에 띄는 변화가 있었다. 블루투스 이어셋 아이콘 옆에 왠 세로줄이 하나 있었다. 감(?)을 잡고 정보를 찾아봤다. (참고 링크 이동)

안정화 브랜치 cm-13.0-ZNH5Y 를 토대로 스냅샷이 릴리즈 되었다. 드디어 안드로이드에도 블루투스 장치의 배터리 미터가 추가된 것이다.

중요 변경점은 다음과 같다.

  • Wi-Fi Tethering – automatically turn off hotspot after X minutes of inactivity
  • Profiles – add notification light controls
  • Do Not Disturb/Priority Mode – add notification light controls
  • Privacy Guard/App data usage – Restrict apps to Wi-Fi or Cellular data only or block all internet access, per app
  • Bluetooth Devices battery support – For compatible devices, a new battery icon will appear in the status bar to show the paired devices’ battery level
  • Lockscreen Wallpaper picker makes its return
  • Lockscreen Weather and new Weather plug in support – see weather blog post
  • Lockscreen Blur support (on a per device basis) and the ability to disable the effect
  • Live Lockscreen support
  • New LiveDisplay hardware enhancements and API
  • Snap Camera (per device basis)
  • Gello Browser (per device basis)
  • Lots of translations – shout out to the CM translations team on CrowdIn
  • Cyanogen Apps support (see blog post, x86 is not supported yet)
  • Additional CM SDK APIs
  • Security fixes galore
2016/08/21 10:47 2016/08/21 10:47
Posted
Filed under 해외직구

해외 직구 시 영양제나 의약품도 상당수 주문하게 되는데요. 통관 불가 성분을 아래와 같이 간단히 정리해 보겠습니다.

  • 요힘비(Yohimbe) 또는 요힘빈(Yohimbine)
  • 아카린(icarin / icariin)
  • 음양곽(Horny Goat Weed) 또는 삼지구엽초(Epimedium)
  • 과라나 씨앗 (Guarana Seed)
  • 크리신 (Chrysin)
  • 에카나시아 (Echinacea)
  • 김네마 (Gymnema)
  • 수산화구연산 (Hydroxycitric acid,HCA), Garcinia cambogia(Citrimax)
  • 후디아 (Hoodia)
  • Cascara Sagrada
  • Relora 또는 Magnolia Bark(Phellodendron)
  • Pueraria Mirifica
  • Sippery Elm
  • Rhodiola Rosea
  • senna leaf
  • KAVA KAVA
  • Black Cohosh
  • 5-HTP
  • Alpha Lipoic Acid
  • Melatonin
  • DiosMin
  • Butcher's Broom
  • Tongkat All (Long Jack, Eurycoma longifolia, Malaysian Ginseng)
  • 스테로이드, 호르몬성 다이어트, 헬스보충제
  • 크리신 이외에도 피콜린산 크롬(Chromium Picolinate)이라는 성분에 주의 할 것
  • 쏘팔메토 성분 통관 허용 - Saw Palmetto
2016/07/08 09:32 2016/07/08 09:32
Posted
Filed under Linux/Gentoo

udev >= 197 부터는 기본적으로 predictable network interface 가 사용된다. 즉 sit0, eth0 등이 아니라 udev rule에 따라 interface name이 결정되어 인식된다.

확정된 interface는 /etc/conf.d/net 의 dhcp 설정 및 /etc/init.d/network.* script 로 사용할텐데, 만약 메인보드를 다른 모델로 교체했다면 이름이 바뀌어 재부팅 시 network 인식 못하는 경우가 생긴다.

predictable network interface 를 알아보는 커맨드는 다음과 같다.

> # udevadm test=builtin net_id /sys/class/net/ 2> /dev/null

아래 방법으로 아예 predictable network interface 를 사용 중단할 수도 있다.

  1. 커널 파라미터 "net.ifnames=0" 을 주고, /etc/systemd/network/99-default.link 파일을 생성
  2. 또는 위 파일을 /dev/null 로 symlink
2016/06/07 16:46 2016/06/07 16:46
Posted
Filed under 정치

기사 바로가기

세월호 반대 집회 중인 어버이연합

보수의 꼴통 아이콘 어버이연합. 세월호 반대 집회에 탈북자 등 알바 동원 사실이 확인되었다. 2014년 한 해 1200명 이상, 지급된 비용 2500만원 이상이다.

과연 비용의 자금원은 누구일까. 이러한 반대 집회로 이득을 볼 수 있는 단체의 정상에는 누가 있을까?

2016/04/11 13:06 2016/04/11 13:06
Posted
Filed under 사회

우리나라의 빈부격차, 최저시급, 임금 등. 확실히 너무 짜다. 언제부터 헬조선이 도래했을까. 가끔 생각해보는 문제이다.

우리나라는 무조건적인 대학 진학 및 대기업 선호 사상이 극에 달해 있는 것 같다. 선후 관계를 규정짓기 어려우나, 부모들의 자녀 교육은 이런 이슈와 따로 떼어 생각할 수 없다. 얼마나 바뀌었는지 모르겠지만 주입식 교육 및 자율학습, 사교육의 폐단이 없어졌으리라 생각치 않는다.

어찌어찌 대학 진학 - 졸업까지 마치면 본인들은 취업에 대해 무슨 생각을 할까. 미래? 자아성취? 결혼? 결국은 돈으로 귀결될 수 밖에 없을 듯 하다. 이 사회가 그렇지 않나.

결국은 취업 시의 연봉을 고려할 것이다. 대기업과 중소기업의 연봉 차이를 알게 되겠지. 어디는 초봉이 얼마더라... 누구나 대기업에 취업하고 싶은 것이 자명할 것이다. 먹고 살기 어려운 현대사회에서 돈 더 준다고 하면 마다하겠는가?

무한경쟁 이라는 것은 경쟁사 간 치열하게 혁신을 부르짖는 상황에서나 필요하지, 입에 풀칠하는 근본적인 문제에서 쓰이는 단어가 되면 안된다고 본다.

장하성 교수님의 발언을 들어보자.

나비혁명

2016/04/10 17:42 2016/04/10 17:42
Posted
Filed under Android

4월 1일은 만우절이다. 뭐 별 느낌이야 없었으나 엉뚱한 곳에서 황당함을 느낄 줄이야...

매주 토요일마다 넥서스6의 cm-13 nightly 버전 업데이트를 하고 있고, 오늘도 여느 때와 마찬가지였다. 그런데 dalvik cache가 재생성되는 화면이 뭔가 좀 이상했다. cm-13 외계인 마스코트가 나오면서.

부팅하니 시스템에서 표현되는 단어 앞에 MOD가 붙어있다. 어딜 가든 붙어있다. 카톡 표현 하나하나에도.

잠금화면 퀵메뉴 다운로드페이지

관련 정보를 찾아보니, cm 포럼에 사용자들의 불만이 빗발치는 중.

MOD What is this?

  • 하나도 안웃기다.
  • 내 폰은 당신들의 장난감이 아니다.

해결책은, 4월 1일자 롬을 올리지 않으면 된다. 이미 올렸다면(그러니 이 글을 보고 계실듯) 3월 30일자 이전으로 back 하던지, 4월 2일자 nightly 를 기다리자.

2016/04/02 12:51 2016/04/02 12:51
Posted
Filed under Linux/Android-x86

통신 성공했습니다. 너무 간단해서 완료하고보니 허탈하다는... 옛날 모뎀 통신방식 AT 명령어 사용하는 것은 여전합니다만, 최근 출시되는 모듈은 명령 체계가 많이 다른듯 합니다.

쉽게 스크립트화하는 건 나중에 해보기로 하고, 일단 저렇게 보이고 있습니다. 걍 특정 AT 명령 날리면 eth0 인터페이스로 유선 연결된 것처럼 보입니다. 웃기게도, 자동으로 IP를 받아와버려요. 망할 pppd 생각하면 열불나네요 ㅡㅡ;

참고로 저는 SKT 태블릿용 데이터 쉐어링 사용합니다.

와이파이 안잡혀 있는데,

우측 위의 좌우화살표 모양의 아이콘 생기면서 통신이 됩니다.

2016/03/21 21:46 2016/03/21 21:46
Posted
Filed under Android

간단히 적어 놓고, 나중에 다듬도록 하겠다. 우선 target에 맞는 android ndk의 standalone toolchain 이 가장 간편한 듯 하다. 현재 ndk는 r11b 버전까지 릴리즈 되어 있다. 다운로드 후 아래 가이드의 Advanced method를 참고하자.

http://developer.android.com/ndk/guides/standalone_toolchain.html

난 Android 6.0.1 x86용 Native compiler를 생성하고 싶기 때문에, API level 23을 옵션으로 줘야한다.

$NDK/build/tools/make-standalone-toolchain.sh \ --arch=x86 --platform=android-23 --install-dir=/tmp/my-android-toolchain \ --toolchain=x86-linux-android-4.9

지정된 설치 디렉토리에 standalone toolchain이 복사되었을 것이다. 해당 디렉토리를 편의 상 $NDK 변수로, 그 아래의 sysroot 디렉토리를 편의 상 $SYSROOT 로 지정한다.

export NDK=/tmp/my-android-toolchain export SYSROOT=$NDK/sysroot

Native compiler를 빌드하는 작업은 기본적으로 Cross-compile 이다. 아래 가이드를 참고하면 비교적 쉽게 진행할 수 있다.

http://wiki.osdev.org/GCC_Cross-Compiler

가이드를 따라 gcc 빌드에 필요한 mpc, mpfr, gmp 소스를 받아 gcc 디렉토리에 넣어주어야 한다.

빌드하기 전 아래 변수들도 설정한다. Android 6.0 이상에서는 PIE binary만 실행 가능하기 때문에, 관련 -fPIE, -pie 등의 CFLAGS, CXXFLAGS, LDFLAGS를 설정해야 한다.

export PREFIX=$HOME/android-x86/build_toolchain/out export TARGET=i686-linux-android export PATH=$PREFIX/bin:$NDK/bin:$PATH export CC=i686-linux-android-gcc export CFLAGS="-fPIE" export CXX=i686-linux-android-g++ export CXXFLAGS="$CFLAGS" export LDFLAGS="-pie"

이제 standalone toolchain을 사용하여 빌드를 시작한다.

  1. binutils 빌드하기

mkdir build-binutils cd build-binutils ../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror make make install

  1. gcc 빌드하기

mkdir build-gcc cd build-gcc ../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers --with-sysroot=$SYSROOT make all-gcc make all-target-libgcc make install-gcc make install-target-libgcc

이제 $PREFIX 디렉토리에 빌드 완료된 파일들을 tar 로 묶어 안드로이드로 옮겨보자. $SYSROOT 디렉토리의 파일들도 함께 묶는다.

결과는???

안드로이드 내에서 Hello World 코드를 작성해서 아래와 같이 빌드해보았다. 간단히 alias 를 잡아준다. (gcc 설치 경로는 /system/gcc 이다) alias cc='/system/gcc/bin/gcc -I/system/gcc/include -fPIE -pie' cc hello.c -o hello

자.. 실행해보면,

Hello World

잘 출력된다.

다만.. 아직 bionic 이 뭔지도 감이 안잡히고. 이렇게 해봤자 관련 라이브러리가 모두 포팅되어있지 않으면 내가 원하는 바는 이룰 수 없을 듯.

2016/03/20 20:06 2016/03/20 20:06
Posted
Filed under Linux/Android-x86

Kernel 4.1.8부터 O2 Micro SD Card Reader 를 인식하지 못합니다. 딱 베뉴 11 프로에 탑재된 리더라, 아무리 메모리카드 끼워봤자 인식 안되더라구요.

구글 그룹과 구글신의 도움을 받아 이것도 결국 해결 봤습니다. (바로가기)

파워 버튼은, acpi 드라이버가 누락되어 있었는데 이것도 누군가의 소스코드로 해결..

다만 아직도 갈 길은 멉니다.

  • 재부팅할때마다 사운드가 나왔다가 안나왔다가.
  • 블루투스 인터넷 테더링은 연결된 것으로 나오지만 안되는 듯.
  • 이어폰 연결해도 스피커로 사운드가...
  • 프렌즈팝 실행하면 zip 관련 에러와 함께 맵 다운로딩에서 넘어가질 않고.

매일 무슨 삽질인지... ㅠㅠ

2016/03/11 23:16 2016/03/11 23:16