'리눅스'에 해당되는 글 17건

  1. 2016.02.20 ubuntu server 설치기..
  2. 2012.11.10 aspire one 522 에 우분투 깔았을 때 무선랜 문제..
  3. 2012.11.09 우분투에 xbmc 깔 때.. 한글 문제
  4. 2010.08.16 png 파일을 canvas 를 이용하여 그려보자.
  5. 2010.08.16 다운 받은 소스 어떻게 열 수 있을까?
  6. 2010.08.10 murrine_style_draw_box assertion failed
  7. 2010.08.05 리눅스에서 블루투스를 이용한 시리얼 통신(rfcomm)
  8. 2010.07.27 xgrafix 사용하기.
  9. 2010.07.02 우분투에서 피카사 쓰기..(picasa)
  10. 2010.06.28 안드로이드 소스 빌드...(ver 0.1)

ubuntu server 설치기..

1) iso image 파일을 이용하여 우분투 설치

2)


 $ sudo su -
 $ apt-get update && apt-get install debootstrap
 $ cd /opt
 $ mkdir -p /opt/vaults

$ mkdir -p /opt/debian7
$ debootstrap --arch=amd64 wheezy /opt/debian7 http://ftp.kr.debian.org/debian
$ cp /etc/hosts /opt/debian7/etc/
$ cp /etc/resolv.conf /opt/debian7/etc/
$ mkdir -p /opt/debian7/opt/vaults

 $ cd /opt/
 $ nano chwheezy.sh
 $ chmod a+x chwheezy.sh


#!/bin/bash

mount -t proc proc /opt/debian7/proc
mount -t sysfs sysfs /opt/debian7/sys
mount --bind /dev /opt/debian7/dev
mount --bind /dev/pts /opt/debian7/dev/pts
mount --bind /opt/vaults /opt/debian7/opt/vaults
LANG=C.UTF-8 chroot /opt/debian7 /bin/bash
umount /opt/debian7/opt/vaults
umount /opt/debian7/dev/pts
umount /opt/debian7/dev
umount /opt/debian7/sys
umount /opt/debian7/proc

 $ cd /opt/
 $ ./chwheezy.sh


 [ch]$ nano /root/.bashrc

PS1='\u@[wheezy]:\w\$ '
cd /opt/

 [ch]$ nano /etc/apt/sources.list

deb http://ftp.kr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.kr.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

deb http://ftp.kr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.kr.debian.org/debian/ wheezy-updates main contrib non-free

 [ch]$ apt-get update










aspire one 522 에 우분투 깔았을 때 무선랜 문제..

집에서 노는 넷북(aspire one 522) 에 우분투를 깔았는데


무선랜만 켜면 프리징하더군.


구글신에 문의하니


브로드콤 sta 드라이버 문제란 얘기도 있고..


그러나 결과적이 해결법은 다음 페이지에서 검색됐다.


http://zettaisya.egloos.com/2936909



우분투에 xbmc 깔 때.. 한글 문제

우분투에서 xbmc 를 깔 때 한글이 깨지는 문제...


일단 구글신에게 문의하면 당당하게도.... 잘못된 정보와 이를 여기 저기 정신없이 퍼다 붙인 글들이 검색되며


결국 다음과 같이 귀결되며, 실제 그러한 글들중 잘못된 부분은


2.sudo mv -f Font.xml /usr/share/xbmc/skin/Confluence/720p/Font.xml


인데, 막상 저런 명령을 수행 시에 xbmc 밑에는 skin 이란 폴더가 없어 에러가 뜬다.


실제로는


sudo mv -f ~/Font.xml /usr/share/xbmc/addons/skin.confluence/720p/Font.xml


이 되어야 하며.. 오타의 가능성이 있으므로 일단 저 경로를 찾아가 보는게 중요하다.



png 파일을 canvas 를 이용하여 그려보자.

먼저 png 파일을 리소싱한다.

