아직 화면이 나오기는 하지만 상태가 그렇게 좋진 않은 모니터가 있다

그걸로 TV 프로나 좀 보고 또 이것 저것 가지고 놀면 재미있을 것 같아서 라즈베리 파이(Raspberry pi)란 놈을 샀다

어디 한번 볼까? 하고 부팅을 시켰는데 모니터에 화면이 안뜬다 -_-;;

hdmi 포트만 있어서 hdmi to dvi 젠더로 연결했는데 이것 때문인가? 잠시 생각했지만

지금 사용중인 DELL 모니터에 연결하면 잘 나온다;;

여기저기 구글링 해보니 /boot/config.txt 를 수정해서 모니터 설정을 할 수 있었다.

http://elinux.org/RPiconfig

http://www.raspberrypi.org/phpBB3/viewtopic.php?p=173430#p173430


모니터가 전에도 dvi 해상도 때문에 속썩이더니 역시나 속을 썩인다

어쨌든 설정한 값은

hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=58
hdmi_edid_file=1

그리고 모니터의 EDID 값이 제대로 설정되어 있지 않기 때문에 같은 해상도의 다른 모니터 EDID 를 /boot/edid.dat 라는 이름으로 가져다 놓았다


나중에 Archlinux 설치해서 쓸 생각인데 그럼 이 설정도 보통 리눅스처럼 xorg 설정으로 하려나?


by 패스파인더 2012. 12. 19. 00:14
Archlinux x86_64
KDE 4.6


by 패스파인더 2011. 2. 19. 20:50

2011-02-18 컴퓨터를 대대적으로 업그레이드 하고 운영체제도 새로 깔았다. WindowsXP 에서 Windows7 64bit 로 다시 설치하고 리눅스도 64bit 로 설치했다.

최신 운영체제라서 설치하고 설정하는 것에 아무 문제가 없을줄 알았다. 예전에는 그래픽카드 설정에 신경을 써야했지만 요새는 dvi 포트에 모니터 꽂으면 별다른 설정 없이 알아서 해상도 잡고 잘 보여줬기 때문에...

그런데 이번에는 다시 엄청난 삽질을 하고 나서야 제대로된 화면을 볼 수 있었다 ㅠㅠ

리눅스만 그런것이 아니고 윈도우7도 같은 문제인데 아직 dvi 로는 제대로된 해상도를 쓸수가 없다.. 좀더 찾아봐야 할듯 ㅠㅠ

문제는 요새 nvidia 그래픽카드(amd 카드도 그런지는 안찾아봐서 모르겠음) 드라이버에서는 모니터의 EDID 를 참조하는데 옛날 모니터의 경우(중소기업 모니터라 그런건지..) 이것이 잘못되어 있는지 아니면 제대로 가져올 수 없는지 매우 낮은 해상도로만 화면이 표시된다.

내 그래픽 카드는 NVIDIA Geforce GTS450이다. 모니터는 MOTV CNC 에서 만든 20.1" 모니터로 최적 해상도는 1680x1050 이다. 그런데 dvi 포트를 사용하면 윈도우7 에서는 1024x768, 리눅스에서는 640x480 밖에 사용을 못한다. d-sub 포트로 연결하면 윈도우7 에선 1680x1050 을 쓸수 있지만(이것도 자동으로 설정되진 않고 잡아줘야 한다...) 리눅스는 이것도 1024x768 밖에 설정이 안된다.

문제를 해결하기 위해 먼저 Modeline 을 지정해주고 Modes 를 설정했다.

Tip. 예전에는 /etc/X11/xorg.conf 파일 하나에 X의 모든 설정이 있었지만 xorg 버전이 올라가면서(1.8부터) 지금은 /etc/X11/xorg.conf.d 디렉토리에 설정파일이 나뉘어 존재한다. 그렇지만 지금도 xorg.conf 파일을 사용할 수는 있다.

[mj@mj-arch ~]$ cvt 1680 1050
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

cvt 로 구한 Modeline 을 /etc/X11/xorg.conf.d/10-monitor.conf 의 Section "Monitor" 에 추가 하고 Section "Screen" 에

    SubSection "Display"
       Depth     24
       Modes     "1680x1050_60.00"
   EndSubSection

을 추가했으나 실패. /var/log/Xorg.0.log 를 확인해보니 No valid modes for "1680x1050_60.00"; removing. 이라며 무시되었다.

 이것저것 구글링을 하며 이옵션 저옵션을 넣고 빼고 하다가 다음 링크를 찾았다.

