2012년 5월 31일 목요일

G27 설정 제대로 이해하기

목수가 일을 하기전 자신의 연장을 다듬듯 우리들도 레이싱 게임을 하기전 휠이 잘돌아가는지 페달의 강도는 적당한지 매번 확인하면서 게임을 즐깁니다. 무심코 이것을 잊고 지나갈때가 많지만 사실 게임내의 레이싱 스킬보다 이게 더 중요하기도 합니다. 자신의 실제 차량을 주변사람에게 몰게 하지 않듯이 게임에서도 자기만의 휠에 대한 반응이 다릅니다. 이걸 무시하고 인터넷에 떠도는 프로파일 설정을 따라했다간 맞지도 않는 신발 사이즈에 자신의 발을 맞추는거나 다름없습니다. 이런 우를 범하지 않기 위해서는 G27이 제공하는 설정에 대한 것을 정확히 알고 있는게 중요합니다.

PS3에서는(XBOX는 현재 공식적으로 G27 지원하지 않음) 단지 게임내에서 제공하는 휠 설정에 맡길수 밖에 없습니다. 휠을 개조한다거나 하지 않는 이상 휠 설정은 게임내에서 제공하는 기능이 전부입니다. 따라서 그나마 G27 설정이 단순한 편입니다. 어찌보면 최근에 나오는 게임들이 휠 설정하는 메뉴를 완벽하지는 않더라도 세부적으로 설정할수 있게 제공하기 때문에 이것이 어찌보면 심플하면서 최고의 설정을 제공할수 있는 방법인지도 모릅니다.

문제는 PC에서 G27을 설정할때입니다. 로지텍에서 '로지텍 프로파일러' 라고 부르는 게임 디바이스를 위한 소프트웨어를 제공합니다. G27에 한정해서 보자면 이 프로그램이 탄생하게 된 배경을 쉽게 짐작할수 있습니다. G27의 휠과 기어박스에 위치한 수많은 버튼을 보더라도 키보드에서 입력해야할 여러키들을 이 버튼중의 하나로 매핑을 시킬수가 있습니다. 이것을 로지텍 프로파일러를 통해서 합니다.

G27 장치버튼 레이아웃


위의 그림은 로지텍 프로파일러에서 제공하는 출력용 레이아웃 화면인데 이 많은 버튼들을 본인이 원하는 키로 매핑해서 쓸수 있습니다. 그것도 레이싱 게임 종류별로...


그래서 PC에서 G27을 사용할때는 로지텍 프로파일러가 옵션이 아닌 필수 프로그램이 되었습니다. 물론 최근의 레이싱 게임들이 휠설정에 대한 메뉴가 상당히 잘 되어 있어서(대표적으로 shift2 unleashed) 굳이 로지텍 프로파일러를 사용할 이유가 없지만 우리가 게임 한개만 즐기는것이 아니니깐 해두면 여러모로 편리합니다.


로지텍 프로파일러는 한번 실행하면 시스템 트레이에 등록되어 실행되는 프로그램이어서 그냥 화면을 닫는다고 프로그램이 종료되지는 않습니다. 종료는 시스템 트레이의 아이콘에 우측 버튼 클릭해서 종료해야합니다. 굳이 그럴 이유는 없습니다. 어차피 필수이기 때문에...


일단 G27을 USB에 연결했다면 G27 디바이스 프로그램을 설치했을겁니다. 로지텍 프로파일러가 설치되지 않은 경우에도 장치관리자를 통해 G27의 속성을 보면 휠에 대해서 설정할수 있는 화면이 나옵니다. 이화면이 로지텍 프로파일러를 설치한 다음 Global Device Setting와 동일합니다. 즉, 로지텍 프로파일러를 설치하면 굳이 장치관리자를 통해 확인할 필요없습니다. 어느 하나를 수정하면 동일하게 변경이 됩니다.



Global Device Settings (default 설정 화면)



  • Force Feedback Device Settings
    • Overall Effect Strength
    • Spring Effect Strength
    • Damper Effect Strength
    • Enable Centering Spring in Force Feedback games
      • Centering Spring Strength
  • Streering Wheel Settings
    • Report Combined Pedals
      • Degrees Of Rotation
  • Game Settings
    • Allow GAme To Adjust Settings



위의 설정 항목을 차례대로 설명하겠습니다. 


우선 설정 항목이 크게 세가지로 나뉩니다. 포스피드백에 관련된 힘의 강도 설정, 휠의 운전 범위 설정, 그리고 게임 설정.


1. 포스피드백에 관련된 힘의 강도 설정
o Overall Effect Strength
말그대로 종합(overall) 점수를 설정하는 곳입니다. 값이 클수록 체감으로 전달되는 힘이 커집니다. (default는 100%)


