2012년 10월 29일 월요일

샌프란 유니온 스퀘어에

한류?





SEAndroid 공부 자료.

From Tresys.com


SELinux assigns subject and objects a


security context:

Access Control Attributes

root:sysadm_r:sysadm_t[:s0:c0.c128]

type identifier

role identifier

user identifier

􀂃 Security context is only access control attribute in SELinux

􀂃 Security Identifier (SID): number represents security context

active within the kernel     Standard Linux vs SELinux

􀂃 Subject (Process) Access Control Attributes

􀂃 Linux: real and effective user and group IDs

􀂃 SELinux: security context (user:role:type)

􀃎 Linux UIDs and SELinux UID are independent

􀂃 Objects Access Control Attributes

􀂃 Linux: (files) access modes (rwx r-x r-x) and user and

group IDs

􀂃 SELinux: security context (user:role:type)       More on Security Contexts

􀂃 Linux and SELinux access controls are orthogonal

􀂃 each mechanism uses its own access control attributes

􀂃 two separate access checks; both must pass

􀂃 A process type is also called a “domain”

􀂃 though object and subject contexts are identical

􀂃 Role and user are little used on objects

􀂃 objects’ role usually “object_r”

􀂃 Type is most used part of a context (by far) in policies

􀂃 emphasis on type enforcement in a policy     What is a Type?

􀂃 A type is an unambiguous identifier

􀂃 created by the policy writer

􀂃 applied to all subjects and objects and for access decisions

􀂃 Types group subjects and objects

􀂃 signifies security equivalence

􀂃 everything with the same type has the same access

􀂃 policies have as few or as many types as needed

􀂃 Type “meaning” created through use

􀂃 e.g. shadow_t only has meaning because of a policy rules

􀂃 similar to a programmer giving meaning to variables     Type Enforcement Access Control

􀂃 Access specified between

􀂃 subject type (e.g., process or domain)

􀂃 and object type (e.g., file, dir, socket, etc.)

􀂃 Four elements in defining allowed access

􀂃 source type(s) aka domain(s)

􀂃 target type(s) objects to which access allowed

􀂃 object class(es) classes to which access applies

􀂃 permission(s) type of access allowed

􀂃 SELinux prevents access unless explicitly allowed     ELinux defines 41 kernel object classes

􀂃 Each with their own fine-grained permissions

􀂃 For example, file object class has 20 permissions:

ioctl read write

create getattr setattr

lock relabelfrom relabelto

append unlink link

rename execute swapon

quotaon mounton execute_no_trans

entrypoint execmod

􀂃 Documentation available at www.tresys.com/selinux

Object Classes and Permissions

key_socket

ipc netlink_nflog_socket rawip_socket unix_stream_socket

filesystem netlink_kobject_uevent_socket process unix_dgram_socket

file netlink_ip6fw_socket passwd udp_socket

fifo_file netlink_firewall_socket packet_socket tcp_socket

fd netlink_dnrt_socket node system

dir netlink_audit_socket netlink_xfrm_socket socket

chr_file netif netlink_tcpdiag_socket sock_file

capability msgq netlink_socket shm

blk_file msg netlink_selinux_socket sem

association lnk_file netlink_route_socket security       allow passwd_t shadow_t : file

{ create ioctl read getattr lock write setattr append link unlink rename };

􀂃 Allows processes with passwd_t domain type read, write, and create access to

files with shadow_t type

􀂃 Purpose: passwd program runs with passwd_t type, allowing it to change shadow

password file (/etc/shadow)

􀂃 Shadow password file attributes:

-r-------- root root system_u:object_r:shadow_t /etc/shadow

좋당

숀 코네리가 틸추르를 한곳



유니클로 사련다

후지다고 생각했는데...

많은 사람들이.선택하네



git 패치만들어서 패치하는 방법.

말이 참 웃기다.

git man page 처럼


GIT(1)                            Git Manual                           GIT(1)

NAME
       git - the stupid content tracker

