OS/Linux2009. 9. 1. 18:08

1. 커널 버젼 확인법(console 모드에서 입력)

  1) cat /proc/version

  2) uname -r

  3) head /usr/src/linux~(해당 리눅스버젼 디렉토리)/Makefile : Makefile 상단 10줄내에 있는

      버젼내용을 출력하는 명령

  4) kernelversion

 

 

2. 2.4모듈 커널 리빌딩(컴파일) 순서

  1) rm -rf linux : 이전에 사용하던 심볼릭 링크를 지우는 명령

  2) ls -s /project/kernel/linux-2.4.21/ linux

  3) make mrproper : 기존의 의존성을 모두 제거해 주는 명령

  4) make menuconfig : 커널의 환경 설정

  5) make dep : 커널 소스를 구성하는 화일들간의 의존성을 점검

  6) make clean : 과거의 object화일이나 소스화일들을 지우는 명령

  7) make bzImage : /usr/src/linux~(해당리눅스 버젼)/arch/i-386/boot에 bzImage화일을 생성

  8) make modules : 커널의 일부기능을 module로 컴파일 했을 경우모듈의 구성요소를

      커널에 알려준다.

  9) make modules-install : 커널에 이 모듈을 올려준다.

 10) bzImage를 /boot폴더에 복사한다. 이때 이름은 바꾼다. ex) vmlinuz-2.4.18-test...

 11) System.map을 /boot폴더에 복사한다. 이때 이름도 바꾼다. ex) System.map-2.4.18-test

 12) /boot/grub/grub.conf화일또는 lilo화일을 바꾼다.
      ex) title lee's kernel 2.4.21v (2.4.21) : 자기가 명시한 타이틀
           root (hd0,0)                        :
           kernel /vmlinux-2.4.21-test ro root=/dev/sda2 vga=788
                                               : bzImage를 바꾼 이름에 기존 프로그램 내용을 그대로
           initrd /initrd-2.4.18-4.img         : 처음 프로그램설치시에 있는 내용과 동일하게

 

 

3. ctags 사용

  1) 전제조건 : ctags가 설치되어 있어야 한다.(대부분 rpm화일을 다운받아 설치)
                     설치여부 확인하는 법은 rpm -q 해당프로그램명(여기서는 "ctags")
 

  2) 이용목적 : 특정 디렉토리내에 있는 화일이나 디렉토리를 쉽게 찾기 위해

                     (서브디렉토리까지 검색)

  3) 이용방법
     (1) 명령을 실행하고자 하는 폴더로 이동후 "ctags -R"을 입력(서브디렉토리를 포함하여

          index 테이블을 만든다.)
         # 이때 해당폴더에 tags라는 인덱스역할을 하는 화일이 생긴다.

     (2) "vi"로 비어있는 편집기를 연다.

     (3) 명령모드에서 ":tf 찾고자 하는 단어 입력"(이때 해당 단어를 포함하는 번호와

          화일목록이 나온다.)

     (4) 해당화일을 스페이스바(한페이지씩 넘기기) 또는 방향키(한줄씩 내리기)를 이용하여
         천천히 검색후 찾았을때 ESC키를 누른후(이때 맨아랫줄에 'Enter nr~'이라는 글씨가

         생긴다.) 해당번호를 입력

     (5) 보던 화일중에 다시 다른 화일을 보고자하면 해당화일 이름위에 커서를 놓고

          Ctrl + 'w' + 'f'를 하면 해당화일이 화면이 분할되면서 생긴다.

          커서 이동은 Ctrl + 'w' + 방향키이고, 닫고싶은 화면창이 있으면 
          커서를 해당창으로 옮긴후 명령모드에서 ':' + q로 닫는다.
         # 화일이 아닌 특정단어로 찾기를 하려면 해당 단어에 커서를 놓고 Ctrl + ']'로 이동하고,
           원위치는 Ctrl + 't'키를 이용한다.

 