o Spring Effect Strength
직역하자면 '스프링 효과 강도' 라고 할수가 있겠는데요, 얼핏 와닫는 말은 아니지만 스프링의 탄성을 생각하면 쉽게 유추가 됩니다. 즉, 스프링의 탄성이 클수록 원래위치로 돌아갈려는 힘이 커질겁니다. 이것을 G27에 적용한거라 보면 됩니다. 로지텍에서 제공하는 공식 설명을 보자면,



What does the "Spring Effect Strength" slider do for force feedback gaming controllers?


The "Spring Effect Strength" slider is a feature of Profiler accessible only by force feedback gaming devices. This slider controls the strength of the spring forces within a game. Spring forces are the effect of the wheel/stick being pulled into a certain direction by the game/software. The farther that you move the handle away from the direction that the force is pulling in, the stronger the force effect will get. By moving the slider above 100%, the stronger that resistance will be. An example of this would be trying to pull out of a dive in a flight simulator. The more you try to pull out of a dive, the more resistance you will encounter.


The default centering spring that centers the joystick handle or steering wheel in games that do not support force feedback will not be affected by this slider. However, games that support force feedback may or may not disable the default centering spring.


휠이 너무 쉽게 잘 돌아간다고 하면 수치를 올려주는게 좋고, 무엇보다 취향이 휠을 돌릴때 힘이 들어가는걸 좋아한다면 수치를 올릴수록 만족도가 높아질겁니다. 그렇다고 너무 많이 올리면 운동하는 느낌이 들지도...


o Damper Effect Strength
다음 국어사전에서 damper의 용어를 찾아보면,



댐퍼 [damper]
진동 에너지를 흡수하는 장치, 고무나 용수철 따위의 탄성체가 자동차나 철도 차량의 바퀴와 차체 사이, 항공기의 다리 등에 설치되어 충격이나 진동을 약하게 한다.



라고 나와있습니다. 앞서 설명한 Spring Effect Strength와 상반되는거 같으면서도 꼭 그렇지는 않습니다. 로지텍에서 제공하는 공식 설명을 보자면,



What does the "Damper Effect Strength" slider do for force feedback gaming controllers?


The "Damper Effect Strength" slider is a feature of Profiler accessible only by force feedback gaming devices. This slider controls the strength of the damper forces within force feedback games. Damper forces slow down the movement of the gaming device in a particular direction. Examples of damper forces would be items such as water or mud. By moving the slider beyond 100%, the damper forces get stronger, and the gaming device will feel more sluggish when you encounter a damper force. By moving the slider below 100%, damper forces will not affect your gameplay as much.

물속이나 진흙을 빚대어서 설명을 했는데, 레이싱 게임에서 비교하자면 코스를 이탈해서 모래밭으로 차가 빠졌을때 이와 비슷한 느낌을 경험할겁니다. 빠져나가려고 휠을 이리저리 돌려봐도 생각만큼 잘 안돌아가죠. 이 힘을 조절한다고 보면 됩니다. 수치가 높을수록 헤쳐나오기가 더 힘들겠죠.  많은 유저들이 이 값을 0%로 하더군요. 취향입니다. 남이 그렇게 한다고 따라할 필요는 없습니다. 게임마다 구현이 또 다르니 실제로 적용할때는 게임안에서 이 기능설정이 있으면 프로파일러에서는 기본값 그대로 해두고 게임에서 설정하는게 정답입니다. 물론 게임에서 최대, 최소값을 설정했는데도 불구하고 원하는 느낌이 들지 않으면 그때 프로파일러에서 설정하는게 좋습니다. 언제나 게임안에서 설정하는것이 우선이란걸 명심하세요.



2. 휠의 운전 범위 설정
유저들이 가장 많이 설정하는 휠의 운전 범위를 설정하는 곳입니다. G27은 900도, 그러니깐 좌우로 각각 최대 한바퀴반 돌아갈수 있는 구조입니다. 여기서 주의할것은 최대가 900도라는거지 모든게임에 적용한다는건 자신이 초보라는걸 밝히는것과 동일합니다. 이것은 게임마다 다르고 게임내에서도 차량마다 달라야 완전한 시뮬레이션이 가능합니다. 현재 차량마다 설정을 달리할수 있는 게임이 몇개 있기는 합니다만 모두 그렇지는 않습니다. 정확히 기억은 나지 않는데 iRacing, rFactor 두가지 중 하나에서 지원하는걸로 알고 있습니다. 이 값도 게임에서 휠 운전 범위를 지정할수 있으면 게임안에서 설정하는게 우선입니다. 지원하지 않을때는 여기서 하구요. 대표적으로 F1 2011은 게임내에서 휠 운전 범위 설정이 없으므로 이곳에서 설정을 하는데 대부분의 유저들이 315도를 선호합니다. 실제 F1 레이싱 휠이 좌우 90도에서 약간더 움직일수 있으니 적절한 값이라고 생각듭니다. 이 값을 900도로 맞추어 두고 F1 2011에서 드리프트할려고 한다면 정신건강상 안하는게 좋습니다.