이클립스 상에서 res->drawable 폴더를 만들고
new file 을 통해 리소싱.
폴더 밑에 해당 파일이 인클루딩했는지 확인한다.
이 때에, 잘 포함이 됐다면
gen -> ####.###.### -> R.java 파일 밑에
식별자가 자동으로 생성된다 
R.java 는 이클립스에서 자동으로 만들어주는 파일임을 생각하자.

어쨌든

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
        public static final int obj1=0x7f020001;
        public static final int obj2=0x7f020002;
        public static final int tile1=0x7f020003;
        public static final int tile2=0x7f020004;
    }

과 같이 되고... (obj1.png , obj2.png tile1.png tile2.png 네 개의 파일을 리소싱한 상태이다)

이를 Canvas 상에서 불러 쓰기 위해서는

private Bitmap btile1,btile2,bobj1,bobj2;
...
@Override
public void onDraw(Canvas canvas)
{
btile1 = BitmapFactory.decodeResource(r, R.drawable.tile1);
btile2 = BitmapFactory.decodeResource(r, R.drawable.tile2);
bobj1 = BitmapFactory.decodeResource(r, R.drawable.obj1);
bobj2 = BitmapFactory.decodeResource(r, R.drawable.obj2);

canvas.drawBitmap(bobj2,xpos,ypos, null);

}


다운 받은 소스 어떻게 열 수 있을까?

이클립스 상에서 만들어진 안드로이드 프로젝트는 윈도우와 달리 따로 prj 파일 등이 없다.

그렇다면 어떻게 프로젝트를 열 수 있을까?

File -> Import -> General -> Existing Projects into Workspace

를 선택하고 Next 단추를 누르면

Select root directory 를 선택할 수 있다.

이 때에 Browse 를 눌러 소스를 다운 받은 디렉토리를 지정해준다.

murrine_style_draw_box assertion failed

murrine_style_draw_box assertion failed 에러

이클립스를 실행할때 나오는 에러였다.

구글링해보니

/usr/share/themes/Ambiance/gtk-2.0/gtkrc

파일 중

GtkRange::trough-under-steppers = 0 

항목을 찾아

GtkRange::trough-under-steppers = 1

로 수정

구체적으로..

$ cd //usr/share/themes/Ambiance/gtk-2.0

$ sudo vi gtkrc

:/GtkRange: 라고 타이핑 후 엔터

해당 항목까지 자판까지 j,k,l,; 을 써서 이동 후 0 위에 커서가 있을 때 r 키를 치고 1을 쳐준 후에
:wq 라고 타이핑 후 엔터


리눅스에서 블루투스를 이용한 시리얼 통신(rfcomm)


rfcomm bind 0 xx:xx:xx:xx:xx:xx #

xx:.. 는 해당 블루투스 기기의 주소
#은 채널을 의미한다

hcitool scan

주변 블루투스 기기들이 검색될 것이다.
자 리스트에 보이는가.

# sdptool records 주소

이제 /dev/rfcomm0 가 생겼다.

이를 이용해서 이제 시리얼 통신을 하면 된다.

minicom -s
실행시키고
포트 셋업 -> 시리얼 디바이스에 /dev/rfcomm0 을 쳐준다.


xgrafix 사용하기.

리드미 파일을 잘 읽어보면 된다.


############################
# Dependencies:
############################
building and running xgrafix/xoopic depend on the following headers/libraries/programs:
    X11, Xpm, Tcl/Tk, gcc, imagemagick, bison
    
optional xoopic dependencies:
    Fortran Compiler for fortran libraries
    MPI for parallel runs
    HDF5 for parallel or high performance dump files
    libpng for png
    fftw
    fftw3


dependencies can be installed on Ubuntu (or likely any Debian based distro) with the command:
sudo aptitude install gcc g++ build-essential automake \
    tk-dev imagemagick bison libx11-dev libxpm-dev libpng-dev \
    fftw-dev  libfftw3-dev h5utils hdf5-tools libhdf5-serial-*\

the first two lines are necessary, the last installs optional fftw/hdf5 dependencies