SYNOPSIS
       git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
           [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
           [--help] COMMAND [ARGS]


git branch -a --color
리모트랑 우리 브랜치가 컬러풀하게 나온다.

 git checkout 브랜치 이름
위에서 나온거 적어 준다. Diff랑 비교한다면 비교할 대상인 두번째 파라미터 되겠다.(원본아님)

 git format-patch 원본브랜치
원본 브랜치를 적어 준다.

나온 .patch 파일을
Patch 명령어로 패치를 해 주면 된다.


오라클

멋지당











2012년 10월 28일 일요일

샌프란케이블카

흐흣






미국.데시틴.가격

세개가.한개.정도인가


면세점에서 랩 시리즈 풀셋

스킨.에센스.로션 아이크림.영양크림


수원 족발 맛있는 곳.

족발 배달 031 237 7474

중앙 왕 족발 보쌈.

까먹을 까봐 이제 적어 놓기로 했다.

매일 생족을 삶는다더니~

Gmail SMTP서버를 이용한 메일 보내기


#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>

#pragma comment(lib, "ws2_32.lib")

#define cmailserver "gmail-smtp-in.l.google.com"
#define cemailto "gonanhack@gmail.com"
#define cemailfrom "gonanhack@gmail.com"
#define SMTPLog "log.txt"
#define cemailsubject "test"
#define waittime 30
#define emailmessage "asdfasdfasdfasdfasdfasd"

int MailIt(char *mailserver, char *emailto, char *emailfrom,
           char *emailsubject, char *emailmessage, int maxlen);

int main(int argc, char* argv[])
{
 MailIt(cmailserver, cemailto, cemailfrom, cemailsubject, "asdfsadf", 255);
 return 0;
}


int MailIt(char *mailserver, char *emailto, char *emailfrom,
           char *emailsubject, char *emailmessage, int maxlen)
{

 SOCKET sockfd;
    WSADATA wsaData;
    FILE *smtpfile;

    #define bufsize 300
    int bytes_sent;   /* Sock FD */
    int err;
    struct hostent *host;   /* info from gethostbyname */
    struct sockaddr_in dest_addr;   /* Host Address */
    char line[256+100];
    char *Rec_Buf = (char*) malloc(bufsize+1);
    smtpfile=fopen(SMTPLog,"a+");
    if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR)
 {
  fputs("WSAStartup failed",smtpfile);
  WSACleanup();
  return -1;
    }
    if ( (host=gethostbyname(mailserver)) == NULL)
 {
  perror("gethostbyname");
  exit(1);
    }
    memset(&dest_addr,0,sizeof(dest_addr));
    memcpy(&(dest_addr.sin_addr),host->h_addr,host->h_length);


 dest_addr.sin_family= host->h_addrtype;  
 dest_addr.sin_port= htons(25);



 if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0)
 {
  perror("socket");
  exit(1);
 }

 fputs("Connecting....\n",smtpfile);

 if (connect(sockfd, (struct sockaddr *)&dest_addr,sizeof(dest_addr)) == -1)
 {
  perror("connect");
        exit(1);
 }
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 strcpy(line,"helo www.gmail.com\n");
 fputs(line,smtpfile);
 bytes_sent=send(sockfd,line,strlen(line),0);
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 strcpy(line,"MAIL FROM:<");
 strncat(line,emailfrom,strlen(emailfrom));
 strncat(line,">\n",3);
 fputs(line,smtpfile);
 bytes_sent=send(sockfd,line,strlen(line),0);
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 strcpy(line,"RCPT TO:<");
 strncat(line,emailto,strlen(emailto));
 strncat(line,">\n",3);
 fputs(line,smtpfile);
 bytes_sent=send(sockfd,line,strlen(line),0);
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 strcpy(line,"DATA\n");
 fputs(line,smtpfile);
 bytes_sent=send(sockfd,line,strlen(line),0);
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 Sleep(waittime);
 strcpy(line,"To:");
 strcat(line,emailto);
 strcat(line,"\n");
 strcat(line,"From:");
 strcat(line,emailfrom);
 strcat(line,"\n");
 strcat(line,"Subject:");
 strcat(line,emailsubject);
 strcat(line,"\n");
 strcat(line,emailmessage);
 strcat(line,"\r\n.\r\n");
 fputs(line,smtpfile);
 bytes_sent=send(sockfd,line,strlen(line),0);
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 strcpy(line,"quit\n");
 fputs(line,smtpfile);
 bytes_sent=send(sockfd,line,strlen(line),0);
 Sleep(waittime);
 err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
 fputs(Rec_Buf,smtpfile);
 fclose(smtpfile);
 #ifdef WIN32
 closesocket(sockfd);
 WSACleanup();
 #else
 close(sockfd);
 #endif
}