4. vi 편집기에서의 활용팁

  1) 가로로 편집창 나누기 : 명령모드에서 :Ctrl + 'w' + 's'

  2) 세로로 편집창 나누기 : 명령모드에서 ':' + '숫자'(컬럼수) + 'v' + 's'

  3) 해당 편집창으로 이동 : Ctrl + 'w' + '방향키'
      # 단, 창은 나누어져 있지만 글씨를 써보면 모든쪽에 글씨가 써진다.
         이를 해결하기 위해 명령모드에서 ':'+'e'(불러오기) + 화일명을 써서 다른화일명으로

         분할시킨다.

  4) 특정화일을 해당 문서에 삽입(끼워넣기)
     (1) 해당화일의 첫째줄에 삽입 : 명령모드에서 ':' + '$'(시작을 나타냄) + 'r' + '화일명'

     (2) 해당화일의 마지막줄에 삽입 : 명령모드에서 ':' + '0'(끝을 나타냄) + 'r' + '화일명'

     (3) 특정부분에 삽입 : 커서를 삽입할 장소에 옮긴 후 명령모드에서 ':' + 'r' + '화일명'

  5) 특정화일을 해당 편집기로 불러오기 : 명령모드에서 ':' + 'e' + '화일명'

  6) 블록설정 : 명령모드에서 shift 또는 Ctrl + 'v'를 누른후 방향키로 블록설정
     (v는 대소문자 각기 다른 특성을 지닌다.)
     # 명령모드에서 shift + 'V' 또는 'V': 커서를 기준으로 블록이 생긴다.
     # 명령모드에서 shift + 'v' 또는 'v': 라인별로 블록이 생긴다.
     # 명령모드에서 Ctrl + 'v' 또는 'V': 현재커서를 기준으로 사각형처럼 블록이 선정된다.

     (1) 해당블록을 한줄로 접기 : 접을 부분을 위의 블록설정 기능을 이용하여 블록설정후

                                             명령모드에서 Ctrl + 'z' + 'f'

     (2) 접혀진 부분을 다시복원 : 접혀진 부분의 해당줄위에 커서를 이동시킨후 명령모드에서

                                             Ctrl + 'z' + 'o'
     (3) 특정괄호부분을 한줄로 접기 : 접고자 하는 부분의 마지막 괄호에 커서를 이동시킨후

                                                   'v'를 이용하여 visual모드로 만든후 '%'를 누르면

                                                   커서에 있는 괄호와 대응하는 괄호사이가 블록설정된다.

                                                   여기서 'z' + 'f'를 차례로 누르면 접힌다. 

                                                   복귀는 'z' + 'o'를 차례로 누른다.

  7) vi에디터에서 shell명령어 사용
     (1) 명령모드에서 ':' + '!' + 명령어

     (2) 명령모드에서 Ctrl + 'z'을 누르면 해당화일을 임시화일에 저장하고 프롬프트 상태로

          빠져나온다. 프롬프트 상태에서 작업을 완료후에는 'fg'명령어를 내려 기존 편집기로 이동.

  8) 열려있는 소스화일의 줄간격이 맞지 않을때 정렬시키는 방법
     (1) 정렬하고자 하는 내용의 블록을 선정

     (2) '='를 누른다.

  9) vi에디터에서 shell명령어 사용
     (1) 명령모드에서 ':' + '!' + 명령어
     (2) 명령모드에서 Ctrl + 'z'을 누르면 해당화일을 임시화일에 저장하고 프롬프트 상태로

          빠져나온다. 프롬프트 상태에서 작업을 완료후에는 'fg'명령어를 내린다.

          기존 편집기로 들어간다.

 10) 편집기 내에서 특정화일을 도스시절 'Mdir'이나 'LS'프로그램의 방향키와 엔터키를

      이용하여 열기
     (1) 명령모드에서 ':' + 'sp ./'를 입력
     (2) 방향키를 이용하여 이동하고 해당 디렉토리 위에서 엔터를 치면 해당 디렉토리내로

          이동하며 해당화일에서 엔터를 치면 해당화일을 열수 있다.
     (3) 중간에 빠져나오려면 명령모드에서 ':' + 'q'를 이용하여 빠진다.
 11) vi환경설정하기 : 계정홈에 .vimrc 또는 .exrc화일을 만들고 다음 내용을 추가한다.
          set autoindent : 자동 들여쓰기 설정
          set noautoindent : 들여쓰기 제거
          set cindent : 자동 들여쓰기 설정
          set smartindent : 자동들여쓰기 설정
          set list : 문단 조판부호 보기(nolist는 조판부호 감추기)
          set window=30 : 한 화면당 행의 갯수 30개로 지정
          set ignore case : 검색시 대소문자 구별 제거
          set bf : 입력하는 동안 모든 제어문자를 무시(디폴트는 nobf)
          set exrc : 홈디렉토리가 아닌곳에 .exrc화일이 존재하는 것을 인정
          set ht='숫자' : 하드웨어 탭을 위한 범위 설정
          set nobackup : 백업화일 생성해제
          set shiftwidth=4
          set tabstop=4 : 탭키 이동 간격 조정
          set ruler : 하단에 메세지 출력
          set visualbell : 에러발생시 소리나는 것을 해제
          set backspace=indent,eol,start : 백스페이가 먹지 않을때 설정
          set nu : 라인마다 줄번호 보여주기
          set all : 현재 설정된 vi모든값 보기

 12) vi운용중에 문서의 맨앞 또는 맨뒤로 이동 : 명령모드에서 소문자 'gg'(맨앞으로 이동),

      대문자'G'(맨뒤로 이동)
 13) 문서의 화일명 위에서 해당 화일로 이동하기 : 명령모드에서 'gf'
 14) 이전에 열었던 문서로 복귀 : 명령모드에서 : b + 숫자(버퍼에 있는 곳으로 이동)