On Fedora, these dependencies can be installed with:
sudo yum install gcc gcc-gfortran gcc-c++ automake libX11-devel libXpm-devel \
        ImageMagick bison tk-devel libpng-devel \
        hdf5 hdf5-devel

On SUSE, install the following packages with YAST:
        gcc gcc-c++ gcc-fortran automake xorg-x11-devel make
        tk-devel bison libpng-devel imagemagick hdf5 hdf5-devel


##################
# Configure / build/ install
##################
For a new install:

edit the run_conf.sh file to match your system.  For a basic install, the only
thing you are likely to edit is `prefix` - the install location.

then you can do:
sh run_conf.sh # configure the build

make # build the program
# or, if you have a multiprocessor machine, this can go faster with:
make -j 4 #(that's 4 threads, you can do as many or as few as you want)

# If you are building xgrafix, do:
make install # sudo make install if you need root privileges to write to $prefix/{bin|lib|include}

test the xgrafix build with: 
./ctest/xtest # from the xgrafix root dir.

Once you have built and installed xgrafix, you can build xoopic. run_conf.sh is the same for
both xoopic and xgrafix, so if you configured run_conf.sh in xgrafix, use the same one in xoopic.

The process to build xoopic is the same as xgrafix, except skip the 'make install' step, since you only
need the binary file in 'xg/xoopic'. You can test xoopic with:
./xoopic -i input/ebeam1a.inp # from the xoopic root dir

once xoopic is done, you can install it with:
cp xoopic $prefix/bin/

where prefix is defined as in:
prefix=/usr/local # to install for all users
or
prefix=$HOME # to install just for you (assuming ~/bin is already in your path)

우분투에서 피카사 쓰기..(picasa)

먼저 apt-get 을 이용해서 패키지를 설치하고 싶은 경우..

http://www.google.com/linuxrepositories/ubuntu704.html

를 따라한다.

설치하고 난 후에 다음과 같은 에러가 뜰 수 있다.

터미널에서 실행을 하려고 하면,

/ usr / bin / picasa: line 139: 4213 Segmentation fault "$ PIC_BINDIR" / wrapper check_dir.exe.so
/ usr / bin / picasa: line 175: 4316 Segmentation fault "$ PIC_BINDIR / wrapper" regedit / E $ registry_export HKEY_USERS \ S-1-5-4 \ \ Software \ \ Google \ \ Picasa \ \ Picasa2 \ \ Preferences \ \

같은 메세지가 나온다
이  때엔 다음과 같이 해준다. (띄어 쓰기에 유의하라)

rm-rf ~ /. picasa /
sudo sysctl -w vm.mmap_min_addr=0
 
실행이 되는데, 한글이 깨지는 문제가 발생한다면

프로그램->기타->피카사 폰트 세팅

에서 한글 폰트를 추가해준다.


안드로이드 소스 빌드...(ver 0.1)

http://android.git.kernel.org/

참조..

우분투 상에선 다음을 참조하자.

Ubuntu Linux (32-bit x86)

To set up your Linux development environment, make sure you have the following:
  • Required Packages:
    • Git 1.5.4 or newer and the GNU Privacy Guard.
    • JDK 5.0, update 12 or higher.Java 6 is not supported, because of incompatibilities with @Override.
    • flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl.
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 
  • You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc.
$ sudo apt-get install valgrind 
  • Intrepid ( 8.10) users may need a newer version of libreadline:
$ sudo apt-get install lib32readline5-dev           -->>> 이건 없는 파일인듯. 생략하자.

이걸 다 깔아도 가끔식 안될 때가 있는데 git 코어가 안 깔려있을 경우이다.
다음과 같은 에러 메시지가 나온다.

apt-get install git-core

를 해준다.

Installing Repo 

Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see Using Repo and Git .

To install, initialize, and configure Repo, follow these steps:

  1. Make sure you have a~/bindirectory in your home directory, and check to be sure that this bin directory is in your path: 
    $ cd ~
    $ mkdir bin 
    $ echo $PATH 
  2. Download thereposcript and make sure it is executable: 
    $ curl http://android.git.kernel.org/repo >~/bin/repo
    $ chmod a+x ~/bin/repo


