2011년 1월 1일 토요일

linux 기본 명령어 (1)

1. ls
   - dos시절에 사용하던 dir처럼 현재 디렉토리네의 내용을 보여준다.
   - ls [옵션] [디렉토리 | 파일]
   - 옵션  : -l : 파일 크기, 저장 날짜, 허가권, 소유권등을 포함하여 자세히 보기
                -a :마침표로 시작하는 숨겨진 파일을 포함한 모든 파일 보여주기
                -t:시간 순서대로 정렬해서 보기
                -R:하위 디렉토리의 파일까지 재귀적으로 보여주기

2. pwd
  - Print Working Directory로 현재 작업중인 디렉토리를 확인할 때 사용한다.

3. cd
  - 디렉토리를 이동
  ex) cd ~ : 자신의 홈 디렉토리
        cd ~ 계정이름 : 다른 사용자의 홈디렉토리
        cd. : 현재 디렉토리
        cd..: 상위 디렉토리
        cd-: 바로 직전에 사용한 디렉토리

4. cat
   - 텍스트 파일의내용을 출력한다.
   ex) cat hello.tet

5. more 
   - 텍스트 파일의 내용을 화면에 한 페이지씩 출력한다.

6. cp
   - 파일이나 디렉토리를 복사
   - 형식 : cp 옵션 소스파일 타켓파일
   -  옵션 : -f 강제 복사, 복사할 타켓 파일이 존재해도 무시하고 복사
                -i : 대화형 복사, 파일 복사 전에 복사 여부를 확인
                -r:재귀적으로 실행, 파일을 복사할때 하위 디렉토리를 포함해 모든 파일을 복사

7. mv
  - 파일이나 디렉토리 이름을 변경하거나 위치를 이동
  - 형식 : mv 옵션 소스파일 타켓파일
   - 옵션 : -f 강제 이동, 이동할 타켓 파일이 존재해도 무시하고 이동
               -i: 대하형 이동, 이동하기 전에 이동 여부를 확인
8. rm
  - 파일을 삭제
  - 형식 : rm 옵션
  - 옵션 : -f : 강제 삭제,바로 삭제
              -i:  대하형 삭제, 파일 삭제 전에 삭제 여부를 확인
              -r : 재귀적으로 실행, 파일을 삭제할때 하위 디렉토리를 포함해 모든 파일을 삭제

9. mkdir
  - 디렉토리를 생성 . 생성된 디렉토리는 명령어를 수행한 사용자의 소유가 됨.

10. rmdir
  - 디렉토리를 삭제

11. chmod
  - 허가권(permission)을 변경
  - 형식 chmod 파일명

12. gzip
  - 파일을 압축한ㄷ.

13. gunzip
  - .gz로 압축된 파일의 압축을 푼다.

14. tar
  - 파일이나 디렉토리를 하나로 묶거나 푼다.
  - 옵션 : -c 하나의 파일로 묶기
              -x: 묶인 파일 풀기
              -v: 파일을 묶거나 풀때 진행 과정을 자세히 보여줌
              -f:묶음 파일명, tar 명령어를 사용할때 반드시 사용
              -z: gzip과 관련하여 압축/복원을 동시에 수행

15. su
  - 현재 로긴되어 사용하는 사용자를 변경한다.

16. clear
  - 화면을 지움







tar 명령어

출처 Always Mission.. | 쓸쓸잔디
원문 http://blog.naver.com/dreami79/60046032839

Linux Shell Programming (2/2)

출처 Wind's Lair | 화무
원문 http://blog.naver.com/freerf/33535172

Linux Shell Programming (1/2)

출처 Wind's Lair | 화무
원문 http://blog.naver.com/freerf/33535147

kernel 컴파일

출처 wzblue님의 블로그 | 암흑햏자
원문 http://blog.naver.com/wzblue/10011487808
1. 커널(kernel) 컴파일
         └─> ┌ H/W의 정보
                     └ OS의 기능


2. linux 커널 버전의 의미
   2.    6.     9
  │    │    └─> 패치버전
  │    └─> 중분류 -> 홀수 : 시험버전,    짝수 : 안정버전
  └─> 대분류


3. 커널버전 파악
[root@lace ~]# uname -a
Linux lace.ace.net 2.6.9-71hs #1 Tue Nov 9 14:42:13 KST 2004 i686 i686 i386 GNU/Linux
[root@lace ~]# ls /boot
System.map-2.6.9-71hs grub                  vmlinuz-2.6.9-71hs
config-2.6.9-71hs      initrd-2.6.9-71hs.img
[root@lace ~]#


