Loading
2015. 7. 28. 20:37 - Clarendon

[AC100 설정 -1부] ac100 안드로이드 & 우분투 듀얼 부팅 하기 (cm11 & lubuntu 14.04 dual-boot on Toshiba AC100)


[AC100 설정 -1부]

ac100 안드로이드 & 우분투 듀얼 부팅 하기 (cm11 & lubuntu 14.04 dual-boot on Toshiba AC100)


-서론

얼마전에 uboot에 안드로이드 cm11과 아치리눅스를 올리는 데 성공하여 상당히 기쁜 와중이었으나 얼마 지나지 않아 또 다른 난관에 봉착하였습니다. 그것은 바로 우분투와는 상이한 업데이트 방식을 가진 아치리눅스가 제게 맞지 않다는 것이었는데요. 어색해서 불편하기도 하거니와 xorg의 최신 버전에 뭔가 오류가 있다는 것 같습니다. xorg117을 깔았는데 x윈도우를 실행시킬 수가 없네요. 그래서 다운그레이드를 하려니 아치리눅스의 repo에는 최신 버전만 올라와 있고..소스를 가져다가 컴파일을 하려고 해도 뭔가가 자꾸 막히고..의존성때문에 복잡해지고.. 에고고 역시 송충이는 솔잎을 먹어야 하는 것인가 하고 다시 우분투로 돌아왔습니다. 아치리눅스는 차차 다시 도전해보도록 하고 일단 안드로이드와 우분투를 설치하는 과정에 대해서 적어보겠습니다.


-본론

먼저 듀얼부팅을 하기 위해서는 uboot가 필요한데요 저는 안드로이드를 설치하면서 동시에 uboot를 설치하였습니다. 안드로이드 설치과정입니다.


준비물

ac100

리눅스가 설치된 호스트컴퓨터

미니usb케이블

SD카드

안드로이드 롬


nvflash파일은 여기 있으니 다운받아서 호스트 컴퓨터의 편한 폴더에 풀어두세요.




##

1.먼저 백업을 하세요. 백업을 안해두면 나중에 순정 상태로 돌아가고자 할 때나, 설치중에 문제가 생기면 복구 방법이 없습니다. 백업 방법은 여기 있습니다.


2.ac100를 APX모드로 부팅합니다. 컨트롤키 + ESC키 + 전원키를 동시에 누르면 기기의 전원LED에 불이 들어옵니다. 그러면 이제 ac100과 호스트를 연결해줍니다. 호스트의 콘솔창을 여시고 다음과 같이 type합니다


   #cd /nvflash_and_sos-uboot가 있는 폴더경로/
   #./nvflash --bl sos-uboot.bin --go


이렇게 하면 호스트 컴퓨터에 있는 sosboot가 ac100로 전송되고 sosboot로 부팅시킵니다.

3개의 선택지가 나오는데 이 중 ‘boot kernel’로 들어가주세요


3.파티션을 새로 해줄겁니다. 한국에서 출시된 ac100은 16gb인데요, 제가 참고했던 위키 작성자는 8gb의 ac100으로 파티션을 하네요. 저도 그냥 따라했습니다. 나머지 8gb의 빈공간은 데이터 저장공간&스왑공간으로 쓰려고 합니다. 이 부분은 추후에 lubuntu에 사전 설치되어 있는 gparted로 파티션하겠습니다.


터미널을 열고 다음과 같이 type해주세요.


#parted /dev/mmcblk1 print


아래와 비슷하게 현재 상태가 주루룩 나올겁니다.


Model: MMC SEM08G (sd/mmc)
Disk /dev/mmcblk1: 7944MB
Sector size (logical/physical): 512B/512B
Partition table: gpt
Disk Flags:
 
Number  Start   End      Size    File system  Name   Flags
 1      3670kB  8913kB   5343kB  ext2         SOS
 2      8913kB  17.3MB   8389kB  ext2         LNX
 3      18.4MB  556MB    537MB   ext4         APP
 4      556MB   975MB    419MB   ext4         CAC
 5      975MB   977MB    2097kB               MSC
 6      978MB   5172MB   4194MB  ext4         UDA
 7      5173MB  7942MB   2769MB               UDB



다르게 나올수도 있으니까 걱정하지 마세요. 위는 8g버전의 상태입니다. 이제 다음과 같이 type 해주세요


