2010. 6. 4. 10:58

우분투 10.04 설치 후 만져주기

http://myubuntu.tistory.com/entry/1004-설치하고-나서-바로-찾는-무른모

우분투 좋다.

몇개만 해결하면 데탑으로 써도 될 정도로 맘에 든다.
2010. 5. 17. 15:47

EXPORT_SYMBOL_GPL vs EXPORT_SYMBOL

http://techrepublic.tistory.com/60

위 두 define 문 때문에 반나절을 날렸다.
분명 커널에 built-in 으로 들어있고 /proc/kallsyms 에도 나오는 심볼인데,
모듈을 로드하면 Unknown symbol 이라는 메시지만 찍고 모듈 로딩에 실패했다.

==========================================================================================
# grep usb_alloc_urb /proc/kallsyms
802704b0 T usb_alloc_urb
803f6014 r __ksymtab_usb_alloc_urb
803f96cc r __kcrctab_usb_alloc_urb
80403d70 r __kstrtab_usb_alloc_urb

#insmod wireless.ko
wireless: Unknown symbol usb_alloc_urb
wireless:  Unknown symbol usb_free_urb
wireless: Unknown symbol usb_register_driver
wireless: Unknown symbol usb_submit_urb
wireless: Unknown symbol usb_deregister
wireless: Unknown symbol usb_kill_urb
insmod: cannot insert `wireless.ko': Unknown symbol in module (-1): No  such file or directory
===========================================================================================

이유는 GPL License 때문이었다.
로딩하려는 모듈이 GPL License 가 표시되지 않았었고, 이 모듈에서 사용하는 Symbol 이
EXPORT_SYOBOL_GPL로 export 되어있었기 때문에 이 모듈은 사용할 수 가 없었던 것이다.

위 wireless.ko는 2.6.24 버전 커널에서는 문제 없이 사용되었는데, 2.6.28 에서는 위의 문제가 생겼다.
USB Subsystem 이 2.6.25 버전 부터는 GPL License 모듈에만 Symbol을 export 하도록 변경되었던 것이다.

결론은 EXPORT_SYMBOL로 export 된 symbol은 GPL License 가 아닌 모듈도 사용할 수 있지만,
EXPORT_SYMBOL_GPL로 export 된 symbol은 GPL License 가 아닌 모듈은 사용할 수가 없다.
2010. 1. 26. 22:18

VirtualBox 가변크기 가상디스크 용량 줄이기

http://kldp.org/node/111100

자세한 링크는 원문에도 있지만


여기를 보면 되겠다(나도 안봤다)

정리하면,

Guest OS가 윈도우 계열 OS인 경우

1. 윈도 켜고
2. 조각모음
3. http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx
sdelete -c c:
4. 윈도 끄고
5. VboxManage modifyvdi /path/to/your/VM.vdi compact

유닉스 계열인 경우

cat /dev/zero >./tmp(dd 명령으로도 가능)
sync
rm ./tmp
sync

하면 되겠다. 지금 하고 있다.

약간 첨언하면, VirtualBox에서 가변 크기 디스크로 만들면 처음엔 쓰는 만큼만 디스크 용량을 차지한다.

그런데 대용량으로 파일을 지우면, 그만큼 줄지(shrink) 않는다.

왜냐하면 지워도 데이터가 남으니까...

윈도우도 그렇고 리눅스에서 하는 방법은 그래서 남는 하드 공간 클린하는거라고 보면 되겠다.

tmp라는 파일이 안에 데이터가 0이면서 디스크 풀 될 때까지 돌고 지우고 sync 때리는 거다.

지금하고 있는데, 80기가 할당 중, 5.5기가 외에 모든 용량을 돌고 있다.

시간도 한참되었고-_- PC가 느려져서 죽을맛....

출장 및 내일 교육 준비로 파일을 옮기려는데, vdi(가상 디스크 파일)이 80기가가까이 되나서...

줄이고 있다... 젠장

그냥 옮기려고도 했는데 망할 노트북이 나눠놓은 파티션 둘다 80기가가 안된다.
(합치면 되지만)

그래서 이래저래하는중... 지금 글쓰러 진입하기까지도 힘들었다... 18기가 남았네

--> 충격과 공포... 2번 try했는데 2번다 실패... 안되자나!!!!


2010. 1. 7. 15:22

Fedora에서 소프트웨어 개발 패키지 추가...

왜 GUI로 Add/Remove Software를 막아놓은 것이냐-_-

페도라10 서버 받아서 셋팅중인데 결정적으로

초기에 소프트웨어 개발을 추가안한듯 아놔

답은 아래와 같이 하면 될듯?

yum install gcc
yum groupinstall 'Development Tools'

+ 그러고도 실제 빌드가 성공하기까지는 무수히 많은 devel 패키지를 yum install 했다는 후문....
2009. 11. 13. 10:06

리눅스 커널 이미지의 구조

http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/kernel-image-file-structure.html

2.2. 커널 이미지 파일의 구조

이미 커널을 컴파일 해본 사람은 최종 커널 이미지 파일이 압축되어 있단 것을 알 수있을 것이다. [1]이제 LILO가 메모리에 커널을 읽어 올리고 실행해 주기 까지의 과정을 살펴볼 것이다.

그에 앞서 커널 이미지 파일의 구조에 대해 먼저 알아본다. 구조를 알아야 LILO가 커널을 어떤 식으로 부팅하게 해주는지 이해가 빠를 것이다.

zImage나 bzImage나 구조는 같다. 단지 메모리에 올려지는 위치나 동작 방식이 약간 차이가 있기 때문에 이것이 감안된 각각에 맞는 코드가 사용될 뿐이다.

그림 2-2. bzImage의 구조

그림 2-2에서 회색 부분이 진짜 리눅스 커널이고 압축되어 있는 상태다. 여기에 압축을 풀어주기 위한 'head + misc'가 앞부분에 붙어 있고 다시 이 한 덩어리의 이미지에 메모리에 올려진 커널의 압축이 제대로 풀리도록 미리 준비하는 "setup"과 부팅할 때 사용되는 "bootsect"가 붙어 최종 커널 이미지 파일을 만든다.

bbootsect나 bsetup의 앞에 붙은 b는 bzImage의 앞에 붙은 b와 같은 의미로 "big kernel"을 의미한다. bbootsect는 플로피로 부팅될 때 즉 부트로더가 없이 커널이 직접 읽혀져 부팅될 때 필요한 부트 섹터다. lilo에 의해 부팅되는 경우는 필요 없는 부분이다.

2.2.1. 커널의 부팅

lilo에 의해 부팅이 시작되면 LILO는 bzImage를 하드 디스크에서 읽어 메모리에 올려 놓고 LILO에 의한 부팅일 경우 필요 없는 bbootsect를 건너뛴 bsetup에서부터 실행되도록 해준다. LILO의 역할은 bsetup에 실행 권을 넘겨주는데 까지다.

실행된 bsetup은 메모리 세팅을 마치고 압축된 커널 이미지의 압축을 풀기 위한 코드로 실행을 옮긴다. "head + misc"로 표시된 부분이고 이곳이 실행되면 piggy.o는 압축이 풀려 실행 가능한 리눅스 커널이 메모리에 존재하게 된다. 압축이 풀릴 때 화면에 "Uncompressing Linux... "란 메시지가 출력된다.

그러나 압축이 풀렸다고 해서 바로 커널을 실행하는 것은 아니고 메모리 낭비를 막기 위한 정리를 한번 다시 하고 나서 커널이 실행된다. 압축이 풀리고나면 처음 LILO에 의해 읽혀진 커널 이미지는 필요 없게 된다. 그러므로 이 부분을 내버려두면 그만큼 메모리 낭비이므로 압축 풀린 커널 이미지를 옮겨와 되도록 많은 메모리를 사용하도록 한 후 커널을 실행해 준다. 커널이 실행되기 시작하면 "ok, booting the kernel."이 출려되고 커널에 의한 출력이 화면에 나타나게 된다.

2.2.2. zimage와 bzImage의 차이

zimage와 bzImage는 무슨 차이가 있는걸까? 필자는 처음에 z와 b의 의미 때문에 gzip으로 압축하거나 아니면 bzip2로 압축한 것의 차이인줄 알았지만 압축은 gzip으로 같고 단지 z는 압축했단 의미고 b는 'big kernel'이란 뜻인걸 알았다. 왜 이렇게 나눠졌는가?

이미 1.7절에서 언급했던 것 처럼 커널의 크기가 너무 커서 압축 후에도 일정 크기를 넘어가면 zImage 대신 bzImage를 사용해야한다고 했는데 이유는 다음과 같다.

pc가 처음 만들어질 땐 OS로 도스가 사용됐고 이 때 M$의 유명한 분이 640KB면 충분하다고 했단 소릴 들은적이 있을 것이다. 처음 PC가 만들어질 때의 CPU는 8086으로 16bit CPU 였다. 이 프로세서가 지원하는 최대의 메모리는 1MB였기 때문에 모든 어드레스 스페이스가 1MB 내로 제한됐다. 그러므로 램을 640kb 사용하고 나머지 영역엔 MGA, VGA와 같은 다른 디바이스를 할당해 줬다.

문제는 여기서 시작되는데 AT시절의 PC 기본 구조는 현재까지도 계속 유지되고 있기 때문에 PC가 처음 부팅되면 하위 1MB 만을 사용한다고 생각하면 된다. 보호모드라고 알고 있는 386 이상의 cpu가 가진 기능을 사용하지 않고 리얼모드란 8086 호환 모드를 사용하기 때문인데 이는 OS가 보호모드를 사용할 상태를 만들고 전환하기 전까지는 계속 리얼모드로 남아있기 때문이다.

리눅스 커널의 크기가 커서 커널을 읽어들이는 프로그램 크기나 시스템에서 사용되는 약간의 메모리를 제외한 나머지 램의 빈공간에 읽어 들이지 못하면 하위 1MB가 아니라 그 이상의 연속된 메모리에 커널을 읽어 들이고 압축을 푸는 등의 일을 해야할 것이다. 반대로 남은 용량에 커널이 들어갈 수 있다면 당연히 읽어 들이고 압축을 풀면 끝날 것이고...

이렇게 메모리에 처음 적재되고 압축 풀리고 하는 절차와 위치가 다르기 때문에 zImage와 bzImage오 나뉜 것이고 커널 이미지 파일의 앞부분 bootsect와 setup이 각각에 따라 맞는 것으로 합쳐지게된다. 그리고 bzimage의 경우 하위 1M는 사용하지 못하는데 리눅스에선 그렇다!

컴파일 단계에서 make zImage 했을 경우 System is too big. Try using bzImage or modules. 라고 에러가 난다면 더 많은 부분을 module로 만들거나 bzImage를 사용해야한다.

주석

[1]

zImage, bzImage 등에서 z가 의미하는 것이 gzip으로 압축됐단 것이다.

2009. 11. 9. 09:13

Linux용 UltraEdit..

곧 MacOS X용도 나온다고...


ue-for-ubuntu.pngue-for-fedora.png 

ue-for-opensuse.png ue-for-redhat.png 

2009. 10. 1. 10:39

LCD4Linux

2009. 9. 15. 18:23

리눅스에서 윈도우 공유 폴더 접근하기

사용자 삽입 이미지

1) [탐색기-도구-폴더옵션-보기] 에서 '모든 사용자에게 동일한 폴더 공유 권한을 지정(권장)' 항목의 체크를 지운다.


사용자 삽입 이미지

2) [제어판-관리도구-컴퓨터관리-시스템 도구-로컬 사용자 및 그룹-사용자] 에서 오른쪽 버튼을 눌러 새사용자를 추가한다.
*다음 로그온할 때 반드시 암호 변경'항목의 체크를 지우고 '암호 사용 기간 제한 없음'에 체크한다.

 
사용자 삽입 이미지

3) 탐색기에서 C:\에 대고 [오른쪽 마우스버튼 클릭-공유및보안선택-이 폴더를 공유함-새 공유 선택]
*공유 이름(꼭 기억)과 허용인원을 지정한후 확인
*밑에 밑에 있는 '사용권한'을 클릭한다.  Everyone은 제거하고 추가를 눌러 2)에서 지정한 ID를 '선택할 개체 이름 입력'에 입력한다. 확인을 누르고  '모든권한'을 부여하고 확인누름.


4) 리눅스에서 삼바 클라이언트 패키지가 설치되어 있나 확인한 후,
% mkdir /mountpoint
% smbmount '\\호스트IP주소(or Domain name)\공유이름(3번에서 기억하라고 한것)' /mountpoint -o username=xxx,password=xxx
예) %  smbmount '\\143.248.141.227\main' /mountpoint -o username=vampire,password=xxxx


4-1) samba 3.0.11이상 부터는 smbmount를 지원 하지 않으므로 다른 방식 사용
 mount -t auto -o username=rtuser,password=tlftlrks //10.22.11.218/share /mnt/share



작성 : 20070804 by 임헌정
참고 : 네이버 카페 [낙시군의 이야기]
http://www,4ellene.net
2009. 9. 2. 16:44

putty에서 한글 쓰기 (페도라 코어 10)

그간 솔라리스나 여타 리눅스 사용 시,

진리의 putty가 한글에서 많은 삽질을 했다.
(그나마 이전 버전엔 관련 버그도 있었나보네)

그래서 캐릭터셋 바꾸고 어쩌고 해서 putty에서 한글이 되도록 했는데

이럴 땐 또 실제 터미널 갔을 때 한글이 안될수도...

별 불편없이 대충 써왔는데,

다른 설정 바꾸지 않고 클라이언트만 바꿔서 해결하는 방법이 있다!!

http://kldp.net/frs/?group_id=335

한글 Putty 프로젝트.. 일부러 오리지널 영문만 썼는데 이런데 쓰라고 만들고 있었군-_-

옵션에서 창-변환 에서 수신한 데이터를 이 문자셋으로 가정 에서 유니코드로 한다.

혹은 접속한 창의 왼쪽상단을 클릭하면 "유니코드로 전환"을 해도 되겠다.

하지만 이건 매번 해야하니..

페도라 코어10을 까니 기본으로 ko_KR.UTF-8 이다. 이거 안바꾸고 푸티만 바꿔서 해결하는거다.


2009. 4. 9. 10:08

Linux에서 I/O Scheduler 변경

http://www.cyberciti.biz/faq/linux-change-io-scheduler-for-harddisk/

http://www.redhat.com/magazine/008jun05/features/schedulers/

술 퍼먹고 정신 맹한 다음날 유유자적하게 지식 검색들...

SSD에 좋다는 MFT 라는 것도 알게 되고...

므흣한 지식의 습득!