4. 커널 컴파일 방법
   1) 커널 source download
         => www.kernel.org
                ┌ 커널 : linux ... ...
                └ 패치 : patch ... ...
         download후 파일을 /usr/src로 이동

   2) 압축 해제  => 압축을 푼 디렉토리로 경로 이동
[root@lace ~]# cp linux-2.6.19.tar.gz /usr/src
[root@lace ~]# cd /usr/src
[root@lace src]# ll
합계 52576
drwxr-xr-x   7 root root     4096 11월  8 11:49 Haansoft
-rw-r--r--   1 root root 53768961 12월  5 10:11 linux-2.6.19.tar.gz
drwxr-xr-x  19 root root     4096 11월  8 11:59 linux-2.6.9-71hs
[root@lace src]# tar xvzf linux-2.6.19.tar.gz              ===> 파일 압축해제
       ... ... 
linux-2.6.19/usr/gen_init_cpio.c
linux-2.6.19/usr/initramfs_data.S
[root@lace src]# ll
합계 52584
drwxr-xr-x   7 root root     4096 11월  8 11:49 Haansoft
drwxr-xr-x  19 root root     4096 11월 30 06:57 linux-2.6.19
-rw-r--r--   1 root root 53768961 12월  5 10:11 linux-2.6.19.tar.gz
drwxr-xr-x  19 root root     4096 11월  8 11:59 linux-2.6.9-71hs
-rw-rw-rw-   1 root root       52 11월 30 06:57 pax_global_header
[root@lace src]#        
            ※ changes 파일 보기 => 컴파일에 필요한 프로그램 정보
[root@lace src]# cd linux-2.6.19
[root@lace linux-2.6.19]# ll
[root@lace linux-2.6.19]# vi Documentation/Changes

[root@lace linux-2.6.19]# rpm -qa|grepgcc               ===> 현재 자신의 gcc버전 확인
libgcc-3.4.1-7
compat-gcc-c++-8-3.3.4.2
gcc-gnat-3.4.1-7
compat-gcc-8-3.3.4.2
gcc-3.4.1-7
gcc-g77-3.4.1-7
gcc-objc-3.4.1-7
gcc-c++-3.4.1-7
[root@lace linux-2.6.19]# 

   3) 커널 환경 설정
         ┌ makeconfig             ┐        콘솔환경
         │ make menuconfig   ┘
         │ make xconfig
         └ make gconfig
[root@lace linux-2.6.19]# make gconfig        ===> 이 곳에서 설정을 하거나 다른사람이 만들어 놓은
                                                        설정 파일(.config => make oldconfig)을 복사해서 사용하여도 된다.

   4) 커널 생성(커널 컴파일)
[root@lacelinux-2.6.19]# makebzImage               ===> arch/i386/boot/bzImage
[root@lacelinux-2.6.19]# make modules                  ┐ ==> /lib/modules/버전
[root@lace linux-2.6.19]# make modules_install       ┘

   5) 커널 설정 후 재부팅
[root@lace~]# makeinstall                       ===> bzImage  => /boot/vmlinuz
                                                                                system.map =>/boot/System.map
                                                                                /etc/grub.conf

   6) 재부팅 하면 처음 시작시 grub에 windows와 linux 2.6.9버전과 linux 2.6.19버전 3가지가 나온다.

   7) error시에는 make clean 후 다시 시작한다.
[root@lace ~]# make clean

samba 서버

출처 wzblue님의 블로그 | 암흑햏자
원문 http://blog.naver.com/wzblue/10011438215
1. samba의 역할
  1) 리눅스 파티션과 마이크로소프트 윈도우와의 공유
  2) 윈도우와 리눅스 파티션과의 공유
  3) 리눅스 프린터와 윈도우와의 공유
  4) 윈도우의 프린터와 리눅스와의 공유

2. samba 구축

  1) 설치 확인
[root@lace ~]# rpm -qa | grep samba
samba-common-3.0.7-3hs
samba-client-3.0.7-3hs
samba-3.0.7-3hs
[root@lace ~]#

  2) /etc/samba/smb.conf 편집
