728x90
300x250

Centos 4, 5에서 Nvidia 그래픽 카드 - 설치 방법

간혹 모니터 주파수 대역을 벗어나는 사례가 종종 발생하기 때문에 글을 올리게 되었다.

이곳에서 적당히 다운받으시면 된다.
http://www.nvidia.com/Download/index.aspx?lang=en-us


[이 글을 읽으면 도움이 되는 경우]
예) X-Windows로 부팅한 상태에서 설치가 가능하다고 생각하는 사람...


1. 해결 방법

먼저 X-Windows를 끄기 위해 vi /etc/inittab 를 입력한다.

id:5:initdefault (GUI 모드를 CUI로)
id:3:initdefault 로 변경한다.

:wq
shutdown -r now
재부팅 합니다.

./Nvidia파일.run
절차에 맞게 설치를 진행하면 된다.

[재부팅 하기 전에]
inittab 파일을 원상 복귀 시킨다.

id:5 값으로 바꾸라고

[재부팅해도 화면이 안뜨면]

ctrl + alt + f1 키로 콘솔로 전환해서 재 작업할 것

[참고] ctrl + alt + f7은 GUI화면으로 전환하는 키이다.

수정일자 : 2009/06/14


반응형
728x90
300x250

[Linux] Centos 4, 5 Ndiswrapper 사용하는 방법

여기저기에서 ndiswrapper와 관련된 정보가 올라오고 있습니다.
하지만 가끔은 지나친 정보로 인해 혼돈이 되는 경우가 있습니다. 저는 ndiswrapper를 설치만 하려고 20번 정도 삽질을 했었습니다.(Fedora에서)
Centos로 전환하고 나서 커널에 대한 걱정은 조금 덜수가 있었습니다.(커널에 대한 걱정을 해소하게 된건 yum 업데이터의 도움으로 해소할 수가 있었습니다...;;;)

[ndiswrapper 소스]
http://sourceforge.net/projects/ndiswrapper/

Stable 버전으로 받으시거나 아래 첨부된 파일로 설치하시면 되겠습니다.

[첨부(Attachment)]
ndiswrapper-1.54.tar.gz


1. 설치 전에 준비해야 할 일

You need a recent kernel, at least 2.6.16, with header files for the
kernel. Make sure there is a link to the kernel source from the modules
directory. The command

  ls /lib/modules/`uname -r`/build

(커널을 최신버전으로 업데이트 해주시기 바랍니다. - 뭐 요즘은 리눅스도 기능이 좋아져서 yum 명령어 하나로 커널부터 시작해서 왠만한 것들은 다 설치하기에 쉽게 하실 수 있을 거라 믿습니다.)

[압축풀기]
tar xvfz (ndiswrapper 압축 파일명)
cd (ndiswrapper 압축 풀린 폴더명)

[설치하기]
make (공식 메뉴얼에 보니 make를 입력하라고 적혀있네....)
make install

[설치완료 후 확인하기]
커맨드라인(혹은 쉘이라 불리우는)에 ndiswrapper라고 입력합니다.
설치가 되면 무슨 반응이 나오겠지요....??

[드라이버 설치]
ndiswrapper -i 드라이버.inf(혹시 이것도 모르는 사람은 없겠지? 드라이버 있는 폴더에 이동 후에 사용한다는거...다들 알고 있을거라 믿어...)

[PCI 인터페이스, USB 인터페이스 확인]
lsusb (USB 확인)
lspci -n (PCI 인터페이스 넘버 확인)
lspci (PCI 인터페이스 전체 확인???)

[Alias 설정]
재부팅시 모듈 올리기 위해서 하는 작업이에요..

vi /etc/modprobe.conf
적당한 줄에
alias wlan0 ndiswrapper 추가해라

재부팅하세요. - 2009.6.14일 추가

[Ndiswrapper 설정]
ndiswrapper -ma
(오류가 나올수도 있습니다.)

[무선 네트워크 확인]
iwconfig

iwconfig wlan0 essid (채널명)
iwconfig wlan0 key restricted (암호명) - 오타 났네요. 죄송합니다.
iwconfig wlan0 (아이피주소)
iwconfig wlan0 up(올리기)

(더 자세한 사항은 iwconfig -h을 통해 확인하시기 바랍니다.)

[modprobe로 장치 올리기]
modprobe ndiswrapper  - 2009.6.14 추가

[무선랜 상태 확인]
무선랜 올라와 있으면
ifconfig에 올라와 있는가 확인할것

확인이 되었으면

etc/sysconfig/network-scripts/ifcfg-wlan0

[옵션 안내]