http://forums.opensuse.org/english/get-technical-help-here/hardware/443968-graphics-issue-w-11-2-nvidia-unable-get-full-resolution-1680x1050-2.html

그 안에 누가 LG의 L204WT 모니터 EDID 의 링크를 걸어줬고 CustomEDID 라는 옵션을 알게 되었다.

Section "Screen"  에 아래 옵션을 넣고 일단 d-sub 를 연결하고 X 를 띄워보았다.

Option        "CustomEDID" "CRT-0:/etc/X11/xorg.conf.d/edid.bin"

1680x1050 으로 화면이 나왔다!!! 옵션에서 CRT-0 대신에 DFP-0 을 넣고 dvi 포트를 연결했으나 이건 또 실패.....

다시 구글링중 http://www.ubuntu.or.kr/viewtopic.php?f=20&t=10180 에서 doodoo 님이 하신 설정을 따라해보다가

Section "Monitor" 에 아래 옵션을 넣자 마침내 dvi 로도 1680x1050 해상도를 볼 수 있었다!!!!!!!!!!!!!!!!!!! ㅠㅠ

HorizSync       30.0 - 81.0
VertRefresh     55.0 - 75.0

거기서 doodoo 님은 EDID 를 사용하지 않는 옵션을 주고 모니터에 맞는 Modelines 를 찾아서 넣었는데.. 나는 거기있는 설정으로는 작동하지 않았다.


내가 성공한 설정의 설정파일은 다음과 같다. # 으로 주석처리한 부분은 이것저것 바꿔봤던 설정들이다;;;

# /etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
   Identifier    "Monitor0"
   HorizSync       30.0 - 81.0
   VertRefresh     55.0 - 75.0
   # 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
   Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
   # 1680x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 147.14 MHz
   #Modeline "1680x1050_60.00"  147.14  1680 1784 1968 2256  1050 1051 1054 1087  -HSync +Vsync
   #ModeLine "1680x1050rb"  119.0  1680 1728 1760 1840 1050 1053 1059 1080 +Hsync -VSync
   #Option        "DPMS"
EndSection

Section "Screen"
   Identifier    "Screen0"  #Collapse Monitor and Device section to Screen section
   Device        "Default nvidia Device"
   Monitor       "Monitor0"
   DefaultDepth  24 #Choose the depth (16||24)
   Option        "CustomEDID" "CRT-0:/etc/X11/xorg.conf.d/edid.bin;DFP-0:/etc/X11/xorg.conf.d/edid.bin"
   SubSection "Display"
       Depth     24
       Modes     "1680x1050_60.00"
   EndSubSection
EndSection

# /etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
       Identifier "Default nvidia Device"
       Driver "nvidia"
       Option "NoLogo" "True"
       #Option "UseEDID" "FALSE"
       #Option "UseEDIDFreqs" "false"
       #Option "ModeValidation" "DFP-0: NoMaxPClkCheck, NoEdidMaxPClkCheck"
       #Option "ModeValidation" "NoDFPNativeResolutionCheck"
       Option "DPI" "96 x 96"
EndSection

/etc/X11/xorg.conf.d/edid.bin 은

을 풀면 그 안에 있습니다.


by 패스파인더 2011. 2. 19. 12:36

리눅스 커널 모듈 안에서 cpu 와 코어의 수를 얻어와야 할 일이 생겼다. 그리고 코어별로 클럭을 조절해서 테스트 해야 할 일이 생겨 찾아본 것을 정리해 보았다.

확인해 본 커널 버전은 2.6.30 , 2.6.34 였다. (2010년 8월 8일 현재 최신 커널버전은 2.6.35)


CPU info

http://www.hanb.co.kr/network/view.html?bi_id=1446

위 의 링크에서 친절히 잘 설명된 정보를 얻을 수 있었다.

리눅스 커널에서는 cpu 의 정보를 담은 구조체가 전역변수로 선언되어 있고 그것을 통해 cpu 정보를 가져올 수 있는 것이다.

다만 커널 버전이 올라가면서 전에는 cpu_data[] 배열에서 직접 데이터를 얻을 수 있던 것이 이제는 안된다. (정확히 언제 바뀌었는지 모르겠는데 2.6.30 이후 부터는 안됨.)

현재 실행중인 cpu 정보를 얻기위한 current_cpu_data 매크로는 여전히 존재하며 cpu_data() 매크로를 통해 특정 cpu 의 정보를 얻어올 수 있으니 이를 이용해보자.

