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

그걸로 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

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
사용자 삽입 이미지
OS : Arch Linux
Desktop Environment : KDE
Widget : SuperKaramba - Liquid Weather ++
Window Decorations : Baghira
Icon : Vista inspirate
by 패스파인더 2007. 12. 3. 17:24
| 1 |