5. LINUX 기본명령어중 필수 옵션

 1) mkdir -p : 중간에 없는 폴더라도 만들어준다.
                    ex) 루트폴더에서 /aaa/bbb/ccc폴더를 만들려고 하나 중간에

                          /aaa와 /bbb가 모두 없을때 -p옵션사용
 2) rm -irf : i는 화일지울때마다 물어보기, r은 서브디렉토리 내용까지 모두 지우기,

                f는 강제로 지우기
 3) cat /proc/filesystems : 현재 리눅스커널에서 지원하고 있는 화일시스템을 보여준다.
 4) etc/motd 편집 : 최초 부팅시 메시지 또는 문자로 그림을 그리면 로그인했을때 해당 내용을

                           사용자 화면에 뿌려준다.
 5) root디렉토리에서의 .bashrc화일에서 alias명령활용하여 자주가는 디렉토리 이동또는

     자주쓰는 명령을 등록하기
      : 특정디렉토리로 이동할 경우 긴 디렉토리명을 치다보면 짜증날때가 간혹있다.

        이럴경우 긴명령어를 alias를 이용하여
        숨긴화일인 .bashrc에 등록하면 쉽게 간단한 약어로 사용할 수 있다.
     (1) /root로 이동후 vi편집기로 해당 화일 열기(vi .bashrc)
     (2) alias 명령어로 긴줄의 명령어를 한두단어로 만든다.
          ex) alias gogo='cd usr/src/linux-2.6.9-11.19AX'
                : 콘솔모드에서 /에서 'gogo'를 입력시에 해당디렉토리로 바로 이동할 수 있다.
 6) 경로설정을 담당하는 화일 : /root/.bash_profile(해당 path 원하는 경로명 추가 가능)

 7) iso화일을 mount시켜 활용하기
     (1) mount -t iso9660 -o loop /a.iso(화일명및 경로) /mnt/cdrom(마운트 시킬 위치)

'OS > Linux' 카테고리의 다른 글

/dev/null  (0) 2009.09.25
ulimit 제한 설정 변경 [ 코어생성 ]  (0) 2009.09.22
bash: /dev/null: Permission denied 에러 대처방법  (0) 2009.06.02
Linux server security [1]  (0) 2009.06.01
Linux Server Security [2]  (0) 2009.06.01
Posted by 몽센트