[root@lace ~]# vi /etc/samba/smb.conf
    15 [global]
    18    workgroup =MYGROUP                   ===> 윈도우의 작업 그룹명
    21    server string = SambaServer          ===> 서버에 대한 문자열, 즉 설명문
    30 unix charset = CP949                            ===> 한글을 사용하겠다.
    31 dos charset = CP949                             ===> 일어는 cp932
    32 display charset = CP949
    35 passdb backend = smbpasswd                   ===> 삼바계정이 만들어 지는 곳
    42    hosts allow = 192.168.1. 192.168.2. 127.  
===> 삼바서버에 접속을 허용할
                                                컴퓨터의 IP주소 또는 네트워크 주소또는 컴퓨터 이름

    46    printcap name =/etc/printcap           ===> 프린터 정보가 들어있는 파일
    47    load printers =yes                        ===> 프린터를 사용할 수 있다.
    56   guest account =nobody                 ===> 손님계정 설정 
    60    log file = /var/log/samba/%m.log  ===> 삼바 서버에 접속하는 컴퓨터 접속 기록 파일
    65    max log size =50            ===> 50kb까리 로그파일 생성 가능
    69    security = user
   ===> share : 인증작업이 틀려도 들어올 수 있다.
                                        / user: 인증작업후 계정과 암호가 맞아야 만 한다.
                                        /domain : 같은 도메인 만이 들어올 수 있다.
                                  /Server : 2000이나 2003서버의 비번을 이용한 방법을 사용할 경우
    71 ;   password server = <NT-Server-Name>      ===> 위에서 server를 선택할 경우 사용
    81   encrypt passwords =yes       
==> 윈도우 계정과 리눅스 계정의 암호체계를
                                                          똑같이 만들어 준다.

  213 #====================== Share Definitions=====================       
              ※ 공유 옵션               
path = 디렉토리 : 공유디렉토리                        comment = 설명문 : 공유 설명
browseable = yes / no : 표시유무                     
writable = yes / no : 쓰기 권한 유무         ==        readonly = yes / no
public = yes / no : guest 허용 유무        ==        guest ok = yes / no
valid users = 계정명 ... : 공유 허용계정              printable = yes / no : 프린터 공유 유무
wirte list = @그룹명 : 그룹만 쓰기 허용               create mask = 권한 : 파일 생성 권한
directory mode = 권한 : 디렉토리 생성 권한
         ===> [공유이름]  옵션 = 값
  222 [etc]
  223 path = /etc
  224 public = no
  225 valid users = kim
  226 writable = no
  227 [work]
  228 path = /work
  229 public = yes
  230 writable = yes
  231 create mask = 0644
  232 directory mode = 0755
[root@lace ~]#

  3) samba 서비스 가동
[root@lace ~]# service smb start
StartingSMBservices:                                    [  OK  ]
Starting NMBservices:                                    [  OK  ]
[root@lace ~]#

  4) samba 계정 생성 및 samba 암호 변경
       smbpasswd -a계정명                   ==> /etc/samba/sabpasswd
                                └─> linux 계정
[root@lace ~]# smbpasswd -a kim
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created.
Added user kim.
[root@lace ~]# smbpasswd -a nobody
New SMB password:
Retype new SMB password:
[root@lace ~]# vi /etc/samba/smbpasswd
kim:500:B757BF5C0D87772FAAD3B435B51404EE:7CE21F17C0AEE7FB9CEBA532D0546AD6:[U      ]:LCT-4573860B:
nobody:99:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:[U       ]:LCT-45738859:
[root@lace ~]#
          암호만 변경시 -> smbpasswd samba 계정
  5) 공유디렉토리를 드라이브화
         탐색기 ─> 내 네트워크 환경 ─오른쪽버튼─> 네트워크 드라이브 연결
         \\서버IP주소\\공유디렉토리

  6) windows 공유 ─> linux사용
[root@jonghwa99 ~]# smbclient -L 58.72.218.61
Password:
Domain=[SH802-11] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

      Sharename      Type      Comment
      ---------      ----      -------
      IPC$           IPC       Remote IPC
       일어            Disk
      ADMIN$         Disk      Remote Admin
      C$             Disk      Default share
session request to 58.72.218.61 failed (Called name not present)
session request to 58 failed (Called name not present)
Domain=[SH802-11] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

      Server              Comment
       ---------            -------

       Workgroup            Master
       ---------            -------