우분투 12.04에 안드로이드 빌드

밑에서 소스 받는거 했으니..

받아보자.

http://source.android.com/source/initializing.html

에 있다.

근데 아래처럼 자바 7깔면 버전 체크 에러 난다.

뭐야 .. ㅡㅡ; 

build/core/main.mk
보면 수정 포인트가 두 군데 있는데 아래처럼

java=version := $(shell java -version 2>&1 | head -n 1 | grep '^java .*[ "]`\.7[\."SS\')

 6을 7로 바꾸어 주면 된다.

빌드 명령은 인터넷에 있는데

아래께 안되면 알아서 찾아서...

make -j4 -mp

난 잘된다.

빌드 로그 들이 스크롤이 잘 되고 잘 끝난다.

그런데 뭐가 만들어진 거지?

touch 로 파일 하나 생성해 뒀는데

find ./ -newer 파일명

하면 생성한 파일 이후에 생성된 파일이 나온다.

out밑에 이것저것 만들어 졌는데... 댄장...

어케 하는 거야... 구글링 좀 해서 정리해봐야 겠다.


256GB USB 팝니다.

요거
팔아요. 일주일도 안썼지만 가격은 15만원.
댓글 달아주삼.


요거 

포스팅 하려고 캡쳐하고

어제 아침인가 윈8로 업글 했다.


유료 유틸 좀 깔고 윈7 Look & feel로 변경.

사실 할말이 더 많지만 페북 내용으로 간단한 정보 제공

  • 정제욱 어떤게 좋은지 써보고 말해주라~
  • 이병화 오오미, 좋아요?
  • 하준호 정제욱 메트로 스타일 앱 깔 수 있다는 것 말고는 없단다~ 이병화 테스트 버전은 계속 써서 윈8 쓴지 꽤 되었는데 별 특별할 건 없네 :) 윈도우 7로 세팅 완료 함. 결국 윈7 쓰는 사람들은 안써도 된다는 뜻. 메트로 스타일 앱이 아무리 좋아도 스타2나 블래이드 앤 소울... 3D MAX, 포토샵 등등... 보다 좋을까 :). 다만 지금은 가격이 싸니까 업글은 강추함~ 오피스 2013도 좋고! 좋은 기능들이 운영체제로 많이 녹아 들었다네. 대표적으로 데몬! ISO 마운트가 안에 들어옴.
  • 이병화 아 이제 윈도폰으로 갈아탈까요 ㅎㅎ
  • 정현진 오빠야 빠르넹 ㅎ 난 인제 겨우 7에 적응 ㅋㅋㅋ
  • 하준호 이병화 오피스 안쓰면 폰은 아직 안드로이드폰이 낫지 않겠나. 오피스 2013 깔아보니 데탑이랑 클라우드 통해서 폰이랑도 연동된다고 되어 있네.(사실 office365서비스에서 이미 지원되는터라) 정현진 8도 7이랑 같아. 앱스토어 있어서 프로그램 깔기에는 더 좋겠답.
  • 하준호 ㅡㅡ; 인터넷 뱅킹이 되지 않음... 아무것도. 이전 버전 Explorer9은 윈8이랑 호환되지 않는다고 해서 안 깔림... 와이프님께서 걍 윈7로 돌려놓으라고 지시하심...

참... 윈8은 USB에 넣고 했는데 4기가 넣어도 태도 안난다.

리눅스를 못 떠나는 이유




요렇게...

아 어제 리눅스 빠돌이 집에 초대해서 한잔 했는데(안드로이드 마스터 브랜치에 머지하는 친구)... 나도 한때는 그랬지만(지난 10년간) 리눅스 패키지 관리는 예나 지금이나 쓰레기다. 시냅틱이던... apt-get이던 ㅡㅡ; 

yum 이던

./configure
make
make install