그리고 한가지. Report Combined pedals를 체크할수 있는게 있는데 이건 다른분이 사이트에 댓글로 올려놓은걸 그대로 인용할께요.



페달 모드
액셀과 브레이크를 하나의 아날로그 축으로 인식하느냐 (해당축의 +/-로 인식)아니면 액셀과 브레이크를 두개의 축으로 분리해서 인식할지를 결정하는 옵션입니다. 게임따라서 단일축으로만 인식되는 게임들이 있어서 존재하는 옵션입니다. 근래에 발매되는 게임들은 대부분 분리된 개별 축을 사용합니다. 당연한 애기지만 단일축의 경우, 다시 말해 조합은 브레이크와 액셀을 동시에 조작할 수 없습니다. 랠리같은 경우는 치명적이겠죠. 체크를 하면 조합으로 사용하는 경우이기때문에 통상적으로 체크를 해제하는 것이 맞습니다. 하지만 게임에 따라서 조합을 사용해야 하는 경우가 있으므로 게임마다 설정을 해줘야겠죠.



결론은 현시점에서 G27에는 설정안하는게 정답입니다. 예전에 나온 레이싱 게임의 단점을 보완하기 위해 나온것이기 때문에 굳이 설정할 필요없습니다. 그리고 shift2나 현재 개발중에 있는 Project CARS 를 보면 게이밍휠 장치선택할때 G27 separate, G27 combined 이렇게 두가지가 있을겁니다. 굳이 힐앤토를 언급하지 않더라고 separate를 선택하는게 좋습니다.


3. 게임 설정
이제 마지막 설정이 남았는데요, 어찌보면 가장 중요한 설정이 되겠습니다. 현재까지 프로파일러에서 설정한것 말고 게임안에서 설정한 경우 게임안에서 설정한 것을 허용할거냐 하는 것입니다. 여기서 체크해제하면 게임안에서 아무리 휠 설정을 해도 변하지 않습니다. 이것도 개인마다 설정하는게 다른데 프로파일러에서 설정한것이 마음에 들면 이곳 설정을 해제합니다. 개인적으로는 설정 체크를 하는걸 추천합니다.


여기까지 Global Device Settings를 설명했는데 실제로는 대부분의 유저들이 이곳의 값은 default 상태 그대로 두고 변경하지 않습니다. 여기 설정된 값은 말 그대로 G27 휠의 기본 설정값이고 우리가 원하는건 게임별 G27 휠설정입니다. 프로파일러 프로그램이 존재하는 이유도 여기에 있습니다.


로지텍 프로파일러


Specific Game Settings


프로파일러에서 게임을 등록하고 여기서 게임별로 휠 세팅을 합니다. 일단 등록을 하면 Global Device Settings의 설정대신 등록된 휠 세팅이 적용이 됩니다. 즉, Global Device Settings 은 말그대로 아무 생각없이 레이싱 게임을 했을때 적용되는 기본 값이라고 보시면 됩니다. 우리는 설치한 레이싱 게임별로 등록해서 실행할거니깐 이점은 꼭 유의하셔야됩니다. 설정화면을 보면 아시겠지만 거의 동일합니다. 단지 큰 항목 분류를 선택할수 있는게 추가된점만 제외하고 동일합니다. 내부적으로 Global과 Specific 설정이 적용되는 것을 유추해보면 일단 Specific 설정이 있으면 Global을 대체합니다. 그리고 Specific에 추가되어 있는 항목 선택이 해제되어 있으면 Global값을 그대로 적용하는 것으로 보입니다. 이게 조금 헷갈리면 그냥 선택을 해둡니다.


결론을 말하자면 이렇습니다.


o PS3
콘솔은 게임안에서 지원하는 휠 설정에 맡긴다.


o PC
1. 게임별 프로파일 등록하고(값은 default값 그대로)
2. 게임내 세팅
3. 게임내 세팅으로도 휠의 느낌이 나랑 맞지 않으면 프로파일러에서 설정하고 다시 테스트. 
4. 2~3 단계 반복