[root@jonghwa99 ~]# smbclient //58.72.218.61/일어
Password:
Domain=[SH802-11] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
.                                  D        0  Mon Dec  412:03:04 2006
..                                 D        0  Mon Dec  412:03:04 2006
말하기교재                         D        0  Thu Nov 16 21:08:432006
중급                               D        0  Thu Nov 16 21:09:212006
초급                               D        0  Thu Nov 16 21:08:012006
초급2                              D        0  Thu Nov 16 21:09:342006

              47002 blocks of size 1048576. 25534 blocks available
smb: \> exit           ===> ftp명령 사용
[root@jonghwa99 ~]#
             ※ smbmount //서버IP주소/공유폴더

Arm Cross Toolchains 만들기

출처 찬미네 서빈이 kingseft 의 블로그입니다. | 서빈아빠
원문 http://blog.naver.com/kingseft/140021251418



Arm cross toolchain을 만드는 무수한 방법이 존재하는데..
그중에서 저도 가장 빠른시간에 편한 방법으로 하는 방법이 아래의 방법입니다.
몇개의 크로스 툴체인을 만들 필요가 있어서 작업해 보았는데..
잘 되네요...



==============================================
cross toolchain만드는 법(gcc 3.3.2 glib 2.3.2)
Last modification : 2006-01-20

출처 :  http://kernelproject.org/viewtopic.php?t=1267
  kernelproject && Embedded System Project 게시판 인덱스 -> bucks+klinux
원저자 : 고도리님.

1. crosstool-0.27.tar.gz
을 www.kegel.com/crosstool에서 받아온다.
2. 압축을 푼다.
3. 해당디렉토리로 옮겨간다.
4. ghc-arm-softfloat.sh을 만든다.
#!/bin/sh
set -ex
TARBALLS_DIR=/root/crosstool/aaa
RESULT_TOP=/opt/crosstool
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP

# Build the toolchain. Takes a couple hours and a couple gigabytes.
eval `cat arm-softfloat.dat gcc-3.3.2-glibc-2.3.2.dat` sh all.sh --notest
echo Done.

5. vi getandpatch.sh
ftp의 passive mode때문에 방화벽 밑에서 설치할 경우는 이 파일을 수정해야 한다.
getandpatch.sh 에서 wget -P 라는 넘을 wget --passive-ftp -P 로 바꿀 것.

6. sh ghc-arm-softfloat.sh
이럼 대략 한 세시간 걸려서 된다....ㅎㅎ
7. 다 된후에 경로 추가
$HOME/.bashrc에 다음과 같은넘 추가
PATH=$PATH:/opt/crosstool/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin
export PATH

그 다음에 source .bashrc 해주면 된다.
==========================================================================
수정 :  kingseft

C:\Vmware/Fedora4 에서 실험을 해보자.
1.   crosstool-0.27.tar.gz 을 www.kegel.com/crosstool에서 받아온다.
 지금 실험을 하는 시점에서는 버전업이 되었다. 아래 파일을 다운 받았다.

 http://kegel.com/crosstool/crosstool-0.38.tar.gz (tarball)
 
2. 디렉토리를 만들어 주었다.

[root@TechwinLinux /]# mkdir -p /home/kingseft/crosstool/aaa
[root@TechwinLinux /]# chmod -c 777 -R /home/kingseft/crosstool/aaa
[root@TechwinLinux /]# mkdir -p /opt/crosstool/

 
3. 해당디렉토리에서 압축을 풀고 이동한다.
 cd /home/kingseft/crosstool/aaa
 tar zxvf crosstool-0.38.tar.gz
 아래와 같은 디렉토리가 생성된다.

[root@TechwinLinux aaa]# ls -al
total 3764
drwxrwxrwx  3 root     root        4096 Oct 21 22:56 .
drwxrwxrwx  3 root     root        4096 Oct 21 22:52 ..
drwxr-x---  7 kingseft kingseft   12288 Aug  2 02:34   crosstool-0.38
-rwxrwxrwx  1 kingseft kingseft 3828943 Aug  1 17:46   crosstool-0.38.tar.gz
[root@TechwinLinux aaa]#

 해당 디렉토리로 이동한다.
 cd crosstool-0.38

4. 쉘 스크립트를 하나 만든다. 이건 현철님 스크립트를 그냥 배꼈다. ^^
 디렉토리 수정과 gcc, glibc 버젼을 원하는 것으로 바꾸어주었다. (당근 해당 버젼이 있는지 디렉토리에서 스크립트 찾아보자)
 kingseft-arm-softfloat.sh을 만든다.


