BSP(Board Support Package)란 이름의 의미 그대로 Board를 사용할 수 있도록 하기 위한 Software 묶음이라고 보면 될 것이다. 자세히 설명하자면 운영체제를 로드하기 위한 최소한의 장치를 지원하고, 하드웨어 보드의 모든 장치를 위한 드라이버를 말한다. 몇몇의 공급자들은 루트 파일 시스템, 임베디드 시스템에서 실행하는 프로그램을 만들기 위한 툴체인 그리고 장치들을 위한 configurator를 제공한다.
BSP의 구성은 일반적으로 아래와 같다.
1. Bootloader
시스템의 하드웨어를 초기화하고 운영체제의 이미지를 RAM에 올려주는 역할을 하는 시스템 프로그램으로 하드웨어 의존성이 강하다.
2. OAL(OEM Adaption Layer)
HAL(Hardware Abstraction Layer) 아래에 위치하며, 하드웨어 초기화 및 관리를 지원한다.
HAL란 컴퓨터의 하드웨어와 소프트웨어 사이의 추상화 계층이다.
3. Device Driver
특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램으로, 각각 장치 드라이버가 프로그램 되어 커널에 통합되어 실행된다.
Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts
Tuesday, April 25, 2017
Friday, June 3, 2016
Linux .so 파일 디펜던시 확인
readelf -d somefile.so
Thursday, March 31, 2016
Linux 게임 서버 개발 FAQ
좋은 글이 있어서 퍼왔다.
소켓에서 리눅스에서는 4000이하일때 select도 쓸만하다는게 맞는말 같다.
http://nomoreid.egloos.com/3137280
뭐 잘알려진 사실들 이지만 그냥 개인적인 정리입니다. 이상한 부분이나 태클 환영합니다.
1. 라이센스 문제를 피하고 싶다면 cent os를 추천한다. (http://www.centos.org/). 뭐 다들 아는 이야기 겠지만 리눅스에도 상용 배포판이 따로 있다. 하지만 상용 서비스라고 해서 상용 OS를 써야 하는건 아니다. cent os는 재미있게도 상용 배포판인 Red Hat Enterprise Linux(보통 줄여서 RHEL이라고 부른다) 의 클론에서 출발한 프로젝트이다. 바이너리 레벨에서 호환된다. 또 거의 모든 셋팅이 동일하다. 그리고 라이센스 부분도 문제가 없다. 현재 버전 넘버도 RHEL과 동일하다. (안정버전 4.XX 테스트 버전 5.XX)
2. 서버로 사용한다면 GUI인 X Windows는 안까는게 좋다. 200 - 300 메가 내외로 OS설치가 가능하다.
3. telnet 이나 ftp는 구시대의 유물이므로 사용하지 않는것을 권장. (ssh , scp를 쓰라.)
4. ssh의 port를 바꿔라. 무작위 접속시도가 들어온다. 물론 root의 암호는 단순한것으로 하지 말아라.
5. 커널은 2.6 이상을 반드시 사용하라. 물론 cent os의 3.XX이후는 다 커널 2.6기반이다. 윈도우가 NT에서 2000으로 넘어오면서 서버용 OS로서 엄청난 발전이 있었듯이 리눅스도 2.4 에서 2.6으로 넘어가면서 절대적인 성능의 개선이 일어났다. 커널 2.6의 개선사항에 대해선 여기를 참고 (http://www.zdnet.co.kr/builder/platform/nix/0,39031679,39129093,00.htm)
6. 리눅스에선 윈도우와는 달리 4000명 이하일때는 select도 상당히 쓸만하다. 단 OS의 기본 셋팅이 1024명을 기준으로 셋팅 되었기 때문에 몇군대 수정할 부분이 있다. (http://nomoreid.egloos.com/1379567)
7. 일반적으로 gcc도 상당히 빠르지만 더 빠른 속도를 원한다면 Intel c++ compiler for linux를 쓰면 된다. (물론 서버가 AMD라면 AMD홈페이지의 linux gcc 튜닝 가이드를 꼭 읽어 보길 바란다. 물론 intel에서도 gcc를 공식 지원해서 gcc 4.0 의 경우 인텔 컴파일러에 쓰인 기술들이 많이 들어갔다고 한다.)
8. linux 라고 해서 꼭 DB를 mysql을 써야하는건 아니다. MS SQL 서버 , oracle 등도 리눅스에서 사용가능하다. (http://kldp.org/node/2368)
9. gdb사용법에 익숙해져라. gdb와 여러 콘솔기반 어플리케이션에 익숙해져라.
10. screen 사용법을 익혀라. 데몬으로 만들지 않아도 서비스가 가능하다.
11. 서비스 초반에는 디버깅 모드로 돌릴 수 있으니 디버그 모드에서도 어느정도 성능이 나올 수 있게 짜야 한다.
12. 경험적으로 봤을때 리눅스는 윈도우에 비해 크래쉬시 생성되는 코어 파일이 더 많이 깨져있는거 같다. 물론 메모리 버그일때 이야기다. 물론 어떤 경우라도 메모리를 깨면 사형이다.
13. mysql로 서비스를 할때는 구매가 필요 없다. mysql 은 gpl 라이센스 버전과 상용 버전 두가지 라이센스가 있는데, GPL은 소프트웨어를 배포하거나 소스 수정 할때 소스 공개의 의무가 있다. 따라서 소스를 직접 수정하지 않고 단순히 서비스에 이용하는건 라이센스 문제가 없다. (http://www.mysql.com/company/legal/licensing/ Enterprise IT 항목)
대신 해외에 팔때 mysql을 직접적으로 깔아주면 패키지에 포함한 형태가 되서 라이센스 위반.
국내 퍼블리셔에 서비스시 서버 패키지에 mysql이 포함되어 있으면 라이센스 위반.
퍼블리셔가 직접 mysql을 깔고 게임 서버를 돌릴 때는 라이센스 위반이 아님. (배포를 한게 아니므로.)
국내 Web Server hosting 업체들도 이방법으로 라이센스 부분을 피해가고 있습니다. 직접적으로 mysql을 깔아주는게 아닌 고객이 mysql을 깔도록 해서 라이센스를 비켜가는것이죠. (세연군 태클로 수정)
14. mysql 4.0 이후 버전은 clinet lib에 GPL라이센스가 걸려 있다. (3.XX 대는 상관 없음)
mysql clinet lib를 사용한 서버를 퍼블리셔에 배포하는 경우 라이센스 위반. (mysql client lib도 GPL)
ODBC를 이용해서 서버를 짜는 경우 라이센스 위반이 아님. 물론 odbc쪽 라이센스가 걸려있긴 하지만
라이센스 문제 없는 것으로 잘 찾아서 쓰면 됨.
(예 : mysql server + iodbc http://www.iodbc.org/index.php?page=mysql2odbc/index BSD 라이센스.
제가 써보진 않아서 성능에 대한 보장은 할 수 없습니다. )
15. 보통은 퍼블리셔에서 DB관련 된 부분은 제공해줘서. -_-;; 개발시는 그냥 신경쓰지 않고 일단 개발하다가 퍼블리셔의 DB에 맞춰서 커스터마이즈 해주는게..
16. cubrid DB를 사용하는걸 한번 고려해 보라!. mysql보다 2배 이상 빠르고 한글로 지원을 받을 수 있다.
.. 계속 정리중.
소켓에서 리눅스에서는 4000이하일때 select도 쓸만하다는게 맞는말 같다.
http://nomoreid.egloos.com/3137280
뭐 잘알려진 사실들 이지만 그냥 개인적인 정리입니다. 이상한 부분이나 태클 환영합니다.
1. 라이센스 문제를 피하고 싶다면 cent os를 추천한다. (http://www.centos.org/). 뭐 다들 아는 이야기 겠지만 리눅스에도 상용 배포판이 따로 있다. 하지만 상용 서비스라고 해서 상용 OS를 써야 하는건 아니다. cent os는 재미있게도 상용 배포판인 Red Hat Enterprise Linux(보통 줄여서 RHEL이라고 부른다) 의 클론에서 출발한 프로젝트이다. 바이너리 레벨에서 호환된다. 또 거의 모든 셋팅이 동일하다. 그리고 라이센스 부분도 문제가 없다. 현재 버전 넘버도 RHEL과 동일하다. (안정버전 4.XX 테스트 버전 5.XX)
2. 서버로 사용한다면 GUI인 X Windows는 안까는게 좋다. 200 - 300 메가 내외로 OS설치가 가능하다.
3. telnet 이나 ftp는 구시대의 유물이므로 사용하지 않는것을 권장. (ssh , scp를 쓰라.)
4. ssh의 port를 바꿔라. 무작위 접속시도가 들어온다. 물론 root의 암호는 단순한것으로 하지 말아라.
5. 커널은 2.6 이상을 반드시 사용하라. 물론 cent os의 3.XX이후는 다 커널 2.6기반이다. 윈도우가 NT에서 2000으로 넘어오면서 서버용 OS로서 엄청난 발전이 있었듯이 리눅스도 2.4 에서 2.6으로 넘어가면서 절대적인 성능의 개선이 일어났다. 커널 2.6의 개선사항에 대해선 여기를 참고 (http://www.zdnet.co.kr/builder/platform/nix/0,39031679,39129093,00.htm)
6. 리눅스에선 윈도우와는 달리 4000명 이하일때는 select도 상당히 쓸만하다. 단 OS의 기본 셋팅이 1024명을 기준으로 셋팅 되었기 때문에 몇군대 수정할 부분이 있다. (http://nomoreid.egloos.com/1379567)
7. 일반적으로 gcc도 상당히 빠르지만 더 빠른 속도를 원한다면 Intel c++ compiler for linux를 쓰면 된다. (물론 서버가 AMD라면 AMD홈페이지의 linux gcc 튜닝 가이드를 꼭 읽어 보길 바란다. 물론 intel에서도 gcc를 공식 지원해서 gcc 4.0 의 경우 인텔 컴파일러에 쓰인 기술들이 많이 들어갔다고 한다.)
8. linux 라고 해서 꼭 DB를 mysql을 써야하는건 아니다. MS SQL 서버 , oracle 등도 리눅스에서 사용가능하다. (http://kldp.org/node/2368)
9. gdb사용법에 익숙해져라. gdb와 여러 콘솔기반 어플리케이션에 익숙해져라.
10. screen 사용법을 익혀라. 데몬으로 만들지 않아도 서비스가 가능하다.
11. 서비스 초반에는 디버깅 모드로 돌릴 수 있으니 디버그 모드에서도 어느정도 성능이 나올 수 있게 짜야 한다.
12. 경험적으로 봤을때 리눅스는 윈도우에 비해 크래쉬시 생성되는 코어 파일이 더 많이 깨져있는거 같다. 물론 메모리 버그일때 이야기다. 물론 어떤 경우라도 메모리를 깨면 사형이다.
13. mysql로 서비스를 할때는 구매가 필요 없다. mysql 은 gpl 라이센스 버전과 상용 버전 두가지 라이센스가 있는데, GPL은 소프트웨어를 배포하거나 소스 수정 할때 소스 공개의 의무가 있다. 따라서 소스를 직접 수정하지 않고 단순히 서비스에 이용하는건 라이센스 문제가 없다. (http://www.mysql.com/company/legal/licensing/ Enterprise IT 항목)
대신 해외에 팔때 mysql을 직접적으로 깔아주면 패키지에 포함한 형태가 되서 라이센스 위반.
국내 퍼블리셔에 서비스시 서버 패키지에 mysql이 포함되어 있으면 라이센스 위반.
퍼블리셔가 직접 mysql을 깔고 게임 서버를 돌릴 때는 라이센스 위반이 아님. (배포를 한게 아니므로.)
국내 Web Server hosting 업체들도 이방법으로 라이센스 부분을 피해가고 있습니다. 직접적으로 mysql을 깔아주는게 아닌 고객이 mysql을 깔도록 해서 라이센스를 비켜가는것이죠. (세연군 태클로 수정)
14. mysql 4.0 이후 버전은 clinet lib에 GPL라이센스가 걸려 있다. (3.XX 대는 상관 없음)
mysql clinet lib를 사용한 서버를 퍼블리셔에 배포하는 경우 라이센스 위반. (mysql client lib도 GPL)
ODBC를 이용해서 서버를 짜는 경우 라이센스 위반이 아님. 물론 odbc쪽 라이센스가 걸려있긴 하지만
라이센스 문제 없는 것으로 잘 찾아서 쓰면 됨.
(예 : mysql server + iodbc http://www.iodbc.org/index.php?page=mysql2odbc/index BSD 라이센스.
제가 써보진 않아서 성능에 대한 보장은 할 수 없습니다. )
15. 보통은 퍼블리셔에서 DB관련 된 부분은 제공해줘서. -_-;; 개발시는 그냥 신경쓰지 않고 일단 개발하다가 퍼블리셔의 DB에 맞춰서 커스터마이즈 해주는게..
16. cubrid DB를 사용하는걸 한번 고려해 보라!. mysql보다 2배 이상 빠르고 한글로 지원을 받을 수 있다.
.. 계속 정리중.
Sunday, December 13, 2015
Ubuntu The mcrypt extension is missing. PHP
php5-fpm과 nginx환경에서 phpmyadmin을 실행과정에서 다음과 같은 에러가 발생했다.
The mcrypt extension is missing. Please check your PHP configuration.
해결방법은 다음과 같다.
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service php5-fpm restart
sudo service nginx restart
The mcrypt extension is missing. Please check your PHP configuration.
해결방법은 다음과 같다.
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service php5-fpm restart
sudo service nginx restart
CentOS nginx phpMyAdmin 설치
# 확장 패키지(EPEL)가 있는지 확인
rpm -qa epel-release
# 확장 패키지 설치
yum install epel-release
# phpMyAdmin 설치
yum install phpMyAdmin
# 설치폴더
/usr/share/phpMyAdmin
# 폴더 심볼릭 링크 생성
cd /usr/share/nginx/html
ln -s /usr/share/phpMyAdmin phpMyAdmin
CentOS nginx + php에서 file not found 에러
Nginx와 php연동시 File not found 에러가 나는 경우가 있다.
이때는 nginx설정에서 fastcgi_param에서 다음과 같이 html폴더를 절대경로로 명시해 주면된다.
vi /etc/nginx/conf.d/default.conf
이때는 nginx설정에서 fastcgi_param에서 다음과 같이 html폴더를 절대경로로 명시해 주면된다.
vi /etc/nginx/conf.d/default.conf
location ~ \.php$ {
#root /usr/share/nginx/html;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
그리고 nginx restart하자.
service nginx restart
CentOS nginx iptables 설정
CentOS에서 nginx를 설치하고 나면 80번 포트가 막혀있다.
그래서 다음과 같이 iptables를 편집해서 80번 포트를 열어야 한다.
sudo vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
service iptables restart
Saturday, December 12, 2015
Ubuntu ssh 설치
우분투 desktop은 외부에서 접속하는 ssh가 기본적으로 설치되어 있지 않다.
그래서 다음과 같이 설치하면 22번으로 ssh가 설치되고 자동으로 서비스가 시작된다.
sudo apt-get install openssh-server
그래서 다음과 같이 설치하면 22번으로 ssh가 설치되고 자동으로 서비스가 시작된다.
sudo apt-get install openssh-server
Tuesday, November 17, 2015
Linux binary executable bit check
실행파일 바이너리의 비트수를 체크하는 명령은 다음과 같다.
file <filename>
root@3bd49b29-5448-41da-a3e1-581280f439e0:~/dark_server/src# file mgs_dark
mgs_dark: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x1b8c7bd92afcb4134444103f026ddb336cff19c4, not stripped
root@3bd49b29-5448-41da-a3e1-581280f439e0:~/dark_server/src#
file <filename>
root@3bd49b29-5448-41da-a3e1-581280f439e0:~/dark_server/src# file mgs_dark
mgs_dark: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x1b8c7bd92afcb4134444103f026ddb336cff19c4, not stripped
root@3bd49b29-5448-41da-a3e1-581280f439e0:~/dark_server/src#
Saturday, April 25, 2015
vi ^m 없애기
다음과 같이 문자 치환 명령으로 이 문자를 없애도록 합니다.
:1,$s/^M//g
물론 이것의 입력은 다음과 같이 하도록 합니다.
:1,$s/[Control]+v+m을 누른다.//g
:1,$s/^M//g
물론 이것의 입력은 다음과 같이 하도록 합니다.
:1,$s/[Control]+v+m을 누른다.//g
vi 찾기와 바꾸기
Vi: Search and Replace
Change to normal mode with <ESC>.
Search (Wrapped around at end of file):
Search STRING forward: / STRING.
Search STRING backward: ? STRING.
Repeat search: n
Repeat search in opposite direction: N (SHIFT-n)
Replace: Same as with sed, Replace OLD with NEW:
First occurrence on current line: :s/OLD/NEW
Globally (all) on current line: :s/OLD/NEW/g
Between two lines #,#: :#,#s/OLD/NEW/g
Every occurrence in file: :%s/OLD/NEW/g
Change to normal mode with <ESC>.
Search (Wrapped around at end of file):
Search STRING forward: / STRING.
Search STRING backward: ? STRING.
Repeat search: n
Repeat search in opposite direction: N (SHIFT-n)
Replace: Same as with sed, Replace OLD with NEW:
First occurrence on current line: :s/OLD/NEW
Globally (all) on current line: :s/OLD/NEW/g
Between two lines #,#: :#,#s/OLD/NEW/g
Every occurrence in file: :%s/OLD/NEW/g
Subscribe to:
Posts (Atom)