Initializing a Repo client 

  1. Create an empty directory to hold your working files: 
    $ mkdir mydroid 
    $ cd mydroid 
  2. Run "repo init" to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest: 
    $ repo init -u git://android.git.kernel.org/platform/manifest.git
    • If you would like to check out a branch other than "master", specify it with -b, like: 
      $ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake 
  3. When prompted, configure Repo with your real name and email address. If you plan to submit code, use an email address that is associated with a Google account . 
A successful initialization will end with a message such as 
repo initialized in /mydroid
 


를 참조한다.

그런데 간단하게는 2,3번 절차에서

mkdir mydroid
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync

로 끝낼 수도 있다.

다만 소스 크기가 매우 크므로 시간이 오래 걸린다.

도중에 멈춘 경우엔 다시
repo sync
를 입력하여 소스를 다운 받자.


Android Build System

안드로이드는 GNU 의 최신 버전의 make 를 사용한다.

# make -v 

버전이 3.80 보다 작으면 업그레이드 해야한다.

Understanding the makefile

Makefile 엔 다음과 같은 정보를 담아야 한다.

Name: Give your build a name (LOCAL_MODULE := <build_name>).
Local Variables: Clear local variables with CLEAR_VARS (include (CLEARVARS)).
Files: Determine which files your application depends upon (LOCAL_SRC_FILES := main.c).
Tags: Define tags, as necessary (LOCAL_MODULE_TAGS := eng development).
Libraries: Define whether your application links with other libraries (LOCAL_SHARED_LIBRARIES := cutils).
Template file: Include a template file to define underlining make tools for a particular target (include (BUILDEXECUTABLE)).