로 하다가 안되면 의존성 체크하고 소스도 직접 고쳐도 보고... 재미는 있지만 청춘이 멍든다. 우분투가 리눅스계를 거의 통일하다 싶이 하긴 했지만 정말 돈받는 프로그램들은 그럴만한 이유가 있다.

 그러나 한편으로는 우분투가 맞다는 생각도 든다. 물타기가 아니고. 리눅스 10년 했다고 생각해보면 버릴 수 있겠는가?

 다만 내가 윈도우 진영으로 돌아설 수 밖에 없었던 이유는 한국 관리자들이 오픈 소스 쪽은 조금 안다 싶으면 정말 자기도 할 수 있을거라 생각하고 엔지니어들을 박대 한다는 것이다. 공짜니까... 편하게 찾아보면 쉽게 풀이해서 정리한거 금방 나오니까.

 그래서 공부하기 어렵고 비싸고... 뭐 그런 걸 선택하게 된 것이지.


말은 이런데...

결국 job roll이 바뀌고 일하려 하니 하루의 대부분은 리눅스랑 씨름하고 있다.

아아...


자바 7 깔기


http://netwrkspider.blogspot.kr/2012/05/how-to-install-sun-java6-jdk-on-ubuntu.html


Code:
sudo apt-get purge openjdk*
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer


우분투 12.04에 안드로이드 풀소스 가져오기

www.ubuntu.com
에 간다.

64 비트용 12.04 우분투를 받는다.

VMWARE에 깐다.(내껀 7.1x 버전)

다 깔고 나서...



얘를 참조해서 진행한다.

git랑 curl이 없으니

apt-get install로 깔아 준다.

repo init 실행하면 브랜치 정보를 받아오면서 initializing 된다.

이름하고 이메일 물어 본다.

구글 페이지에 4.0.1뭐시기가 예제로 되어 있고 내가 받고 싶은건 4.1대지만.

일단 하나부터 성공하자는 마음에 구글에서 시킨대로 설정하고

repo sync를 하면 소스를 받아온다.

간단하게...

curl이란 유틸과
그걸 이용해서 구글에서 만든 repo 스크립트만 있으면

git를 이용해서 소스를 땡겨온다.

끗.

2012년 10월 27일 토요일

윈도우 버전 정보

http://ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84_8_%EC%97%90%EB%94%94%EC%85%98

2012년 10월 26일 금요일

길을 잃고...

다른 서버에서 해도 똑같네...
per day per IP가 

IP 뿐만 아니라 하루 한도 제한이 있는 것 같다.

미러 서버를 찾고는 있는데 없넹...

카이스트는 뭐하는겨 ㅡㅡ;

,
,
,
심심한 차에 한국 마이크로 소프트 둘러 보다가...

소매용 정품에도 이번 프로모션이 적용되나요?

2012년 10월 26일부터 2013년 1월 31일까지 프로모션 ₩75,000달러(예상 소매 가격)로 지역 판매점에서 정품(DVD)을 구입하여 Windows 8 Pro(윈도우 8 프로)로 업그레이드할 수 있습니다. 


비싸네~

방황 끝... 정말이지 멋진 자료 찾다.

성지

http://dalinaum-kr.tumblr.com/post/5904189950/android-make-lunch-or-lunch-make-or-whaever

http://www.iamroot.org/xe/27212


안드로이드 빌드하기

안드로이드 소스를 가져와서 빌드하는 일은 아는 사람에겐 매우 쉽고 모르는 사람에겐 어려운 일입니다. 구글이 repo라는 특이한 도구를 사용하고 있기 때문에 그렇습니다. repo는 구글이 만들었는데, 리누스 토발즈가 만든 DVCS Git을 응용하는 도구입니다. repo가 하는 일을 정리하면 다음과 같습니다.



복수개의 저장소(repository)에서 원하는 버전을 가져와서 지정된 디렉토리에 저장합니다.

예를 들어 platform/bionic.git은 ./bionic/에 저장됩니다.

어떤 저장소가 어떤 디렉토리에 저장될지는 platform/manifest.git에 있는 default.xml 파일 안에 약속이 되어 있습니다.

이 절차를 통해 우리는 빌드에 필요한 모든 파일트리를 얻게 됩니다.

우리가 브랜치를 만들어서 작업할 때 저장소 각각에 브랜치를 만들어서 관리를 해줍니다.

gingerbread 브랜치를 가져와서 saenggangbbang이라는 우리만의 버전을 만들 수 있습니다.