ps) 게임을 실행하면 로지텍 프로파일러가 실행되어 있는 동안 자동으로 등록된 게임 프로파일이 있으면 로드합니다. 그런데 이것을 100% 장담할수 없다는 게 문제입니다. steam 유저들은 steam을 이용해서 실행할텐데 프로파일이 정상적으로 읽어들었는지는 사실 미지수 입니다. (게임을 해봐야 압니다. -_-) 그래서 추천하는 것은 로지텍 프로파일러를 게임 론처로 이용하는 방법입니다. 이것은 100% 장담해도 되지 않을까요? 뭐, 물론 로지텍이 개발사를 통해 만든게 프로파일러 프로그램이라서 이것도 장담할수 없지만...


ps) Global Device Settings -> Game Specific Settings -> in game setting
이런식으로 설정이 단순히 덮어씌워지는줄 알았는데(replace) 꼭 그렇지만은 않은거 같습니다. Global Device Settings -> Game Specific Settings 여기까지는 프로파일러 프로그램을 개발한 측에서 replace 하는 방식으로 설정이 변경된다고 하니 믿을만 하지만 게임내 설정에서는 전적으로 게임 설정을 어떻게 만드느냐에 따라 다른거 같습니다. 즉, 게임을 실행하면 미리 설정해둔 G27의 설정으로 부터 시작해서 게임내 설정값이 변경되는 경우가 있고(이 경우에는 프로파일러에서 설정한 값이 게임내 설정값에 비율값으로 적용되는 듯 싶습니다. 예를 들어 FFB 강도를 프로파일러에서 150% 적용하고 게임내에서 FFB강도를 다시 변경하면 실제로 반경되는 FFB강도는 게임내 FFB강도 x 1.5 이런식으로 적용되는 것으로 보여집니다.) 아니면 G27의 하드웨어 설정값을 무시하고 아예 처음부터 게임내 설정만 가지고 변경이 가해지기도 하나봅니다. 이 경우에도 프로파일러 설정값을 달리하면 미묘한 설정 변경이 체감적으로 느껴지기 때문에 뭐라고 단정짓기가 상당히 힘드네요. 사실 그래서 최근의 게임이 게임내의 휠설정이 상세하게 되어 있기때문에 구시대 유물과 같은 프로파일러를 쓸일이 사실 없습니다. 단지 버튼 바인딩 기능만을 위해서 필요한 정도 입니다. 저는 개인적으로 레이싱 게임은 모두 프로파일을 만들어 둡니다. 하지만 휠설정값을 왠만하면 건드리지 않고 사용합니다. 전적으로 설정을 게임내 설정에 맡기는 편입니다.




<참조사이트>
http://www.f1speedguides.com/guides/using-telemetry-with-f1-2011-getting-started/

http://solidlystated.com/software/logitech-g27-and-f1-2011/
http://solidlystated.com/software/logitech-g27-need-for-speed-shift-2-unleashed/
http://blog.naver.com/PostView.nhn?blogId=sdcani&logNo=40129137664
http://www.apexracingleague.com/showthread.php?4392-F1-2011-Cockpit-Views
http://www.wingmanteam.com/files/documents/webfaqs/profhlp/general.htm


<작성일>
2012-05-31 : 초판 작성(아직 다듬을 내용이 많음)









2011년 10월 24일 월요일

F1 2011 Circuit


1. Melbourne, Australia


2. Kuala Lumpur, Malaysia


3. Shanghai, China


4. Istanbul, Turkey


5. Barcelona, Spain


6. Monte Carlo, Monaco


7. Montreal, Canada


8. Valencia, Europe


9. Silverstone, Great Britain


10. Nürburgring, Germany


11. Budapest, Hungary


12. Spa, Belgium


13. Monza, Italy


14. Singapore


15. Suzuka, Japan


16. Yeongam, Korea


17. New Delhi, India


18. Abu Dhabi, United Arab Emirates


19. São Paulo, Brazil



NOTE. 출처는 http://sponsoring.allianz.com/en/formula1/about/circuit_graphics/
           F1 2011 게임에 나와있는 모든 맵


2011년 8월 4일 목요일

솔라리스 패키지 만들기

o reference
http://www.sunfreeware.com/pkgadd.html
http://www.ibiblio.org/pub/packages/solaris/sparc/html/creating.solaris.packages.html


아래는 wget-1.12를 예로 한것임.


1. source를 다운받기
---------------------------
GNU 사이트에서 wget 다운받은후 솔라리스 시스템내 적당한 디렉토리에 복사
(예에서는 ~/work 에 소스저장, ~/destdir에 임시설치파일 저장, ~/pkg에 결과물저장)




2. 기존 작업 내역 삭제하기
--------------------------
% cd /var/spool/pkg/
% /bin/rm -rf $(wget-1.12)/                           # $(wget-1.12)은 해당 패키지명
NOTE. 수행하지 않는 경우 이후 패키지 작업시 pkgmk 명령에서 에러가 남