GATEWAY= 게이트웨이주소입력
TYPE=(무선=Wireless, 유선=Ethernet)
Device=(장치명)
HWADDR=(MAC주소)
NETMASK=(네트워크 마스크 범위)
IPADDR=(IP주소)
ONBOOT=(부팅시 네트워크 시동 여부)
ESSID=(무선랜 AP 이름)
KEY=(WEP암호)
입력방법 : HEX키 경우 : 0x(키입력)
               나머지키는 그냥 입력하시면 됩니다.
2009.6.14 추가

PEERDNS=yes(1:1 DNS) - 2009.6.14 추가

[ndiswrapper 명령어]
modprobe ndiswrapper (Module로 올리기)
ndiswrapper -i 드라이버.inf (네트워크 드라이버)
ndiswrapper -h (도움말)
ndiswrapper -l (ndiswrapper로 올린 네트워크 드라이버 리스트)
ndiswrapper -v (ndiswrapper 버전)

[iwlist는?]
iwlist는 무선랜이 연결되었는지 확인하는 기초적인 명령어로 윈도우에서는 WZC와 비슷한 역할을 수행하고 있다고 보시면 됩니다.

iwlist (장치명) scanning
무선랜 스캔

반응형
728x90
300x250

[C언어] 문자열과 포인터 배열

태스트 환경 : Visual Studio 2008

이 예제는 일반적인 문자 배열에 대한 메모리 낭비를 직접적으로 보여주는 예제이다.
더불어 strcpy 함수에 대한 비밀까지 자세히 수록하고 있는 예제이다...

#include <stdio.h>

main()
{
 int i;

 char name[5][20];

 strcpy(name[0], "Jung Jae Une");
 strcpy(name[1], "Han Woo Ryong");
 strcpy(name[2], "Byun Ji Ha");
 strcpy(name[3], "Lee Do Geun");
 strcpy(name[4], "Hong Jae Mok");

 for(i=0; i<5; i++)
  puts(name[i]);

}

결과 :
Jung Jae Une
Han Woo Ryong
Byun Ji Ha
Lee Do Geun
Hong Jae Mok

반응형
728x90
300x250

[C언어] 문자열에 대해서

태스트 : Visual Studio 2008

소스

#include <stdio.h>

main()
{

 char *imsip;
 char imsi;

 imsip = 'a';     /* 1번 */
 imsip = "a";     /* 2번 */

 imsi = 'a';       /* 3번 */
 imsi = "a";       /* 4번 */

}

설명 :

1번
: 'a' 문자를 할당하려고 하는 것이다. imsip = 'a';의 의미는 'a'에 해당하는 아스키코드 정수 값을 imsip에 넣으려고 하는 것과 같습니다. imsip에는 주소 외에는 다른 값이 할당 될 수 없으므로 문법적으로 옳지 않습니다.
2번 : "a"라는 문자열이 메모리의 어딘가에 저장되고 이 저장된 주소를 imsip에 대해 할당하므로 맞는 문장입니다. "a"는 뒤에 널 문자가 추가된 문자열이며 문자가 아닙니다.
3번 : 'a'문자를 imsi에 할당합니다. 아스키 정수 값이 imsi에 할당되므로 문법적으로 하자가 없습니다.
4번 : "a"는 문자열이며 문자열은 주소 값을 리턴하므로 "a"가 저장된 곳의 주소가 imsi에 할당됩니다. 물론 메모리 접근 오류이므로 에러가 나타나게 되겠습니다.

반응형
728x90
300x250

[C언어] 포인터 배열 정리

[소스]

#include <stdio.h>

#define print(imsi) printf(#imsi "\t%08x %d\n", imsi, sizeof(imsi))

main()
{

 int imsi_1[2] = { 5, 7 };
 int imsi_2[3] = { 45, 67, 25 };
 int imsi_3[4] = { 27, 34, 87, 25 };

 int *temp[3];

 temp[0] = imsi_1;
 temp[1] = imsi_2;
 temp[2] = imsi_3;


 print(temp);
 print(&temp);
 print(*temp);
 print(temp[0]);
 print(&temp[0]);

}


결과 :

temp    0012ff1c 12
&temp   0012ff1c 4
*temp   0012ff5c 4
temp[0] 0012ff5c 4
&temp[0]        0012ff1c 4


[설명]

1. temp
Temp는 포인터 변수들의 모임인 포인터 배열의 모 배열입니다. 대상체는 temp 배열 전체이므로 12가 출력됩니다.
2. &temp
temp가 저장된 곳의 주소를 출력하라는 뜻으로 사용했지만 temp는 배열명으로써 메모리 할당을 받지 않기 때문에 temp와 같은 값을 출력하게 되지요. 의미상으로는 맞지 않지만 ANSI에서 새로 추가하여 에러는 발생하지 않습니다... 또한 주소 값에 대한 sizeof()이므로 당연히 4가 출력됩니다.
3. *temp
temp가 가리키는 것은 temp[0]입니다. temp는 temp[0], temp[1], temp[2] 전체를 대상으로 하기 때문에 12가 출력되었지만 *temp가 가리키는 대상체는 temp[0]이며 이것이 할당된 메모리 영역은 4바이트이므로 4가 출력됩니다.