정형적인 메이크 파일은 다음과 같다.
LOCAL_PATH := (my-dir)
include (CLEARVARS)
LOCAL_MODULE := <buil_name>
LOCAL_SRC_FILES := main.c
LOCAL_MODULE_TAGS := eng development
LOCAL_SHARED_LIBRARIES := cutils
include (BUILDEXECUTABLE)
(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,
  (HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,
  COPY_HEADERS, KEY_CHAR_MAP

Layers

빌드는 아래 테이블에 기술된 추상화된 계층을 포함하는 구조로 이루어진다.

@@Layer (Example) ------- Description

@@Product (myProduct, myProduct_eu, myProduct_eu_fr, j2, sdk )
-------- The product layer defines a complete specification of a shipping product, defining which modules to build and how to configure them. You might offer a device in several different versions based on locale, for example, or on features such as a camera.

@@Device (myDevice, myDevice_eu, myDevice_eu_lite) --------- The device layer represents the physical layer of plastic on the device. For example, North American devices probably include QWERTY keyboards whereas devices sold in France probably include AZERTY keyboards. Peripherals typically connect to the device layer.

@@Board (sardine, trout, goldfish)
----------- The board layer represents the bare schematics of a product. You may still connect peripherals to the board layer.

@@Arch (arm (arm5te) (arm6), x86, 68k ) ----------The arch layer describes the processor running on your board.

Building the Android Platform

이번 섹션은 안드로이드의 기본 빌드 방법에 대해 기술한다. 한번 이러한 빌드를 익힌 후면, 타겟 디바이스로의 수정도 가능하게 될거다.

Device Code

일반적인 빌드를 하기 위해서  build/envsetup.sh 의 소스엔 필요한 변수들을 담고 있다.

% cd TOP

% . build/envsetup.sh

# pick a configuration using choosecombo
% choosecombo

% make -j4 PRODUCT-generic-user

eng 로 바꿔 쓸 수도 있다.

% make -j4 PRODUCT-generic-eng

이렇게 빌드 변수를 바꿔가면서 여러가지 디버깅 옵션을 줄 수 있다.

Cleaning Up

Execute % m clean to clean up the binaries you just created. You can also execute % m clobber to get rid of the binaries of all combos. % m clobber is equivalent to removing the //out/ directory where all generated files are stored.

Speeding Up Rebuilds

각각의 combo 바이너리들은 분리된 sub-directories of //out/ 에 저장되어 있다.  이 바이너리들은 재 컴파일시에 빌드 타임을 단축시켜준다.

그러나, 환경 변수 등을 수정한 경우에는 완전 재빌드가 필요하다. 이러한 경우 USE-CCACHE 환경 변수를 다음과 같이 설정한다

% export USE_CCACHE=1

CCASH 는 //prebuilt/. 에 설치되어 있으므로 따로 설치할 필요가 없다. 

Troubleshooting

The following error is likely caused by running an outdated version of Java.

device Dex: core  UNEXPECTED TOP-LEVEL ERROR:
java.lang.NoSuchMethodError: method java.util.Arrays.hashCode with
signature ([Ljava.lang.Object;)I was not found.
  at com.google.util.FixedSizeList.hashCode(FixedSizeList.java:66)
  at com.google.rop.code.Rop.hashCode(Rop.java:245)
  at java.util.HashMap.hash(libgcj.so.7)
[...]

dx is a Java program that uses facilities first made available in Java version 1.5. Check your version of Java by executing % java -version in the shell you use to build. You should see something like:

java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-164)
Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode, sharing)

Java 1.5 이상 버전에서는  이러한 error가 발생한다. 이 때에는 환경 변수에 PATH가 제대로 등록되어있는지 확인한다.

Building the Android Kernel

이번 섹션은 안드로이드의 기본 커널이 어떻게 빌드되는지 기술한다. 한번 이러한 빌드에 익숙해지면, 타겟 디바이스로의 수정도 가능하게 될것이다.

커널 베이스를 빌드하기 위해서 디바이스 디렉토리(/home/joe/android/device)를 바꿔준다.

% . build/envsetup.sh
% partner_setup generic

이 떄, 커널 디렉토리를 /home/joe/android/kernel 로 바꿔준다

Checking Out a Branch

기본 브랜치는 항상 안드로이드가 된다. 다른 브랜치를 체크하고 싶으면, 다음과 같이 실행하라.

% git checkout --track -b android-mydevice origin/android-mydevice
  //Branch android-mydevice set up to track remote branch
% refs/remotes/origin/android-mydevice.
  //Switched to a new branch "android-mydevice"
To simplify code management, give your local branch the same name as the remote branch it is tracking (as illustrated in the snippet above). Switch between branches by executing % git checkout <branchname>.

Verifying Location

Find out which branches exist (both locally and remotely) and which one is active (marked with an asterisk) by executing the following:

% git branch -a
  android
* android-mydevice
  origin/HEAD
  origin/android
  origin/android-mydevice
  origin/android-mychipset
To only see local branches, omit the -a flag.

Building the Kernel

커널을 빌드하고 싶으면 다음과 같이 실행한다.

% make -j4

Build Variants

When building for a particular product, it's often useful to have minor variations on what is ultimately the final release build. These are the currently-defined build variants:

eng This is the default flavor. A plain make is the same as make eng.
Installs modules tagged with: eng, debug, user, and/or development.
Installs non-APK modules that have no tags specified.
Installs APKs according to the product definition files, in addition to tagged APKs.
ro.secure=0
ro.debuggable=1
ro.kernel.android.checkjni=1
adb is enabled by default.
user make user
This is the flavor intended to be the final release bits.

Installs modules tagged with user.
Installs non-APK modules that have no tags specified.
Installs APKs according to the product definition files; tags are ignored for APK modules.
ro.secure=1
ro.debuggable=0
adb is disabled by default.
userdebug make userdebug
The same as user, except:

Also installs modules tagged with debug.
ro.debuggable=1
adb is enabled by default.
If you build one flavor and then want to build another, you should run make installclean between the two makes to guarantee that you don't pick up files installed by the previous flavor. make clean will also suffice, but it takes a lot longer.

prev 1 2 next