두 매크로는 <asm/processor.h> 에 선언되어 있다.



pc 에서 아까의 매크로로 얻어온 데이터는 struct cpuinfo_x86 구조체로 되어있는데 여기서 내가 관심있는 물리적 코어수 관련 정보는 x86_max_cores 로 보인다.

arch/x86/kernel/cpu/intel.c 파일을 보면 아래와 같은 코드가 있고

c->x86_max_cores = intel_num_cpu_cores(c);

arch/x86/kernel/cpu/amd.c 파일에는 다음과 같은 코드가 있었는데 이를 보면 x86_max_cores는 cpu 의 코어수가 맞는 것 같다.

c->x86_max_cores = (ecx & 0xff) + 1;

booted_cores 도 같은 값을 가지고 있는데.. OS에서 보는 코어의 수라고 하니 하이퍼쓰레딩 같은 것에 따라 달라질 수 있는 것 같다. 이것은 테스트를 한번 해 볼 필요가 있다. 아래와 같은 코드로 값을 확인해 볼 수 있다.

printk("current_cpu_data.x86_max_cores : %hu\n",
                  current_cpu_data.x86_max_cores);
printk("current_cpu_data.booted_cores : %hu\n",
                  current_cpu_data.booted_cores); 


각 cpu의 core id 와 physical processor id 를 확인해 보기 위해 아래와 같은 코드로 테스트 해 보았다.

   for_each_possible_cpu( cpu ) {
       printk("cpu_data(%d).phys_proc_id : %hu\n",
               cpu, cpu_data(cpu).phys_proc_id);
       printk("cpu_data(%d).cpu_core_id : %hu\n",
               cpu, cpu_data(cpu).cpu_core_id);
   }

내 pc 는 1cpu 2 core 이기 때문에 결과는 다음과 같다.

cpu_data(0).phys_proc_id : 0
cpu_data(0).cpu_core_id : 0
cpu_data(1).phys_proc_id : 0
cpu_data(1).cpu_core_id : 1

CPU Frequency scaling

참조 : http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling

리눅스에서 cpu 클럭을 동적으로 바꾸기 위해서는 먼저 cpu 에서 이를 지원해 주어야 하고( intel speed step, amd power now 등) 커널에서

CPU Frequency scaling
이 설정되어 있어야 한다. 자세한 설정은 위의 링크에 잘 나와있다.

그 다음. cpu frequency driver 를 로드해야 한다. 사용 가능한 드라이버는

/lib/modules/*/kernel/arch/*/kernel/cpu/cpufreq

에 있다. cpu 에 맞는 드라이버가 올라갔다면

/sys/devices/system/cpu/cpuN 밑에 cpufreq 디렉토리가 생성되고 아래와 같은 파일들이 생성된다.

affected_cpus     cpuinfo_transition_latency     scaling_driver
bios_limit        related_cpus                   scaling_governor
cpuinfo_cur_freq  scaling_available_frequencies  scaling_max_freq
cpuinfo_max_freq  scaling_available_governors    scaling_min_freq
cpuinfo_min_freq  scaling_cur_freq               scaling_setspeed


유저가 클럭을 변경하려면 scaling_setspeed 파일에 값을 설정하면 된다. 그런데 이때 governor 가 userspace 로 되어있지 않으면 값을 변경할 수 없다.

scaling_available_governors에서 사용 가능한 governor 를 확인할 수 있고 scaling_governor 에서 현재 설정된 governor 를 볼 수 있다.

echo userspace > scaling_governor

로 governor 를 설정하고 scaling_available_frequencies 에서 확인한 주파수로 클럭을 설정하면 된다.

echo 1000000 > scaling_setspeed

affected_cpus 파일에는 클럭 변경으로 영향을 받는 cpu들의 정보가 있다. 여기에 현재 cpu 만 있고 다른 cpu(core) 의 번호가 없다면 cpu(core)별로 클럭을 따로 설정할 수 있는 것이다.


이 글은 스프링노트에서 작성되었습니다.