Tip) temp 자체에 대한 대상체를 * 연산자를 이용하여 출력하려면 다음과 같이 하면 되겠습니다.

물론 2차원 배열에 대한 주소 값을 받은 상태라면 이것은 행 전체에 대한 크기를 출력해 줄 것입니다.

printf("%d\n", sizeof(*&temp));

4. temp[0]
temp[0]은 포인터 변수이다. temp[0]을 위해서 할당된 메모리 영역은 4바이트이므로 4가 출력됩니다.

5. &temp[0]
temp[0]에 &연산자를 사용하여 메모리를 출력하고 있습니다. 이 메모리에 대한 메모리 할당은 당연히 4바이트이므로 4가 출력되겠습니다.
반응형
728x90
300x250

[C언어] 꼭 알아야 할 배열 포인터

태스트 : Visual Studio 2008.

#include <stdio.h>

main()
{

 int i, j;

 int imsi[3][2] = {{6, 3}, {9, 1}, {7, 2}};

 int (*imsip)[2];

 imsip = imsi;

 for(i = 0; i < 3; i++)
  for(j = 0; j < 2; j++)
   printf("[ %d][ %d] %d\n", i, j, *(*(imsip + i) + j));

 printf("################################################\n");

 for(i = 0; i < 3; i++)
  for(j = 0; j < 2; j++)
   printf("[ %d][ %d] %d\n", i, j, *(imsip[i] + j));

 printf("################################################\n");

 for(i = 0; i < 3; i++)
  for(j = 0; j < 2; j++)
   printf("[ %d][ %d] %d\n", i, j, imsi[i][j]);

 printf("################################################\n");

 for(i = 0; i < 3; i++)
  for(j = 0; j < 2; j++)
   printf("[ %d][ %d] %d\n", i, j, imsip[i][j]);

}


출력

[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
################################################
[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
################################################
[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
################################################
[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2


2. 2차원 배열 포인터 변수에 주소 할당

#include <stdio.h>

main()
{

 int imsi[3];

 int *imsip;


 imsip = imsi;


 printf("%d\n", sizeof(imsi));
 printf("%d\n", sizeof(imsip));
 printf("%d\n", sizeof(*imsip));

}


결과

12
4
4

설명 :
imsi[0] + imsi[1] + imsi[2] 이므로 4 + 4 + 4 = 12Byte
imsip, *imsip 는 포인터 변수이므로 무조건 4Byte로 할당됩니다.
반응형
728x90
300x250
[C언어] 포인터 변수 관계

태스트 환경 : Visual Studio 2008.

#include <stdio.h>

main()
{

/* 변수 선언 */

 int imsi;
 int *imsip;

/* 1. 주소 */

 printf("[1. Address]\n");
 printf("IMSI : %#010x\n", imsi);
 printf("*IMSIP : %#010x\n", imsip);

 imsip = &imsi;

/* 2. 주소 */

 printf("[2. Address]\n");
 printf("IMSI : %#010x\n", imsi);
 printf("*IMSIP : %#010x\n", imsip);

 *imsip = 1024;

/* 3. 주소 */

 printf("[3. Address]\n");
 printf("IMSI : %#010x\n", imsi);
 printf("*IMSIP : %#010x\n", imsip);
 printf("Result : %d\n", *imsip);

}

출력 결과 :

[1. Address]
IMSI : 0xcccccccc
*IMSIP : 0xcccccccc
[2. Address]
IMSI : 0xcccccccc
*IMSIP : 0x0012ff60
[3. Address]
IMSI : 0x00000400
*IMSIP : 0x0012ff60
Result : 1024

반응형
728x90
300x250
[C언어] 포인터 변수에 번지 할당


태스트 : Visual Studio 2008

#include <Stdio.h>

main()
{

 int imsi;
 int *imsip;

 printf("[1. Address]\n");
 printf("IMSI : %#010x\n", &imsi);
 printf("*IMSIP : %#010x\n", imsip);

 imsip = &imsi;

 printf("[2. Address]\n");
 printf("IMSI : %#010x\n", &imsi);
 printf("*IMSIP : %#010x\n", imsip);

}

결과 :

[1. Address]
IMSI : 0x0012ff60
*IMSIP : 0xcccccccc
[2. Address]
IMSI : 0x0012ff60
*IMSIP : 0x0012ff60

반응형

+ Recent posts