parted /dev/mmcblk1 mklabel gpt


이러면 파티션 테이블이 모두 날아갈겁니다 그러면 이제 다시 파티션을 해야겠죠 이렇게 해주세요


parted /dev/mmcblk1 -s mkpart primary 7168s 132168s
parted /dev/mmcblk1 -s mkpart primary 132169s 257169s
parted /dev/mmcblk1 -s mkpart primary 257170s 1257170s
parted /dev/mmcblk1 -s mkpart primary 1257171s 2257171s
parted /dev/mmcblk1 -s mkpart primary 2257172s 2261078s
parted /dev/mmcblk1 -s mkpart primary 2261079s 7698579s
parted /dev/mmcblk1 -s mkpart primary 7698580s 15513695s
parted /dev/mmcblk1 -s name 1 SOS name 2 LNX name 3 APP name 4 CAC name 5 MSC name 6 UDA name 7 UDB
parted /dev/mmcblk1 unit s print


저희는 첫번째 파티션(SOS)에 부트이미지를, 두번째파티션(LNX)에 안드로이드를 설치하고 일곱번째 파티션에는 우분투의 preinstalled된 파일시스템을 넣을 겁니다. 이제 이렇게 type해주세요.


mkfs.ext2 /dev/mmcblk1p1
mkfs.ext2 /dev/mmcblk1p2
mkfs.ext4 /dev/mmcblk1p3
mkfs.ext4 /dev/mmcblk1p4
mkfs.ext4 /dev/mmcblk1p6
mkfs.ext4 /dev/mmcblk1p7




## 안드로이드 설치하기


폴더를 하나 만들어주세요

#mkdir /tmp/sd


여기에 sd카드를 마운트합니다. 이렇게 해주세요

#mount /dev/mmcblk0p1 /tmp/sd


✈여기서 mmcblk의 레이블은 1p1일수도 있습니다. SD 카드를 삽입한 상태에서 부팅했을때와 삽입하지 않은 상태에서 부팅했을때 mmcblk의 번호가 다릅니다. mmc까지만 타이핑하시고 탭을 두어번 눌러보시면 감이 올 겁니다. 현재 사용가능한 mmcblk가 주르륵 뜨는데요 우리가 나눈 일곱개의 파티션이 보이시나요. p7로 끝나는 파티션이 1p7이면 sd카드는 0p1입니다. 0p7이라면 sd 카드는 1p1입니다.


이제 이렇게 해주세요

#mkdir /tmp/sos


여기에 sos파티션을 연결할겁니다. 이렇게 해주세요

#mount /dev/mmcblk1p1 /tmp/sos


이제 리커버리를 설치합니다. sd카드에는 리커버리 이미지가 담겨있어야 합니다

#unzip /tmp/sd/recovery.img -d /tmp/sos/boot/


한번 체크해주고

#ls -la /tmp/sos/boot


이렇게 type해주세요

#sync


이제 모두 언마운트해줍니다.

#cd

해주시고,

#unmount *

전원버튼을 눌러 재부팅해주세요


그럼 이제 uboot메뉴가 보일겁니다.

방향키로 sos부트 메뉴로 이동해 엔터 눌러주세요

리커버리가 부팅될겁니다.

그리고 Install zip 에서 엔터눌러주세요

choose zip from sdcard 엔터

cm롬의 zip파일을 찾아 엔터눌러주세요

yes-Install눌러주세요

GAPPS(구글앱스)도 깔아줘야합니다. 방금까지와 같은 방법으로 반복해주세요.

이제 안드로이드 설치가 끝났습니다. 재부팅하시면 uboot 메뉴가 나오고 첫번째 메뉴(cm11)에서 엔터를 누르시면 안드로이드로 부팅하게 됩니다.


✈추가적인 최적화

1. folio100이라는 아이콘을 클릭하시고 dpi밀도를 변경하실 수 있습니다.


2. 메모리가 약 300메가 밖에 없으므로 스왑파일을 만드는 게 필수적입니다. 구글플레이에서 터미널을 다운받으시고 다음과 같이 해주세요

#su

#dd if=/cache/swapfile bs=1024 (원하는 스왑파일크기)

#mkswap /cache/swapfile

#swapon /cache/swapfile

마지막으로 스왑이 활성화되었는지 확인하기