만약 160개가 넘는 저장소에 각각 브랜치를 만들어야 한다고 어떻게 하시겠습니까?

수정한 코드 묶음(패치)을 Android Review 사이트에 올려줍니다.

여러 저장소에서 딱 우리가 수정한 내용만을 묶어 구글에 전송하는 것입니다.

구글의 코드 리뷰와 질의를 통과하면 구글 안드로이드에 우리 코드를 추가할 수 있게 됩니다.

repo가 여러가지 용도로 사용될 수 있지만 이번에는 1번: 복수개의 저장소에서 원하는 버전을

가져오기에만 관심을 가지겠습니다. 우리는 안드로이드를 빌드만 해볼겁니다.



무엇보다 먼저 우리 지금 우분투 리눅스를 쓰고 있는 것이 맞죠? 그렇지 않다면 조금

어렵거나 짜증납니다. 적어도 가상머신에라도 우분투를 설치하시는 것을 추천합니다. 그 다음으로 repo를 구해야겠습니다.



cd /usr/local/bin

wget https://android.git.kernel.org/repo

chmod 755 repo

만약 실패했고 그걸 해결하지 못하셨다면, 안타깝지만 당신에게 지금 이 문서가 적합하지 않은 것 같습니다.

1 다른 공부를 하시는 것을 추천드립니다.



repo에서 사용할 명령어를 알려드리겠습니다.



repo init - repo를 초기화시키는 명령입니다.

repo sync - 최신 코드를 받아오는 명령입니다.

우리는 우선 repo init를 수행하여 초기화한 뒤 앞으로는 repo sync만을 사용할 것입니다. 2



초기화 하는 명령어를 2가지 알려드리겠습니다.



repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3.4_r1

repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

1번은 안드로이드 2.3.4_r1 버전을 받겠다는 것이고 2번은 gingerbread의 최신 버전을 받겠다는

것입니다. 2011년 5월 28일 현재 최신 버전은 2.3.4_r1입니다. gingerbread 버전을 받으시면 현재

최신 코드이기 때문에 문제가 있을 수도 있습니다.

먼저 android-2.3.4_r1을 이용해서 2.3.4_r1 버전을 받는 것을 추천합니다.



옵션도 살펴봅시다. -u 옵션은 어떤 저장소에서 전체 소스트리를 가지고 있는 정보가

어느 저장소에 있는지를 알려주는 것입니다. manifest.git 저장소를 통해 전체 소스가 어디에 있고 우리의

어느 디렉토리에 설치해야하는지가 결정됩니다. -b 옵션은 어떤 버전을 선택할 것인지 입니다.

3 선택이 끝나면 이름과 이메일을 알려달라고 합니다. 이 절차에 대한 설명은 생략합니다.



다음으로 실행할 명령어는 이제 아시겠죠?



repo sync

코드를 받아오는데 2~4시간 걸릴겁니다.

컴퓨터가 고장난게 아니니깐 외출하고 오셔도 됩니다.

아니면 운동을 하셔도 됩니다. 몸짱이 되실 시간입니다.

4 만약 하드의 남은 용량이 10기가가 안된다면 에러날테니깐 그냥 컴퓨터 모니터 앞에 계시고요.



빌드에 앞서 설치할 패키지 들이 있습니다.



add-apt-repository "deb http://archive.canonical.com/ lucid partner"

add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"

apt-get update

apt-get install sun-java6-jdk

만약에 add-apt-repository가 없으면

apt-get install python-software-properties을 하십시요. 우분투 11버전에서는 없는 경우도 있습니다.



64비트 환경에서는 아래와 같이 입력해주세요.



apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev \

libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev \

lib32readline5-dev lib32z-dev libgl1-mesa-dev

32비트 환경이라면 아래처럼요.5



추천하지는 않습니다만…



apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev \

libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev \

libz-dev libgl1-mesa-dev

이제 빌드를 수행할 시간입니다. 환경 설정과 빌드가 필요합니다.



. build/envsetup.sh

lunch 1

make

머신에 따라 20분내지 한시간 반이 걸릴 겁니다. 만약에 램이 1기가 이하라면 실패할겁니다.

혹시 가상 머신을 쓰신다면 메모리 사용량을 올려주시고 아니라면 지금 용산에 가세요.