% cd ~/work/
% /bin/rm -rf $(wget-1.12)/                           # $(wget-1.12)은 해당 패키지명
% cd ~/destdir/
% /bin/rm -rf $(wget-1.12)/                           # $(wget-1.12)은 해당 패키지명
NOTE. 깔끔하게 새롭게 시작하자.




3. 압축 해제 & 컴파일 & 임시 디렉토리에 설치
--------------------------------------------
% cd ~/work/
% gzip -dc $(wget-1.12.tar.gz) | tar -xof -   # $(wget-1.12.tar.gz) 은 해당 압축 파일명
% cd $(wget-1.12)/                                     # $(wget-1.12) 은 압축 해제 디렉토리명
% script $(wget-1.12-compile.out)               # $(wget-1.12-compile.out) 은 컴파일 로그 저장 파일명
% date;uname -a;cc -V                              # 이 세가지를 로그 시작부분에 저장하자.
% ll
% ./configure --prefix=/usr/local                 # configure 는 패키지에 따라서 적당히 수정 가능
                                                                # (prefix는 반드시 /usr/local)
% date
% make
% date
% make DESTDIR=~/destdir/$(wget-1.12) install               # $(wget-1.12)은 해당 패키지명
            (INSTALLROOT 인 경우도 있음. ex: autoconf, Makefile 확인할것)
% date
% exit                                                       # 로그저장 끝
% (로그 파일 확인하고 에러가 발생시 처음부터 다시 수행)


4. 패키지 만들기
----------------
% cd ~/destdir/$(wget-1.12)/usr/local/             # $(wget-1.12)은 해당 패키지명
% (script 명령어로 수행시 make_package에서 에러가 나므로 로그는 화면 출력 내용을 저장하는 방식으로 기록)
% date;uname -a
% ls -al
% make_packge $(wget-1.12)                          # ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/make_package 
                                                                     # $(wget-1.12)은 해당 패키지명
% (결과 화면 확인)
% date                                                           # 여기까지 출력 내용을 로그로 기록
% ($(wget-1.12)-package.out 파일에 로그 기록)




패키징 예)
% date;uname -a
2011년 6월 16일 목요일 오전 11시 06분 56초
SunOS comsapp 5.8 Generic_108528-26 sun4u sparc SUNW,Sun-Fire-880
% make_package wget-1.12
Please give the name for this package [wget]: 
Now enter the real name for this package [wget]: 
What architecture did you build the package on? [sun4u]: 
Enter the version number of the package [1.12]: 
What category does this package belong to? [application]: 
Who is the vendor of this package? [GNU]: 
Enter the email adress for contact []: 
Enter your own name []: june
What is the basedir this package will install into? [/usr/local]: 
How should i call the packagefile? [wget-1.12-sol8-sun4u-local]: 


Now creating pkginfo file
Done.
Building package
## 패키지 프로토타입 파일에서 pkgmap 작성 중
## pkginfo 파일 처리 중
## pkgmap의 9 항목 볼륨화 시도
부분  1 -- 1472 블록, 13 항목
## 1개의 부분 패키징
/var/spool/pkg/wget/pkgmap
/var/spool/pkg/wget/pkginfo
/var/spool/pkg/wget/reloc/bin/wget
/var/spool/pkg/wget/reloc/etc/wgetrc
/var/spool/pkg/wget/reloc/lib/charset.alias
/var/spool/pkg/wget/reloc/share/info/wget.info
## 제어 스크립트 검증 중
## 패키징 완료


다음과 같은 패키지를 사용할 수 있습니다.
 1  wget     wget
 (sun4u) 1.12


처리할 패키지(들)를 선택하십시오.(또는 모든 패키지를
처리하려면'all'을 입력하십시오.) (default: all) [?,??,q]: 
패키지 인스턴스 전송 중
Done. (/tmp/wget-1.12-sol8-sun4u-local.gz)
% date
2011년 6월 16일 목요일 오전 11시 07분 01초




5. 설치테스트
-------------
% mv /tmp/wget-1.12-sol8-sun4u-local.gz ~/pkg/
% cd ~/pkg
% gzunzip $(wget-1.12-sol8-sun4u-local.gz)                # $(wget-1.12-sol8-sun4u-local.gz) 은 결과물 파일
% su
(input root password)
# (로그는 화면 출력 내용을 저장하는 방식으로 기록)
# date;uname -a
# pkgadd -d $(wget-1.12-sol8-sun4u-local)                 # $(wget-1.12-sol8-sun4u-local) 은 패키지 설치에 사용되는 파일
# date
# ($(wget-1.12)-package_install.out 파일에 화면 출력결과를 기록할것)




