기본 문자열 출력 하는 방법은 "println" 이라는 함수를 사용하면, 출력할 수 있다.

println("Hello, world!")

문자열 안에 표현식 넣는 방법은 다음과 같다.

큰 따음표 안에 [$]를 표기 후, 뒤에 변수명을 입력하면 된다.

예를 들면 다음과 같다.

var a:Int = 10

println(“ABC $a”)

표현식의 값을 문자열로 표기할 경우에는 [ $ ]다음에 [ { ], [ } ] 로 표현하면 된다.

예를 들면 다음과 같다.

var a:Int = 10

var b:Int = 20

println(“ABC ${a + b}")

위와 같이 사용하여, 문자열을 출력 할 수 있다.

 

참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다.

우연의 기회로 Gerrit 환경을 구축하게 되었습니다.

구축하게 되면서, 정리한 내용이니 참고하시길 바랍니다.

설치 환경

  1. JDK 1.7 이상 버전 설치
  2. Open SSH Server 설치
  3. Apache 설치
  4. Ubuntu 16.04 Version 설치

Gerrit Site

  1. Release Site : https://gerrit-releases.storage.googleapis.com/index.html
  2. English Helper Site : https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/install.html
  3. 참고 Site
    1. http://pseg.or.kr/pseg/infoinstall/1815
    2. https://d2.naver.com/helloworld/6236097
    3. https://www.hiroom2.com/2018/05/24/ubuntu-1804-gerrit-en/
    4. http://lazyrodi.github.io/2016/08/14/2016-08-14-etc-gerrit-installation/

Apache2

$ sudo apt-get install apache2

$ sudo apt-get install libapache2-mod-proxy-html (있으면 설치. 없으면 안해도 됨)

$ sudo apt-get install apache2-utils

$ sudo a2enmod proxy

$ sudo a2enmod proxy_http

$ sudo service apache2 restart

Open SSH Server

$ sudo apt-get install openssh-server

Git

$ sudo apt-get install git

Gerrit

  1. Web site 에서 Gerrit Download (3.1.4)
    1. Release Site : https://gerrit-releases.storage.googleapis.com/index.html
  2. Gerrit 다운로드 한 gerrit-3.1.4.war 파일 설치
    1. $ java -jar gerrit-3.1.4.war init -d ~/opt/gerrit
    2. a의 명령어 입력 후, 다음의 환경 설정 참고하여 입력
  3. Gerrit 검색 엔지 리빌드
    1. $ java -jar gerrit-3.1.4.war reindex -d ~/opt/gerrit
  4. Gerrit 실행
    1. $ cd ~/opt/gerrit/bin
    2. $ ./gerrit.sh start
  5. Apache Proxy 설정
    1. VirtualHost 파일 생성 (Apache VirtualHost File 참고)
      1. $ sudo vim /etc/apache2/sites-available/gerrit.conf
    2. Site Enabled 설정
      1. $ cd /etc/apache2/sites-enabled
      2. $ sudo ln -s ../sites-available/gerrit.conf ./001-gerrit.conf
      3. $ sudo a2ensite 001-gerrit.conf
    3. 기본 설정 파일의 Port 변경
      1. $ sudo vim /etc/apache2/sites-available/000-default.conf
      2. <VirtualHost *:80> 에서 <VirtualHost *:10080>으로 변경.

Apache VirtualHost File

<VirtualHost *:80>
    ServerName localhost
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    <Location /login/>
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthUserFile /home/csjung/opt/gerrit/etc/passwords
    </Location>
    ProxyPass / http://127.0.0.1:8081/
    ProxyPassReverse / http://127.0.0.1:8081/
</VirtualHost>

 

Gerrit 환경설정


Location of Git repositories   [git]: /home/gerrit/repository/

 : 저장소 설정

   아무런 내용을 기입하지 않다면, 기본 저장소로 설정 됨.


Index Type [lucene]

 : 보조 검색 도구

   기본을 사용하면 됨.


*** User Authentication

***

 

Authentication method          [OPENID/?]: http  

Get username from custom HTTP header [y/N]?  

SSO logout URL                 :  http://aa:aa@127.0.0.1:80/login/

 : 사용자 인증 기능

   Gerrit 은 사용자 인증 기능을 제공하지 않는다.

   OpenID와 LDAP(Lightweight Directory Access Protocol), Site Minder 등 외부 인증 시스템 연동을 지원.

   SSO Layout 을 지정 해 주어야 함. 

   -> http://aa:aa@{IP Address}:{Port}/login/

   -> aa:aa 는 문자 그대로 입력해도 됨.

   Custom Header 는 기본을 사용할 시 N을 해주어야 함.


*** Review Labels

***

Install Verified label         [y/N]? y  

 : 검증 레이블

   Gerrit 기본 프로젝트인 All-project의 project.config 파일에 [label "Verified"]와 같이 검증 레이블 섹션을 추가


*** Email Delivery

***

SMTP server hostname           [localhost]:  smtp.gmail.com

SMTP server port               [(default)]:  465

SMTP encryption                [NONE/?]:  SSL

SMTP username                  :  XXX@gmail.com

 : E-Mail 알림 서비스 등록 (원하는 Email 도메인 계정으로 등록하면 됨)


*** Container Process

***

 

Run as                         [gerrit]:  

Java runtime                   

[/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre]:  

Copy gerrit-2.9.1.war to /home/gerrit/apps/gerrit/bin/gerrit.war [Y/n]?  

Copying gerrit-2.9.1.war to /home/gerrit/apps/gerrit/bin/gerrit.war  

 : 시스템에 설치된 Java Version을 확인하는 부분

   Gerrit 패키지 파일인 WAR 파일을 복사할 것인지 묻는 질문에는 Enter 키를 누르거나 Y를 입력해 패키지 파일을 Gerrit 설치 디렉터리로 복사


*** SSH Daemon

***

 

Listen on address              [*]:  

Listen on port                 [29418]:

 

Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL 

v149  

  If available, Gerrit can take advantage of features

  in the library, but will also function without it.

Download and install it now [Y/n]?  

Downloading 

http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar ... OK  

Checksum bcpkix-jdk15on-149.jar OK

 

Gerrit Code Review is not shipped with Bouncy Castle Crypto Provider 

v149  

** This library is required by Bouncy Castle Crypto SSL v149. **

Download and install it now [Y/n]?  

Downloading 

http://www.bouncycastle.org/download/bcprov-jdk15on-149.jar ... OK  

Checksum bcprov-jdk15on-149.jar OK  

Generating SSH host key ... rsa... dsa… done

 : SSH Daemon Service 의 기본 설정


*** HTTP Daemon

***

 

Behind reverse proxy           [y/N]?  

Use SSL (https://)             [y/N]?  

Listen on address              [*]:  

Listen on port                 [8080]:  

Canonical URL                  [http://localhost:8080/]:  

 : HTTP 데몬 설정


*** Plugins

***

 

Install plugin commit-message-length-validator version v2.9.1 [y/N]? n  

Install plugin download-commands version v2.9.1 [y/N]? n  

Install plugin replication version v2.9.1 [y/N]? n  

Install plugin reviewnotes version v2.9.1 [y/N]? n  

Install plugin singleusergroup version v2.9.1 [y/N]? n

 : 설치 패키지를 미리 설치 할 지 문는 부분

Gerrit 환경 설정 정보 파일 (gerrit.config)

[gerrit]
    basePath = /home/csjung/repository/
    canonicalWebUrl = http://127.0.0.1/
    serverId = bcf3d6b4-bc5b-46d5-8594-8bf9e3ec9ed0
[container]
    javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
    javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
    user = csjung
    javaHome = /usr/lib/jvm/java-11-openjdk-amd64
[index]
    type = lucene
[auth]
    type = HTTP
    logoutUrl = http://aa:aa@127.0.0.1:80/login/
[receive]
    enableSignedPush = false
[sendemail]
    smtpServer = smtp.gmail.com
    smtpServerPort = 465
    smtpEncryption = SSL
    smtpUser = ****@gmail.com
[sshd]
    listenAddress = *:29418
[httpd]
    listenUrl = proxy-http://127.0.0.1:8081/
[cache]
    directory = cache

 

Gerrit 사용자 등록

  1. 관리자 계정 생성 
    $ htpasswd -c /home/gerrit/opt/gerrit/etc/passwords “admin”
    passwords파일을 처음 생성할 때에만 -c 옵션을 사용하며 이후 다른 계정을 추가할 때에는 그냥 아래와 같이 추가한다.
    $ htpasswd /home/gerrit/opt/gerrit/etc/passwords “usera”
  2. Apache 재시작 및 Gerrit 재시작
    $ sudo service apache2 restart
    $ cd ~/opt/gerrit/bin
    $ ./gerrit.sh restart

기타

  1. Gerrit 설치 성공 시, 생성되는 파일들
    etc/gerrit.config : Gerrit 설정 정보
    etc/secure.config : Password 와 같은 정보
  2. Error 발생 시, 로그 출력 위치
    logs/error_log : Gerrit Error Log File

참고

  1. Google Mail 연동 시, 인증 에러가 날 경우.
    -> Google My Account 로 가서 "보안" > "보안 수준이 낮은 앱의 액세스" 활성화 하면 됨.

'기타' 카테고리의 다른 글

넥서스 S 바이너리 올리기  (0) 2012.11.25
[Hudson] 자동 빌드 설정 방법  (0) 2012.08.10
VPN  (0) 2011.05.03
SVN GUI TOOL[SVN Tool - RapidSVN 사용법]  (0) 2011.02.09
SVN  (0) 2011.02.09

[XU4] ADB를 이용한 Firmware Upload 방법.(system.img, zImage-dtb, etc)


Odroid-XU4 같은 경우에는 Hardware 적으로 USB-OTG 를 지원하지 않는다.

그래서 TCP를 이용하여, ADB 연결 후, Firmware를 업로드 후, UBoot 모드에서 업데이트를 하여야 한다.


여기서 본인은 아래의 사이트를 참고하였으나, 결국은 혼자서 많이 해맸다.

다른 분들은 이 글을 참고하여, 본인과 같이 해매지 않길 바라며 정리합니다.


참고 사이트 

 -> https://wiki.odroid.com/odroid-xu4/software/building_android


XU4

How to write images without fastboot on ODROID-XU4(android)

You can not use fastboot on ODROID-XU4, because It doesn't have USB otg port.

First! setup adb connection or copy image to fat partition.

Push image to ext4 partition.

$ adb push xxxx.img /sdcard/
$ adb reboot

Enter u-boot prompt with USB-UART kit connection.

U-Boot 2017.05-12209-g43745f3 (Aug 17 2017 - 09:37:39 +0900) for ODROID-XU4

CPU:   Exynos5422 @ 800 MHz
Model: Odroid XU4 based on EXYNOS5422
Board: Odroid XU4 based on EXYNOS5422
Type:  xu3
DRAM:  2 GiB
MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
MMC Device 0 (eMMC): 14.7 GiB
Info eMMC rst_n_func status = enabled
MMC Device 1 ( SD ): 7.4 GiB

*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Press quickly 'Enter' twice to stop autoboot:  0 
Exynos5422 # 
Exynos5422 # 
Exynos5422 # ext4load mmc 0:3 40000000 media/0/system.img
379342968 bytes read in 13284 ms (27.2 MiB/s)
Exynos5422 # fastboot flash system 40000000 0


우선 참고 사이트를 참고하여, 작업을 하면, u-boot에서 위와 같이 정상적으로 파일을 못 읽어 오는 경우가 있습니다.

저 같은 경우에는 SD카드에 직접 펌웨어를 올려서 해보았습니다만, Read Fail 이 계속 발생이 되었습니다.


그럴 경우에는 u-boot 모드에 진입하셔서, 아래의 명령을 통하여, 정상적으로 파일들이 업로드가 되었는지 확인하여야 합니다.

확인 방법은 다음과 같습니다.


# fatls mmc 0:1 / 


위의 명령을 치시고, 이미지를 올리신 파일이 올라가 있는지를 확인합니다.

기본적으로는 boot.ini 파일만 존재합니다.


만약 존재 하지 않는다면, 아래의 Command를 이용하여, 재부팅 합니다.


# reset


그리고 부팅 완료 후에는 아래의 명령을 통하여, boot.ini 파일이 존재하는 폴더를 검색합니다.


# find . -name 'boot.ini'


그리고 해당 파일이 존재하는 폴더에 업데이트 하고자 하는 펌웨어 파일을 업로드 합니다.

본인은 다음의 경로였습니다.


/internal/


adb 명령을 통하여, 위의 경로에 파일을 업로드 하시고, u-boot 로 부팅 후, 참고 사이트 처럼 작업을 하시면,

정상적으로 파일이 로드 되는 것을 확인하실 수 있습니다.


위의 경로를 찾는 것이 중요한데, 해당 경로를 찾아야 하는 이유는 참고사이트의 내용 처럼, fat 파티션 이여야만 하기 때문입니다.


그리고, 커널 쪽 작업을 할 경우에는, 참고사이트 처럼 'adb push xxxx.img /sdcard/' 와 같이 하실 필요 없이 

다음과 같이 zImage-dtb 를 업로드 하시면 됩니다.

본인은 다음과 같이 하였습니다.


adb push zImage-dtb /internal/


그리고 u-boot 모드에서 원하는 펍웨어만 업데이트 할 경우엔 다음의 파일을 참고하여, 입력하면 된다.


참고 소스 파일

 : /Odroid_AOSP/xu4_installer/sd2emmc/boot.ini

   /Odroid_AOSP/xu4_installer/sd/boot.ini

   /Odroid_AOSP/xu4_installer/emmc/boot.ini


Kernel만 업데이트 할 경우. (아래의 두개의 명령어만 입력)
   fatload mmc 0:1 40008000 zImage-dtb
   movi write kernel 0 40008000


마지막으로 u-boot 모드로 진입하는 방법은 다음과 같습니다.


재부팅 시, 커널 부팅 직전에 [Enter] Key를 두들겨 주시면 됩니다.

그러면 [Exynos5422 #] 프롬프트가 발생이 됩니다.


전체적인 내용을 다시 정리하면 다음과 같습니다.

1. boot.ini 파일이 존재하는 FAT 파티션을 검색한다.

2. 1에서 찾은 경로에 원하는 펌웨어를 adb push 를 이용하여 업로드 한다.

     (참고사이트와는 동일할 필요가 없으며, Kernel 같은 경우에는 zImage-dtb 파일을 업로드하면 된다.)

3. 재부팅 후, u-boot 모드로 진입하여, 업데이트 하고자 하는 펍웨어만 업로드 후, Reset 한다.


여기까지 읽어주셔서 감사합니다.

+ Recent posts