빌드가 끝났다면 에물레이터를 동작시킬 수 있습니다.



cd ~/android/out/target/product/generic

emulator -system system.img -data userdata.img -ramdisk ramdisk.img

에뮬레이터가 떴습니다. 이제 안드로이드의 빌드의 기본을 하신 겁니다.

그 다음은 해당 하드웨어에 대한 커뮤니티를 찾아 길을 확인하십시요.6





--------------------------------------------------------------------------------



이 문제를 어떻게 회피하더라도 다른 문제가 다가올 겁니다.

그 문제는 어떻게 하실 건가요? 사람에겐 누구나 시기가 있는 겁니다.

지금은 그 때가 아닌 것 같고요. 다음 번에 다시 찾아와주세요. ↩



물론 만약 다른 버전을 사용하거나 다른 디렉토리에 repo를 적용하기 위해 repo init를 사용할 수 도 있습니다. ↩



눈치가 빠르신 분은 -b를 보고 브랜치를 의미하는 것인 것을 아셨을 수도 있습니다.

repo의 도움말을 보아 눈치채신 분도 있겠고요. 그럼 gingerbread가 브랜치인 게 이해되는데

android-2.3.4_r1는 왜 태그가 아니라 브랜치인 것에 의문을 가질 수 있습니다.

repo 명령은 브랜치와 태그를 구별하지 않게 설계되었습니다.

하지만 개별 저장소에서 코드를 가져올 때는 gingerbread일 경우 브랜치에서 android-로 시작하는

애들은 태그에서 가져오니깐 걱정하지 않으셔도 됩니다.

그 이유를 아시고 싶으신 분은 manifest.git을 해당 브랜치로 가져와서 파일 내용을 확인해보시면 됩니다. ↩



전설로 전해져 오는 북미 몸짱 소프트웨어 회사 이야기가 있습니다.

빌드 시간이 너무 길어 고민하던 직원을 위해 회사가 헬스 머신을 비치했다는 겁니다.

그 결과 해당 프로젝트가 끝나고 참가자는 모두 몸짱이 되었다더군요. 구글은 우리를 위해 헬스 머신을 사진

않았지만 시간은 충분히 제공하고 있습니다. ↩



예전에 진저브레드를 받았을 때는 32비트 환경에선 진저브레드가 빌드되지 않았습니다. 2.3.4버전이 나온

지금은 빌드가 되는지 모르겠습니다.

구글이 저렇게 환경 설정을 추천한 만큼 빌드될 가능성은 있겠지만 테스트해보지 못해 장담할 수 없습니다. ↩



실제 하드웨어서 띄우고 싶다면 해당 하드웨어 커뮤니티를 찾아서 정보를 더 획득해야합니다.

커널, 부트로더, 안드로이드 빌드에 관련한 여러 이슈들이 있어 그것이 가능한지 방법이 무엇인

지를 나열하기란 어렵고 어쩌면 불가능한 일입니다. ↩



계속 헤메 해메다. 뭐가 맞는겨?

New Document 두서 없이 적어보는 안드로이드 노트.
SEAndroid를 이해하기 위해서는 SELinux를 알아야 한다. 안드로이드 커널이 리눅스 커널을 모체로 하고 있으니까. 잠시 (사실 거의 같다) 암패치 해 주시는 뭐시기 킹께 감사.
SE리눅스는 NSA에서 개발했고 지금은 kernel.org에 속속들이 들어가고 있다. nsa에 커널 2.6대까지 밖에 없어서 중단되었냐고 물어보니까 걍 각 패키지에 녹아 들어가서 거기서 알아서 하고 있다고 한다. 결국 NSA가 만들긴 했지만 수많은 기여자가 열심히 SE 안드로이드를 개발하고 있는 것이다.

SE 리눅스 설정파일 /etc/sysconfig/selinux 에 있다.

켤려면 enforcing 끌려면 disabled.

이정도로 하고 SE Android...
SE Android 는 NSA의 Open Source Project 로 시작 Android의 부족한 Security 부분을 보완
일반적인 Linux의 DAC 방식 대신 MAC 방식 채용
DAC 란 : Discretionary Access Control. 임의적 접근 통제. 객체 접근 시 소유자, 그룹, 접근허가 집합 등에 의거하여 통제.
MAC 란 : Mandatory Access Control. 강제적 접근 통제. 주어진 객체의 보안레벨에 따라 자원접근을 통제.
Policy control 을 통한 process, daemon, app 등의 제한적 권한 설정 가능
Policy 설정에 따라 root 권한도 특정 device 에 접근하지 못하도록 하는 것이 가능