설치 예)
# date;uname -a
2011년 6월 16일 목요일 오전 11시 20분 15초
SunOS comsapp 5.8 Generic_108528-26 sun4u sparc SUNW,Sun-Fire-880
# pkgadd -d wget-1.12-sol8-sun4u-local


다음과 같은 패키지를 사용할 수 있습니다.
 1  wget     wget
 (sun4u) 1.12


처리할 패키지(들)를 선택하십시오.(또는 모든 패키지를
처리하려면'all'을 입력하십시오.) (default: all) [?,??,q]: 


패키지 예 (을)를 에서 처리 중


wget
(sun4u) 1.12
GNU
디렉토리 (을)를 패키지의 기본 디렉토리로 사용
## 패키지 정보 처리 중
## 시스템 정보 처리 중
  3개 패키지 경로 이름이 이미 제대로 설치되어 있습니다.
## 디스크 공간 요구 검증 중
## 이미 설치되어 있는 패키지와의 충돌 여부를 확인하고 있습니다.
## setuid/setgid 프로그램 점검


wget(을)를 (으)로 설치


## 1째 (전체: 1) 부분 설치
/usr/local/bin/wget
/usr/local/etc/wgetrc
/usr/local/lib/charset.alias
/usr/local/share/info/wget.info
[ 클래스 검증 ]


(이)가 성공적으로 설치되었습니다.
# date
2011년 6월 16일 목요일 오전 11시 20분 43초




6. 설치 검증
------------
% pkginfo wget                         # wget 는 설치패키지명
application wget       wget


%pkginfo -l wget                       # wget 는 설치패키지명
패키지 인스턴스:  wget
      이름:  wget
      범주:  application
  아카이브:  sun4u
      버전:  1.12
기본 디렉토리:  /usr/local
    판매자:  GNU
    PSTAMP:  june
  INSTDATE:  6월 16 2011 11:20
      상태:  설치 완료
      파일:        9 installed pathnames
                   3 shared pathnames
                   5 directories
                   1 executables
                1398 blocks used (approx)




7. 작업 파일 삭제
-----------------
필수 작업은 아님.


% cd /var/spool/pkg/
% /bin/rm -rf $(wget-1.12)/                           # $(wget-1.12)은 해당 패키지명
NOTE. 수행하지 않는 경우 이후 패키지 작업시 pkgmk 명령에서 에러가 남


% cd ~/work/
% /bin/rm -rf $(wget-1.12)/                           # $(wget-1.12)은 해당 패키지명


% cd ~/destdir/
% /bin/rm -rf $(wget-1.12)/                           # $(wget-1.12)은 해당 패키지명


8. 최종 결과물 보존
-------------------
~/pkg/$(wget-1.12-sol8-sun4u-local) 잘 보관!


Date: 2011.08.04 : 작성
Date: 2011.08.10 : make DESTDIR=... 이외에 INSTALLROOT 가 있는 경우가 있음

2008년 12월 28일 일요일

BSD make 에 대한 user 메일링 리스트 글

NetBSD 메일링 리스트를 검색하다 보니 흥미를 끄는 주제가 있어 한번 링크 걸어 봅니다.

http://mail-index.netbsd.org/netbsd-users/2008/10/11/msg002183.html

해당 글의 thread도 같이 보시면 알겠지만 저도 공감하고 있는 NetBSD의 make(bmake)와 GNU make(gmake) 간의 gap 에 대한 글인데요, 항상 느끼는 것이지만 bmake는 NetBSD에서만 쓸수 밖에 없는 현실이 조금 안타깝고(pkgsrc에 한정되어서 말하는 것이 아닙니다.) 조금만 확장하면 GNU 진영의 autoconf+automake+libtool 을 압도할수 있는 솔루션이 될것으로 보이는데 문서화 되지 않은 면이 많아서 조금은 아쉽네요.

개략적으로 나마 bmake와 gmake간의 차이점을 볼수 있습니다.

2008년 12월 24일 수요일

NetForce2 기종에 Qt 포팅 예제