#!/bin/sh
set -ex
TARBALLS_DIR=/home/kingseft/crosstool/aaa
RESULT_TOP=/opt/crosstool
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP

# Build the toolchain. Takes a couple hours and a couple gigabytes.
eval `cat arm-softfloat.dat gcc-3.3.4-glibc-2.3.3.dat` sh all.sh --notest
echo Done.

5. vi getandpatch.sh
 ftp의 passive mode때문에 방화벽 밑에서 설치할 경우는 이 파일을 수정해야 한다.
 getandpatch.sh 에서 wget -P 라는 넘을 wget --passive-ftp -P 로 바꿀 것.

 ^^ 어라. 살펴보니 이미 이제는 아래와 같이 바뀌어 있다.

 wget --tries=5 -P ${TARBALLS_DIR} -c $1 || wget --tries=5 --passive-ftp -P ${TARBALLS_DIR} -c $1


6. chmod -c 777 -R /root/
 root로 로그인 하지 말고, 일반 유저로 로그인한다음에...
 sh kingseft-arm-softfloat.sh
 자. 무엇인가 진행된다. 기다려 보자. 어휴. 회사에서 받으려니 미치겠다. ㅠ.ㅠ

 binutil을 다운받는데.. 너무 느려서 그 주소를 보고 flashget으로받으니 금방 받았다. 이 파일을 현재 디렉토리에 넣어두었다.


 다시 해보자.

 sh kingseft-arm-softfloat.sh

7. 주의할점은 root로 작업하면 안된다는 점이다. ^^

8. 잘 하다가 에러가 난다.
 arm-softfloat.dat gcc-3.3.4-glibc-2.3.3.dat  파일을 살펴보고 커널의 이름을 수정하였다.
 기존 2.4 커널에서 우리가 사용하는 2.6.13 커널로 바꾸어주었다.


BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.3.4
GLIBC_DIR=glibc-2.3.3
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.3
LINUX_DIR=linux-2.6.13  <==== 이 부분을 바꾸어 보자.

9. vi all.sh 해서
 sh testhello.sh 를 막자. 이상하게 "PATH_MAX"  가 정의되지 않았다고 나온다.

 ##sh testhello.sh 

10. 다된후에 /root/.bash_profile 에 다음을 추가한다.
PATH=$PATH:/opt/crosstool/gcc-3.3.4-glibc-2.3.3/arm-softfloat-linux-gnu/bin
export PATH  

 그런 다음에 source .bash_profile을 실행한다.

 
11. 일단 확인을 해보면..
[root@TechwinLinux ~]# arm-softfloat-linux-gnu-gcc --version
arm-softfloat-linux-gnu-gcc (GCC) 3.3.4
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@TechwinLinux ~]#

12. U-boot 을 컴파일 테스트 해보자. 잘되는 것 같다.
 Makefile 에서 아래를 수정해 주었다. ^^

ifeq ($(ARCH),arm)
## kingseft
##CROSS_COMPILE = arm-linux-
CROSS_COMPILE = arm-softfloat-linux-gnu-
endif

13. 이솝커널을 Kernel Compile을 해보자.

 잘된다. ^^
 역시 Makefile 에서

 CROSS_COMPILE = arm-softfloat-linux-gnu-

 수정한다.

 에이 귀찮다.

14. 나중에 /opt/crosstool/gcc-3.3.4-glibc-2.3.3/arm-softfloat-linux-gnu/bin 디렉토리 아래의 실행파일 이름들을 바꾸어 줄까 ^^
 arm-softfloat-linux-gnu-   이렇게 된 놈들을 arm-linux- 이런식으로 ^^

 다 바꾸어주자.
 
15. 크로스 툴체인 설치 끝.

16. 크로스 툴체인 설치방법이야.. 워낙이 다양하고 많은 방법이 있지만, 난 crosstool 이 녀석이 제이 맘에든다.
 실패할 확률도 적고... 스크립트가 잘 작성이 되어있기에.. 큰 문제없이 구동할 수 있다.

=========================================================================================

[현철님 코멘트]
arm-softfloat.dat 파일에서
TARGET=arm-softfloat-linux-gnu
부분을
TARGET=arm-linux
로 해주시면 arm-linux-gcc가 생성될겁니다. 이렇게 안하면 나중에 app들 크로스 컴팔할때 귀찮아지겠지요.

--------------------------------------------------------------------------------------------