#free

마지막 줄에 스왑파일의 크기가 나와있으면 활성화된 것입니다.



## 리눅스 설치

이제 리눅스의 설치입니다.

리눅스 커널(컴파일 할 수 있으시다면 크로스 컴파일해서 준비해주세요)과 깔고자하는 종류의 preinstalled리눅스 tarball을 준비해둡니다.


사다리를 오르고 난 뒤에 사다리를 치워버리듯이,

저희는 리커버리가 깔려있는 sos파티션에 커널을 설치하겠습니다.

sd카드엔 부트이미지가 담겨져 있어야합니다.


먼저 sosboot로 부팅해주세요. 위에서 했던 것처럼 APX모드로 부팅, 호스트컴퓨터의 도움을 받아 부트커널로 들어가세요.


#mkdir /sd

#mkdir /sos

#mkdir /ubuntu


#mount /dev/mmcblk1p1 /sd

#mount /dev/mmcblk0p1 /sos

#mount /dev/mmcblk0p7 /ubuntu


이렇게 해주시구요.

#cp /sd/bootimg.tar.gz /sos

#gunzip bootimage.tar.gz

#tar xvf bootimg.tar

하시면

boot.scr와 부트이미지(zImage), dtb파일 이 외의 파일들(CM11 리커버리 관련)을 제거해주세요.

그리고 여기서 boot.scr를 수정해줘야하는데요. 다음과 같이 합니다.


#cp boot.scr boot.cmd

#vi boot.cmd

일단 uboot booting 어쩌구 써있는 제목이 보일 겁니다. i를 눌러서 edit모드로 전환하고 여기 지저분한 글자열을 모두 지우고 ## uboot ##만 남겨줍니다.

두번째 줄을 수정해야 2번째 메뉴를 통해 우분투로 부팅할 수 있게 됩니다. 다음과 같이 수정해주시면 됩니다.


setenv bootmenu_0 "Boot UBUNTU 14.04 =setenv bootargs 'root=/dev/mmcblk1p7 rootfstype=ext4 rootwait'; ext2load mmc 0:2 0x1000000 /boot/zImage; ext2load mmc 0:2 0x2000000 /boot/tegra20-paz00.dtb; bootz 0x1000000 - 0x2000000;"



옵션을 더 넣을 수도 있습니다. 저는 파일시스템이 readonly로 읽혀지길래 rw옵션을 추가해주고 상태를 보기 위해서 earlyprintk옵션을 주었습니다. 루트가 존재하는 파티션 위치를 틀리지 않도록 신경써주세요.


esc누르고 쉬프트+; 누르고

wq라고 쓴뒤 엔터누르면 저장됩니다.

마지막으로 콘솔에서 다음과 같이 type합니다

#mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "ubootscript" -d boot.cmd boot.scr

이러면 uboot스크립트의 편집이 끝났습니다.


이제 7번째 파티션에 우분투를 설치해 줍니다.

호스트컴퓨터를 이용해 tarball파일을 열어서 /이하의 모든 디렉토리와 파일을 ubuntu.tar로 만들어주세요.

sd카드에 복사한 뒤 다음과 같이 type해줍니다.


#mount /dev/mmcblk0p1 /sd

#tar xvf /sd/ubuntu.tar -C /ubuntu


설치완료되기까지 시간이 좀 걸리니 인내심을 가지고 기다려 주세요.


아무 에러메시지 없이 압축해제가 끝나면 루트 계정의 비밀번호를 설정해줍니다

#chroot /ubuntu

#passwd root

그리고 원하는 패스워드 입력.


마지막으로

#cd

#umount *


전원버튼을 눌러서 리부트합니다.


uboot메뉴가 나오면 화살표키를 눌러 두번째 메뉴로 들어가주세요.


루분투의 화면이 나오면 로그인세션에서 루트로 들어가주세요

메뉴 - 설정에서 oem설치하는 메뉴를 알아서 잘 찾아 클릭(프로그램이름까먹음), 루트 비밀번호 기입해주고 확인. 다시 재부팅해주면 언어, 국가, 계정설정이 가능한 화면이 나옵니다.

이제 사용할 수 있는 상태입니다. 좋은대로 프로그램 설치하고 사용하면 됩니다.


추가적으로 세세한 설정은 다음 편에서 다루겠습니다.