얼마전 PMP를 구매했는데 OS가 Windows CE 입니다. :-< 그래도 요즘 관심있게 보고 있는 Qt를 한번 포팅해보기로 했는데 성공했습니다. 아래는 간략 설명입니다. Intro ----- I-STATION 의 NetForce2 기종에 Qt를 포팅한 예제입니다. 포팅하기위해서 사용된 환경은 다음과 같습니다. - OS: Windows XP - Windows CE 5.0: Standard Software Development Kit (SDK) - Qt: embedded Version 4.4.3 - Compiler: Visual Studio 2005 컴파일하는데 한시간 정도 걸리는데요, 어떻게 돌아가는지 맛배기로 보실분들을 위해서 필요한 파일들을 압축해 보았습니다. 이것을 만든 이유이기도 합니다. 설치는 압축된 파일을 NetForce2의 적당한 디렉토리(예: 하드디스크)에 풀면 다음과 같은 디렉토리가 있습니다. - demos, examples - qtlib-4.4.3 - wce50-MIPSII, wce50-MIPSII-FP - doc - util 우선 util/ystempath.cpl 을 기기의 Windows 디렉토리에 복사합니다. 그런다음 시작->제어판->System Path 를 실행합니다.
여기에 qtlib-4.4.3, wce50-MIPSII-FP 경로를 선택합니다. OK 를 누르면 재시작하라는 메시지창이 나타나는데요, 이때 OK 버튼을
누르지 말고 X 버튼을 눌러주세요. 프로그램의 버그인지 OK 를 누르면 기기가 먹통이 되더라구요. 설정이 끝나면 재시작을 합니다.

준비는 끝났고 demos 디렉토리에 있는 exe 파일을 실행하면 됩니다. fluidlauncher.exe 를 한번 실행해 보세요.

Enjoy & Fun!

- jypak (date in 2008.12.25)


short directory description
---------------------------

o From http://trolltech.com/downloads/opensource/appdev/win-ce-cpp

