기본 콘텐츠로 건너뛰기

3D가속을 지원하는 Ubuntu 12.04LTS 를 Multiboot RK3188 설치 후 설정

https://plus.google.com/+IanMORRISON 님에게 감사의 말씀을 일단

1. SD 준비하기
먼저 용량 넉넉한 MicroSD를 FAT32로 포멧한 후
MiniTool Partition Wizard 같은 걸로 Ext4 파티션을 만들어준다.

2. 듀얼부팅용 Flash하기
RKAndroidTool.exe 를 일단 받자
순서대로 올려보는데 일단 기본적으로 USB Driver 등은 설치+적용해놓고 리커버리모드로 부트.

update.img는
https://drive.google.com/file/d/0B99O3A0dDe67NjVLSHlhQXVnX0k 받아서
v1.7에서 올려서 upgrade했다. 파일이름이 아마 rikomagic-linuxium-bootloader 인데 내용 물은 update.img임.
이걸로 듀얼부팅은 끝.

(최신 kitkat 적용 radxa 롬이 있긴 하지만 안정화도 그렇고 멀티부팅도 아직이라 보류http://radxa.com/2014/03/25/android-4-4-2-preview-firmware-released/ )

하지만 몇가지 패치는 해주자
v1.37에서 boot(5번째)에
https://drive.google.com/file/d/0B99O3A0dDe67NjVLSHlhQXVnX0k
minix-linuxium-updated-boot.img
요거 한번 올리고 run

rikomagic-linuxium-updated-kernel.img
요거 한번 올리고 run

3. 이미지를 올릴 차례다.
https://docs.google.com/file/d/0B99O3A0dDe67S1hQQ2VybldVYU0/edit 를 sd카드에 올리고
부트한 뒤 c 를 선택 커맨드라인 모드로 돌입. 쭉쭉 입력해주자.
mke2fs /dev/mmcblk0p1 <enter>
mount /dev/mmcblk0p1 /mnt/sdcard <enter>
mount /dev/mtdblock9 /mnt/nand <enter>
cd /mnt/nand/Download <enter>

mount -o loop linuxium-ubuntu1204-desktop-rfs.img /mnt/misc <enter>
cd /mnt/misc <enter>
for i in * <enter>
do <enter>
echo copying $i  <enter>
cp -a $i /mnt/sdcard <enter>
echo copied <enter>
done <enter>

올리는 이미지가 mali 그래픽 칩셋에서 3D지원을 하는 놈인데
최초 우분투 부팅 (암호는 p) 후
sudo su -
한 뒤 root로

rm -rf /usr/lib/arm-linux-gnueabihf/mesa-egl
해주고 
sudo chmod 666 /dev/dri/card0
sudo chmod 777 /dev/mali
요렇게 하라는데 내 경우엔 /dev/dri/ 경로 자체가 없었다.

아래 달린 댓글에 보면
mali_drm.ko이 자동으로 로드되지 않는 경우가 있다고 하는데
cd /lib/modules/3.0.36+; sudo insmod mali_drm.ko
실행한 후 디스플레이 매니저를 재시작한다.
sudo restart lightdm
화면이 껌뻑하고 다시 로그인
/dev/dri/card0 경로가 생겼다!

sudo chmod 666 /dev/dri/card0
sudo chmod 777 /dev/mali

권한을 주고
테스트 해보자.

es2gears
glmark2-es2
둘다 잘 돌아가면 성공.

Wifi 설정하고

Locale 설정도 하자.
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
sudo locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales

개발관련 의존성 설치
sudo apt-get update

sudo apt-get install build-essential openssl libssl-dev pkg-config git-core scons libpcre++-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev curl

java 설치
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
정도로 일단 마무리.

만일 1080p가 아닌 720p 디스플레이를 쓴다면 화면이 잘릴 수 있다.
sudo echo 1280x720p-60 > /sys/class/display/display0.HDMI/mode
해상도를 변환해주면 편리하다.

* resize partition POWERTIP!
http://www.hagensieker.com/styled-26/index.html 감사합니다.

root@LINUXIUMONE:/home/linuxium# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mmcblk0 2580272 1809192 640008 74% /
udev 955244 4 955240 1% /dev
tmpfs 382900 576 382324 1% /run
none 5120 0 5120 0% /run/lock
none 957248 264 956984 1% /run/shm
root@LINUXIUMONE:/home/linuxium# resize2fs /dev/mmcblk0 
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/mmcblk0 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mmcblk0 to 7728896 (4k) blocks.
The filesystem on /dev/mmcblk0 is now 7728896 blocks long.

root@LINUXIUMONE:/home/linuxium# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mmcblk0 30430236 1812332 27072472 7% /
udev 955244 4 955240 1% /dev
tmpfs 382900 576 382324 1% /run
none 5120 0 5120 0% /run/lock
none 957248 264 956984 1% /run/shm
------------------------------

df로 현재 사용하고 있는 block명을 확인하고
resize2fs <block경로>
하고 나면 Use%가 줄어든, 그러니까 용량이 늘어난 것을 확인할 수 있다.
2.5GB의 적은 용량에 실망할 필요가 없다.


+추가
지역이 다를 경우 시간이 안맞을 수 있는데 root 권한으로

cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime

해주면 Asia/Seoul 기준으로 된다.

이 블로그의 인기 게시물

Unicode 2.0 에서 한글의 이해

요즘 SNS이나 SNG등등 기계적으로 문장을 생성하는 프로그램들이 넘쳐나는 시대에 의외로 한글처리를 제대로는 프로그램들이 드물구나 하는 생각에 간단한 한글 자소 분석기를 만들어보았다.
링크는 이쪽(http://jsbin.com/ofoqal/10/edit)

애초에 만든 목적은 다음과 같다.
조사처리(은/는, 이/가, 을/를 등등)를 위해 단어의 마지막 글자의 종성을 조사하기 위함인데 예문을 들어보자면

"준기 강남에서 사진 찍었다."
"예슬 홍대에서 식사 했다."
"슬기 대화방에서 나갔습니다."

"준기님은 강남에서 사진님을 찍으셨습니다 고갱님" 이라고 말하면 할말 없다.

한국식 소프트웨어(꼭 소프트웨어가 아니더라도)의 특징이자 장점이 무엇이냐라고 물으면
귀찮을 정도로 깨알같은 디테일이라고 대답할텐데 한글 기계화 작업에 대한 중요성은 프로그램을 만드는 사람들에게도 별로 중요하게 다가오지 않나보다.

에또 사설이 길었다.
한때 우리는 한글코드체계의 비표준 숲속에서 너무도 괴로운 나날들을 보낸 역사가 있다.
KSC5601부터 시작해서 Microsoft통합형한글을 지나 Unicode 2.0의 시대가 왔다.

개인적으로 UTF-8을 사용하지 않고 EUC-KR이나 CP949를 쓰는 제품이나 서비스의 업체의 대표/관계자에게 1억 미만의 벌금 혹은 3년 이하의 금고형의 실형을 내려줬으면 할 정도로 너무나 많은 사람들을 불행하게 하고 막대한 비용을 지출한 악의 근원이라고 생각한다.

하지만 광명이 왔다.
기계적으로 납득이 가능한 검색 및 정렬이 용이한 Unicode 의 시대가 열렸단 말이다.
지금 당신이 복사해서 붙이고 있는 팁들 보다 훨씬 쉽고 명쾌하니 다음 그림을 한번 보자.
(출처:http://www.w3c.or.kr/i18n/hangul-i18n/ko-code.html) 어떤가?
무쟈게 쉽지 않은가?

현대 한글은 초성 19자, 중성 21자, 종성 27자로. 총 19 x 21 x 28 (종성없음 포함…

즐거운 Online Prototyping Tool 들

jsbin, codepen, jsfiddle 이런 것들은 일단 생략. 너무 유명한 것들이라.

https://launchpad.graphql.com - node.js 기반 graphQL 연습장. 이것만으로도 충분히 훌륭한 백엔드
https://codesandbox.io/ npm 사용이 가능한 클라이언트 사이드 연습장. webpackbin이 너무 문제가 많아서 찾아본 것.

https://scrimba.com 이건 codesandbox+ asciinema(https://asciinema.org/) 같은 느낌인데 키 녹화와 음성 녹화 기능이 추가되었다. 다 좋은데 화살표 키로 빨리감기 뒤로감기 기능이 안되고 익스포트(youtube등)으로 지원이 없는게 아쉽다.

이 둘이 만나면? https://codesandbox.io/s/jvlrl98xw3?from-embed
뭐야 이거 무서워 하지마 ㄷㄷ;  graphql+react-native-web(부왘ㅋㅋ)

https://repl.it/languages 전통을 자랑하는 REPL 도구. 지원 언어 종류가 -_-;;;;;

https://tio.run/# repl.it? 장난함? 얘는 지원 언어가 무려 386종류. J랑 아희도 있다.

https://play.golang.org/ 즐거운 go playground. 소스 포멧팅 넘 좋아.

http://decaffeinate-project.org/repl/ 최고의 coffeescript REPL. 원래 용도는 coffee를 ecma6코드로 바꾸는 것이지만...

https://scaphold.io
https://www.graph.cool/ graphql backend service. scaphold.io는 설치도 필요없는 클라우드. graphcool은 호스팅+클라우드 다있음. 둘 다 막상막하. 푸쉬서버도 되고 뭐 미친득.

https://glitch.com/ gomix에서 결국 glitch로 안착.  node.js

https://www.shadertoy.com 잘하고 싶다! 쉐이다! 오디오도 된다!

http:/…

graphql 연습 /w launchpad

https://launchpad.graphql.com/mw9wkzv99
단순 전체쿼리+조건쿼리+추가

http://graphql.org/graphql-js/passing-arguments/
참고. random ID는 crypto 1.0.1 사용
  type Query {
    Members: [member]
    getMember(id: ID!): member
  }
  type member {
    id: ID!
    text: String
  }
  input memberInput {
    text: String
  }
  type Mutation {
    addMember(member: memberInput): member
  } SQL 정의. facebook 쪽은 스트링에 지지는 거 진짜 좋아하네. *.gql 파일이 있다고 하니 이해해주자.
resolver는 var buffer = [];
const resolvers = {
  Query: {
    Members: (root, args, context) => {
      return buffer;
    },
    getMember: (id)=> {
      return buffer.find(o=>o.id)
    }
  },
  Mutation: {
    addMember(_, {member}) {
      const mm = { ...member, id:randomBytes(10).toString('hex') };
      buffer.push(mm);
      return mm;
    }
  }
}; 평범 평범.
https://dev-blog.apollodata.com/tutorial-graphql-subscriptions-server-side-e51c32dc2951 다음으로 pub/sub 연습.
https://launchpad.graphql.com/xvn94n3ql   type Subscription {
    memberAdded: member
  } member가 added되는 순간을 감시. imp…