LSM이 약자인 리눅스 시큐리티 모듈은 그럼 언제 활성화 되는가?
DAC를 통과하면(우리가 생각하는 chmod 777권한
rwxrwxrwx... MAC퍼미션을 체크하는데 이 때 가동이 된다.)

Kernel : SELinux feature 의 enable, android binder patch, xattr support feature enable
Bionic : xattr support
Build : make_ext4fs tool 수정
external : libselinux, libsepol, checkpolicy, sepolicy
framework/base : selinux 를 위한 JNI binding 추가
각 daemon 별, 중요 process 별로 policy file 을 가짐.
Application 의 경우 release, media, shared, platform 의 4개의 key 중 하나를 가지며, SE Android 는 이 key 를 기반으로 policy 를 정함.
키 정보
국내 ubuntu 폰트를 외국 엔지니어가 보더니 보더니 영문판으로 다시 밀어버린 사건이 발생했다.
다시 환경 설정이 번거롭더라도 해당 폰트는 도저히 맘에 안 들었나 보다.
뭐, 내가 알고 있는 폰트 설정도 없으니.

안드로이드 메인 브랜치 소스를 한번 받아 보려고 한다.


안드로이드 빌드 환경 설정
http://source.android.com/source/initializing.html
하기 전에 소스 부터 받아보자.

http://source.android.com/source/downloading.html
에 있다. 위에 링크나 아래 링크나 다 같은 동네에 있다.

cURL을 이용하는 것 같은데 설명은 여기
http://aramjo.blog.me/120169143589


실컷하다가

 * [new tag]         android-2.0_r1_ -> android-2.0_r1_
 * [new tag]         android-2.0.1_r1_ -> android-2.0.1_r1_
 * [new tag]         android-1.6_r2_ -> android-1.6_r2_
 * [new tag]         android-1.6_r1_ -> android-1.6_r1_
 * [new tag]         android-1.6_r1.5_ -> android-1.6_r1.5_
 * [new tag]         android-1.6_r1.4_ -> android-1.6_r1.4_
 * [new tag]         android-1.6_r1.3_ -> android-1.6_r1.3_
 * [new tag]         android-1.6_r1.2_ -> android-1.6_r1.2_
 * [new tag]         android-1.6_r1.1_ -> android-1.6_r1.1_
fatal: remote error: User Is Over Quota

뭐 이딴 에러가 난다.

서버 능력이 딸리나 보다ㅠ 

한번 오류가 나오고 나면 계속 에러 난다.

  File "/home/cer/bin/WORKING_DIRECTORY/.repo/repo/main.py", line 384, in <module>
    _Main(sys.argv[1:])
  File "/home/cer/bin/WORKING_DIRECTORY/.repo/repo/main.py", line 364, in _Main

rm -rf .repo/하고

다시 해 주면 된다.

fatal: remote error: User Is Over Quota

조금 되는 듯 싶더니 이자식은 꾸준히 나온다 ㅠㅠ

모지모지모지?

구글링 해보니 이런 내용이 있다.

https://groups.google.com/forum/#!msg/android-building/_975cuUxVTw/usrfKSHXhe4J

-The quota is large enough to clone 3 regular trees per day per IP
address, or a full mirror plus a regular tree. If should also be
enough to git fetch an entire regular tree per day, and to do at least
a no-op repo sync of a full mirror every hour.

일단 내일 해본다...

그런데 미국 시간 기준이야? 한국 시간 기준이야 ㅡㅡ;

대학원생의 투고 지도 ④ (완결) — 논문의 수준이란 무엇인가: 사다리와 사분위, 첫 논문 전략

완결편이다. "논문 수준"이라는 말을 해부하고, 에듀테크 석사생의 첫 논문 전략으로 마친다. 학위논문과 학술지 논문은 다른 장르다 먼저 가장 흔한 혼동부터. 학위논문(thesis)은 "내가 연구를 수행할 줄 안다...