- demos <- C:\qt-embedded-wince-opensource-src-4.4.3\demos
(PreView: http://dist.trolltech.com/video/qtembedded44video.mov)

- examples <- C:\qt-embedded-wince-opensource-src-4.4.3\examples

- qtlib-4.4.3 <- C:\qt-embedded-wince-opensource-src-4.4.3\lib
(Ref: http://doc.trolltech.com/4.4/install-wince.html)

o From Windows CE 5.0: Standard Software Development Kit (SDK)
(http://www.microsoft.com/downloads/details.aspx?FamilyID=fa1a3d66-3f61-4ddc-9510-ae450e2318c3&DisplayLang=en)

- wce50-MIPSII <- C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII

- wce50-MIPSII_FP <- C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII_FP

NOTE. Both of two works, but I am not sure which is fast.

o From http://www.razamicroelectronics.com/products/Au1250.htm

- doc/Au1250 (remove for compressed file size :-)

o From http://www.geocities.co.jp/SiliconValley-Cupertino/2039/systempath.zip

- util/systempath.cpl

NOTE. Setup the Environment Variables on Pocket PC
INSTALL. just copy to "Windows" directory in Windows CE.


Other Useful program
--------------------
o Active Sync
http://www.microsoft.com/downloads/details.aspx?familyid=9FEC2CA0-A503-4F9C-8228-E424480EC807&displaylang=ko


Reference Site
--------------
o RMI Alchemy Au1250 CPU
http://www.razamicroelectronics.com/products/Au1250.htm

o Another Qt Porting blog
http://punbear.tistory.com/category/Programming/Qt

o Qt Documentation
http://doc.trolltech.com/4.4/index.html

o Another Qt Instruction
http://www.digitalfanatics.org/projects/qt_tutorial/index.html


Build Tip
-------
o Qt Porting

1. start in Visual Studio 2005 command window

2. cd $(qt-embedded source)

3. configure -platform win32-msvc2005 -xplatform wince50standard-mipsii-msvc2005

4. cd bin

5. setcepaths wince50standard-mipsii-msvc2005

6. cd ..

7. nmake

8. lib 디렉토리에 결과물들이 생김. demos 도 마찬가지...

9. Windows CE를 위한 Qt 실행환경 만들기
C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII_FP
$(qt-embedded source)/lib

10. 9번 결과물을 기기로 전송(Active Sync or USB)


o qmake
Command: C:\qt-embedded-wince-opensource-src-4.4.3\bin\qmake.exe -spec ..\..\..\mkspecs\wince50standard-mipsii-msvc2005 -win32 -o Makefile hellogl.pro

VS.

Command: C:\qt-embedded-wince-opensource-src-4.4.3\bin\qmake.exe -win32 -o Makefile calendar.pro

매번 -spec을 명령어 상에 실행하기 귀찮으면 QMAKESPEC 환경변수에 등록

이후는

1. start in Visual Studio 2005 command window

2. QMAKESPEC 환경변수 등록

3. qmake

4. nmake

5. nmake release

6. 실행 파일을 기기로 전송

enjoy & fun!

2008년 11월 15일 토요일

Install KDE4

별로 영양가 없는 작업이었지만 KDE4를 또 지난번처럼 소스를 전체 컴파일하는 방법으로 설치해봤습니다. KDE3 에 비해 KDE4 에서는 killer application 들이 대폭 개선이 되어서 사용하기가 너무 좋아졌습니다. 물론 시스템에 많은 부하를 주는 것은 사실이지만 시스템이 좀 받쳐준다면 사용해도 괜찮을 것으로 보입니다.

다음은 modular-X 와 KDE4 설치에 필요했던 전체 패키지 리스트입니다.




다음은 Killer Application 이라 말할수 있는 OpenOffice3, Konqueror, Amarok 입니다.


KDE4 내에도 Killer Application 이 많이 포함되어있는데요, pdf 뷰어인 Okular, 파일매너저인 Dolphin, 이미지 뷰어인 Gwenview, 구글맵을 연상시키는 Marble 등이 포함되어있습니다.



마지막으로 Qt 개발 환경인 designer, assistant 입니다.



언제부터 GNOME을 버리고 KDE 로 전향했는지는 알수는 없지만 역시 UI 가 예쁜것은 인정할만 하네요. wip pkgsrc 로 부터 설치해야해서 바이너리 없이 전체 빌드하다보니 KDE4 만 설치하는데 거의 하루가 걸리더군요. pkgsrc 받고 나서 make 실행하고 하루는 멀리 떠나 있는게 정신 건강에 좋습니다. openoffice 도 반나절은 걸린다는 거 명심하시구요. 바이너리 패키지가 있으면 그것 쓰는 것이 여러모로 좋을 듯 싶습니다.

점점 더 NetBSD 가 사용하기에 편해지는 것을 보면 개발 플랫폼으로서 뿐만 아니라 사용자 플랫폼으로서 한층 가까워지고 있다는 생각이 드네요. 언제 한번 시간나면 liveCD 라도 만들어봐야겠습니다.

Ref)
Modula-X : http://rubenerdshow.com/blog/modular-xorg-on-netbsd-from-scratch/

2008년 11월 7일 금요일

Use USB wireless LAN Card

전에 PSP 인터넷 기능을 사용하기 위해서 노트북에 장착할 access point를 위해서 장만한 TW-54G 모델을 가지고 있었는데 혹시나 하는 마음에 한번 TS-7200 보드에 연결해 보았습니다,

Ref) http://www.eunicorn.co.kr/kimsboard7/productintro.php?main_file=product/lancard/tw54g.html

위에 적힌 사항대로라면 Ralink사의 RT2571WF 라는 칩을 사용합니다. rum(4) 를 참조하면 해당 디바이스를 지원합니다. 그리고 해당 디바이스가 evbarm을 지원하는것은 같은 계열의 evbarm 하드웨어에서 사용하는 것을 보면 사용이 가능할 거란 느낌이 들어서 우선 무턱대고 연결해봤습니다.

ugen0 at uhub0 port 1
ugen0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2
ugen0: at uhub0 port 1 (addr 2) disconnected
ugen0 detached
ugen0 at uhub0 port 1
ugen0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2

이런 메시지가 나오기는 하는데 사용은 불가능합니다.

커널 설정에 다음라인을 추가하고 컴파일합니다.

rum* at uhub? port ? # Ralink Technology RT2501/RT2601 802.11a/b/g

그런 다음 커널을 올려주고

# ifconfig rum0 192.168.1.10 netmask 0xffffff00 nwid "IPTIME"
하니

failed loadfirmware of file
에러메시지가 뜨네요. sysctl 결과를 보면

hw.firmware.path = /libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata

인데요, 커널 컴파일한 노트북에서 /usr/src/sys/dev/microcode/rum 에 보면 rum-rt2573 이란 파일이 있습니다. 이것을 /lib/data/firmware/rum 디렉토리를 만들어 주고 복사를 하고 나면 끝입니다.

ts-7200# dmesg
...
rum0 at uhub0 port 1
rum0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2
rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528, address 00:0e:e8:e3:2b:39
rum0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
rum0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
....

ts-7200# ifconfig -a
epe0: flags=8863 mtu 1500
address: 00:d0:69:40:87:e4
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.168.0.250 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::2d0:69ff:fe40:87e4%epe0 prefixlen 64 scopeid 0x1
rum0: flags=8802 mtu 1500
ssid ""
powersave off
address: 00:0e:e8:e3:2b:39
media: IEEE802.11 autoselect
status: no network
lo0: flags=8049 mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3

ts-7200# ifconfig rum0 192.168.1.10 netmask 0xffffff00 nwid "IPTIME"

이제 default gateway 적절히 잡아주고(192.168.1.1 과 같은) ping 으로 외부 시스템을 걸어주면 정상적으로 됩니다.

ref) rum(4), route(8)