by 패스파인더 2010. 8. 8. 22:23
얼마전 노키아 5800 XpressMusic 을 샀다.
익뮤버스에 관한 글들을 보고 흔들리던 중 신규로 지르고 만 것이다!!
천천히 가지고 놀 생각이기 때문에 우선은 기본 펌웨어에 합법적인 어플만 설치해볼 생각이다.
mgmaps 는 Creative Commons license 하에서 배포하고 있으니 개인적, 비 상업적인 목적으로는 무료로 사용할 수 있다. 다만 다운받은 지도데이터의 경우 재배포는 위법이라 한다.

 기본적으로 http://blog.kangjang.net/531 에서 보고 따라서 설치하려다가 컴퓨터를 윈도우로 재부팅하기 귀찮아 리눅스에서 하려고 했는데... 결국 이쪽이 훨씬 시간을 잡아먹어 버렸다;;;
 어플은 그냥 다운받아 폰에 넣고 설치하면 되니 문제가 없었다.(리눅스에서도 USB 연결하면 대용량 저장소로 익뮤가 그냥 잡힌다.) 다음에 지도 데이터를 받아야 하는데 이것이 좀 문제.. 고생한 것을 좀 정리해 둬야겠다.

  1. http://www.mgmaps.com/download.php 에서 어플을 받아 설치한다.
  2. http://www.mapcacher.com/ 에서 다운받을 지도영역과 zoom level 을 지정하여 *.map 파일을 생성한다.
  3. http://www.mgmaps.com/cache/ 에서 지도 다운로드에 사용할 tool 을 받는다. gui 도구는 윈도우즈용 밖에 없기 때문에 perl 로 만들어진 command line tool 을 받아야 한다.
    1. MapTileCacherMapTileFE 를 받아 압축을 풀고 2에서 생성한 map 파일과 같은 곳에 둔다.
    2. 우리나라 지도를 받기 위해서 MapTileCacher.perl 파일에서 url 을 수정해 준다.
    3. 일단 아래처럼 바꿨음....
  4. Map Tile 다운로드
    1. $ perl MapTileFE.pl
      Detected OS: linux
      Following map files are available.
      [생성한 map 파일이름],
      Choose one of Map File: [생성한 map 파일이름을 넣는다.]
      Map tiles per file (a power of two, 1-4096, default 32): 256
  5. 다운로드가 끝나면 MGMapsCache 폴더를 익뮤의 외장 메모리에 넣는다.
  6. MGMapsCache 폴더를 숨김속성으로 바꾼다.
    1. 먼저 mtools 가 없다면 설치해야 합니다.
    2. usb 디스크 unmount (디스크 이름은 환경에 따라 바뀔 수 있음)
      sudo umount /media/disk
    3. 홈디렉토리에 .mtoolsrc 파일을 만들고 필요내용 추가
      echo 'drive u: file="/dev/sdb"' > ~/.mtoolsrc
      echo 'mtools_skip_check=1' >> ~/.mtoolsrc
    4. MGMapsCache 디렉토리 숨김속성으로 변경
      sudo mattrib +h u:/MGMapsCache

by 패스파인더 2010. 7. 10. 16:10
채 1년이 안되는 첫 직장생활을 마감하고 이직을 하게 되었다.
먼저 다니고 있던 친구의 추천으로 입사하게 되었는데 과연 새 직장은 어떨지...
다니던 회사를 그만두고 9일의 여유시간이 생겼는데 나의 귀차니즘 때문에 특별히 여행은 안가고 주변 사람만 좀 만나기로 했다.

25일 토요일
느즈감치 일어나 부모님을 뵈러 고향집으로 출발했다!!
주말에는 날씨가 참 좋았는데..
사용자 삽입 이미지

늦게 출발했더니 집에 도착할때 쯤에는 해가지고 있었다.
사용자 삽입 이미지

주말에 그냥 집에서 쉬고 월요일부터 꽃구경이나 해볼까 생각했었지만 비오고 바람불고 추운 관계로 취소.
우리집 사과나무나 한컷. 아직 꽃이 활짝 피진 않았다.
사용자 삽입 이미지

어영부영 시간이 지나가고 있다 -_-;;
5월 1일 뷰티플 민트 라이프 공연은 가서 좀 재밌게 놀다와야지
by 패스파인더 2010. 4. 29. 15:10
대학 졸업 후 KITRI에서의 교육과정을 듣던 중에 한 업체에 취직을 하게 되었다.

내가 원하던 펌웨어나 시스템 소프트웨어를 다루는 곳은 아니었지만 조건이 그리 나쁘지 않다고 생각했기에

입사를 결정했다. 휴대폰 소프트웨어를 만드는 곳인데 아직 정확히 어떤 일을 하게 될지는 잘 모르겠다...

다만, 주어지는 라이브러리를 가지고 UI나 간단한 코드 수정하는 일이 신입인 내게 맡겨지지 않을까 추측해본다.


오늘 대망의 첫 출근을 했다!!!

실제 일하게 될 곳은 수원이지만 성남의 본사에서 며칠동안 몇가지 교육을 받게 되었다.

보안에 대한 교육이 주요한 것이었는데 아직 그냥 막연하다. 잘 모르는 것은 하기전에 물어봐야 겠다는

생각만 다졌다.

내가 앞으로 쓰게 될 컴퓨터를 받고 조립을 했다. 꽤 좋은 사양인 정도라고만 생각했는데

엄청난 사양이었다.

인텔 쿼드 코어 CPU에 메모리는 4G, VGA는 nvidia 9800GT, 하드는 무려 500기가 2개...

내 데스크탑보다 훨씬 좋은.. ㅜㅜ

컴파일은 쌩쌩 잘 되겠다...

그다지 한 일은 별로 없는데 피곤하다. 아직은 교육기간이라 칼퇴근 후 집에서 푹 쉬는게 가능~

이 기간은 곧 끝나겠지 ㅡㅡ;;
by 패스파인더 2009. 6. 15. 22:34

2009/01/07

SSD를 쓰기 때문에 쓰기작업이 되도록 없을수록 좋단다. 그래서 추천하기를

swap파티션을 없앤다. (설치할 때 swap파티션을 잡지 않았다.)

저널링 파일시스템을 쓰지 않는다. (그래서 ext2를 사용하기로 했다.)

fstab에 noatime 을 추가해라. (무슨 옵션인지 잘 모르겠다.. 마지막 access time을 기록하지 않는다는데 그냥 해보자)

log 파일을 만들지 마라. (문제가 발생하면 들여다 보는 쪽이 나을것 같아서 그냥 놔두기로)

 

유선랜이 이상하게 잘 안됨. 

이 글은 스프링노트에서 작성되었습니다.

by 패스파인더 2009. 1. 8. 00:00

Install on windows by CoLinux

아래의 파일 다운로드
co.7z

압축을 풀고 'co.cmd' 파일을 수정한다.
3째 줄의
set FN_COLINUX=devel-coLinux-20080302.exe

를 http://www.colinux.org/snapshots/ 의 최신 파일이름으로 변경한다.
set FN_COLINUX=devel-coLinux-20080511.exe

윈도우즈용 'wget'과 '7-zip'을 설치한다.
명령프롬프트에서 압축을 푼 폴더에 들어간 다음 아래 명령을 실행
co arch 1

설치가 종료되고 coLinux를 통해 Archlinux가 부팅된다.
'arch_README.txt' 파일을 참고해서 초기설정을 해준다.
by 패스파인더 2008. 7. 26. 02:28
삼성 mp3 플레이어를 사게 되면서 삼성 mp3를 위한 프로그램인 이모디오를 써보게 되었다.

삼성에서 제공하는 컨텐츠를 사용하고 mp3 플레이어에 컨텐츠를 집어넣는 일을 편히 할 수 있도록 만들어져 있었다.

그렇지만 여러가지 단점들이 눈에 띄었다. 일단 기능이 많아서 그런지 매우 느렸다.
그리고 음악 재생기로서는 DNSe 라는 음장효과를 제외하고는 별 기능이 없었다. 아주 빈약하다.

PC내의 음악파일들의 태그를 정리하고 라이브러리를 만드는 데에는 몇가지 맘에드는 점이 있어서 지금 사용중이다.

바로 웹에서 곡정보와 앨범아트를 검색해서 mp3 태그에 자동으로 적용시켜 주는 기능이다.
Gracenote의 DB를 이용하는 모양인데 엄청 느리기는 하지만 상당히 편리했다.
간혹 곡 정보를 잘못 찾기도 하기 때문에 변경된 것을 다시 확인해 봐야 하지만 뭐 그정도야...

그리고 가장 맘에 들었던 점은 이 태그가 유니코드로 쓰여진다는 점이다. 대부분 윈도우에서는 mp3태그를 euc-kr로 써버리기 때문에 리눅스에서 아마록으로 볼 때 깨져보이곤 했다. 그런데 시험삼아 리눅스에서 확인해 보니 깨끗하게 잘 보이는 것이다!!!

그렇지만 직접 태그를 써야 할 때는 다른 프로그램을 사용하는것이 훨씬 나았다. 왜냐하면 이것 역시 엄청 느리기 때문이다. -_-;;
by 패스파인더 2008. 7. 22. 02:20
| 1 2 |